pptx-react-viewer 4.64.0 → 4.65.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 +27 -0
- package/dist/{AiChatPanel-DRY6JUQE.js → AiChatPanel-7AFFNYEN.js} +19 -19
- package/dist/AiChatPanel-7AFFNYEN.js.br +0 -0
- package/dist/AiChatPanel-7AFFNYEN.js.gz +0 -0
- package/dist/{AiChatPanel-KBSDSD5Y.mjs → AiChatPanel-7U7IJRNY.mjs} +1 -1
- package/dist/AiChatPanel-7U7IJRNY.mjs.br +0 -0
- package/dist/AiChatPanel-7U7IJRNY.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-JKSUB7DR.js → chunk-5DBKW7F3.js} +3 -3
- package/dist/chunk-5DBKW7F3.js.br +0 -0
- package/dist/{chunk-JKSUB7DR.js.gz → chunk-5DBKW7F3.js.gz} +0 -0
- package/dist/{chunk-46VMP4EH.mjs → chunk-5ZW3GP6C.mjs} +4 -4
- package/dist/chunk-5ZW3GP6C.mjs.br +0 -0
- package/dist/chunk-5ZW3GP6C.mjs.gz +0 -0
- package/dist/{chunk-FYYQ4OGF.mjs → chunk-G5JGUSBL.mjs} +12 -5
- package/dist/chunk-G5JGUSBL.mjs.br +0 -0
- package/dist/chunk-G5JGUSBL.mjs.gz +0 -0
- package/dist/{chunk-PX46BOMQ.js → chunk-LUKGXRHZ.js} +571 -561
- package/dist/chunk-LUKGXRHZ.js.br +0 -0
- package/dist/chunk-LUKGXRHZ.js.gz +0 -0
- package/dist/{chunk-7UFO4OZQ.js → chunk-PNDORR6S.js} +1 -1
- package/dist/chunk-PNDORR6S.js.br +0 -0
- package/dist/chunk-PNDORR6S.js.gz +0 -0
- package/dist/{chunk-73SDWM6K.js → chunk-VGU5S37T.js} +212 -205
- package/dist/chunk-VGU5S37T.js.br +0 -0
- package/dist/chunk-VGU5S37T.js.gz +0 -0
- package/dist/{chunk-SHI3PQ5F.mjs → chunk-VMX3IDQB.mjs} +16 -6
- package/dist/chunk-VMX3IDQB.mjs.br +0 -0
- package/dist/chunk-VMX3IDQB.mjs.gz +0 -0
- package/dist/{chunk-SGWF6GUX.mjs → chunk-WAIX4VJ2.mjs} +1 -1
- package/dist/chunk-WAIX4VJ2.mjs.br +0 -0
- package/dist/chunk-WAIX4VJ2.mjs.gz +0 -0
- package/dist/i18n/de.cjs +5 -0
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +5 -0
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +5 -0
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +5 -0
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +5 -0
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +5 -0
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +5 -0
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +5 -0
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.js +27 -27
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer-canvas.css +1 -1
- package/dist/pptx-viewer-canvas.css.br +0 -0
- package/dist/pptx-viewer-canvas.css.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.js +21 -21
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +4 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +3 -3
- package/dist/AiChatPanel-DRY6JUQE.js.br +0 -0
- package/dist/AiChatPanel-DRY6JUQE.js.gz +0 -0
- package/dist/AiChatPanel-KBSDSD5Y.mjs.br +0 -0
- package/dist/AiChatPanel-KBSDSD5Y.mjs.gz +0 -0
- package/dist/chunk-46VMP4EH.mjs.br +0 -0
- package/dist/chunk-46VMP4EH.mjs.gz +0 -0
- package/dist/chunk-73SDWM6K.js.br +0 -0
- package/dist/chunk-73SDWM6K.js.gz +0 -0
- package/dist/chunk-7UFO4OZQ.js.br +0 -0
- package/dist/chunk-7UFO4OZQ.js.gz +0 -0
- package/dist/chunk-FYYQ4OGF.mjs.br +0 -0
- package/dist/chunk-FYYQ4OGF.mjs.gz +0 -0
- package/dist/chunk-JKSUB7DR.js.br +0 -0
- package/dist/chunk-PX46BOMQ.js.br +0 -0
- package/dist/chunk-PX46BOMQ.js.gz +0 -0
- package/dist/chunk-SGWF6GUX.mjs.br +0 -0
- package/dist/chunk-SGWF6GUX.mjs.gz +0 -0
- package/dist/chunk-SHI3PQ5F.mjs.br +0 -0
- package/dist/chunk-SHI3PQ5F.mjs.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkPNDORR6S_js = require('./chunk-PNDORR6S.js');
|
|
4
|
+
var chunkVGU5S37T_js = require('./chunk-VGU5S37T.js');
|
|
5
|
+
var chunk5DBKW7F3_js = require('./chunk-5DBKW7F3.js');
|
|
6
6
|
var pptx = require('ooxml-ui/pptx');
|
|
7
7
|
var React108 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -49,7 +49,7 @@ function AvatarCircle({
|
|
|
49
49
|
avatar,
|
|
50
50
|
isLocal
|
|
51
51
|
}) {
|
|
52
|
-
const { t } =
|
|
52
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
53
53
|
const initials = getInitials(name);
|
|
54
54
|
const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
|
|
55
55
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -84,7 +84,7 @@ function UserAvatarBar({
|
|
|
84
84
|
status,
|
|
85
85
|
maxVisible = 5
|
|
86
86
|
}) {
|
|
87
|
-
const { t } =
|
|
87
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
88
88
|
if (status === "disconnected" || status === "error") {
|
|
89
89
|
return null;
|
|
90
90
|
}
|
|
@@ -158,7 +158,7 @@ function CollaborationStatusIndicator({
|
|
|
158
158
|
connectedCount,
|
|
159
159
|
onRetry
|
|
160
160
|
}) {
|
|
161
|
-
const { t } =
|
|
161
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
162
162
|
const style = STATUS_STYLES[status];
|
|
163
163
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
164
164
|
"div",
|
|
@@ -199,7 +199,7 @@ function FollowModeBar({
|
|
|
199
199
|
followedClientId,
|
|
200
200
|
onFollow
|
|
201
201
|
}) {
|
|
202
|
-
const { t } =
|
|
202
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
203
203
|
if (presences.length === 0) {
|
|
204
204
|
return null;
|
|
205
205
|
}
|
|
@@ -304,7 +304,7 @@ function SectionContextMenu({
|
|
|
304
304
|
onAddSection,
|
|
305
305
|
onClose
|
|
306
306
|
}) {
|
|
307
|
-
const { t } =
|
|
307
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
308
308
|
React108.useEffect(() => {
|
|
309
309
|
const onKeyDown = (event) => {
|
|
310
310
|
if (event.key === "Escape") {
|
|
@@ -405,7 +405,7 @@ function SectionHeader({
|
|
|
405
405
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
406
406
|
lu.LuChevronDown,
|
|
407
407
|
{
|
|
408
|
-
className:
|
|
408
|
+
className: chunk5DBKW7F3_js.cn(
|
|
409
409
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
410
410
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
411
411
|
)
|
|
@@ -480,7 +480,7 @@ function SlideContextMenu({
|
|
|
480
480
|
onAddSection,
|
|
481
481
|
onClose
|
|
482
482
|
}) {
|
|
483
|
-
const { t } =
|
|
483
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
484
484
|
const selected = state.selectedIndexes;
|
|
485
485
|
const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
|
|
486
486
|
const entries = pptx.buildSlidePaneContextMenuEntries({
|
|
@@ -544,14 +544,14 @@ function SlideThumbnailImpl({
|
|
|
544
544
|
}) {
|
|
545
545
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
546
546
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
547
|
-
const width = previewWidth ??
|
|
547
|
+
const width = previewWidth ?? chunk5DBKW7F3_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
548
548
|
const scale = width / safeCanvasWidth;
|
|
549
549
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
550
550
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
551
551
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
552
|
-
const { t } =
|
|
552
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
553
553
|
const transitionLabel = slide.transition ? (() => {
|
|
554
|
-
const opt =
|
|
554
|
+
const opt = chunk5DBKW7F3_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
555
555
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
556
556
|
})() : void 0;
|
|
557
557
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -577,7 +577,7 @@ function SlideThumbnailImpl({
|
|
|
577
577
|
...pptx.deviceStrokeStageStyle(scale)
|
|
578
578
|
},
|
|
579
579
|
children: [
|
|
580
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
580
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.SlideBackgroundImageLayer, { slide }),
|
|
581
581
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
582
582
|
"div",
|
|
583
583
|
{
|
|
@@ -587,7 +587,7 @@ function SlideThumbnailImpl({
|
|
|
587
587
|
}
|
|
588
588
|
),
|
|
589
589
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
590
|
-
|
|
590
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
591
591
|
{
|
|
592
592
|
element,
|
|
593
593
|
activeSlide: slide,
|
|
@@ -713,7 +713,7 @@ function LazyThumbnailInner({
|
|
|
713
713
|
}
|
|
714
714
|
var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
|
|
715
715
|
function declaredSectionFacts(groups, sectionId) {
|
|
716
|
-
const declared = groups.filter((group) => group.id !==
|
|
716
|
+
const declared = groups.filter((group) => group.id !== chunk5DBKW7F3_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk5DBKW7F3_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
717
717
|
return {
|
|
718
718
|
isDeclared: declared.includes(sectionId),
|
|
719
719
|
index: declared.indexOf(sectionId),
|
|
@@ -770,7 +770,7 @@ function SlideItemInner({
|
|
|
770
770
|
onDrop,
|
|
771
771
|
slideRef
|
|
772
772
|
}) {
|
|
773
|
-
const { t } =
|
|
773
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
774
774
|
const isHidden = Boolean(slide.hidden);
|
|
775
775
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
776
776
|
const handleContextMenu = React108.useCallback(
|
|
@@ -798,7 +798,7 @@ function SlideItemInner({
|
|
|
798
798
|
"data-pptx-chrome": "slide-row",
|
|
799
799
|
"aria-describedby": cue.labelId,
|
|
800
800
|
"data-pptx-slide-hidden": cue.marker,
|
|
801
|
-
className:
|
|
801
|
+
className: chunk5DBKW7F3_js.cn(
|
|
802
802
|
"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
803
|
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
804
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -820,7 +820,7 @@ function SlideItemInner({
|
|
|
820
820
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
821
821
|
"span",
|
|
822
822
|
{
|
|
823
|
-
className:
|
|
823
|
+
className: chunk5DBKW7F3_js.cn(
|
|
824
824
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
825
825
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
826
826
|
),
|
|
@@ -843,7 +843,7 @@ function SlideItemInner({
|
|
|
843
843
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
844
844
|
"div",
|
|
845
845
|
{
|
|
846
|
-
className:
|
|
846
|
+
className: chunk5DBKW7F3_js.cn(
|
|
847
847
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
848
848
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
849
849
|
),
|
|
@@ -1041,8 +1041,8 @@ function SlidesPaneSidebar({
|
|
|
1041
1041
|
fieldContext,
|
|
1042
1042
|
tableStyleContext
|
|
1043
1043
|
}) {
|
|
1044
|
-
const { t } =
|
|
1045
|
-
const collab =
|
|
1044
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1045
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
1046
1046
|
const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
|
|
1047
1047
|
const renameInputRef = React108.useRef(null);
|
|
1048
1048
|
const slidePresenceMap = React108.useMemo(() => {
|
|
@@ -1067,7 +1067,7 @@ function SlidesPaneSidebar({
|
|
|
1067
1067
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
1068
1068
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
1069
1069
|
);
|
|
1070
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
1070
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk5DBKW7F3_js.DEFAULT_SECTION_GROUP_ID);
|
|
1071
1071
|
const {
|
|
1072
1072
|
collapsedSections,
|
|
1073
1073
|
renamingSectionId,
|
|
@@ -1137,7 +1137,7 @@ function SlidesPaneSidebar({
|
|
|
1137
1137
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
1138
1138
|
);
|
|
1139
1139
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
1140
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
1140
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkVGU5S37T_js.useVirtualizedSlides({
|
|
1141
1141
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
1142
1142
|
itemHeight: estimatedItemHeight
|
|
1143
1143
|
});
|
|
@@ -1421,7 +1421,7 @@ function SlideTemplatePreview({
|
|
|
1421
1421
|
transformOrigin: "top left"
|
|
1422
1422
|
},
|
|
1423
1423
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1424
|
-
|
|
1424
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
1425
1425
|
{
|
|
1426
1426
|
element,
|
|
1427
1427
|
activeSlide: previewSlide,
|
|
@@ -1489,8 +1489,8 @@ function SlideTemplateGalleryDialog({
|
|
|
1489
1489
|
onInsert,
|
|
1490
1490
|
scheme
|
|
1491
1491
|
}) {
|
|
1492
|
-
const { t } =
|
|
1493
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
1492
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1493
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
1494
1494
|
const [selected, setSelected] = React108.useState(null);
|
|
1495
1495
|
const dialogRef = React108.useRef(null);
|
|
1496
1496
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -1575,7 +1575,7 @@ function SlideTemplateGalleryDialog({
|
|
|
1575
1575
|
onInsert(spec.id);
|
|
1576
1576
|
onClose();
|
|
1577
1577
|
},
|
|
1578
|
-
className:
|
|
1578
|
+
className: chunk5DBKW7F3_js.cn(
|
|
1579
1579
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
1580
1580
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
1581
1581
|
),
|
|
@@ -1785,7 +1785,7 @@ function nowLocalInputValue() {
|
|
|
1785
1785
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
1786
1786
|
}
|
|
1787
1787
|
function DateTimeFieldDialog(p) {
|
|
1788
|
-
const { t } =
|
|
1788
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1789
1789
|
const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
|
|
1790
1790
|
const [dateFormat, setDateFormat] = React108.useState("locale");
|
|
1791
1791
|
const confirmDatePicker = React108.useCallback(() => {
|
|
@@ -1891,7 +1891,7 @@ function useViewerCustomizationContext() {
|
|
|
1891
1891
|
return React108.useContext(ViewerCustomizationContext);
|
|
1892
1892
|
}
|
|
1893
1893
|
function InsertSection(p) {
|
|
1894
|
-
const { t } =
|
|
1894
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1895
1895
|
const customization = useViewerCustomizationContext();
|
|
1896
1896
|
const ref = React108.useRef(null);
|
|
1897
1897
|
const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
|
|
@@ -2040,8 +2040,8 @@ function MobileSheet({
|
|
|
2040
2040
|
headerRight
|
|
2041
2041
|
}) {
|
|
2042
2042
|
const sheetRef = React108.useRef(null);
|
|
2043
|
-
const { t } =
|
|
2044
|
-
const { dragY, dragging, handlers } =
|
|
2043
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2044
|
+
const { dragY, dragging, handlers } = chunkVGU5S37T_js.useSheetDismissDrag(onClose);
|
|
2045
2045
|
useModalFocus(open, sheetRef, onClose);
|
|
2046
2046
|
if (!open) {
|
|
2047
2047
|
return null;
|
|
@@ -2065,7 +2065,7 @@ function MobileSheet({
|
|
|
2065
2065
|
"aria-modal": "true",
|
|
2066
2066
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
2067
2067
|
tabIndex: -1,
|
|
2068
|
-
className:
|
|
2068
|
+
className: chunk5DBKW7F3_js.cn(
|
|
2069
2069
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
2070
2070
|
"animate-in slide-in-from-bottom duration-200",
|
|
2071
2071
|
className
|
|
@@ -2112,7 +2112,7 @@ function MobileSheet({
|
|
|
2112
2112
|
] });
|
|
2113
2113
|
}
|
|
2114
2114
|
function MobileInsertSheet(p) {
|
|
2115
|
-
const { t } =
|
|
2115
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2116
2116
|
const close = () => p.onCloseMobileInsert?.();
|
|
2117
2117
|
const customization = useViewerCustomizationContext();
|
|
2118
2118
|
const [dateOpen, setDateOpen] = React108.useState(false);
|
|
@@ -2188,7 +2188,7 @@ function MobileInsertSheet(p) {
|
|
|
2188
2188
|
] });
|
|
2189
2189
|
}
|
|
2190
2190
|
function AnimationsSection(p) {
|
|
2191
|
-
const { t } =
|
|
2191
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2192
2192
|
const ref = React108.useRef(null);
|
|
2193
2193
|
const [previewActive, setPreviewActive] = React108.useState(false);
|
|
2194
2194
|
const timer = React108.useRef(void 0);
|
|
@@ -2269,7 +2269,7 @@ function WebHomeControls({
|
|
|
2269
2269
|
onPopup,
|
|
2270
2270
|
layoutArtwork
|
|
2271
2271
|
}) {
|
|
2272
|
-
const { t } =
|
|
2272
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2273
2273
|
const ref = React108.useRef(null);
|
|
2274
2274
|
React108.useEffect(() => {
|
|
2275
2275
|
if (ref.current) {
|
|
@@ -2310,7 +2310,7 @@ function WebHomeControls({
|
|
|
2310
2310
|
function ShapeArrangeExtras(p) {
|
|
2311
2311
|
const commands = useShapeFormatContext();
|
|
2312
2312
|
const crop = commands?.crop;
|
|
2313
|
-
const { isHidden } =
|
|
2313
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
2314
2314
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
2315
2315
|
const controls = React108.useMemo(
|
|
2316
2316
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -2361,7 +2361,7 @@ function ShapeArrangeExtras(p) {
|
|
|
2361
2361
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
|
|
2362
2362
|
}
|
|
2363
2363
|
function ArrangeSection(p) {
|
|
2364
|
-
const { t } =
|
|
2364
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2365
2365
|
const {
|
|
2366
2366
|
onAlignElements,
|
|
2367
2367
|
onDistributeElements,
|
|
@@ -2468,7 +2468,7 @@ function RibbonGallery({
|
|
|
2468
2468
|
tagControl = true,
|
|
2469
2469
|
onCommand
|
|
2470
2470
|
}) {
|
|
2471
|
-
const { t } =
|
|
2471
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2472
2472
|
const ref = React108.useRef(null);
|
|
2473
2473
|
const commands = useRibbonGalleryCommands();
|
|
2474
2474
|
const context = commands?.context;
|
|
@@ -2603,7 +2603,7 @@ function WebRibbonToggle({
|
|
|
2603
2603
|
);
|
|
2604
2604
|
}
|
|
2605
2605
|
function TransitionsSection(p) {
|
|
2606
|
-
const { t } =
|
|
2606
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2607
2607
|
const ref = React108.useRef(null);
|
|
2608
2608
|
const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
2609
2609
|
const transition = p.activeSlide?.transition;
|
|
@@ -2645,7 +2645,7 @@ function TransitionsSection(p) {
|
|
|
2645
2645
|
case "soundPreview": {
|
|
2646
2646
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
2647
2647
|
if (url) {
|
|
2648
|
-
|
|
2648
|
+
chunkVGU5S37T_js.playAnimationSound(url);
|
|
2649
2649
|
}
|
|
2650
2650
|
break;
|
|
2651
2651
|
}
|
|
@@ -2664,7 +2664,7 @@ function TransitionsSection(p) {
|
|
|
2664
2664
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
|
|
2665
2665
|
}
|
|
2666
2666
|
function DesignSection(p) {
|
|
2667
|
-
const { t } =
|
|
2667
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2668
2668
|
const actions = {
|
|
2669
2669
|
"design.themes.browseThemes": p.onToggleThemeGallery,
|
|
2670
2670
|
"design.themes.editTheme": p.onToggleThemeEditor,
|
|
@@ -2727,7 +2727,7 @@ function useRecentColors() {
|
|
|
2727
2727
|
return React108.useContext(RecentColorsContext);
|
|
2728
2728
|
}
|
|
2729
2729
|
function DrawSection(p) {
|
|
2730
|
-
const { t } =
|
|
2730
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2731
2731
|
const { pushColor, recentColors } = useRecentColors();
|
|
2732
2732
|
const ref = React108.useRef(null);
|
|
2733
2733
|
React108.useEffect(() => {
|
|
@@ -2825,7 +2825,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
|
|
|
2825
2825
|
);
|
|
2826
2826
|
var cardClass = "border border-border bg-card p-6 text-card-foreground";
|
|
2827
2827
|
function AccountPage() {
|
|
2828
|
-
const { t } =
|
|
2828
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2829
2829
|
const accountAuth = React108.useContext(AccountAuthContext);
|
|
2830
2830
|
const storage = useViewerStorage();
|
|
2831
2831
|
const cloud = useViewerCloudFiles();
|
|
@@ -2853,7 +2853,7 @@ function AccountPage() {
|
|
|
2853
2853
|
refreshUsage();
|
|
2854
2854
|
setTimeout(() => setCleared(false), 4e3);
|
|
2855
2855
|
};
|
|
2856
|
-
const version = "4.
|
|
2856
|
+
const version = "4.65.0" ;
|
|
2857
2857
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2858
2858
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
2859
2859
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -2893,7 +2893,7 @@ function AccountPage() {
|
|
|
2893
2893
|
"aria-label": color,
|
|
2894
2894
|
"aria-pressed": profile.avatarColor === color,
|
|
2895
2895
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
2896
|
-
className:
|
|
2896
|
+
className: chunk5DBKW7F3_js.cn(
|
|
2897
2897
|
"size-7 rounded-full border-2 transition-transform",
|
|
2898
2898
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
2899
2899
|
),
|
|
@@ -2968,7 +2968,7 @@ function BackstageAction(props) {
|
|
|
2968
2968
|
] });
|
|
2969
2969
|
}
|
|
2970
2970
|
function BackstageNewGallery(props) {
|
|
2971
|
-
const { t } =
|
|
2971
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2972
2972
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2973
2973
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
|
|
2974
2974
|
/* @__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 +2994,7 @@ function BackstageNewGallery(props) {
|
|
|
2994
2994
|
] });
|
|
2995
2995
|
}
|
|
2996
2996
|
function BackstageRecentList(props) {
|
|
2997
|
-
const { t } =
|
|
2997
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2998
2998
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
|
|
2999
2999
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
|
|
3000
3000
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
|
|
@@ -3048,7 +3048,7 @@ function BackstageCards({
|
|
|
3048
3048
|
props,
|
|
3049
3049
|
run
|
|
3050
3050
|
}) {
|
|
3051
|
-
const { t } =
|
|
3051
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3052
3052
|
const handlers = {
|
|
3053
3053
|
protect: props.onOpenPasswordProtection,
|
|
3054
3054
|
inspect: props.onOpenDocumentProperties,
|
|
@@ -3110,7 +3110,7 @@ function BackstageNavIcon({ page }) {
|
|
|
3110
3110
|
return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
|
|
3111
3111
|
}
|
|
3112
3112
|
function FileSection(p) {
|
|
3113
|
-
const { t, locale } =
|
|
3113
|
+
const { t, locale } = chunk5DBKW7F3_js.useTranslation();
|
|
3114
3114
|
const [requestedPage, setRequestedPage] = React108.useState("home");
|
|
3115
3115
|
const customization = useViewerCustomizationContext();
|
|
3116
3116
|
const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
|
|
@@ -3118,7 +3118,7 @@ function FileSection(p) {
|
|
|
3118
3118
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
3119
3119
|
const [query, setQuery] = React108.useState("");
|
|
3120
3120
|
const [recent, setRecent] = React108.useState([]);
|
|
3121
|
-
const { isHidden } =
|
|
3121
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
3122
3122
|
const exportHidden = isHidden("export");
|
|
3123
3123
|
const storage = useViewerStorage();
|
|
3124
3124
|
const cloud = useViewerCloudFiles();
|
|
@@ -3387,7 +3387,7 @@ function RibbonMenu({
|
|
|
3387
3387
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3388
3388
|
"div",
|
|
3389
3389
|
{
|
|
3390
|
-
className:
|
|
3390
|
+
className: chunk5DBKW7F3_js.cn("fixed z-50", className),
|
|
3391
3391
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
3392
3392
|
children
|
|
3393
3393
|
}
|
|
@@ -3397,7 +3397,7 @@ var THUMB_WIDTH = 128;
|
|
|
3397
3397
|
var THUMB_HEIGHT = 72;
|
|
3398
3398
|
var MAX_PREVIEW_ELEMENTS = 100;
|
|
3399
3399
|
function LayoutGalleryMenu(p) {
|
|
3400
|
-
const { t } =
|
|
3400
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3401
3401
|
return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3402
3402
|
"div",
|
|
3403
3403
|
{
|
|
@@ -3413,7 +3413,7 @@ function LayoutGalleryMenu(p) {
|
|
|
3413
3413
|
type: "button",
|
|
3414
3414
|
"aria-current": isCurrent ? "true" : void 0,
|
|
3415
3415
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
3416
|
-
className:
|
|
3416
|
+
className: chunk5DBKW7F3_js.cn(
|
|
3417
3417
|
"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
3418
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
3419
3419
|
),
|
|
@@ -3487,7 +3487,7 @@ function LayoutArtwork({
|
|
|
3487
3487
|
backgroundColor
|
|
3488
3488
|
};
|
|
3489
3489
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3490
|
-
|
|
3490
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
3491
3491
|
{
|
|
3492
3492
|
element,
|
|
3493
3493
|
activeSlide: slide,
|
|
@@ -3762,7 +3762,7 @@ function WebRibbonSection({
|
|
|
3762
3762
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
|
|
3763
3763
|
}
|
|
3764
3764
|
function ReviewSection(p) {
|
|
3765
|
-
const { t } =
|
|
3765
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3766
3766
|
const [activeCommentId, setActiveCommentId] = React108.useState(null);
|
|
3767
3767
|
React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
|
|
3768
3768
|
const host = p.commentsHost;
|
|
@@ -3822,7 +3822,7 @@ function SlideShowOptions({
|
|
|
3822
3822
|
children
|
|
3823
3823
|
}) {
|
|
3824
3824
|
const ref = React108.useRef(null);
|
|
3825
|
-
const { t } =
|
|
3825
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3826
3826
|
React108.useLayoutEffect(() => {
|
|
3827
3827
|
if (!ref.current) {
|
|
3828
3828
|
return;
|
|
@@ -3841,8 +3841,8 @@ function SlideShowOptions({
|
|
|
3841
3841
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
|
|
3842
3842
|
}
|
|
3843
3843
|
function SubtitleSettingsControl() {
|
|
3844
|
-
const { t } =
|
|
3845
|
-
const supplied = React108.useContext(
|
|
3844
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3845
|
+
const supplied = React108.useContext(chunkVGU5S37T_js.ViewerOptionsStoreContext);
|
|
3846
3846
|
const fallback = React108.useRef(null);
|
|
3847
3847
|
if (!supplied) {
|
|
3848
3848
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -3875,8 +3875,8 @@ function SubtitleSettingsControl() {
|
|
|
3875
3875
|
);
|
|
3876
3876
|
}
|
|
3877
3877
|
function SlideShowSection(p) {
|
|
3878
|
-
const { t } =
|
|
3879
|
-
const { isHidden } =
|
|
3878
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3879
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
3880
3880
|
const actions = {
|
|
3881
3881
|
"slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
|
|
3882
3882
|
"slideShow.startSlideShow.fromCurrent": p.onPresent,
|
|
@@ -4120,7 +4120,7 @@ function FontFormatGroup(p) {
|
|
|
4120
4120
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
|
|
4121
4121
|
}
|
|
4122
4122
|
function FontPickerGroup(p) {
|
|
4123
|
-
const { t } =
|
|
4123
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4124
4124
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
4125
4125
|
const { onFamily, onSize } = p;
|
|
4126
4126
|
const controls = React108.useMemo(
|
|
@@ -4143,7 +4143,7 @@ function FontPickerGroup(p) {
|
|
|
4143
4143
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
|
|
4144
4144
|
}
|
|
4145
4145
|
function ParagraphGroup(p) {
|
|
4146
|
-
const { t } =
|
|
4146
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4147
4147
|
const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
|
|
4148
4148
|
const commands = useRibbonGalleryCommands();
|
|
4149
4149
|
const align = pptx.paragraphHomeAlign(effectiveTs?.align);
|
|
@@ -4244,7 +4244,7 @@ function useParagraphListKind(element) {
|
|
|
4244
4244
|
return React108.useSyncExternalStore(subscribe, read, readServer);
|
|
4245
4245
|
}
|
|
4246
4246
|
function TextSection(p) {
|
|
4247
|
-
const { t } =
|
|
4247
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4248
4248
|
const hasSel = Boolean(p.selectedElement);
|
|
4249
4249
|
const canMut = hasSel && p.canEdit;
|
|
4250
4250
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
@@ -4320,7 +4320,7 @@ function TextSection(p) {
|
|
|
4320
4320
|
] });
|
|
4321
4321
|
}
|
|
4322
4322
|
function ViewSection(p) {
|
|
4323
|
-
const { t } =
|
|
4323
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4324
4324
|
const ref = React108.useRef(null);
|
|
4325
4325
|
React108.useEffect(() => {
|
|
4326
4326
|
const host = ref.current;
|
|
@@ -4393,10 +4393,10 @@ var MENU_ITEMS = [
|
|
|
4393
4393
|
{ key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
|
|
4394
4394
|
];
|
|
4395
4395
|
function MobileMenuSheet(props) {
|
|
4396
|
-
const { t } =
|
|
4396
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4397
4397
|
const { open, onClose } = props;
|
|
4398
4398
|
const [active, setActive] = React108.useState("home");
|
|
4399
|
-
const { isTabVisible } =
|
|
4399
|
+
const { isTabVisible } = chunkVGU5S37T_js.useToolbarVisibility(props.hiddenActions);
|
|
4400
4400
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4401
4401
|
MobileSheet,
|
|
4402
4402
|
{
|
|
@@ -4410,7 +4410,7 @@ function MobileMenuSheet(props) {
|
|
|
4410
4410
|
{
|
|
4411
4411
|
type: "button",
|
|
4412
4412
|
onClick: () => setActive(active === key ? null : key),
|
|
4413
|
-
className:
|
|
4413
|
+
className: chunk5DBKW7F3_js.cn(
|
|
4414
4414
|
"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
4415
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
4416
4416
|
),
|
|
@@ -4685,10 +4685,10 @@ function MobileSectionBody({
|
|
|
4685
4685
|
}
|
|
4686
4686
|
}
|
|
4687
4687
|
function MobileToolbar(props) {
|
|
4688
|
-
const { t } =
|
|
4688
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4689
4689
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
4690
4690
|
const [menuOpen, setMenuOpen] = React108.useState(false);
|
|
4691
|
-
const { isHidden } =
|
|
4691
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(props.hiddenActions);
|
|
4692
4692
|
const showEdit = mode === "edit" || mode === "master";
|
|
4693
4693
|
const hidden = [];
|
|
4694
4694
|
if (isHidden("undo")) {
|
|
@@ -4734,8 +4734,8 @@ function MobileToolbar(props) {
|
|
|
4734
4734
|
] });
|
|
4735
4735
|
}
|
|
4736
4736
|
function ChartSelectionStrip() {
|
|
4737
|
-
const { t } =
|
|
4738
|
-
const commands =
|
|
4737
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4738
|
+
const commands = chunkVGU5S37T_js.useChartFormatContext();
|
|
4739
4739
|
const chart = commands?.chart;
|
|
4740
4740
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
4741
4741
|
const controls = React108.useMemo(
|
|
@@ -4766,7 +4766,7 @@ function PictureSizeStrip({
|
|
|
4766
4766
|
hiddenActions
|
|
4767
4767
|
}) {
|
|
4768
4768
|
const crop = useShapeFormatContext()?.crop;
|
|
4769
|
-
const { isHidden } =
|
|
4769
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(hiddenActions);
|
|
4770
4770
|
const controls = React108.useMemo(
|
|
4771
4771
|
() => pptx.pictureSizeHomeControls({
|
|
4772
4772
|
editable: Boolean(crop),
|
|
@@ -4783,7 +4783,7 @@ function PictureSizeStrip({
|
|
|
4783
4783
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
|
|
4784
4784
|
}
|
|
4785
4785
|
function useTranslateOr() {
|
|
4786
|
-
const { t } =
|
|
4786
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4787
4787
|
return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
|
|
4788
4788
|
}
|
|
4789
4789
|
function ContextualTabSection({
|
|
@@ -4806,7 +4806,7 @@ function ContextualTabSection({
|
|
|
4806
4806
|
)) });
|
|
4807
4807
|
}
|
|
4808
4808
|
function DrawingGroup(p) {
|
|
4809
|
-
const { t } =
|
|
4809
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4810
4810
|
const { recentColors, pushColor } = useRecentColors();
|
|
4811
4811
|
const themeColors = useThemeColorMap();
|
|
4812
4812
|
const commands = useRibbonGalleryCommands();
|
|
@@ -4892,7 +4892,7 @@ function DrawingGroup(p) {
|
|
|
4892
4892
|
] });
|
|
4893
4893
|
}
|
|
4894
4894
|
function EditingSection(p) {
|
|
4895
|
-
const { t } =
|
|
4895
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4896
4896
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
4897
4897
|
const controls = React108.useMemo(
|
|
4898
4898
|
() => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
|
|
@@ -4938,8 +4938,8 @@ function RibbonAddInSection({ tab }) {
|
|
|
4938
4938
|
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
4939
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
4940
4940
|
function RibbonTabBar(p) {
|
|
4941
|
-
const { t } =
|
|
4942
|
-
const viewerOptions =
|
|
4941
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4942
|
+
const viewerOptions = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
4943
4943
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4944
4944
|
"div",
|
|
4945
4945
|
{
|
|
@@ -4947,7 +4947,7 @@ function RibbonTabBar(p) {
|
|
|
4947
4947
|
"data-pptx-chrome": "ribbon-tabs",
|
|
4948
4948
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
4949
4949
|
children: [
|
|
4950
|
-
|
|
4950
|
+
chunk5DBKW7F3_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
4951
4951
|
const selected = p.activeSection === s.id;
|
|
4952
4952
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4953
4953
|
"button",
|
|
@@ -4957,7 +4957,7 @@ function RibbonTabBar(p) {
|
|
|
4957
4957
|
"aria-selected": selected,
|
|
4958
4958
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
4959
4959
|
onClick: () => p.onSelectSection(s.id),
|
|
4960
|
-
className:
|
|
4960
|
+
className: chunk5DBKW7F3_js.cn(
|
|
4961
4961
|
TAB_BASE,
|
|
4962
4962
|
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
4963
|
),
|
|
@@ -4977,7 +4977,7 @@ function RibbonTabBar(p) {
|
|
|
4977
4977
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
4978
4978
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
4979
4979
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
4980
|
-
className:
|
|
4980
|
+
className: chunk5DBKW7F3_js.cn(
|
|
4981
4981
|
TAB_BASE,
|
|
4982
4982
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
4983
4983
|
),
|
|
@@ -4998,7 +4998,7 @@ function RibbonTabBar(p) {
|
|
|
4998
4998
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
4999
4999
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
5000
5000
|
onClick: () => p.onSelectContextual(id),
|
|
5001
|
-
className:
|
|
5001
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5002
5002
|
TAB_BASE,
|
|
5003
5003
|
"text-primary",
|
|
5004
5004
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -5015,10 +5015,10 @@ function RibbonTabBar(p) {
|
|
|
5015
5015
|
);
|
|
5016
5016
|
}
|
|
5017
5017
|
function TabRowActions(p) {
|
|
5018
|
-
const { t } =
|
|
5019
|
-
const collab =
|
|
5018
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5019
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
5020
5020
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
5021
|
-
const { isHidden } =
|
|
5021
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
5022
5022
|
const customization = useViewerCustomizationContext();
|
|
5023
5023
|
const ref = React108.useRef(null);
|
|
5024
5024
|
const handlers = React108.useRef(p);
|
|
@@ -5072,8 +5072,8 @@ function TabRowActions(p) {
|
|
|
5072
5072
|
] });
|
|
5073
5073
|
}
|
|
5074
5074
|
function TitleBarElement(p) {
|
|
5075
|
-
const { t } =
|
|
5076
|
-
const options =
|
|
5075
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5076
|
+
const options = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
5077
5077
|
const customization = useViewerCustomizationContext();
|
|
5078
5078
|
const ref = React108.useRef(null);
|
|
5079
5079
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -5138,7 +5138,7 @@ function CustomShowsControls({
|
|
|
5138
5138
|
onDeleteActiveCustomShow,
|
|
5139
5139
|
onToggleCurrentSlideInActiveShow
|
|
5140
5140
|
}) {
|
|
5141
|
-
const { t } =
|
|
5141
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5142
5142
|
if (customShows.length > 0) {
|
|
5143
5143
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5144
5144
|
sep,
|
|
@@ -5193,7 +5193,7 @@ function CustomShowsControls({
|
|
|
5193
5193
|
{
|
|
5194
5194
|
type: "button",
|
|
5195
5195
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
5196
|
-
className:
|
|
5196
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5197
5197
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
5198
5198
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
5199
5199
|
),
|
|
@@ -5232,7 +5232,7 @@ function PresentDropdown({
|
|
|
5232
5232
|
onToggleSubtitles,
|
|
5233
5233
|
showSubtitles
|
|
5234
5234
|
}) {
|
|
5235
|
-
const { t } =
|
|
5235
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5236
5236
|
const [open, setOpen] = React108.useState(false);
|
|
5237
5237
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
5238
5238
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
|
|
@@ -5241,7 +5241,7 @@ function PresentDropdown({
|
|
|
5241
5241
|
{
|
|
5242
5242
|
type: "button",
|
|
5243
5243
|
onClick: onPresent,
|
|
5244
|
-
className:
|
|
5244
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5245
5245
|
"px-2 py-1 transition-colors",
|
|
5246
5246
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5247
5247
|
),
|
|
@@ -5254,7 +5254,7 @@ function PresentDropdown({
|
|
|
5254
5254
|
{
|
|
5255
5255
|
type: "button",
|
|
5256
5256
|
onClick: () => setOpen((prev) => !prev),
|
|
5257
|
-
className:
|
|
5257
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5258
5258
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
5259
5259
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5260
5260
|
),
|
|
@@ -5382,7 +5382,7 @@ function ModeSwitcher({
|
|
|
5382
5382
|
onToggleSubtitles,
|
|
5383
5383
|
showSubtitles
|
|
5384
5384
|
}) {
|
|
5385
|
-
const { t } =
|
|
5385
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5386
5386
|
if (mode === "master") {
|
|
5387
5387
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
|
|
5388
5388
|
/* @__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 +5420,7 @@ var EXPORT_CARD_OF = {
|
|
|
5420
5420
|
copyImg: "copyImage"
|
|
5421
5421
|
};
|
|
5422
5422
|
function OverflowMenu(p) {
|
|
5423
|
-
const { t } =
|
|
5423
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5424
5424
|
const customization = useViewerCustomizationContext();
|
|
5425
5425
|
const offered = (k) => {
|
|
5426
5426
|
const card = EXPORT_CARD_OF[k];
|
|
@@ -5457,7 +5457,7 @@ function OverflowMenu(p) {
|
|
|
5457
5457
|
{
|
|
5458
5458
|
type: "button",
|
|
5459
5459
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
5460
|
-
className:
|
|
5460
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5461
5461
|
"p-1.5 rounded transition-colors",
|
|
5462
5462
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
5463
5463
|
),
|
|
@@ -5495,7 +5495,7 @@ function OverflowMenu(p) {
|
|
|
5495
5495
|
] });
|
|
5496
5496
|
}
|
|
5497
5497
|
function ToolbarPrimaryRow(p) {
|
|
5498
|
-
const { t } =
|
|
5498
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5499
5499
|
const {
|
|
5500
5500
|
mode,
|
|
5501
5501
|
canEdit,
|
|
@@ -5504,7 +5504,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5504
5504
|
onToggleSidebar,
|
|
5505
5505
|
onToggleInspector
|
|
5506
5506
|
} = p;
|
|
5507
|
-
const collab =
|
|
5507
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
5508
5508
|
const customization = useViewerCustomizationContext();
|
|
5509
5509
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
5510
5510
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -5524,7 +5524,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5524
5524
|
{
|
|
5525
5525
|
type: "button",
|
|
5526
5526
|
onClick: onToggleSidebar,
|
|
5527
|
-
className:
|
|
5527
|
+
className: chunk5DBKW7F3_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
5528
5528
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
5529
5529
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
5530
5530
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -5585,7 +5585,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5585
5585
|
{
|
|
5586
5586
|
type: "button",
|
|
5587
5587
|
onClick: onToggleInspector,
|
|
5588
|
-
className:
|
|
5588
|
+
className: chunk5DBKW7F3_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
5589
5589
|
title: t("pptx.toolbar.toggleInspector"),
|
|
5590
5590
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
5591
5591
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -5596,7 +5596,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5596
5596
|
{
|
|
5597
5597
|
type: "button",
|
|
5598
5598
|
onClick: p.onToggleAiPanel,
|
|
5599
|
-
className:
|
|
5599
|
+
className: chunk5DBKW7F3_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
5600
5600
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
5601
5601
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
5602
5602
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -5607,7 +5607,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5607
5607
|
{
|
|
5608
5608
|
type: "button",
|
|
5609
5609
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
5610
|
-
className:
|
|
5610
|
+
className: chunk5DBKW7F3_js.cn(qab, "text-muted-foreground"),
|
|
5611
5611
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
5612
5612
|
"aria-label": t("pptx.toolbar.settings"),
|
|
5613
5613
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -5651,7 +5651,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
|
|
|
5651
5651
|
return { visible, active, fellBack, select: setChosen };
|
|
5652
5652
|
}
|
|
5653
5653
|
function HelpSection(p) {
|
|
5654
|
-
const { t } =
|
|
5654
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5655
5655
|
const groups = pptx.buildHelpRibbon(t, {
|
|
5656
5656
|
options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
|
|
5657
5657
|
});
|
|
@@ -5671,7 +5671,7 @@ function HelpSection(p) {
|
|
|
5671
5671
|
return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
|
|
5672
5672
|
}
|
|
5673
5673
|
function RecordSection(props) {
|
|
5674
|
-
const { t } =
|
|
5674
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5675
5675
|
const request = (id) => {
|
|
5676
5676
|
if (id === "record.record.fromBeginning") {
|
|
5677
5677
|
props.onRecordFromBeginning();
|
|
@@ -5804,9 +5804,9 @@ function ToolbarLateTabs({
|
|
|
5804
5804
|
}
|
|
5805
5805
|
function Toolbar(p) {
|
|
5806
5806
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
5807
|
-
const { t } =
|
|
5808
|
-
const { isTabVisible } =
|
|
5809
|
-
const viewerOptions =
|
|
5807
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5808
|
+
const { isTabVisible } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
5809
|
+
const viewerOptions = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
5810
5810
|
const customization = useViewerCustomizationContext();
|
|
5811
5811
|
const belowInput = React108.useMemo(
|
|
5812
5812
|
() => ({
|
|
@@ -5904,7 +5904,7 @@ function Toolbar(p) {
|
|
|
5904
5904
|
{
|
|
5905
5905
|
type: "button",
|
|
5906
5906
|
onClick: p.onToggleCompactToolbar,
|
|
5907
|
-
className:
|
|
5907
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5908
5908
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
5909
5909
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
5910
5910
|
),
|
|
@@ -5930,7 +5930,7 @@ function Toolbar(p) {
|
|
|
5930
5930
|
{
|
|
5931
5931
|
ref: attachOverflow,
|
|
5932
5932
|
"data-pptx-chrome": "ribbon-content",
|
|
5933
|
-
className:
|
|
5933
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5934
5934
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
5935
5935
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
5936
5936
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -6120,7 +6120,7 @@ function Toolbar(p) {
|
|
|
6120
6120
|
);
|
|
6121
6121
|
}
|
|
6122
6122
|
function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
|
|
6123
|
-
const { t } =
|
|
6123
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6124
6124
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6125
6125
|
"div",
|
|
6126
6126
|
{
|
|
@@ -6332,7 +6332,7 @@ function ChartQuickActionsOverlay({
|
|
|
6332
6332
|
scale: stageScale = 1,
|
|
6333
6333
|
onUpdateElement
|
|
6334
6334
|
}) {
|
|
6335
|
-
const { t } =
|
|
6335
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6336
6336
|
const [open, setOpen] = React108.useState(null);
|
|
6337
6337
|
const hostRef = React108.useRef(null);
|
|
6338
6338
|
React108.useEffect(() => {
|
|
@@ -6503,7 +6503,7 @@ function CommentMarkersOverlay({
|
|
|
6503
6503
|
canvasSize,
|
|
6504
6504
|
onCommentMarkerClick
|
|
6505
6505
|
}) {
|
|
6506
|
-
const { t } =
|
|
6506
|
+
const { t } = chunk5DBKW7F3_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
|
|
6507
6507
|
comments,
|
|
6508
6508
|
canvasSize.width,
|
|
6509
6509
|
canvasSize.height,
|
|
@@ -6547,7 +6547,7 @@ function ConnectorEndpointOverlay({
|
|
|
6547
6547
|
canvasStageRef,
|
|
6548
6548
|
onUpdateElement
|
|
6549
6549
|
}) {
|
|
6550
|
-
const { t } =
|
|
6550
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6551
6551
|
const [drag, setDrag] = React108.useState(null);
|
|
6552
6552
|
const candidates = React108.useMemo(
|
|
6553
6553
|
() => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
@@ -6783,7 +6783,7 @@ function DrawingOverlaySvg({
|
|
|
6783
6783
|
onPointerDown,
|
|
6784
6784
|
onPointerMove,
|
|
6785
6785
|
onPointerUp,
|
|
6786
|
-
children: isStrokeActive && liveStrokeView ?
|
|
6786
|
+
children: isStrokeActive && liveStrokeView ? chunkVGU5S37T_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6787
6787
|
"path",
|
|
6788
6788
|
{
|
|
6789
6789
|
d: liveStrokeD,
|
|
@@ -6798,7 +6798,7 @@ function DrawingOverlaySvg({
|
|
|
6798
6798
|
}
|
|
6799
6799
|
);
|
|
6800
6800
|
}
|
|
6801
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
6801
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk5DBKW7F3_js.GRID_SIZE, visible }) {
|
|
6802
6802
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
6803
6803
|
const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
6804
6804
|
if (!visible) {
|
|
@@ -6826,7 +6826,7 @@ function MotionPathOverlay({
|
|
|
6826
6826
|
canEdit,
|
|
6827
6827
|
onChangePath
|
|
6828
6828
|
}) {
|
|
6829
|
-
const { t } =
|
|
6829
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6830
6830
|
const dragRef = React108.useRef(null);
|
|
6831
6831
|
const frame = {
|
|
6832
6832
|
originX: element.x + element.width / 2,
|
|
@@ -6940,7 +6940,7 @@ function MotionPathOverlay({
|
|
|
6940
6940
|
);
|
|
6941
6941
|
}
|
|
6942
6942
|
function EditPointsMenu({ menu, onRun }) {
|
|
6943
|
-
const { t } =
|
|
6943
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6944
6944
|
const stop2 = (event) => event.stopPropagation();
|
|
6945
6945
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6946
6946
|
"div",
|
|
@@ -6986,7 +6986,7 @@ function EditPointsOverlay({
|
|
|
6986
6986
|
onCommit,
|
|
6987
6987
|
onExit
|
|
6988
6988
|
}) {
|
|
6989
|
-
const { t } =
|
|
6989
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6990
6990
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
6991
6991
|
const svgRef = React108.useRef(null);
|
|
6992
6992
|
const latest = React108.useRef({ onCommit, onExit });
|
|
@@ -7142,7 +7142,7 @@ function FreeformToolOverlay({
|
|
|
7142
7142
|
onCommit,
|
|
7143
7143
|
onCancel
|
|
7144
7144
|
}) {
|
|
7145
|
-
const { t } =
|
|
7145
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
7146
7146
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
7147
7147
|
const svgRef = React108.useRef(null);
|
|
7148
7148
|
const latest = React108.useRef({ onCommit, onCancel });
|
|
@@ -7285,7 +7285,7 @@ function PictureCropOverlay({
|
|
|
7285
7285
|
onUpdate,
|
|
7286
7286
|
onContextMenu
|
|
7287
7287
|
}) {
|
|
7288
|
-
const { t } =
|
|
7288
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
7289
7289
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
7290
7290
|
const dragRef = React108.useRef(null);
|
|
7291
7291
|
const latest = React108.useRef({ scale, onUpdate });
|
|
@@ -7333,7 +7333,7 @@ function PictureCropOverlay({
|
|
|
7333
7333
|
};
|
|
7334
7334
|
};
|
|
7335
7335
|
const { ghost, frame, handles } = overlay;
|
|
7336
|
-
const src =
|
|
7336
|
+
const src = chunkVGU5S37T_js.imgSrc(element);
|
|
7337
7337
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7338
7338
|
"div",
|
|
7339
7339
|
{
|
|
@@ -7509,7 +7509,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
7509
7509
|
}
|
|
7510
7510
|
);
|
|
7511
7511
|
}
|
|
7512
|
-
var HorizontalRuler = /* @__PURE__ */
|
|
7512
|
+
var HorizontalRuler = /* @__PURE__ */ chunkVGU5S37T_js.withDisplayName(
|
|
7513
7513
|
/* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
|
|
7514
7514
|
"HorizontalRuler"
|
|
7515
7515
|
);
|
|
@@ -7583,7 +7583,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
7583
7583
|
}
|
|
7584
7584
|
);
|
|
7585
7585
|
}
|
|
7586
|
-
var VerticalRuler = /* @__PURE__ */
|
|
7586
|
+
var VerticalRuler = /* @__PURE__ */ chunkVGU5S37T_js.withDisplayName(
|
|
7587
7587
|
/* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
|
|
7588
7588
|
"VerticalRuler"
|
|
7589
7589
|
);
|
|
@@ -7750,10 +7750,10 @@ function SelectionHandleOverlay({
|
|
|
7750
7750
|
position: "absolute",
|
|
7751
7751
|
left: element.x,
|
|
7752
7752
|
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,
|
|
7753
|
+
width: Math.max(element.width, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE),
|
|
7754
|
+
height: Math.max(element.height, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE),
|
|
7755
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE)}px`,
|
|
7756
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE)}px`,
|
|
7757
7757
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
7758
7758
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
7759
7759
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -7765,7 +7765,7 @@ function SelectionHandleOverlay({
|
|
|
7765
7765
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
7766
7766
|
// any realistic per-slide element count.
|
|
7767
7767
|
zIndex: 58,
|
|
7768
|
-
transform:
|
|
7768
|
+
transform: chunk5DBKW7F3_js.getElementTransform(element),
|
|
7769
7769
|
transformOrigin: "center",
|
|
7770
7770
|
// Transparent everywhere a handle button is not, so a click that
|
|
7771
7771
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -7777,14 +7777,14 @@ function SelectionHandleOverlay({
|
|
|
7777
7777
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
7778
7778
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
7779
7779
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7780
|
-
|
|
7780
|
+
chunkVGU5S37T_js.ResizeHandles,
|
|
7781
7781
|
{
|
|
7782
7782
|
elementId: element.id,
|
|
7783
7783
|
adjustmentHandles,
|
|
7784
7784
|
onResizePointerDown,
|
|
7785
7785
|
onAdjustmentPointerDown,
|
|
7786
7786
|
rotation: element.rotation,
|
|
7787
|
-
nonRotationTransform:
|
|
7787
|
+
nonRotationTransform: chunk5DBKW7F3_js.getElementTransformWithoutRotation(element),
|
|
7788
7788
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
7789
7789
|
forcePointerEvents: true
|
|
7790
7790
|
}
|
|
@@ -8488,7 +8488,7 @@ function SlideCanvas(props) {
|
|
|
8488
8488
|
props.registerInlineEditReader
|
|
8489
8489
|
]
|
|
8490
8490
|
);
|
|
8491
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8491
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
8492
8492
|
}
|
|
8493
8493
|
function SlideCanvasContent({
|
|
8494
8494
|
imagePaste,
|
|
@@ -8761,7 +8761,7 @@ function SlideCanvasContent({
|
|
|
8761
8761
|
onPointerMove: handleStagePointerMove,
|
|
8762
8762
|
onPointerUp: handleStagePointerUp,
|
|
8763
8763
|
children: [
|
|
8764
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8764
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
8765
8765
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
8766
8766
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
8767
8767
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8773,7 +8773,7 @@ function SlideCanvasContent({
|
|
|
8773
8773
|
}
|
|
8774
8774
|
),
|
|
8775
8775
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8776
|
-
|
|
8776
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
8777
8777
|
{
|
|
8778
8778
|
element,
|
|
8779
8779
|
activeSlide,
|
|
@@ -8796,7 +8796,7 @@ function SlideCanvasContent({
|
|
|
8796
8796
|
),
|
|
8797
8797
|
renderInk: false,
|
|
8798
8798
|
renderGroups: true,
|
|
8799
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8799
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk5DBKW7F3_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8800
8800
|
onResizePointerDown: stableResizePointerDown,
|
|
8801
8801
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8802
8802
|
onRotate: stableRotate,
|
|
@@ -8818,7 +8818,7 @@ function SlideCanvasContent({
|
|
|
8818
8818
|
`tpl-${element.id}`
|
|
8819
8819
|
)),
|
|
8820
8820
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8821
|
-
|
|
8821
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
8822
8822
|
{
|
|
8823
8823
|
element,
|
|
8824
8824
|
activeSlide,
|
|
@@ -8841,7 +8841,7 @@ function SlideCanvasContent({
|
|
|
8841
8841
|
),
|
|
8842
8842
|
renderInk: true,
|
|
8843
8843
|
renderGroups: true,
|
|
8844
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8844
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk5DBKW7F3_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8845
8845
|
onResizePointerDown: stableResizePointerDown,
|
|
8846
8846
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8847
8847
|
onRotate: stableRotate,
|
|
@@ -8885,7 +8885,7 @@ function SlideCanvasContent({
|
|
|
8885
8885
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
8886
8886
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
8887
8887
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8888
|
-
|
|
8888
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
8889
8889
|
{
|
|
8890
8890
|
element: editingMember.member,
|
|
8891
8891
|
activeSlide,
|
|
@@ -8920,11 +8920,11 @@ function SlideCanvasContent({
|
|
|
8920
8920
|
`group-member-edit-${editingMember.member.id}`
|
|
8921
8921
|
)
|
|
8922
8922
|
] }),
|
|
8923
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
8923
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk5DBKW7F3_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8924
8924
|
SelectionHandleOverlay,
|
|
8925
8925
|
{
|
|
8926
8926
|
element: selectedElement,
|
|
8927
|
-
adjustmentHandles:
|
|
8927
|
+
adjustmentHandles: chunk5DBKW7F3_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
8928
8928
|
onResizePointerDown: stableResizePointerDown,
|
|
8929
8929
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8930
8930
|
onRotate: stableRotate,
|
|
@@ -9031,14 +9031,14 @@ function SlideCanvasContent({
|
|
|
9031
9031
|
);
|
|
9032
9032
|
}
|
|
9033
9033
|
function LoadingState({ className }) {
|
|
9034
|
-
const { t } =
|
|
9034
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9035
9035
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9036
9036
|
"div",
|
|
9037
9037
|
{
|
|
9038
9038
|
role: "status",
|
|
9039
9039
|
"aria-live": "polite",
|
|
9040
9040
|
"aria-atomic": "true",
|
|
9041
|
-
className:
|
|
9041
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9042
9042
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
9043
9043
|
className
|
|
9044
9044
|
),
|
|
@@ -9061,7 +9061,7 @@ function ErrorState({ className, error }) {
|
|
|
9061
9061
|
{
|
|
9062
9062
|
role: "alert",
|
|
9063
9063
|
"aria-live": "assertive",
|
|
9064
|
-
className:
|
|
9064
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9065
9065
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
9066
9066
|
className
|
|
9067
9067
|
),
|
|
@@ -9070,7 +9070,7 @@ function ErrorState({ className, error }) {
|
|
|
9070
9070
|
);
|
|
9071
9071
|
}
|
|
9072
9072
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
9073
|
-
const { t } =
|
|
9073
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9074
9074
|
if (!isOpen) {
|
|
9075
9075
|
return null;
|
|
9076
9076
|
}
|
|
@@ -9092,7 +9092,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
9092
9092
|
}
|
|
9093
9093
|
)
|
|
9094
9094
|
] }),
|
|
9095
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
9095
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk5DBKW7F3_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9096
9096
|
"div",
|
|
9097
9097
|
{
|
|
9098
9098
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -9114,7 +9114,7 @@ function AccessibilityPanel({
|
|
|
9114
9114
|
reducedMotion,
|
|
9115
9115
|
onToggleReducedMotion
|
|
9116
9116
|
}) {
|
|
9117
|
-
const { t } =
|
|
9117
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9118
9118
|
if (!isOpen) {
|
|
9119
9119
|
return null;
|
|
9120
9120
|
}
|
|
@@ -9152,14 +9152,14 @@ function AccessibilityPanel({
|
|
|
9152
9152
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
9153
9153
|
"aria-checked": reducedMotion ?? false,
|
|
9154
9154
|
onClick: onToggleReducedMotion,
|
|
9155
|
-
className:
|
|
9155
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9156
9156
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
9157
9157
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
9158
9158
|
),
|
|
9159
9159
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9160
9160
|
"span",
|
|
9161
9161
|
{
|
|
9162
|
-
className:
|
|
9162
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9163
9163
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
9164
9164
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
9165
9165
|
)
|
|
@@ -9178,7 +9178,7 @@ function AccessibilityPanel({
|
|
|
9178
9178
|
"div",
|
|
9179
9179
|
{
|
|
9180
9180
|
role: "listitem",
|
|
9181
|
-
className:
|
|
9181
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9182
9182
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
9183
9183
|
/* Severity-based background and text colouring */
|
|
9184
9184
|
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"
|
|
@@ -9206,7 +9206,7 @@ function ExportProgressModal({
|
|
|
9206
9206
|
statusMessage,
|
|
9207
9207
|
onCancel
|
|
9208
9208
|
}) {
|
|
9209
|
-
const { t } =
|
|
9209
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9210
9210
|
const ref = useWebControl(
|
|
9211
9211
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
9212
9212
|
{ "export-cancel": () => onCancel() }
|
|
@@ -9214,7 +9214,7 @@ function ExportProgressModal({
|
|
|
9214
9214
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
9215
9215
|
}
|
|
9216
9216
|
function StatusBar(p) {
|
|
9217
|
-
const { t } =
|
|
9217
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9218
9218
|
const ref = React108.useRef(null);
|
|
9219
9219
|
React108.useEffect(() => {
|
|
9220
9220
|
const host = ref.current;
|
|
@@ -9226,6 +9226,7 @@ function StatusBar(p) {
|
|
|
9226
9226
|
activeSlideIndex: p.activeSlideIndex,
|
|
9227
9227
|
dirty: p.isDirty,
|
|
9228
9228
|
autosave: p.autosaveStatus,
|
|
9229
|
+
saveProgress: p.saveProgress ? pptx.saveProgressStatus(p.saveProgress, t) : void 0,
|
|
9229
9230
|
zoomPercent: p.scale !== void 0 && !p.hideZoomControls ? p.scale * 100 : void 0,
|
|
9230
9231
|
notesExpanded: p.isNotesExpanded,
|
|
9231
9232
|
viewMode: pptx.statusBarViewMode(p.mode),
|
|
@@ -9294,7 +9295,7 @@ function ResizeHandle({
|
|
|
9294
9295
|
{
|
|
9295
9296
|
role: "separator",
|
|
9296
9297
|
"aria-orientation": direction,
|
|
9297
|
-
className:
|
|
9298
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9298
9299
|
// Outer container: generous hit area for easy clicking.
|
|
9299
9300
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
9300
9301
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -9305,7 +9306,7 @@ function ResizeHandle({
|
|
|
9305
9306
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9306
9307
|
"div",
|
|
9307
9308
|
{
|
|
9308
|
-
className:
|
|
9309
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9309
9310
|
"absolute transition-colors",
|
|
9310
9311
|
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"
|
|
9311
9312
|
)
|
|
@@ -9394,10 +9395,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
|
|
|
9394
9395
|
}
|
|
9395
9396
|
function ContextMenu(props) {
|
|
9396
9397
|
const { contextMenuState, mode, onClose } = props;
|
|
9397
|
-
const { t } =
|
|
9398
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9398
9399
|
const customization = useViewerCustomizationContext();
|
|
9399
9400
|
const shapeFormat = useShapeFormatContext();
|
|
9400
|
-
const chartFormat =
|
|
9401
|
+
const chartFormat = chunkVGU5S37T_js.useChartFormatContext();
|
|
9401
9402
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
9402
9403
|
const handlers = {
|
|
9403
9404
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -9473,7 +9474,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
9473
9474
|
}
|
|
9474
9475
|
function CanvasContextMenu(props) {
|
|
9475
9476
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
9476
|
-
const { t } =
|
|
9477
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9477
9478
|
const customization = useViewerCustomizationContext();
|
|
9478
9479
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
9479
9480
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -9536,7 +9537,7 @@ function FindReplacePanel({
|
|
|
9536
9537
|
onReplaceAll,
|
|
9537
9538
|
onClose
|
|
9538
9539
|
}) {
|
|
9539
|
-
const { t } =
|
|
9540
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9540
9541
|
const searchInputRef = React108.useRef(null);
|
|
9541
9542
|
React108.useEffect(() => {
|
|
9542
9543
|
searchInputRef.current?.focus();
|
|
@@ -9727,7 +9728,7 @@ function HandoutMasterPanel({
|
|
|
9727
9728
|
onSlidesPerPageChange,
|
|
9728
9729
|
onBackgroundChange
|
|
9729
9730
|
}) {
|
|
9730
|
-
const { t } =
|
|
9731
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9731
9732
|
if (!handoutMaster) {
|
|
9732
9733
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9733
9734
|
}
|
|
@@ -9739,7 +9740,7 @@ function HandoutMasterPanel({
|
|
|
9739
9740
|
{
|
|
9740
9741
|
type: "button",
|
|
9741
9742
|
"aria-pressed": slidesPerPage === count,
|
|
9742
|
-
className:
|
|
9743
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9743
9744
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9744
9745
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9745
9746
|
),
|
|
@@ -9782,7 +9783,7 @@ function NotesMasterPanel({
|
|
|
9782
9783
|
notesMaster,
|
|
9783
9784
|
onBackgroundChange
|
|
9784
9785
|
}) {
|
|
9785
|
-
const { t } =
|
|
9786
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9786
9787
|
const placeholderLabels = React108.useMemo(() => {
|
|
9787
9788
|
if (!notesMaster?.placeholders) {
|
|
9788
9789
|
return [];
|
|
@@ -9844,7 +9845,7 @@ function SlideMastersList({
|
|
|
9844
9845
|
React108.useEffect(() => {
|
|
9845
9846
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9846
9847
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9847
|
-
const { t } =
|
|
9848
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9848
9849
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9849
9850
|
slideMasters.map((master, masterIdx) => {
|
|
9850
9851
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -9857,7 +9858,7 @@ function SlideMastersList({
|
|
|
9857
9858
|
ref: isMasterActive ? activeRef : void 0,
|
|
9858
9859
|
"aria-pressed": isMasterActive,
|
|
9859
9860
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9860
|
-
className:
|
|
9861
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9861
9862
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9862
9863
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9863
9864
|
),
|
|
@@ -9874,7 +9875,7 @@ function SlideMastersList({
|
|
|
9874
9875
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9875
9876
|
"span",
|
|
9876
9877
|
{
|
|
9877
|
-
className:
|
|
9878
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9878
9879
|
"text-[10px] font-medium",
|
|
9879
9880
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9880
9881
|
),
|
|
@@ -9893,7 +9894,7 @@ function SlideMastersList({
|
|
|
9893
9894
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9894
9895
|
"aria-pressed": isLayoutActive,
|
|
9895
9896
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9896
|
-
className:
|
|
9897
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9897
9898
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9898
9899
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9899
9900
|
),
|
|
@@ -9910,7 +9911,7 @@ function SlideMastersList({
|
|
|
9910
9911
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9911
9912
|
"span",
|
|
9912
9913
|
{
|
|
9913
|
-
className:
|
|
9914
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9914
9915
|
"text-[9px]",
|
|
9915
9916
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9916
9917
|
),
|
|
@@ -9954,7 +9955,7 @@ function MasterViewSidebar({
|
|
|
9954
9955
|
onSlidesBackgroundChange
|
|
9955
9956
|
}) {
|
|
9956
9957
|
const scrollRef = React108.useRef(null);
|
|
9957
|
-
const { t } =
|
|
9958
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9958
9959
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
9959
9960
|
{ slideMasters },
|
|
9960
9961
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -10002,7 +10003,7 @@ function MasterViewSidebar({
|
|
|
10002
10003
|
type: "button",
|
|
10003
10004
|
role: "tab",
|
|
10004
10005
|
"aria-selected": masterViewTab === tab.key,
|
|
10005
|
-
className:
|
|
10006
|
+
className: chunk5DBKW7F3_js.cn(
|
|
10006
10007
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
10007
10008
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
10008
10009
|
),
|
|
@@ -10104,7 +10105,7 @@ function NotesMasterCanvas({
|
|
|
10104
10105
|
notesText,
|
|
10105
10106
|
slideNumber
|
|
10106
10107
|
}) {
|
|
10107
|
-
const { t } =
|
|
10108
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10108
10109
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10109
10110
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10110
10111
|
const scale = React108.useMemo(() => {
|
|
@@ -10364,7 +10365,7 @@ function HandoutMasterCanvas({
|
|
|
10364
10365
|
slideThumbnails,
|
|
10365
10366
|
pageNumber
|
|
10366
10367
|
}) {
|
|
10367
|
-
const { t } =
|
|
10368
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10368
10369
|
const slideAspect = 4 / 3;
|
|
10369
10370
|
const scale = React108.useMemo(() => {
|
|
10370
10371
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10505,7 +10506,7 @@ function SectionBlock({
|
|
|
10505
10506
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10506
10507
|
lu.LuChevronDown,
|
|
10507
10508
|
{
|
|
10508
|
-
className:
|
|
10509
|
+
className: chunk5DBKW7F3_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10509
10510
|
}
|
|
10510
10511
|
),
|
|
10511
10512
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10549,12 +10550,12 @@ function SlideCardImpl({
|
|
|
10549
10550
|
onDragLeave,
|
|
10550
10551
|
onDrop
|
|
10551
10552
|
}) {
|
|
10552
|
-
const { t } =
|
|
10553
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10553
10554
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10554
10555
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10555
10556
|
"div",
|
|
10556
10557
|
{
|
|
10557
|
-
className:
|
|
10558
|
+
className: chunk5DBKW7F3_js.cn(
|
|
10558
10559
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10559
10560
|
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",
|
|
10560
10561
|
slide.hidden && "opacity-40"
|
|
@@ -10577,7 +10578,7 @@ function SlideCardImpl({
|
|
|
10577
10578
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10578
10579
|
"span",
|
|
10579
10580
|
{
|
|
10580
|
-
className:
|
|
10581
|
+
className: chunk5DBKW7F3_js.cn(
|
|
10581
10582
|
"text-[11px] font-medium px-0.5",
|
|
10582
10583
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10583
10584
|
),
|
|
@@ -10655,7 +10656,7 @@ function SorterContextMenu({
|
|
|
10655
10656
|
onToggleHide,
|
|
10656
10657
|
onClose
|
|
10657
10658
|
}) {
|
|
10658
|
-
const { t } =
|
|
10659
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10659
10660
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10660
10661
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10661
10662
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -11010,7 +11011,7 @@ function SlideSorterOverlay({
|
|
|
11010
11011
|
onToggleHideSlides,
|
|
11011
11012
|
onClose
|
|
11012
11013
|
}) {
|
|
11013
|
-
const { t } =
|
|
11014
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11014
11015
|
const state = useSlideSorterState({
|
|
11015
11016
|
slides,
|
|
11016
11017
|
templateElementsBySlideId,
|
|
@@ -11256,7 +11257,7 @@ function OutlineViewOverlay({
|
|
|
11256
11257
|
bumpHistory,
|
|
11257
11258
|
onClose
|
|
11258
11259
|
}) {
|
|
11259
|
-
const { t } =
|
|
11260
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11260
11261
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11261
11262
|
slides,
|
|
11262
11263
|
canvasSize,
|
|
@@ -11347,7 +11348,7 @@ function ReadingViewStage({
|
|
|
11347
11348
|
"div",
|
|
11348
11349
|
{
|
|
11349
11350
|
className: "absolute inset-0",
|
|
11350
|
-
style: { backgroundColor:
|
|
11351
|
+
style: { backgroundColor: chunk5DBKW7F3_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11351
11352
|
}
|
|
11352
11353
|
),
|
|
11353
11354
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11366,7 +11367,7 @@ function ReadingViewStage({
|
|
|
11366
11367
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11367
11368
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11368
11369
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11369
|
-
|
|
11370
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
11370
11371
|
{
|
|
11371
11372
|
element,
|
|
11372
11373
|
activeSlide: slide,
|
|
@@ -11447,7 +11448,7 @@ function ReadingViewOverlay({
|
|
|
11447
11448
|
activeSlideIndex,
|
|
11448
11449
|
onExit
|
|
11449
11450
|
}) {
|
|
11450
|
-
const { t } =
|
|
11451
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11451
11452
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11452
11453
|
slideCount: slides.length,
|
|
11453
11454
|
canvasSize,
|
|
@@ -11578,7 +11579,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11578
11579
|
if (segment.style.fontFamily) {
|
|
11579
11580
|
style.fontFamily = segment.style.fontFamily;
|
|
11580
11581
|
}
|
|
11581
|
-
if (segment.style.hyperlink &&
|
|
11582
|
+
if (segment.style.hyperlink && chunk5DBKW7F3_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11582
11583
|
const safeHref = segment.style.hyperlink;
|
|
11583
11584
|
style.color = "#4a9eff";
|
|
11584
11585
|
style.textDecoration = "underline";
|
|
@@ -11591,7 +11592,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11591
11592
|
style,
|
|
11592
11593
|
onClick: (e) => {
|
|
11593
11594
|
e.preventDefault();
|
|
11594
|
-
|
|
11595
|
+
chunk5DBKW7F3_js.safeOpenUrl(safeHref);
|
|
11595
11596
|
},
|
|
11596
11597
|
children: segment.text
|
|
11597
11598
|
},
|
|
@@ -11615,7 +11616,7 @@ function NotesPrintDialog({
|
|
|
11615
11616
|
onClose,
|
|
11616
11617
|
notesStyle
|
|
11617
11618
|
}) {
|
|
11618
|
-
const { t } =
|
|
11619
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11619
11620
|
const printFrameRef = React108.useRef(null);
|
|
11620
11621
|
const handlePrint = React108.useCallback(() => {
|
|
11621
11622
|
const iframe = printFrameRef.current;
|
|
@@ -11673,7 +11674,7 @@ function NotesPrintDialog({
|
|
|
11673
11674
|
] }) });
|
|
11674
11675
|
}
|
|
11675
11676
|
function NotesToolbar(p) {
|
|
11676
|
-
const { t } =
|
|
11677
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11677
11678
|
const ref = React108.useRef(null);
|
|
11678
11679
|
React108.useEffect(() => {
|
|
11679
11680
|
const host = ref.current;
|
|
@@ -11940,7 +11941,7 @@ function useSlideNotes({
|
|
|
11940
11941
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11941
11942
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11942
11943
|
e.preventDefault();
|
|
11943
|
-
|
|
11944
|
+
chunk5DBKW7F3_js.safeOpenUrl(href);
|
|
11944
11945
|
}
|
|
11945
11946
|
}, []);
|
|
11946
11947
|
return {
|
|
@@ -11977,7 +11978,7 @@ function SlideNotesPanel({
|
|
|
11977
11978
|
notesStyle,
|
|
11978
11979
|
onHeightChange
|
|
11979
11980
|
}) {
|
|
11980
|
-
const { t } =
|
|
11981
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11981
11982
|
const rootRef = React108__default.default.useRef(null);
|
|
11982
11983
|
React108__default.default.useEffect(() => {
|
|
11983
11984
|
const el = rootRef.current;
|
|
@@ -12021,7 +12022,7 @@ function SlideNotesPanel({
|
|
|
12021
12022
|
});
|
|
12022
12023
|
const hasNotes = draft.trim().length > 0;
|
|
12023
12024
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
12024
|
-
const { dragY, handlers: dragHandlers } =
|
|
12025
|
+
const { dragY, handlers: dragHandlers } = chunkVGU5S37T_js.useSheetDismissDrag(onToggle);
|
|
12025
12026
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12026
12027
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12027
12028
|
"button",
|
|
@@ -12037,7 +12038,7 @@ function SlideNotesPanel({
|
|
|
12037
12038
|
{
|
|
12038
12039
|
ref: rootRef,
|
|
12039
12040
|
"data-pptx-chrome": "notes",
|
|
12040
|
-
className:
|
|
12041
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12041
12042
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
12042
12043
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
12043
12044
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12221,7 +12222,7 @@ function VersionHistoryPanel({
|
|
|
12221
12222
|
onClose,
|
|
12222
12223
|
onRestore
|
|
12223
12224
|
}) {
|
|
12224
|
-
const { t } =
|
|
12225
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12225
12226
|
const [versions, setVersions] = React108.useState([]);
|
|
12226
12227
|
const [loading, setLoading] = React108.useState(false);
|
|
12227
12228
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12367,7 +12368,7 @@ function SlideDiffRow({
|
|
|
12367
12368
|
onAccept,
|
|
12368
12369
|
onReject
|
|
12369
12370
|
}) {
|
|
12370
|
-
const { t } =
|
|
12371
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12371
12372
|
const [expanded, setExpanded] = React108.useState(diff.status === "changed");
|
|
12372
12373
|
const statusLabel = (() => {
|
|
12373
12374
|
switch (diff.status) {
|
|
@@ -12401,7 +12402,7 @@ function SlideDiffRow({
|
|
|
12401
12402
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12402
12403
|
"div",
|
|
12403
12404
|
{
|
|
12404
|
-
className:
|
|
12405
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12405
12406
|
"rounded-lg border transition-colors",
|
|
12406
12407
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12407
12408
|
),
|
|
@@ -12415,7 +12416,7 @@ function SlideDiffRow({
|
|
|
12415
12416
|
children: [
|
|
12416
12417
|
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" }),
|
|
12417
12418
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12418
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12419
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk5DBKW7F3_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12419
12420
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12420
12421
|
diff.changes.length,
|
|
12421
12422
|
" ",
|
|
@@ -12425,7 +12426,7 @@ function SlideDiffRow({
|
|
|
12425
12426
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12426
12427
|
"span",
|
|
12427
12428
|
{
|
|
12428
|
-
className:
|
|
12429
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12429
12430
|
"text-[10px] font-medium",
|
|
12430
12431
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12431
12432
|
),
|
|
@@ -12453,7 +12454,7 @@ function SlideDiffRow({
|
|
|
12453
12454
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12454
12455
|
"div",
|
|
12455
12456
|
{
|
|
12456
|
-
className:
|
|
12457
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12457
12458
|
"rounded border overflow-hidden",
|
|
12458
12459
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12459
12460
|
),
|
|
@@ -12520,7 +12521,7 @@ function ComparePanel({
|
|
|
12520
12521
|
onRejectSlide,
|
|
12521
12522
|
onAcceptAll
|
|
12522
12523
|
}) {
|
|
12523
|
-
const { t } =
|
|
12524
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12524
12525
|
const [accepted, setAccepted] = React108.useState({});
|
|
12525
12526
|
const [rejected, setRejected] = React108.useState({});
|
|
12526
12527
|
const handleAccept = React108.useCallback(
|
|
@@ -12649,7 +12650,7 @@ function PasswordProtectionDialog({
|
|
|
12649
12650
|
onSetPassword,
|
|
12650
12651
|
onRemovePassword
|
|
12651
12652
|
}) {
|
|
12652
|
-
const { t } =
|
|
12653
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12653
12654
|
const [password, setPassword] = React108.useState("");
|
|
12654
12655
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12655
12656
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -12865,7 +12866,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12865
12866
|
customProperties,
|
|
12866
12867
|
onUpdate
|
|
12867
12868
|
}) {
|
|
12868
|
-
const { t } =
|
|
12869
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12869
12870
|
const handleAdd = React108.useCallback(() => {
|
|
12870
12871
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
12871
12872
|
}, [customProperties, onUpdate]);
|
|
@@ -13067,7 +13068,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
13067
13068
|
onUpdateAppProperties,
|
|
13068
13069
|
canEdit
|
|
13069
13070
|
}) {
|
|
13070
|
-
const { t } =
|
|
13071
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13071
13072
|
const handleEditableChange = React108.useCallback(
|
|
13072
13073
|
(key, value) => {
|
|
13073
13074
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13107,7 +13108,7 @@ function DocumentPropertiesDialog({
|
|
|
13107
13108
|
onClose,
|
|
13108
13109
|
onSave
|
|
13109
13110
|
}) {
|
|
13110
|
-
const { t } =
|
|
13111
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13111
13112
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13112
13113
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13113
13114
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13158,7 +13159,7 @@ function DocumentPropertiesDialog({
|
|
|
13158
13159
|
const handleClose = React108.useCallback(() => {
|
|
13159
13160
|
onClose();
|
|
13160
13161
|
}, [onClose]);
|
|
13161
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13162
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(handleClose);
|
|
13162
13163
|
if (!isOpen) {
|
|
13163
13164
|
return null;
|
|
13164
13165
|
}
|
|
@@ -13295,7 +13296,7 @@ function FontEmbeddingPanel({
|
|
|
13295
13296
|
onClose,
|
|
13296
13297
|
onToggleEmbedFonts
|
|
13297
13298
|
}) {
|
|
13298
|
-
const { t } =
|
|
13299
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13299
13300
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13300
13301
|
const [scanning, setScanning] = React108.useState(false);
|
|
13301
13302
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13423,7 +13424,7 @@ function DigitalSignaturesDialog({
|
|
|
13423
13424
|
hasSignatures,
|
|
13424
13425
|
signatureCount
|
|
13425
13426
|
}) {
|
|
13426
|
-
const { t } =
|
|
13427
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13427
13428
|
if (!isOpen) {
|
|
13428
13429
|
return null;
|
|
13429
13430
|
}
|
|
@@ -13495,7 +13496,7 @@ function SignatureStatusBadge({
|
|
|
13495
13496
|
signatureCount,
|
|
13496
13497
|
onClick
|
|
13497
13498
|
}) {
|
|
13498
|
-
const { t } =
|
|
13499
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13499
13500
|
if (!hasSignatures || signatureCount === 0) {
|
|
13500
13501
|
return null;
|
|
13501
13502
|
}
|
|
@@ -13521,7 +13522,7 @@ function SignatureStrippedDialog({
|
|
|
13521
13522
|
onConfirm,
|
|
13522
13523
|
onCancel
|
|
13523
13524
|
}) {
|
|
13524
|
-
const { t } =
|
|
13525
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13525
13526
|
if (!isOpen) {
|
|
13526
13527
|
return null;
|
|
13527
13528
|
}
|
|
@@ -13590,7 +13591,7 @@ function EncryptedFileDialog({
|
|
|
13590
13591
|
isOpen,
|
|
13591
13592
|
onClose
|
|
13592
13593
|
}) {
|
|
13593
|
-
const { t } =
|
|
13594
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13594
13595
|
if (!isOpen) {
|
|
13595
13596
|
return null;
|
|
13596
13597
|
}
|
|
@@ -13737,7 +13738,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13737
13738
|
] });
|
|
13738
13739
|
}
|
|
13739
13740
|
function PresentationEndOverlay({ onExit }) {
|
|
13740
|
-
const { t } =
|
|
13741
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13741
13742
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13742
13743
|
"button",
|
|
13743
13744
|
{
|
|
@@ -13753,9 +13754,9 @@ function PresentationSubtitleBar({
|
|
|
13753
13754
|
visible,
|
|
13754
13755
|
onCaptionChange
|
|
13755
13756
|
}) {
|
|
13756
|
-
const { t } =
|
|
13757
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13757
13758
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13758
|
-
pptx.subtitleSettingsFromOptions(
|
|
13759
|
+
pptx.subtitleSettingsFromOptions(chunkVGU5S37T_js.useViewerOptionsContext()),
|
|
13759
13760
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13760
13761
|
);
|
|
13761
13762
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13832,7 +13833,7 @@ function renderNotesSegments(segments) {
|
|
|
13832
13833
|
});
|
|
13833
13834
|
}
|
|
13834
13835
|
function PresenterConsoleToolbar(p) {
|
|
13835
|
-
const { t } =
|
|
13836
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13836
13837
|
const ref = useWebControl(
|
|
13837
13838
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13838
13839
|
{
|
|
@@ -13923,7 +13924,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13923
13924
|
{
|
|
13924
13925
|
className: "absolute inset-0",
|
|
13925
13926
|
style: {
|
|
13926
|
-
backgroundColor:
|
|
13927
|
+
backgroundColor: chunk5DBKW7F3_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13927
13928
|
}
|
|
13928
13929
|
}
|
|
13929
13930
|
),
|
|
@@ -13949,7 +13950,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13949
13950
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13950
13951
|
},
|
|
13951
13952
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13952
|
-
|
|
13953
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
13953
13954
|
{
|
|
13954
13955
|
element,
|
|
13955
13956
|
activeSlide: slide,
|
|
@@ -14016,7 +14017,7 @@ function PresenterNotesRail({
|
|
|
14016
14017
|
onMove,
|
|
14017
14018
|
onUpdateNotes
|
|
14018
14019
|
}) {
|
|
14019
|
-
const { t } =
|
|
14020
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14020
14021
|
const slide = slides[current];
|
|
14021
14022
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
14022
14023
|
const notesText = slide?.notes ?? "";
|
|
@@ -14141,7 +14142,7 @@ function PresenterNotesRail({
|
|
|
14141
14142
|
] });
|
|
14142
14143
|
}
|
|
14143
14144
|
function PresenterSlideNavigator(props) {
|
|
14144
|
-
const { t } =
|
|
14145
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14145
14146
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14146
14147
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14147
14148
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14283,7 +14284,7 @@ function PresenterView({
|
|
|
14283
14284
|
onSwapDisplays,
|
|
14284
14285
|
onUpdateNotes
|
|
14285
14286
|
}) {
|
|
14286
|
-
const { t } =
|
|
14287
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14287
14288
|
const [now, setNow] = React108.useState(Date.now());
|
|
14288
14289
|
React108.useEffect(() => {
|
|
14289
14290
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14440,7 +14441,7 @@ function MobilePresenterView({
|
|
|
14440
14441
|
onMovePresentationSlide,
|
|
14441
14442
|
onExit
|
|
14442
14443
|
}) {
|
|
14443
|
-
const { t } =
|
|
14444
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14444
14445
|
const [now, setNow] = React108.useState(Date.now());
|
|
14445
14446
|
React108.useEffect(() => {
|
|
14446
14447
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14553,7 +14554,7 @@ function RehearseTimingsHud({
|
|
|
14553
14554
|
paused,
|
|
14554
14555
|
onTogglePause
|
|
14555
14556
|
}) {
|
|
14556
|
-
const { t } =
|
|
14557
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14557
14558
|
const [tick, setTick] = React108.useState(0);
|
|
14558
14559
|
React108.useEffect(() => {
|
|
14559
14560
|
if (paused) {
|
|
@@ -14601,7 +14602,7 @@ function RehearseTimingsSummary({
|
|
|
14601
14602
|
onSave,
|
|
14602
14603
|
onDiscard
|
|
14603
14604
|
}) {
|
|
14604
|
-
const { t } =
|
|
14605
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14605
14606
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14606
14607
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14607
14608
|
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: [
|
|
@@ -14685,7 +14686,7 @@ function SelectionPane({
|
|
|
14685
14686
|
markDirty,
|
|
14686
14687
|
onClose
|
|
14687
14688
|
}) {
|
|
14688
|
-
const { t } =
|
|
14689
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14689
14690
|
const activeSlide = slides[activeSlideIndex];
|
|
14690
14691
|
const elements = activeSlide?.elements ?? [];
|
|
14691
14692
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14840,7 +14841,7 @@ function SelectionPane({
|
|
|
14840
14841
|
setDragIndex(null);
|
|
14841
14842
|
setDragOverIndex(null);
|
|
14842
14843
|
},
|
|
14843
|
-
className:
|
|
14844
|
+
className: chunk5DBKW7F3_js.cn(
|
|
14844
14845
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14845
14846
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14846
14847
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14894,13 +14895,13 @@ function SelectionPane({
|
|
|
14894
14895
|
}
|
|
14895
14896
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14896
14897
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14897
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
14898
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunk5DBKW7F3_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14898
14899
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14899
14900
|
);
|
|
14900
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
14901
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunk5DBKW7F3_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14901
14902
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14902
14903
|
);
|
|
14903
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
14904
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunk5DBKW7F3_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14904
14905
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14905
14906
|
);
|
|
14906
14907
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -15001,7 +15002,7 @@ function AfterAnimationRow({
|
|
|
15001
15002
|
onActionChange,
|
|
15002
15003
|
onColorChange
|
|
15003
15004
|
}) {
|
|
15004
|
-
const { t } =
|
|
15005
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15005
15006
|
const commitRecentColor = useRecentColorCommit();
|
|
15006
15007
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
15007
15008
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15052,7 +15053,7 @@ function AnimationTimelineSection({
|
|
|
15052
15053
|
canEdit,
|
|
15053
15054
|
handlers
|
|
15054
15055
|
}) {
|
|
15055
|
-
const { t } =
|
|
15056
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15056
15057
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
15057
15058
|
const {
|
|
15058
15059
|
sortedAnimations,
|
|
@@ -15083,7 +15084,7 @@ function AnimationTimelineSection({
|
|
|
15083
15084
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15084
15085
|
"div",
|
|
15085
15086
|
{
|
|
15086
|
-
className:
|
|
15087
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15087
15088
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15088
15089
|
animationTypeColor(bar.anim),
|
|
15089
15090
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15112,7 +15113,7 @@ function AnimationTimelineSection({
|
|
|
15112
15113
|
onDragLeave: handleDragLeave,
|
|
15113
15114
|
onDrop: (e) => handleDrop(index, e),
|
|
15114
15115
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15115
|
-
className:
|
|
15116
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15116
15117
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15117
15118
|
"bg-muted/20 text-muted-foreground/70",
|
|
15118
15119
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15151,7 +15152,7 @@ function AnimationTimelineSection({
|
|
|
15151
15152
|
onDragEnd: handleDragEnd,
|
|
15152
15153
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15153
15154
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15154
|
-
className:
|
|
15155
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15155
15156
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15156
15157
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15157
15158
|
isDragging && "opacity-40",
|
|
@@ -15212,7 +15213,7 @@ function BookmarkTriggerRow({
|
|
|
15212
15213
|
style,
|
|
15213
15214
|
onChange
|
|
15214
15215
|
}) {
|
|
15215
|
-
const { t } =
|
|
15216
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15216
15217
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15217
15218
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15218
15219
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15245,7 +15246,7 @@ function EffectSoundRow({
|
|
|
15245
15246
|
onPick,
|
|
15246
15247
|
onPickStock
|
|
15247
15248
|
}) {
|
|
15248
|
-
const { t } =
|
|
15249
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15249
15250
|
const fileInputRef = React108__default.default.useRef(null);
|
|
15250
15251
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15251
15252
|
const handleSelectChange = (event) => {
|
|
@@ -15283,7 +15284,7 @@ function EffectSoundRow({
|
|
|
15283
15284
|
}
|
|
15284
15285
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15285
15286
|
if (asset) {
|
|
15286
|
-
|
|
15287
|
+
chunkVGU5S37T_js.playAnimationSound(asset.dataUrl);
|
|
15287
15288
|
}
|
|
15288
15289
|
};
|
|
15289
15290
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15336,7 +15337,7 @@ function MotionPathRow({
|
|
|
15336
15337
|
canEdit,
|
|
15337
15338
|
onChange
|
|
15338
15339
|
}) {
|
|
15339
|
-
const { t } =
|
|
15340
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15340
15341
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15341
15342
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15342
15343
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15458,7 +15459,7 @@ function useAnimationPreview({
|
|
|
15458
15459
|
}) {
|
|
15459
15460
|
const handleAnimationHover = React108.useCallback((anim) => {
|
|
15460
15461
|
if (anim.motionPath) {
|
|
15461
|
-
|
|
15462
|
+
chunk5DBKW7F3_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15462
15463
|
durationMs: anim.durationMs,
|
|
15463
15464
|
delayMs: anim.delayMs,
|
|
15464
15465
|
timingCurve: anim.timingCurve
|
|
@@ -15469,19 +15470,19 @@ function useAnimationPreview({
|
|
|
15469
15470
|
if (!preset || preset === "none") {
|
|
15470
15471
|
return;
|
|
15471
15472
|
}
|
|
15472
|
-
|
|
15473
|
+
chunk5DBKW7F3_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15473
15474
|
direction: anim.direction,
|
|
15474
15475
|
durationMs: anim.durationMs ?? 500,
|
|
15475
15476
|
timingCurve: anim.timingCurve
|
|
15476
15477
|
});
|
|
15477
15478
|
}, []);
|
|
15478
|
-
const handleAnimationHoverEnd = React108.useCallback(() =>
|
|
15479
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunk5DBKW7F3_js.stopPreviewAnimation(), []);
|
|
15479
15480
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15480
15481
|
if (!selectedElementAnimation) {
|
|
15481
15482
|
return;
|
|
15482
15483
|
}
|
|
15483
15484
|
if (selectedElementAnimation.motionPath) {
|
|
15484
|
-
|
|
15485
|
+
chunk5DBKW7F3_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15485
15486
|
durationMs: selectedElementAnimation.durationMs,
|
|
15486
15487
|
delayMs: selectedElementAnimation.delayMs,
|
|
15487
15488
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15492,7 +15493,7 @@ function useAnimationPreview({
|
|
|
15492
15493
|
if (!preset || preset === "none") {
|
|
15493
15494
|
return;
|
|
15494
15495
|
}
|
|
15495
|
-
|
|
15496
|
+
chunk5DBKW7F3_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15496
15497
|
direction: selectedElementAnimation.direction,
|
|
15497
15498
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15498
15499
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15727,7 +15728,7 @@ function useAnimationHandlers({
|
|
|
15727
15728
|
return anim.elementId.slice(0, 8);
|
|
15728
15729
|
}
|
|
15729
15730
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15730
|
-
return text ||
|
|
15731
|
+
return text || chunk5DBKW7F3_js.getElementLabel(el);
|
|
15731
15732
|
},
|
|
15732
15733
|
[activeSlide.elements]
|
|
15733
15734
|
);
|
|
@@ -15738,7 +15739,7 @@ function useAnimationHandlers({
|
|
|
15738
15739
|
return id.slice(0, 8);
|
|
15739
15740
|
}
|
|
15740
15741
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15741
|
-
return text ||
|
|
15742
|
+
return text || chunk5DBKW7F3_js.getElementLabel(el);
|
|
15742
15743
|
}).join(", "),
|
|
15743
15744
|
[activeSlide.elements]
|
|
15744
15745
|
);
|
|
@@ -15794,8 +15795,8 @@ function AnimationPanel({
|
|
|
15794
15795
|
canEdit,
|
|
15795
15796
|
onUpdateSlide
|
|
15796
15797
|
}) {
|
|
15797
|
-
const { t } =
|
|
15798
|
-
const { viewportWidth } =
|
|
15798
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15799
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
15799
15800
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15800
15801
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15801
15802
|
const handlers = useAnimationHandlers({
|
|
@@ -15923,7 +15924,7 @@ function AnimationPanel({
|
|
|
15923
15924
|
type: "button",
|
|
15924
15925
|
disabled: !canEdit,
|
|
15925
15926
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15926
|
-
className:
|
|
15927
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15927
15928
|
"flex items-center justify-center rounded border transition-colors",
|
|
15928
15929
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15929
15930
|
),
|
|
@@ -15989,7 +15990,7 @@ function AnimationPanel({
|
|
|
15989
15990
|
style: fieldStyle,
|
|
15990
15991
|
children: [
|
|
15991
15992
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15992
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15993
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk5DBKW7F3_js.getElementLabel(el) }, el.id))
|
|
15993
15994
|
]
|
|
15994
15995
|
}
|
|
15995
15996
|
)
|
|
@@ -16133,7 +16134,7 @@ function ActionTargetFields({
|
|
|
16133
16134
|
returnAfter,
|
|
16134
16135
|
onChange
|
|
16135
16136
|
}) {
|
|
16136
|
-
const { t } =
|
|
16137
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16137
16138
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16138
16139
|
if (urlLabelKey) {
|
|
16139
16140
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16142,7 +16143,7 @@ function ActionTargetFields({
|
|
|
16142
16143
|
type: "text",
|
|
16143
16144
|
disabled: !canEdit,
|
|
16144
16145
|
"aria-label": t(urlLabelKey),
|
|
16145
|
-
className:
|
|
16146
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16146
16147
|
placeholder: "https://...",
|
|
16147
16148
|
value: url ?? "",
|
|
16148
16149
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16156,7 +16157,7 @@ function ActionTargetFields({
|
|
|
16156
16157
|
type: "number",
|
|
16157
16158
|
disabled: !canEdit,
|
|
16158
16159
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16159
|
-
className:
|
|
16160
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16160
16161
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16161
16162
|
min: 1,
|
|
16162
16163
|
max: slideCount,
|
|
@@ -16178,7 +16179,7 @@ function ActionTargetFields({
|
|
|
16178
16179
|
"data-testid": "pptx-action-custom-show",
|
|
16179
16180
|
disabled: !canEdit,
|
|
16180
16181
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16181
|
-
className:
|
|
16182
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16182
16183
|
value: customShowId ?? "",
|
|
16183
16184
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16184
16185
|
children: [
|
|
@@ -16210,7 +16211,7 @@ function ActionSettingsPanel({
|
|
|
16210
16211
|
customShows,
|
|
16211
16212
|
onUpdateElement
|
|
16212
16213
|
}) {
|
|
16213
|
-
const { t } =
|
|
16214
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16214
16215
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16215
16216
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16216
16217
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16286,7 +16287,7 @@ function ActionTriggerSection({
|
|
|
16286
16287
|
onChangeType,
|
|
16287
16288
|
onChangeTarget
|
|
16288
16289
|
}) {
|
|
16289
|
-
const { t } =
|
|
16290
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16290
16291
|
const [pendingType, setPendingType] = React108.useState(void 0);
|
|
16291
16292
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16292
16293
|
const changeType = (type) => {
|
|
@@ -16300,7 +16301,7 @@ function ActionTriggerSection({
|
|
|
16300
16301
|
{
|
|
16301
16302
|
disabled: !canEdit,
|
|
16302
16303
|
"aria-label": label,
|
|
16303
|
-
className:
|
|
16304
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16304
16305
|
value: effectiveType,
|
|
16305
16306
|
onChange: (e) => changeType(e.target.value),
|
|
16306
16307
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16328,7 +16329,7 @@ var AXIS_ROWS = [
|
|
|
16328
16329
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16329
16330
|
];
|
|
16330
16331
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16331
|
-
const { t } =
|
|
16332
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16332
16333
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16333
16334
|
...row,
|
|
16334
16335
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16473,7 +16474,7 @@ function ChartAxisStyleOptions({
|
|
|
16473
16474
|
onSetTitleStyle,
|
|
16474
16475
|
onSetGridlineStyle
|
|
16475
16476
|
}) {
|
|
16476
|
-
const { t } =
|
|
16477
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16477
16478
|
const commitRecentColor = useRecentColorCommit();
|
|
16478
16479
|
const rows = SCALE_AXES.map((row) => ({
|
|
16479
16480
|
...row,
|
|
@@ -16645,7 +16646,7 @@ function ChartComboTypeOptions({
|
|
|
16645
16646
|
canEdit,
|
|
16646
16647
|
onSetSeriesType
|
|
16647
16648
|
}) {
|
|
16648
|
-
const { t } =
|
|
16649
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16649
16650
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16650
16651
|
return null;
|
|
16651
16652
|
}
|
|
@@ -16674,7 +16675,7 @@ function ChartDataLabelOptions({
|
|
|
16674
16675
|
canEdit,
|
|
16675
16676
|
onUpdateStyle
|
|
16676
16677
|
}) {
|
|
16677
|
-
const { t } =
|
|
16678
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16678
16679
|
if (!style?.hasDataLabels) {
|
|
16679
16680
|
return null;
|
|
16680
16681
|
}
|
|
@@ -16722,7 +16723,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16722
16723
|
canEdit,
|
|
16723
16724
|
onSetPointMarker
|
|
16724
16725
|
}) {
|
|
16725
|
-
const { t } =
|
|
16726
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16726
16727
|
const commitRecentColor = useRecentColorCommit();
|
|
16727
16728
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16728
16729
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16828,7 +16829,7 @@ function ChartDataPointOptions({
|
|
|
16828
16829
|
onSetPointExplosion,
|
|
16829
16830
|
onSetPointLabel
|
|
16830
16831
|
}) {
|
|
16831
|
-
const { t } =
|
|
16832
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16832
16833
|
const commitRecentColor = useRecentColorCommit();
|
|
16833
16834
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16834
16835
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -16930,7 +16931,7 @@ function ChartDataSheet({
|
|
|
16930
16931
|
highlightCell,
|
|
16931
16932
|
onChange
|
|
16932
16933
|
}) {
|
|
16933
|
-
const { t } =
|
|
16934
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16934
16935
|
const ref = React108.useRef(null);
|
|
16935
16936
|
React108.useLayoutEffect(() => {
|
|
16936
16937
|
if (ref.current) {
|
|
@@ -16961,7 +16962,7 @@ function ChartDisplayOptions({
|
|
|
16961
16962
|
hasGridlines,
|
|
16962
16963
|
onToggleGridlines
|
|
16963
16964
|
}) {
|
|
16964
|
-
const { t } =
|
|
16965
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16965
16966
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
16966
16967
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
16967
16968
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -17038,7 +17039,7 @@ function ChartErrorBarOptions({
|
|
|
17038
17039
|
canEdit,
|
|
17039
17040
|
onSetErrorBars
|
|
17040
17041
|
}) {
|
|
17041
|
-
const { t } =
|
|
17042
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17042
17043
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17043
17044
|
return null;
|
|
17044
17045
|
}
|
|
@@ -17118,7 +17119,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17118
17119
|
onRestoreSeries,
|
|
17119
17120
|
onSetDataLabelsRangeCache
|
|
17120
17121
|
}) {
|
|
17121
|
-
const { t } =
|
|
17122
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17122
17123
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17123
17124
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17124
17125
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17198,7 +17199,7 @@ function ChartMarkerOptions({
|
|
|
17198
17199
|
canEdit,
|
|
17199
17200
|
onSetMarker
|
|
17200
17201
|
}) {
|
|
17201
|
-
const { t } =
|
|
17202
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17202
17203
|
const commitRecentColor = useRecentColorCommit();
|
|
17203
17204
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17204
17205
|
return null;
|
|
@@ -17307,7 +17308,7 @@ function ChartSeriesColorOptions({
|
|
|
17307
17308
|
onSetColor,
|
|
17308
17309
|
onToggleSecondaryAxis
|
|
17309
17310
|
}) {
|
|
17310
|
-
const { t } =
|
|
17311
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17311
17312
|
const series = chartData.series;
|
|
17312
17313
|
if (series.length === 0) {
|
|
17313
17314
|
return null;
|
|
@@ -17357,7 +17358,7 @@ function ChartSubtypeOptions({
|
|
|
17357
17358
|
canEdit,
|
|
17358
17359
|
onUpdateChartData
|
|
17359
17360
|
}) {
|
|
17360
|
-
const { t } =
|
|
17361
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17361
17362
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17362
17363
|
return null;
|
|
17363
17364
|
}
|
|
@@ -17423,7 +17424,7 @@ function ChartTrendlineOptions({
|
|
|
17423
17424
|
canEdit,
|
|
17424
17425
|
onSetTrendline
|
|
17425
17426
|
}) {
|
|
17426
|
-
const { t } =
|
|
17427
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17427
17428
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17428
17429
|
return null;
|
|
17429
17430
|
}
|
|
@@ -17496,7 +17497,7 @@ function ChartTypeSelector({
|
|
|
17496
17497
|
onUpdateChartData,
|
|
17497
17498
|
onTitleChange
|
|
17498
17499
|
}) {
|
|
17499
|
-
const { t } =
|
|
17500
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17500
17501
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17501
17502
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17502
17503
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17577,7 +17578,7 @@ function RotationField({
|
|
|
17577
17578
|
canEdit,
|
|
17578
17579
|
onRotationPatch
|
|
17579
17580
|
}) {
|
|
17580
|
-
const { t } =
|
|
17581
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17581
17582
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17582
17583
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17583
17584
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17599,7 +17600,7 @@ function FlipFields({
|
|
|
17599
17600
|
canEdit,
|
|
17600
17601
|
onFlipPatch
|
|
17601
17602
|
}) {
|
|
17602
|
-
const { t } =
|
|
17603
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17603
17604
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17604
17605
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17605
17606
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17638,7 +17639,7 @@ function ChartUserShapePositionFields({
|
|
|
17638
17639
|
onRotationPatch,
|
|
17639
17640
|
onFlipPatch
|
|
17640
17641
|
}) {
|
|
17641
|
-
const { t } =
|
|
17642
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17642
17643
|
const update = (patch) => onPatch(row.path, patch);
|
|
17643
17644
|
if (row.depth === 0) {
|
|
17644
17645
|
const from = row.from;
|
|
@@ -17762,7 +17763,7 @@ function ChartUserShapeOptions({
|
|
|
17762
17763
|
canEdit,
|
|
17763
17764
|
onUpdateChartData
|
|
17764
17765
|
}) {
|
|
17765
|
-
const { t } =
|
|
17766
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17766
17767
|
const shapes = chartData.userShapes;
|
|
17767
17768
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17768
17769
|
const kindLabel = (kind) => {
|
|
@@ -17920,8 +17921,8 @@ function ChartUserShapeOptions({
|
|
|
17920
17921
|
}
|
|
17921
17922
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17922
17923
|
const chartData = selectedElement.chartData;
|
|
17923
|
-
const followDataPoint =
|
|
17924
|
-
const { selection: partSelection } =
|
|
17924
|
+
const followDataPoint = chunkVGU5S37T_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17925
|
+
const { selection: partSelection } = chunkVGU5S37T_js.useChartPartSelection();
|
|
17925
17926
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17926
17927
|
const title = chartData?.title;
|
|
17927
17928
|
const chartType = chartData?.chartType;
|
|
@@ -18359,7 +18360,7 @@ function OleEditorDialog({
|
|
|
18359
18360
|
element,
|
|
18360
18361
|
onUpdateElement
|
|
18361
18362
|
}) {
|
|
18362
|
-
const { t } =
|
|
18363
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18363
18364
|
const dialogRef = React108.useRef(null);
|
|
18364
18365
|
const fileInputRef = React108.useRef(null);
|
|
18365
18366
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18607,7 +18608,7 @@ function ConnectorArrowsSection({
|
|
|
18607
18608
|
onUpdateShapeStyle,
|
|
18608
18609
|
markDirty
|
|
18609
18610
|
}) {
|
|
18610
|
-
const { t } =
|
|
18611
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18611
18612
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18612
18613
|
["Start", "End"].map((end) => {
|
|
18613
18614
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18626,7 +18627,7 @@ function ConnectorArrowsSection({
|
|
|
18626
18627
|
},
|
|
18627
18628
|
disabled: !canEdit,
|
|
18628
18629
|
className: SELECT_CLS2,
|
|
18629
|
-
children:
|
|
18630
|
+
children: chunk5DBKW7F3_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18630
18631
|
}
|
|
18631
18632
|
)
|
|
18632
18633
|
] }, end);
|
|
@@ -18650,7 +18651,7 @@ function ConnectorArrowsSection({
|
|
|
18650
18651
|
},
|
|
18651
18652
|
disabled: !canEdit,
|
|
18652
18653
|
className: SELECT_CLS2,
|
|
18653
|
-
children:
|
|
18654
|
+
children: chunk5DBKW7F3_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18654
18655
|
}
|
|
18655
18656
|
)
|
|
18656
18657
|
] }),
|
|
@@ -18669,7 +18670,7 @@ function ConnectorArrowsSection({
|
|
|
18669
18670
|
},
|
|
18670
18671
|
disabled: !canEdit,
|
|
18671
18672
|
className: SELECT_CLS2,
|
|
18672
|
-
children:
|
|
18673
|
+
children: chunk5DBKW7F3_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18673
18674
|
}
|
|
18674
18675
|
)
|
|
18675
18676
|
] })
|
|
@@ -18700,7 +18701,7 @@ function ConnectorPanel({
|
|
|
18700
18701
|
function GroupInfoPanel({
|
|
18701
18702
|
selectedElement
|
|
18702
18703
|
}) {
|
|
18703
|
-
const { t } =
|
|
18704
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18704
18705
|
if (selectedElement.type !== "group") {
|
|
18705
18706
|
return null;
|
|
18706
18707
|
}
|
|
@@ -18715,7 +18716,7 @@ function OlePropertiesPanel({
|
|
|
18715
18716
|
canEdit,
|
|
18716
18717
|
onUpdateElement
|
|
18717
18718
|
}) {
|
|
18718
|
-
const { t } =
|
|
18719
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18719
18720
|
const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
|
|
18720
18721
|
if (selectedElement.type !== "ole") {
|
|
18721
18722
|
return null;
|
|
@@ -18760,7 +18761,7 @@ function OlePropertiesPanel({
|
|
|
18760
18761
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18761
18762
|
"span",
|
|
18762
18763
|
{
|
|
18763
|
-
className:
|
|
18764
|
+
className: chunk5DBKW7F3_js.cn(
|
|
18764
18765
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18765
18766
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18766
18767
|
),
|
|
@@ -18813,7 +18814,7 @@ function LayerOrderButtons({
|
|
|
18813
18814
|
"button",
|
|
18814
18815
|
{
|
|
18815
18816
|
type: "button",
|
|
18816
|
-
className:
|
|
18817
|
+
className: chunk5DBKW7F3_js.cn("flex-1", BTN2),
|
|
18817
18818
|
disabled: !canEdit,
|
|
18818
18819
|
onClick: () => onMoveLayer("forward"),
|
|
18819
18820
|
children: "\u2191 Forward"
|
|
@@ -18823,7 +18824,7 @@ function LayerOrderButtons({
|
|
|
18823
18824
|
"button",
|
|
18824
18825
|
{
|
|
18825
18826
|
type: "button",
|
|
18826
|
-
className:
|
|
18827
|
+
className: chunk5DBKW7F3_js.cn("flex-1", BTN2),
|
|
18827
18828
|
disabled: !canEdit,
|
|
18828
18829
|
onClick: () => onMoveLayer("backward"),
|
|
18829
18830
|
children: "\u2193 Backward"
|
|
@@ -18837,7 +18838,7 @@ function ArtisticEffectsGallery({
|
|
|
18837
18838
|
canEdit,
|
|
18838
18839
|
updateEffects
|
|
18839
18840
|
}) {
|
|
18840
|
-
const { t } =
|
|
18841
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18841
18842
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18842
18843
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18843
18844
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18847,7 +18848,7 @@ function ArtisticEffectsGallery({
|
|
|
18847
18848
|
{
|
|
18848
18849
|
type: "button",
|
|
18849
18850
|
disabled: !canEdit,
|
|
18850
|
-
className:
|
|
18851
|
+
className: chunk5DBKW7F3_js.cn(
|
|
18851
18852
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18852
18853
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18853
18854
|
),
|
|
@@ -18882,7 +18883,7 @@ function ColorChangeSection({
|
|
|
18882
18883
|
canEdit,
|
|
18883
18884
|
updateEffects
|
|
18884
18885
|
}) {
|
|
18885
|
-
const { t } =
|
|
18886
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18886
18887
|
const cc = fx?.clrChange;
|
|
18887
18888
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18888
18889
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18909,7 +18910,7 @@ function ColorChangeSection({
|
|
|
18909
18910
|
DebouncedColorInput,
|
|
18910
18911
|
{
|
|
18911
18912
|
disabled: !canEdit,
|
|
18912
|
-
value:
|
|
18913
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18913
18914
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18914
18915
|
onCommit: (hex) => updateEffects({
|
|
18915
18916
|
clrChange: {
|
|
@@ -18927,7 +18928,7 @@ function ColorChangeSection({
|
|
|
18927
18928
|
DebouncedColorInput,
|
|
18928
18929
|
{
|
|
18929
18930
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18930
|
-
value:
|
|
18931
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18931
18932
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18932
18933
|
onCommit: (hex) => updateEffects({
|
|
18933
18934
|
clrChange: {
|
|
@@ -18964,7 +18965,7 @@ function ColorWashSection({
|
|
|
18964
18965
|
canEdit,
|
|
18965
18966
|
updateEffects
|
|
18966
18967
|
}) {
|
|
18967
|
-
const { t } =
|
|
18968
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18968
18969
|
const wash = fx?.colorWash;
|
|
18969
18970
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18970
18971
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18987,7 +18988,7 @@ function ColorWashSection({
|
|
|
18987
18988
|
DebouncedColorInput,
|
|
18988
18989
|
{
|
|
18989
18990
|
disabled: !canEdit,
|
|
18990
|
-
value:
|
|
18991
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18991
18992
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18992
18993
|
onCommit: (hex) => updateEffects({
|
|
18993
18994
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19064,7 +19065,7 @@ function DuotonePanel({
|
|
|
19064
19065
|
canEdit,
|
|
19065
19066
|
onUpdateElement
|
|
19066
19067
|
}) {
|
|
19067
|
-
const { t } =
|
|
19068
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19068
19069
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
19069
19070
|
const commitDuotone = React108.useCallback(
|
|
19070
19071
|
(color1, color2) => {
|
|
@@ -19085,8 +19086,8 @@ function DuotonePanel({
|
|
|
19085
19086
|
}
|
|
19086
19087
|
});
|
|
19087
19088
|
}, [effects, onUpdateElement]);
|
|
19088
|
-
const shadowColor =
|
|
19089
|
-
const highlightColor =
|
|
19089
|
+
const shadowColor = chunk5DBKW7F3_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19090
|
+
const highlightColor = chunk5DBKW7F3_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19090
19091
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19091
19092
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19092
19093
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19117,7 +19118,7 @@ function DuotonePanel({
|
|
|
19117
19118
|
] }),
|
|
19118
19119
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19119
19120
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19120
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19121
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkVGU5S37T_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19121
19122
|
"button",
|
|
19122
19123
|
{
|
|
19123
19124
|
type: "button",
|
|
@@ -19153,7 +19154,7 @@ function ImageAdjustmentsPanel({
|
|
|
19153
19154
|
canEdit,
|
|
19154
19155
|
onUpdateElement
|
|
19155
19156
|
}) {
|
|
19156
|
-
const { t } =
|
|
19157
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19157
19158
|
const effects = React108.useMemo(
|
|
19158
19159
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19159
19160
|
[selectedElement]
|
|
@@ -19254,7 +19255,7 @@ function ImageCropSection({
|
|
|
19254
19255
|
canEdit,
|
|
19255
19256
|
onUpdateElement
|
|
19256
19257
|
}) {
|
|
19257
|
-
const { t } =
|
|
19258
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19258
19259
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19259
19260
|
return null;
|
|
19260
19261
|
}
|
|
@@ -19272,7 +19273,7 @@ function ImageCropSection({
|
|
|
19272
19273
|
max: MAX_CROP_PERCENT,
|
|
19273
19274
|
disabled: !croppable,
|
|
19274
19275
|
className: "accent-primary",
|
|
19275
|
-
value: Math.round(
|
|
19276
|
+
value: Math.round(chunk5DBKW7F3_js.clampCropValue(selectedElement[key]) * 100),
|
|
19276
19277
|
onChange: (e) => onUpdateElement({
|
|
19277
19278
|
[key]: Number(e.target.value) / 100
|
|
19278
19279
|
})
|
|
@@ -19319,7 +19320,7 @@ function ImagePropertiesPanel({
|
|
|
19319
19320
|
canEdit,
|
|
19320
19321
|
onUpdateElement
|
|
19321
19322
|
}) {
|
|
19322
|
-
const { t } =
|
|
19323
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19323
19324
|
const fx = selectedElement.imageEffects;
|
|
19324
19325
|
const updateEffects = (patch) => {
|
|
19325
19326
|
onUpdateElement({
|
|
@@ -19336,7 +19337,7 @@ function ImagePropertiesPanel({
|
|
|
19336
19337
|
{
|
|
19337
19338
|
rows: 2,
|
|
19338
19339
|
disabled: !canEdit,
|
|
19339
|
-
className:
|
|
19340
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19340
19341
|
value: selectedElement.altText ?? "",
|
|
19341
19342
|
onChange: (e) => onUpdateElement({
|
|
19342
19343
|
altText: e.target.value
|
|
@@ -19524,7 +19525,7 @@ function InspectorFields({
|
|
|
19524
19525
|
liveTarget,
|
|
19525
19526
|
livePatch
|
|
19526
19527
|
}) {
|
|
19527
|
-
const { t } =
|
|
19528
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19528
19529
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19529
19530
|
const change = (sectionId, fieldId, raw) => {
|
|
19530
19531
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19752,7 +19753,7 @@ function MediaInspector({
|
|
|
19752
19753
|
durationSeconds,
|
|
19753
19754
|
onUpdateElement
|
|
19754
19755
|
}) {
|
|
19755
|
-
const { t } =
|
|
19756
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19756
19757
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19757
19758
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19758
19759
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19982,7 +19983,7 @@ function MediaPlaybackBookmarks({
|
|
|
19982
19983
|
onUpdateElement,
|
|
19983
19984
|
onSeekTo
|
|
19984
19985
|
}) {
|
|
19985
|
-
const { t } =
|
|
19986
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19986
19987
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
19987
19988
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19988
19989
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20232,7 +20233,7 @@ function MediaPropertiesPanel({
|
|
|
20232
20233
|
canEdit,
|
|
20233
20234
|
onUpdateElement
|
|
20234
20235
|
}) {
|
|
20235
|
-
const { t } =
|
|
20236
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20236
20237
|
const mediaRef = React108.useRef(null);
|
|
20237
20238
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20238
20239
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20466,7 +20467,7 @@ function AccessibilityTextSection({
|
|
|
20466
20467
|
canEdit,
|
|
20467
20468
|
onUpdateElement
|
|
20468
20469
|
}) {
|
|
20469
|
-
const { t } =
|
|
20470
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20470
20471
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20471
20472
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20472
20473
|
return null;
|
|
@@ -20481,7 +20482,7 @@ function AccessibilityTextSection({
|
|
|
20481
20482
|
rows: 2,
|
|
20482
20483
|
disabled: !canEdit,
|
|
20483
20484
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20484
|
-
className:
|
|
20485
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20485
20486
|
value: fields.altText,
|
|
20486
20487
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20487
20488
|
}
|
|
@@ -20495,7 +20496,7 @@ function AccessibilityTextSection({
|
|
|
20495
20496
|
type: "text",
|
|
20496
20497
|
disabled: !canEdit,
|
|
20497
20498
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20498
|
-
className:
|
|
20499
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "text-[11px]"),
|
|
20499
20500
|
value: fields.title,
|
|
20500
20501
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20501
20502
|
}
|
|
@@ -20523,7 +20524,7 @@ function RecentColorsRow({
|
|
|
20523
20524
|
disabled,
|
|
20524
20525
|
onCommit
|
|
20525
20526
|
}) {
|
|
20526
|
-
const { t } =
|
|
20527
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20527
20528
|
const { recentColors, pushColor } = useRecentColors();
|
|
20528
20529
|
const shown = recentColors.length > 0;
|
|
20529
20530
|
const ref = React108.useRef(null);
|
|
@@ -20565,7 +20566,7 @@ function ThemeColorSwatchGrid({
|
|
|
20565
20566
|
selectedHex,
|
|
20566
20567
|
onPick
|
|
20567
20568
|
}) {
|
|
20568
|
-
const { t } =
|
|
20569
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20569
20570
|
const themeColorMap = useThemeColorMap();
|
|
20570
20571
|
const columns = React108.useMemo(
|
|
20571
20572
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20612,7 +20613,7 @@ function SelectRow({
|
|
|
20612
20613
|
options,
|
|
20613
20614
|
onChange
|
|
20614
20615
|
}) {
|
|
20615
|
-
const { t } =
|
|
20616
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20616
20617
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20617
20618
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20618
20619
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20636,14 +20637,14 @@ function ColorPickerRow({
|
|
|
20636
20637
|
onChange,
|
|
20637
20638
|
styleChange
|
|
20638
20639
|
}) {
|
|
20639
|
-
const { t } =
|
|
20640
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20640
20641
|
const { pushColor } = useRecentColors();
|
|
20641
20642
|
const commit = (color, ref) => {
|
|
20642
20643
|
onChange(color, ref);
|
|
20643
20644
|
pushColor(color);
|
|
20644
20645
|
};
|
|
20645
20646
|
const handleEyedropper = async () => {
|
|
20646
|
-
const color = await
|
|
20647
|
+
const color = await chunk5DBKW7F3_js.openNativeEyeDropper();
|
|
20647
20648
|
if (color) {
|
|
20648
20649
|
commit(color);
|
|
20649
20650
|
}
|
|
@@ -20716,7 +20717,7 @@ function GradientStopRow({
|
|
|
20716
20717
|
onUpdate,
|
|
20717
20718
|
allStops
|
|
20718
20719
|
}) {
|
|
20719
|
-
const { t } =
|
|
20720
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20720
20721
|
const { pushColor } = useRecentColors();
|
|
20721
20722
|
const commitRecentColor = useRecentColorCommit();
|
|
20722
20723
|
const patchStop = (patch) => {
|
|
@@ -20729,9 +20730,9 @@ function GradientStopRow({
|
|
|
20729
20730
|
"input",
|
|
20730
20731
|
{
|
|
20731
20732
|
type: "color",
|
|
20732
|
-
value:
|
|
20733
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20733
20734
|
ref: commitRecentColor,
|
|
20734
|
-
onChange: (e) => patchStop({ color:
|
|
20735
|
+
onChange: (e) => patchStop({ color: chunk5DBKW7F3_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20735
20736
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20736
20737
|
}
|
|
20737
20738
|
),
|
|
@@ -20806,7 +20807,7 @@ function FillAdvancedControls({
|
|
|
20806
20807
|
onUpdateGradientStops,
|
|
20807
20808
|
onSetFillColor: _onSetFillColor
|
|
20808
20809
|
}) {
|
|
20809
|
-
const { t } =
|
|
20810
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20810
20811
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20811
20812
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20812
20813
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20860,7 +20861,7 @@ function FillAdvancedControls({
|
|
|
20860
20861
|
onClick: () => onUpdateGradientStops([
|
|
20861
20862
|
...gradientStops,
|
|
20862
20863
|
{
|
|
20863
|
-
color:
|
|
20864
|
+
color: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
20864
20865
|
position: 50,
|
|
20865
20866
|
opacity: 1
|
|
20866
20867
|
}
|
|
@@ -20874,9 +20875,9 @@ function FillAdvancedControls({
|
|
|
20874
20875
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20875
20876
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20876
20877
|
/* @__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) => {
|
|
20877
|
-
const fgColor =
|
|
20878
|
-
const bgColor =
|
|
20879
|
-
const svgPattern =
|
|
20878
|
+
const fgColor = chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR);
|
|
20879
|
+
const bgColor = chunk5DBKW7F3_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20880
|
+
const svgPattern = chunk5DBKW7F3_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20880
20881
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20881
20882
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20882
20883
|
"button",
|
|
@@ -20909,7 +20910,7 @@ function FillAdvancedControls({
|
|
|
20909
20910
|
{
|
|
20910
20911
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20911
20912
|
prefix: "pattern-fg",
|
|
20912
|
-
value:
|
|
20913
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
20913
20914
|
disabled: isLine,
|
|
20914
20915
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
20915
20916
|
styleChange: patternForeground
|
|
@@ -20920,7 +20921,7 @@ function FillAdvancedControls({
|
|
|
20920
20921
|
{
|
|
20921
20922
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20922
20923
|
prefix: "pattern-bg",
|
|
20923
|
-
value:
|
|
20924
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20924
20925
|
disabled: isLine,
|
|
20925
20926
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
20926
20927
|
styleChange: patternBackground
|
|
@@ -20985,7 +20986,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20985
20986
|
function QuickStylesGallery({
|
|
20986
20987
|
onUpdateShapeStyle
|
|
20987
20988
|
}) {
|
|
20988
|
-
const { t } =
|
|
20989
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20989
20990
|
const ref = React108.useRef(null);
|
|
20990
20991
|
React108.useLayoutEffect(() => {
|
|
20991
20992
|
const gallery = ref.current;
|
|
@@ -21022,14 +21023,14 @@ function StrokeEffectsSection({
|
|
|
21022
21023
|
onUpdateShapeStyle,
|
|
21023
21024
|
onSetStrokeColor
|
|
21024
21025
|
}) {
|
|
21025
|
-
const { t } =
|
|
21026
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21026
21027
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21027
21028
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21028
21029
|
ColorPickerRow,
|
|
21029
21030
|
{
|
|
21030
21031
|
label: t("pptx.inspector.stroke"),
|
|
21031
21032
|
prefix: "stroke",
|
|
21032
|
-
value:
|
|
21033
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.strokeColor, chunk5DBKW7F3_js.DEFAULT_STROKE_COLOR),
|
|
21033
21034
|
selectedRef: style?.strokeColorRef,
|
|
21034
21035
|
onChange: onSetStrokeColor,
|
|
21035
21036
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -21072,7 +21073,7 @@ function FillStrokeProperties({
|
|
|
21072
21073
|
onSetFillColor,
|
|
21073
21074
|
onSetStrokeColor
|
|
21074
21075
|
}) {
|
|
21075
|
-
const { t } =
|
|
21076
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21076
21077
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
21077
21078
|
const style = selectedShapeStyle;
|
|
21078
21079
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21088,10 +21089,10 @@ function FillStrokeProperties({
|
|
|
21088
21089
|
return;
|
|
21089
21090
|
}
|
|
21090
21091
|
if (nextMode === "gradient") {
|
|
21091
|
-
const existing =
|
|
21092
|
+
const existing = chunk5DBKW7F3_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21092
21093
|
const stops = existing.length >= 2 ? existing : [
|
|
21093
21094
|
{
|
|
21094
|
-
color:
|
|
21095
|
+
color: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
21095
21096
|
position: 0,
|
|
21096
21097
|
opacity: 1
|
|
21097
21098
|
},
|
|
@@ -21116,7 +21117,7 @@ function FillStrokeProperties({
|
|
|
21116
21117
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21117
21118
|
};
|
|
21118
21119
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21119
|
-
{ color:
|
|
21120
|
+
{ color: chunk5DBKW7F3_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21120
21121
|
{ color: "#ffffff", position: 100 }
|
|
21121
21122
|
];
|
|
21122
21123
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21143,7 +21144,7 @@ function FillStrokeProperties({
|
|
|
21143
21144
|
{
|
|
21144
21145
|
label: t("pptx.fill.fill"),
|
|
21145
21146
|
prefix: "fill",
|
|
21146
|
-
value:
|
|
21147
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
21147
21148
|
selectedRef: style?.fillColorRef,
|
|
21148
21149
|
disabled: line,
|
|
21149
21150
|
onChange: onSetFillColor,
|
|
@@ -21181,7 +21182,7 @@ function Text3DProperties({
|
|
|
21181
21182
|
ts,
|
|
21182
21183
|
onUpdateTextStyle
|
|
21183
21184
|
}) {
|
|
21184
|
-
const { t } =
|
|
21185
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21185
21186
|
const commitRecentColor = useRecentColorCommit();
|
|
21186
21187
|
const t3d = ts?.text3d;
|
|
21187
21188
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21228,7 +21229,7 @@ function Text3DProperties({
|
|
|
21228
21229
|
"input",
|
|
21229
21230
|
{
|
|
21230
21231
|
type: "color",
|
|
21231
|
-
value:
|
|
21232
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21232
21233
|
ref: commitRecentColor,
|
|
21233
21234
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21234
21235
|
className: COLOR_CLS
|
|
@@ -21395,7 +21396,7 @@ function AdvancedTextFormatting({
|
|
|
21395
21396
|
onUpdateTextStyle,
|
|
21396
21397
|
numChange
|
|
21397
21398
|
}) {
|
|
21398
|
-
const { t } =
|
|
21399
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21399
21400
|
const commitRecentColor = useRecentColorCommit();
|
|
21400
21401
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21401
21402
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21417,7 +21418,7 @@ function AdvancedTextFormatting({
|
|
|
21417
21418
|
"input",
|
|
21418
21419
|
{
|
|
21419
21420
|
type: "color",
|
|
21420
|
-
value:
|
|
21421
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21421
21422
|
ref: commitRecentColor,
|
|
21422
21423
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21423
21424
|
disabled: !canEdit,
|
|
@@ -21559,7 +21560,7 @@ function TextReflectionSection({
|
|
|
21559
21560
|
onUpdateTextStyle,
|
|
21560
21561
|
numChange
|
|
21561
21562
|
}) {
|
|
21562
|
-
const { t } =
|
|
21563
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21563
21564
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21564
21565
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21565
21566
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21667,7 +21668,7 @@ function TextEffectsPanel({
|
|
|
21667
21668
|
onUpdateTextStyle,
|
|
21668
21669
|
numChange
|
|
21669
21670
|
}) {
|
|
21670
|
-
const { t } =
|
|
21671
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21671
21672
|
const commitRecentColor = useRecentColorCommit();
|
|
21672
21673
|
const hasShadow = Boolean(
|
|
21673
21674
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21713,7 +21714,7 @@ function TextEffectsPanel({
|
|
|
21713
21714
|
"input",
|
|
21714
21715
|
{
|
|
21715
21716
|
type: "color",
|
|
21716
|
-
value:
|
|
21717
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21717
21718
|
ref: commitRecentColor,
|
|
21718
21719
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21719
21720
|
className: COLOR_CLS2
|
|
@@ -21818,7 +21819,7 @@ function TextEffectsPanel({
|
|
|
21818
21819
|
"input",
|
|
21819
21820
|
{
|
|
21820
21821
|
type: "color",
|
|
21821
|
-
value:
|
|
21822
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21822
21823
|
ref: commitRecentColor,
|
|
21823
21824
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21824
21825
|
className: COLOR_CLS2
|
|
@@ -21868,7 +21869,7 @@ function TextWarpGallery({
|
|
|
21868
21869
|
ts,
|
|
21869
21870
|
onUpdateTextStyle
|
|
21870
21871
|
}) {
|
|
21871
|
-
const { t } =
|
|
21872
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21872
21873
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
21873
21874
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21874
21875
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21949,7 +21950,7 @@ function ShapeTextPanels({
|
|
|
21949
21950
|
onUpdateElementStyle,
|
|
21950
21951
|
onUpdateTextStyle
|
|
21951
21952
|
}) {
|
|
21952
|
-
const { t } =
|
|
21953
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21953
21954
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21954
21955
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21955
21956
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21958,11 +21959,11 @@ function ShapeTextPanels({
|
|
|
21958
21959
|
{
|
|
21959
21960
|
value: selectedElement.shapeType || "rect",
|
|
21960
21961
|
disabled: !canEdit,
|
|
21961
|
-
className:
|
|
21962
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
21962
21963
|
onChange: (e) => onUpdateElement({
|
|
21963
21964
|
shapeType: e.target.value
|
|
21964
21965
|
}),
|
|
21965
|
-
children:
|
|
21966
|
+
children: chunk5DBKW7F3_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21966
21967
|
}
|
|
21967
21968
|
)
|
|
21968
21969
|
] }),
|
|
@@ -21974,7 +21975,7 @@ function ShapeTextPanels({
|
|
|
21974
21975
|
selectedElement,
|
|
21975
21976
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21976
21977
|
selectedShapeType: selectedElement.shapeType,
|
|
21977
|
-
selectedGradientStops:
|
|
21978
|
+
selectedGradientStops: chunk5DBKW7F3_js.sanitizeGradientStops(
|
|
21978
21979
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21979
21980
|
),
|
|
21980
21981
|
canEdit,
|
|
@@ -22010,7 +22011,7 @@ function ShapeTextPanels({
|
|
|
22010
22011
|
{
|
|
22011
22012
|
disabled: !canEdit,
|
|
22012
22013
|
"aria-label": "Text Color",
|
|
22013
|
-
value:
|
|
22014
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22014
22015
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22015
22016
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
22016
22017
|
patch: textColorPatch
|
|
@@ -22101,7 +22102,7 @@ function TextFormatToggle({
|
|
|
22101
22102
|
{
|
|
22102
22103
|
type: "button",
|
|
22103
22104
|
disabled,
|
|
22104
|
-
className:
|
|
22105
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22105
22106
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22106
22107
|
italic && "italic",
|
|
22107
22108
|
underline && "underline",
|
|
@@ -22270,7 +22271,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22270
22271
|
canEdit,
|
|
22271
22272
|
onUpdateSmartArt
|
|
22272
22273
|
}) {
|
|
22273
|
-
const { t } =
|
|
22274
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22274
22275
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22275
22276
|
const handleLayoutSwitch = (newLayout) => {
|
|
22276
22277
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22289,7 +22290,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22289
22290
|
type: "button",
|
|
22290
22291
|
"data-testid": `smartart-layout-${type}`,
|
|
22291
22292
|
disabled: !canEdit,
|
|
22292
|
-
className:
|
|
22293
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22293
22294
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22294
22295
|
"text-[9px] leading-tight",
|
|
22295
22296
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22316,7 +22317,7 @@ function SmartArtStyleControls({
|
|
|
22316
22317
|
onChangeColorScheme,
|
|
22317
22318
|
onChangeStyle
|
|
22318
22319
|
}) {
|
|
22319
|
-
const { t } =
|
|
22320
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22320
22321
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22321
22322
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22322
22323
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22327,7 +22328,7 @@ function SmartArtStyleControls({
|
|
|
22327
22328
|
disabled: !canEdit,
|
|
22328
22329
|
"data-testid": "smartart-color-scheme",
|
|
22329
22330
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22330
|
-
className:
|
|
22331
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
22331
22332
|
value: colorScheme,
|
|
22332
22333
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22333
22334
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22342,7 +22343,7 @@ function SmartArtStyleControls({
|
|
|
22342
22343
|
type: "button",
|
|
22343
22344
|
disabled: !canEdit,
|
|
22344
22345
|
"aria-pressed": style === s,
|
|
22345
|
-
className:
|
|
22346
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22346
22347
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22347
22348
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22348
22349
|
),
|
|
@@ -22368,14 +22369,14 @@ function SmartArtPropertiesPanel({
|
|
|
22368
22369
|
onUpdateElement,
|
|
22369
22370
|
box
|
|
22370
22371
|
}) {
|
|
22371
|
-
const { t } =
|
|
22372
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22372
22373
|
const { pushColor } = useRecentColors();
|
|
22373
22374
|
const paneRef = React108__default.default.useRef(null);
|
|
22374
22375
|
const applySmartArtData = (newData) => {
|
|
22375
22376
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22376
22377
|
newData,
|
|
22377
22378
|
newData.layout,
|
|
22378
|
-
|
|
22379
|
+
chunkVGU5S37T_js.resolveSmartArtDataPalette(newData),
|
|
22379
22380
|
newData.style ?? "flat",
|
|
22380
22381
|
"inspector",
|
|
22381
22382
|
box
|
|
@@ -22446,9 +22447,9 @@ function TableDataGrid({
|
|
|
22446
22447
|
canEdit,
|
|
22447
22448
|
onUpdateElement
|
|
22448
22449
|
}) {
|
|
22449
|
-
const { t } =
|
|
22450
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22450
22451
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22451
|
-
const { viewportWidth } =
|
|
22452
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
22452
22453
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22453
22454
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22454
22455
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22612,7 +22613,7 @@ function TableCellPatternFill({
|
|
|
22612
22613
|
canEdit,
|
|
22613
22614
|
onUpdateCellStyle
|
|
22614
22615
|
}) {
|
|
22615
|
-
const { t } =
|
|
22616
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22616
22617
|
const commitRecentColor = useRecentColorCommit();
|
|
22617
22618
|
const translate = (key) => t(key);
|
|
22618
22619
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22667,7 +22668,7 @@ function TableCellAdvancedFill({
|
|
|
22667
22668
|
canEdit,
|
|
22668
22669
|
onUpdateCellStyle
|
|
22669
22670
|
}) {
|
|
22670
|
-
const { t } =
|
|
22671
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22671
22672
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22672
22673
|
const handleFillModeChange = (mode) => {
|
|
22673
22674
|
const next = mode;
|
|
@@ -22755,7 +22756,7 @@ function GradientControls({
|
|
|
22755
22756
|
canEdit,
|
|
22756
22757
|
onUpdateCellStyle
|
|
22757
22758
|
}) {
|
|
22758
|
-
const { t } =
|
|
22759
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22759
22760
|
const commitRecentColor = useRecentColorCommit();
|
|
22760
22761
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22761
22762
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22853,7 +22854,7 @@ function TableCellColorField({
|
|
|
22853
22854
|
disabled,
|
|
22854
22855
|
onCommit
|
|
22855
22856
|
}) {
|
|
22856
|
-
const hex =
|
|
22857
|
+
const hex = chunk5DBKW7F3_js.normalizeHexColor(value, fallback);
|
|
22857
22858
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22858
22859
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22859
22860
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22883,7 +22884,7 @@ function TableCellFormattingPanel({
|
|
|
22883
22884
|
onUpdateTableData,
|
|
22884
22885
|
onUpdateMergeRows
|
|
22885
22886
|
}) {
|
|
22886
|
-
const { t } =
|
|
22887
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22887
22888
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22888
22889
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22889
22890
|
if (!cell) {
|
|
@@ -22961,7 +22962,7 @@ function TableCellFormattingPanel({
|
|
|
22961
22962
|
{
|
|
22962
22963
|
type: "button",
|
|
22963
22964
|
disabled: !canEdit,
|
|
22964
|
-
className:
|
|
22965
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22965
22966
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22966
22967
|
cls,
|
|
22967
22968
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22980,7 +22981,7 @@ function TableCellFormattingPanel({
|
|
|
22980
22981
|
{
|
|
22981
22982
|
type: "button",
|
|
22982
22983
|
disabled: !canEdit,
|
|
22983
|
-
className:
|
|
22984
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22984
22985
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22985
22986
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22986
22987
|
),
|
|
@@ -22998,7 +22999,7 @@ function TableCellFormattingPanel({
|
|
|
22998
22999
|
{
|
|
22999
23000
|
type: "button",
|
|
23000
23001
|
disabled: !canEdit,
|
|
23001
|
-
className:
|
|
23002
|
+
className: chunk5DBKW7F3_js.cn(
|
|
23002
23003
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23003
23004
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23004
23005
|
),
|
|
@@ -23021,7 +23022,7 @@ function TableCellFormattingPanel({
|
|
|
23021
23022
|
DebouncedColorInput,
|
|
23022
23023
|
{
|
|
23023
23024
|
disabled: !canEdit,
|
|
23024
|
-
value:
|
|
23025
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23025
23026
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23026
23027
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23027
23028
|
}
|
|
@@ -23031,7 +23032,7 @@ function TableCellFormattingPanel({
|
|
|
23031
23032
|
{
|
|
23032
23033
|
type: "number",
|
|
23033
23034
|
disabled: !canEdit,
|
|
23034
|
-
className:
|
|
23035
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-14"),
|
|
23035
23036
|
min: 0,
|
|
23036
23037
|
max: 10,
|
|
23037
23038
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -23047,7 +23048,7 @@ function TableCellFormattingPanel({
|
|
|
23047
23048
|
{
|
|
23048
23049
|
type: "button",
|
|
23049
23050
|
disabled: !canEdit,
|
|
23050
|
-
className:
|
|
23051
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "text-center"),
|
|
23051
23052
|
onClick: () => {
|
|
23052
23053
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23053
23054
|
if (newRows) {
|
|
@@ -23062,7 +23063,7 @@ function TableCellFormattingPanel({
|
|
|
23062
23063
|
{
|
|
23063
23064
|
type: "button",
|
|
23064
23065
|
disabled: !canEdit,
|
|
23065
|
-
className:
|
|
23066
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "text-center"),
|
|
23066
23067
|
onClick: () => {
|
|
23067
23068
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23068
23069
|
if (newRows) {
|
|
@@ -23077,7 +23078,7 @@ function TableCellFormattingPanel({
|
|
|
23077
23078
|
{
|
|
23078
23079
|
type: "button",
|
|
23079
23080
|
disabled: !canEdit,
|
|
23080
|
-
className:
|
|
23081
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "text-center"),
|
|
23081
23082
|
onClick: () => {
|
|
23082
23083
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23083
23084
|
if (newRows) {
|
|
@@ -23096,7 +23097,7 @@ function TableStyleEditorFields({
|
|
|
23096
23097
|
canEdit,
|
|
23097
23098
|
onEdit
|
|
23098
23099
|
}) {
|
|
23099
|
-
const { t } =
|
|
23100
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23100
23101
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23101
23102
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23102
23103
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23201,7 +23202,7 @@ function BorderSideRow({
|
|
|
23201
23202
|
canEdit,
|
|
23202
23203
|
onEdit
|
|
23203
23204
|
}) {
|
|
23204
|
-
const { t } =
|
|
23205
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23205
23206
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23206
23207
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23207
23208
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23258,7 +23259,7 @@ function TableStyleEditor({
|
|
|
23258
23259
|
onAssignStyle,
|
|
23259
23260
|
onClose
|
|
23260
23261
|
}) {
|
|
23261
|
-
const { t } =
|
|
23262
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23262
23263
|
const themeColorMap = useThemeColorMap();
|
|
23263
23264
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23264
23265
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23350,7 +23351,7 @@ function TablePropertiesPanel({
|
|
|
23350
23351
|
onTableStyleMapChange,
|
|
23351
23352
|
onDeleteTableStyle
|
|
23352
23353
|
}) {
|
|
23353
|
-
const { t } =
|
|
23354
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23354
23355
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23355
23356
|
const td = tableElement.tableData;
|
|
23356
23357
|
if (!td) {
|
|
@@ -23432,7 +23433,7 @@ function TablePropertiesPanel({
|
|
|
23432
23433
|
] }),
|
|
23433
23434
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23434
23435
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23435
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23436
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk5DBKW7F3_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23436
23437
|
"button",
|
|
23437
23438
|
{
|
|
23438
23439
|
type: "button",
|
|
@@ -23580,7 +23581,7 @@ function ElementInspectorBody({
|
|
|
23580
23581
|
onUpdateTextStyle,
|
|
23581
23582
|
onMoveLayer
|
|
23582
23583
|
}) {
|
|
23583
|
-
const { t } =
|
|
23584
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23584
23585
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23585
23586
|
const handleToggleLock = () => {
|
|
23586
23587
|
if (!canEdit) {
|
|
@@ -23730,7 +23731,7 @@ function CommentMentionTextarea({
|
|
|
23730
23731
|
className,
|
|
23731
23732
|
ariaLabel
|
|
23732
23733
|
}) {
|
|
23733
|
-
const { t } =
|
|
23734
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23734
23735
|
const textareaRef = React108.useRef(null);
|
|
23735
23736
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23736
23737
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23819,7 +23820,7 @@ function CommentMentionTextarea({
|
|
|
23819
23820
|
"data-testid": "pptx-comment-mention-option",
|
|
23820
23821
|
role: "option",
|
|
23821
23822
|
"aria-selected": index === safeHighlighted,
|
|
23822
|
-
className:
|
|
23823
|
+
className: chunk5DBKW7F3_js.cn(
|
|
23823
23824
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23824
23825
|
index === safeHighlighted && "bg-accent"
|
|
23825
23826
|
),
|
|
@@ -23866,7 +23867,7 @@ function InspectorCommentReplyForm({
|
|
|
23866
23867
|
onSubmit,
|
|
23867
23868
|
onCancel
|
|
23868
23869
|
}) {
|
|
23869
|
-
const { t } =
|
|
23870
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23870
23871
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23871
23872
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23872
23873
|
CommentMentionTextarea,
|
|
@@ -23932,7 +23933,7 @@ function InspectorCommentRow({
|
|
|
23932
23933
|
onSelectElement,
|
|
23933
23934
|
depth = 0
|
|
23934
23935
|
}) {
|
|
23935
|
-
const { t } =
|
|
23936
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23936
23937
|
const isEditing = editingCommentId === comment.id;
|
|
23937
23938
|
const isReplying = replyingToCommentId === comment.id;
|
|
23938
23939
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23942,7 +23943,7 @@ function InspectorCommentRow({
|
|
|
23942
23943
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23943
23944
|
"div",
|
|
23944
23945
|
{
|
|
23945
|
-
className:
|
|
23946
|
+
className: chunk5DBKW7F3_js.cn(
|
|
23946
23947
|
"rounded border border-border bg-card p-2",
|
|
23947
23948
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23948
23949
|
),
|
|
@@ -23956,7 +23957,7 @@ function InspectorCommentRow({
|
|
|
23956
23957
|
t("pptx.comments.resolved")
|
|
23957
23958
|
] })
|
|
23958
23959
|
] }),
|
|
23959
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23960
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk5DBKW7F3_js.formatCommentTimestamp(comment.createdAt) })
|
|
23960
23961
|
] }),
|
|
23961
23962
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23962
23963
|
"button",
|
|
@@ -23964,12 +23965,12 @@ function InspectorCommentRow({
|
|
|
23964
23965
|
type: "button",
|
|
23965
23966
|
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",
|
|
23966
23967
|
title: t("pptx.comments.commentingOn", {
|
|
23967
|
-
element:
|
|
23968
|
+
element: chunk5DBKW7F3_js.getElementLabel(targetElement)
|
|
23968
23969
|
}),
|
|
23969
23970
|
onClick: () => onSelectElement(targetElement.id),
|
|
23970
23971
|
children: [
|
|
23971
23972
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23972
|
-
|
|
23973
|
+
chunk5DBKW7F3_js.getElementLabel(targetElement)
|
|
23973
23974
|
]
|
|
23974
23975
|
}
|
|
23975
23976
|
) : /* @__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") })),
|
|
@@ -24038,7 +24039,7 @@ function InspectorCommentRow({
|
|
|
24038
24039
|
"button",
|
|
24039
24040
|
{
|
|
24040
24041
|
type: "button",
|
|
24041
|
-
className:
|
|
24042
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24042
24043
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24043
24044
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24044
24045
|
),
|
|
@@ -24144,7 +24145,7 @@ function InspectorCommentsSection({
|
|
|
24144
24145
|
onSubmitReply,
|
|
24145
24146
|
onSelectElement
|
|
24146
24147
|
}) {
|
|
24147
|
-
const { t } =
|
|
24148
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24148
24149
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24149
24150
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24150
24151
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24181,7 +24182,7 @@ function InspectorCommentsSection({
|
|
|
24181
24182
|
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: [
|
|
24182
24183
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24183
24184
|
t("pptx.comments.commentingOn", {
|
|
24184
|
-
element:
|
|
24185
|
+
element: chunk5DBKW7F3_js.getElementLabel(selectedElement)
|
|
24185
24186
|
})
|
|
24186
24187
|
] }),
|
|
24187
24188
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24192,7 +24193,7 @@ function InspectorCommentsSection({
|
|
|
24192
24193
|
authors: commentAuthors,
|
|
24193
24194
|
rows: 2,
|
|
24194
24195
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24195
|
-
element:
|
|
24196
|
+
element: chunk5DBKW7F3_js.getElementLabel(selectedElement)
|
|
24196
24197
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24197
24198
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24198
24199
|
onChange: onSetCommentDraft,
|
|
@@ -24205,7 +24206,7 @@ function InspectorCommentsSection({
|
|
|
24205
24206
|
type: "button",
|
|
24206
24207
|
onClick: onAddComment,
|
|
24207
24208
|
disabled: !commentDraft.trim(),
|
|
24208
|
-
className:
|
|
24209
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24209
24210
|
"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]!",
|
|
24210
24211
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24211
24212
|
),
|
|
@@ -24230,7 +24231,7 @@ function InspectorElementsTab({
|
|
|
24230
24231
|
onSelectElement,
|
|
24231
24232
|
onUpdateSlide
|
|
24232
24233
|
}) {
|
|
24233
|
-
const { t } =
|
|
24234
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24234
24235
|
const toggleHidden = (elementId2) => {
|
|
24235
24236
|
const elements2 = activeSlide?.elements;
|
|
24236
24237
|
if (!canEdit || !elements2) {
|
|
@@ -24246,13 +24247,13 @@ function InspectorElementsTab({
|
|
|
24246
24247
|
};
|
|
24247
24248
|
if (!activeSlide) {
|
|
24248
24249
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24249
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24250
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk5DBKW7F3_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24250
24251
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24251
24252
|
] });
|
|
24252
24253
|
}
|
|
24253
24254
|
const elements = activeSlide.elements || [];
|
|
24254
24255
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24255
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24256
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk5DBKW7F3_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24256
24257
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24257
24258
|
const index = elements.length - 1 - reversedIndex;
|
|
24258
24259
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24260,7 +24261,7 @@ function InspectorElementsTab({
|
|
|
24260
24261
|
"div",
|
|
24261
24262
|
{
|
|
24262
24263
|
title: `${el.type} - ${el.id}`,
|
|
24263
|
-
className:
|
|
24264
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24264
24265
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24265
24266
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24266
24267
|
),
|
|
@@ -24296,8 +24297,8 @@ function InspectorPaneHeader({
|
|
|
24296
24297
|
onSetActiveTab,
|
|
24297
24298
|
onClose
|
|
24298
24299
|
}) {
|
|
24299
|
-
const { t } =
|
|
24300
|
-
const { viewportWidth } =
|
|
24300
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24301
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
24301
24302
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24302
24303
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24303
24304
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24320,7 +24321,7 @@ function InspectorPaneHeader({
|
|
|
24320
24321
|
type: "button",
|
|
24321
24322
|
title: t(labelKey),
|
|
24322
24323
|
style: touchBtnStyle,
|
|
24323
|
-
className:
|
|
24324
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24324
24325
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24325
24326
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24326
24327
|
),
|
|
@@ -24380,7 +24381,7 @@ function CustomPropertiesBlock({
|
|
|
24380
24381
|
canEdit,
|
|
24381
24382
|
onUpdate
|
|
24382
24383
|
}) {
|
|
24383
|
-
const { t } =
|
|
24384
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24384
24385
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24385
24386
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24386
24387
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24434,7 +24435,7 @@ function CustomPropertiesBlock({
|
|
|
24434
24435
|
"button",
|
|
24435
24436
|
{
|
|
24436
24437
|
type: "button",
|
|
24437
|
-
className:
|
|
24438
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24438
24439
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24439
24440
|
children: "\xD7"
|
|
24440
24441
|
}
|
|
@@ -24447,7 +24448,7 @@ function NotesHandoutCard({
|
|
|
24447
24448
|
notesMaster,
|
|
24448
24449
|
handoutMaster
|
|
24449
24450
|
}) {
|
|
24450
|
-
const { t } =
|
|
24451
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24451
24452
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24452
24453
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24453
24454
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24484,7 +24485,7 @@ function DocumentPropertiesCard({
|
|
|
24484
24485
|
onUpdateAppProperties,
|
|
24485
24486
|
onUpdateCustomProperties
|
|
24486
24487
|
}) {
|
|
24487
|
-
const { t } =
|
|
24488
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24488
24489
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24489
24490
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24490
24491
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24538,7 +24539,7 @@ function DocumentPropertiesCard({
|
|
|
24538
24539
|
function SlideSizeRescalePrompt({
|
|
24539
24540
|
onChoose
|
|
24540
24541
|
}) {
|
|
24541
|
-
const { t } =
|
|
24542
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24542
24543
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24543
24544
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24544
24545
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24580,7 +24581,7 @@ function SlideSizeCard({
|
|
|
24580
24581
|
onUpdateSlideSize,
|
|
24581
24582
|
hasContent
|
|
24582
24583
|
}) {
|
|
24583
|
-
const { t } =
|
|
24584
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24584
24585
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24585
24586
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24586
24587
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24691,7 +24692,7 @@ function PresentationSettingsCard({
|
|
|
24691
24692
|
canEdit,
|
|
24692
24693
|
onUpdate
|
|
24693
24694
|
}) {
|
|
24694
|
-
const { t } =
|
|
24695
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24695
24696
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24696
24697
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24697
24698
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24762,7 +24763,7 @@ function PresentationSettingsCard({
|
|
|
24762
24763
|
min: 1,
|
|
24763
24764
|
max: 16,
|
|
24764
24765
|
disabled: !canEdit,
|
|
24765
|
-
className:
|
|
24766
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-20"),
|
|
24766
24767
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24767
24768
|
onChange: (e) => onUpdate({
|
|
24768
24769
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24783,7 +24784,7 @@ function ThemeSelectorCard({
|
|
|
24783
24784
|
canEdit,
|
|
24784
24785
|
onApplyTheme
|
|
24785
24786
|
}) {
|
|
24786
|
-
const { t } =
|
|
24787
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24787
24788
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24788
24789
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24789
24790
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24846,7 +24847,7 @@ function SlideThemeOverridePanel({
|
|
|
24846
24847
|
canEdit,
|
|
24847
24848
|
onUpdateSlide
|
|
24848
24849
|
}) {
|
|
24849
|
-
const { t } =
|
|
24850
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24850
24851
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24851
24852
|
const override = activeSlide?.clrMapOverride;
|
|
24852
24853
|
const isOverrideActive = override !== void 0;
|
|
@@ -24953,7 +24954,7 @@ function DirectionPicker({
|
|
|
24953
24954
|
disabled,
|
|
24954
24955
|
onChange
|
|
24955
24956
|
}) {
|
|
24956
|
-
const { t } =
|
|
24957
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24957
24958
|
if (directions.length <= 3) {
|
|
24958
24959
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24959
24960
|
"button",
|
|
@@ -24995,10 +24996,10 @@ function TransitionPreview({
|
|
|
24995
24996
|
const previewRef = React108.useRef(null);
|
|
24996
24997
|
const [playing, setPlaying] = React108.useState(false);
|
|
24997
24998
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
24998
|
-
const { t } =
|
|
24999
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24999
25000
|
const durationMs = transition.durationMs ?? 500;
|
|
25000
25001
|
const animations = React108.useMemo(
|
|
25001
|
-
() =>
|
|
25002
|
+
() => chunkVGU5S37T_js.getSlideTransitionAnimations(
|
|
25002
25003
|
transition.type,
|
|
25003
25004
|
durationMs,
|
|
25004
25005
|
transition.direction,
|
|
@@ -25067,7 +25068,7 @@ function TransitionPreview({
|
|
|
25067
25068
|
]
|
|
25068
25069
|
}
|
|
25069
25070
|
),
|
|
25070
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25071
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkVGU5S37T_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25071
25072
|
] });
|
|
25072
25073
|
}
|
|
25073
25074
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25079,7 +25080,7 @@ function SlideTransitionSection({
|
|
|
25079
25080
|
canEdit = true,
|
|
25080
25081
|
onTransitionChange
|
|
25081
25082
|
}) {
|
|
25082
|
-
const { t } =
|
|
25083
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25083
25084
|
if (!activeSlide) {
|
|
25084
25085
|
return null;
|
|
25085
25086
|
}
|
|
@@ -25110,7 +25111,7 @@ function SlideTransitionSection({
|
|
|
25110
25111
|
type: e.target.value
|
|
25111
25112
|
}),
|
|
25112
25113
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25113
|
-
children:
|
|
25114
|
+
children: chunk5DBKW7F3_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25114
25115
|
}
|
|
25115
25116
|
)
|
|
25116
25117
|
] }),
|
|
@@ -25268,7 +25269,7 @@ function TagsSection({
|
|
|
25268
25269
|
onUpdateTagCollections,
|
|
25269
25270
|
canEdit
|
|
25270
25271
|
}) {
|
|
25271
|
-
const { t } =
|
|
25272
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25272
25273
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25273
25274
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25274
25275
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25326,7 +25327,7 @@ function TagsSection({
|
|
|
25326
25327
|
"button",
|
|
25327
25328
|
{
|
|
25328
25329
|
type: "button",
|
|
25329
|
-
className:
|
|
25330
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25330
25331
|
title: t("pptx.tags.deleteTag"),
|
|
25331
25332
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25332
25333
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25368,7 +25369,7 @@ function PresentationPropertiesPanel({
|
|
|
25368
25369
|
tagCollections,
|
|
25369
25370
|
onUpdateTagCollections
|
|
25370
25371
|
}) {
|
|
25371
|
-
const { t } =
|
|
25372
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25372
25373
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25373
25374
|
(updates) => {
|
|
25374
25375
|
onUpdateSlide({
|
|
@@ -25455,7 +25456,7 @@ function PresentationPropertiesPanel({
|
|
|
25455
25456
|
canEdit
|
|
25456
25457
|
}
|
|
25457
25458
|
) }),
|
|
25458
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25459
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk5DBKW7F3_js.cn(CARD2, "space-y-1"), children: [
|
|
25459
25460
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25460
25461
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25461
25462
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25473,17 +25474,17 @@ function SlideBackgroundPanel({
|
|
|
25473
25474
|
onSetTemplateBackground,
|
|
25474
25475
|
onGetTemplateBackgroundColor
|
|
25475
25476
|
}) {
|
|
25476
|
-
const { t } =
|
|
25477
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25477
25478
|
const bgImageInputRef = React108.useRef(null);
|
|
25478
25479
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25479
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25480
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk5DBKW7F3_js.cn(CARD2, "space-y-2"), children: [
|
|
25480
25481
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25481
25482
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25482
25483
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25483
25484
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25484
25485
|
DebouncedColorInput,
|
|
25485
25486
|
{
|
|
25486
|
-
value:
|
|
25487
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25487
25488
|
disabled: !canEdit,
|
|
25488
25489
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25489
25490
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25522,7 +25523,7 @@ function SlideBackgroundPanel({
|
|
|
25522
25523
|
"button",
|
|
25523
25524
|
{
|
|
25524
25525
|
type: "button",
|
|
25525
|
-
className:
|
|
25526
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "flex-1 text-center"),
|
|
25526
25527
|
disabled: !canEdit,
|
|
25527
25528
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25528
25529
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25555,7 +25556,7 @@ function SlideBackgroundPanel({
|
|
|
25555
25556
|
"button",
|
|
25556
25557
|
{
|
|
25557
25558
|
type: "button",
|
|
25558
|
-
className:
|
|
25559
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25559
25560
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25560
25561
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25561
25562
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25592,21 +25593,21 @@ function TemplateBackgroundCard({
|
|
|
25592
25593
|
onSetTemplateBackground,
|
|
25593
25594
|
onGetTemplateBackgroundColor
|
|
25594
25595
|
}) {
|
|
25595
|
-
const { t } =
|
|
25596
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25596
25597
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25597
25598
|
activeSlide,
|
|
25598
25599
|
slideMasters,
|
|
25599
25600
|
t("pptx.master.layout"),
|
|
25600
25601
|
t("pptx.master.master")
|
|
25601
25602
|
);
|
|
25602
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25603
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk5DBKW7F3_js.cn(CARD2, "space-y-2"), children: [
|
|
25603
25604
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25604
25605
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25605
25606
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25606
25607
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25607
25608
|
DebouncedColorInput,
|
|
25608
25609
|
{
|
|
25609
|
-
value:
|
|
25610
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25610
25611
|
disabled: !canEdit,
|
|
25611
25612
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25612
25613
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25619,7 +25620,7 @@ function TemplateBackgroundCard({
|
|
|
25619
25620
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25620
25621
|
DebouncedColorInput,
|
|
25621
25622
|
{
|
|
25622
|
-
value:
|
|
25623
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25623
25624
|
disabled: !canEdit,
|
|
25624
25625
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25625
25626
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25729,8 +25730,8 @@ function InspectorPane(props) {
|
|
|
25729
25730
|
panelWidth
|
|
25730
25731
|
} = props;
|
|
25731
25732
|
const hasSelection = selectedElement !== null;
|
|
25732
|
-
const { t } =
|
|
25733
|
-
const { dragY, handlers: dragHandlers } =
|
|
25733
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25734
|
+
const { dragY, handlers: dragHandlers } = chunkVGU5S37T_js.useSheetDismissDrag(onClose);
|
|
25734
25735
|
const {
|
|
25735
25736
|
animationPanelHeight,
|
|
25736
25737
|
effectiveThemeOptions,
|
|
@@ -25752,7 +25753,7 @@ function InspectorPane(props) {
|
|
|
25752
25753
|
"div",
|
|
25753
25754
|
{
|
|
25754
25755
|
"data-pptx-chrome": "inspector",
|
|
25755
|
-
className:
|
|
25756
|
+
className: chunk5DBKW7F3_js.cn(
|
|
25756
25757
|
// Shared styles
|
|
25757
25758
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25758
25759
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26083,7 +26084,7 @@ function PresentationAnnotationOverlay({
|
|
|
26083
26084
|
);
|
|
26084
26085
|
}
|
|
26085
26086
|
function PresentationToolbar(p) {
|
|
26086
|
-
const { t } =
|
|
26087
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26087
26088
|
const ref = useWebControl(
|
|
26088
26089
|
{
|
|
26089
26090
|
current: p.currentSlideIndex,
|
|
@@ -26142,8 +26143,8 @@ function PresentationTouchControls({
|
|
|
26142
26143
|
onEndPresentation,
|
|
26143
26144
|
hideNavigation = false
|
|
26144
26145
|
}) {
|
|
26145
|
-
const { t } =
|
|
26146
|
-
const { isTouchDevice } =
|
|
26146
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26147
|
+
const { isTouchDevice } = chunkVGU5S37T_js.useIsMobile();
|
|
26147
26148
|
if (!isTouchDevice) {
|
|
26148
26149
|
return null;
|
|
26149
26150
|
}
|
|
@@ -26225,7 +26226,7 @@ function KeepAnnotationsDialog({
|
|
|
26225
26226
|
onKeep,
|
|
26226
26227
|
onDiscard
|
|
26227
26228
|
}) {
|
|
26228
|
-
const { t } =
|
|
26229
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26229
26230
|
if (!isOpen) {
|
|
26230
26231
|
return null;
|
|
26231
26232
|
}
|
|
@@ -26273,7 +26274,7 @@ function PasteSpecialDialog({
|
|
|
26273
26274
|
onCancel,
|
|
26274
26275
|
onConfirm
|
|
26275
26276
|
}) {
|
|
26276
|
-
const { t } =
|
|
26277
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26277
26278
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26278
26279
|
if (!isOpen) {
|
|
26279
26280
|
return null;
|
|
@@ -26331,7 +26332,7 @@ function PasteOptionsToolbar({
|
|
|
26331
26332
|
onChoose,
|
|
26332
26333
|
onDismiss
|
|
26333
26334
|
}) {
|
|
26334
|
-
const { t } =
|
|
26335
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26335
26336
|
const [rect, setRect] = React108.useState(null);
|
|
26336
26337
|
React108.useEffect(() => {
|
|
26337
26338
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26358,7 +26359,7 @@ function NotesPagePreview({
|
|
|
26358
26359
|
frameSlides,
|
|
26359
26360
|
maxPages = 3
|
|
26360
26361
|
}) {
|
|
26361
|
-
const { t } =
|
|
26362
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26362
26363
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26363
26364
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26364
26365
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26446,15 +26447,15 @@ function PrintPreview({
|
|
|
26446
26447
|
frameSlides,
|
|
26447
26448
|
maxPages = 3
|
|
26448
26449
|
}) {
|
|
26449
|
-
const { t } =
|
|
26450
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26450
26451
|
const pages = React108.useMemo(
|
|
26451
|
-
() =>
|
|
26452
|
+
() => chunk5DBKW7F3_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26452
26453
|
[slideIndices, slidesPerPage, orientation]
|
|
26453
26454
|
);
|
|
26454
|
-
const printable = React108.useMemo(() =>
|
|
26455
|
+
const printable = React108.useMemo(() => chunk5DBKW7F3_js.getPrintableArea(orientation), [orientation]);
|
|
26455
26456
|
const visiblePages = pages.slice(0, maxPages);
|
|
26456
26457
|
const isThreePerPage = slidesPerPage === 3;
|
|
26457
|
-
const noteLineCount =
|
|
26458
|
+
const noteLineCount = chunk5DBKW7F3_js.generateNoteLineCount();
|
|
26458
26459
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26459
26460
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26460
26461
|
const noteAreaFraction = 0.5;
|
|
@@ -26552,7 +26553,7 @@ function PrintSettingsPanel({
|
|
|
26552
26553
|
totalSlides,
|
|
26553
26554
|
activeSlideIndex
|
|
26554
26555
|
}) {
|
|
26555
|
-
const { t } =
|
|
26556
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26556
26557
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26557
26558
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26558
26559
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26788,13 +26789,13 @@ function PrintDialog({
|
|
|
26788
26789
|
defaultSlidesPerPage,
|
|
26789
26790
|
defaultFrameSlides
|
|
26790
26791
|
}) {
|
|
26791
|
-
const { t } =
|
|
26792
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26792
26793
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26793
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26794
|
-
const { viewportWidth } =
|
|
26794
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
26795
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
26795
26796
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26796
26797
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26797
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26798
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkVGU5S37T_js.useViewerOptionsContext());
|
|
26798
26799
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26799
26800
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26800
26801
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -26978,7 +26979,7 @@ function ShowOptionsFieldset({
|
|
|
26978
26979
|
draft,
|
|
26979
26980
|
update
|
|
26980
26981
|
}) {
|
|
26981
|
-
const { t } =
|
|
26982
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26982
26983
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26983
26984
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26984
26985
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27036,7 +27037,7 @@ function ShowSlidesFieldset({
|
|
|
27036
27037
|
slideCount,
|
|
27037
27038
|
customShows
|
|
27038
27039
|
}) {
|
|
27039
|
-
const { t } =
|
|
27040
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27040
27041
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
27041
27042
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
27042
27043
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27146,7 +27147,7 @@ function SetUpSlideShowDialog({
|
|
|
27146
27147
|
customShows,
|
|
27147
27148
|
slideCount
|
|
27148
27149
|
}) {
|
|
27149
|
-
const { t } =
|
|
27150
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27150
27151
|
const [draft, setDraft] = React108.useState({
|
|
27151
27152
|
...properties
|
|
27152
27153
|
});
|
|
@@ -27282,16 +27283,16 @@ function BroadcastDialog({
|
|
|
27282
27283
|
defaultUserName,
|
|
27283
27284
|
defaultServerUrl
|
|
27284
27285
|
}) {
|
|
27285
|
-
const { t } =
|
|
27286
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27286
27287
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27287
|
-
const collab =
|
|
27288
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
27288
27289
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27289
27290
|
const [roomId, setRoomId] = React108.useState("");
|
|
27290
27291
|
const [userName, setUserName] = React108.useState("");
|
|
27291
27292
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27292
27293
|
const [copied, setCopied] = React108.useState(false);
|
|
27293
27294
|
const dialogRef = React108.useRef(null);
|
|
27294
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27295
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
27295
27296
|
useModalFocus(open, dialogRef, onClose);
|
|
27296
27297
|
React108.useEffect(() => {
|
|
27297
27298
|
if (open && !isBroadcasting) {
|
|
@@ -27450,7 +27451,7 @@ function StartBroadcastForm({
|
|
|
27450
27451
|
onUserNameChange,
|
|
27451
27452
|
onServerUrlChange
|
|
27452
27453
|
}) {
|
|
27453
|
-
const { t } =
|
|
27454
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27454
27455
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27455
27456
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27456
27457
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27526,7 +27527,7 @@ function ActiveBroadcastView({
|
|
|
27526
27527
|
onCopyUrl,
|
|
27527
27528
|
onStopBroadcast
|
|
27528
27529
|
}) {
|
|
27529
|
-
const { t } =
|
|
27530
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27530
27531
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27531
27532
|
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" });
|
|
27532
27533
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27607,7 +27608,7 @@ function ActiveSessionView({
|
|
|
27607
27608
|
onCopyRoomId,
|
|
27608
27609
|
onStopCollaboration
|
|
27609
27610
|
}) {
|
|
27610
|
-
const { t } =
|
|
27611
|
+
const { t } = chunk5DBKW7F3_js.useTranslation(), viewerOptions = chunkVGU5S37T_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({
|
|
27611
27612
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27612
27613
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27613
27614
|
localUserColor: collab.config.userColor,
|
|
@@ -27705,8 +27706,8 @@ function StartSessionForm({
|
|
|
27705
27706
|
connectionFailed,
|
|
27706
27707
|
onRetry
|
|
27707
27708
|
}) {
|
|
27708
|
-
const { t } =
|
|
27709
|
-
const { viewportWidth } =
|
|
27709
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27710
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
27710
27711
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27711
27712
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27712
27713
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27840,9 +27841,9 @@ function ShareDialog({
|
|
|
27840
27841
|
defaultUserName,
|
|
27841
27842
|
defaultServerUrl
|
|
27842
27843
|
}) {
|
|
27843
|
-
const collab =
|
|
27844
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
27844
27845
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27845
|
-
const { t } =
|
|
27846
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27846
27847
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27847
27848
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27848
27849
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27851,9 +27852,9 @@ function ShareDialog({
|
|
|
27851
27852
|
const [invitation, setInvitation] = React108.useState("");
|
|
27852
27853
|
const [copied, setCopied] = React108.useState(false);
|
|
27853
27854
|
const dialogRef = React108.useRef(null);
|
|
27854
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27855
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
27855
27856
|
useModalFocus(open, dialogRef, onClose);
|
|
27856
|
-
const { viewportWidth, viewportHeight } =
|
|
27857
|
+
const { viewportWidth, viewportHeight } = chunkVGU5S37T_js.useIsMobile();
|
|
27857
27858
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27858
27859
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27859
27860
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28026,7 +28027,7 @@ function HyperlinkTabContent({
|
|
|
28026
28027
|
inputCls,
|
|
28027
28028
|
onEnterConfirm
|
|
28028
28029
|
}) {
|
|
28029
|
-
const { t } =
|
|
28030
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28030
28031
|
const handleEnterKey = (e) => {
|
|
28031
28032
|
if (e.key === "Enter") {
|
|
28032
28033
|
onEnterConfirm();
|
|
@@ -28151,13 +28152,13 @@ function HyperlinkEditDialog({
|
|
|
28151
28152
|
onConfirm,
|
|
28152
28153
|
onCancel
|
|
28153
28154
|
}) {
|
|
28154
|
-
const { t } =
|
|
28155
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28155
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28156
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onCancel);
|
|
28156
28157
|
const inputRef = React108.useRef(null);
|
|
28157
|
-
const detectedType =
|
|
28158
|
-
const emailParts =
|
|
28159
|
-
const detectedSlide =
|
|
28160
|
-
const detectedVerb = initialAction ?
|
|
28158
|
+
const detectedType = chunkVGU5S37T_js.detectTargetType(initialUrl, initialAction);
|
|
28159
|
+
const emailParts = chunkVGU5S37T_js.parseEmailUrl(initialUrl || "");
|
|
28160
|
+
const detectedSlide = chunkVGU5S37T_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28161
|
+
const detectedVerb = initialAction ? chunkVGU5S37T_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28161
28162
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
28162
28163
|
const [url, setUrl] = React108.useState(
|
|
28163
28164
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28188,7 +28189,7 @@ function HyperlinkEditDialog({
|
|
|
28188
28189
|
actionVerb
|
|
28189
28190
|
});
|
|
28190
28191
|
};
|
|
28191
|
-
const tabCls = (active) =>
|
|
28192
|
+
const tabCls = (active) => chunk5DBKW7F3_js.cn(
|
|
28192
28193
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28193
28194
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28194
28195
|
);
|
|
@@ -28417,6 +28418,7 @@ function ViewerBottomPanels({
|
|
|
28417
28418
|
activeSlideIndex,
|
|
28418
28419
|
isDirty,
|
|
28419
28420
|
autosaveStatus,
|
|
28421
|
+
saveProgress,
|
|
28420
28422
|
onToggleNotes,
|
|
28421
28423
|
onUpdateNotes,
|
|
28422
28424
|
collaborationSlot,
|
|
@@ -28434,7 +28436,7 @@ function ViewerBottomPanels({
|
|
|
28434
28436
|
notesStyle,
|
|
28435
28437
|
onNotesHeightChange
|
|
28436
28438
|
}) {
|
|
28437
|
-
const { isHidden } =
|
|
28439
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(hiddenActions);
|
|
28438
28440
|
const customization = useViewerCustomizationContext();
|
|
28439
28441
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28440
28442
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28490,6 +28492,7 @@ function ViewerBottomPanels({
|
|
|
28490
28492
|
activeSlideIndex,
|
|
28491
28493
|
isDirty,
|
|
28492
28494
|
autosaveStatus,
|
|
28495
|
+
saveProgress,
|
|
28493
28496
|
scale,
|
|
28494
28497
|
onZoomIn,
|
|
28495
28498
|
onZoomOut,
|
|
@@ -28563,7 +28566,7 @@ function ViewerInspector({
|
|
|
28563
28566
|
onPreviewElement,
|
|
28564
28567
|
elementById
|
|
28565
28568
|
}) {
|
|
28566
|
-
const { t } =
|
|
28569
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28567
28570
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28568
28571
|
const liveEdit = onPreviewElement ? {
|
|
28569
28572
|
element: selectedElement,
|
|
@@ -28778,7 +28781,7 @@ function ViewerToolbarSection(props) {
|
|
|
28778
28781
|
onSetSnapToShape,
|
|
28779
28782
|
onSetShowGuides
|
|
28780
28783
|
} = props;
|
|
28781
|
-
const { t } =
|
|
28784
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28782
28785
|
const customization = useViewerCustomizationContext();
|
|
28783
28786
|
const handleAddAnimation = React108.useCallback(
|
|
28784
28787
|
(preset, group) => {
|
|
@@ -28831,7 +28834,7 @@ function ViewerToolbarSection(props) {
|
|
|
28831
28834
|
[activeSlide, propertyHandlers]
|
|
28832
28835
|
);
|
|
28833
28836
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28834
|
-
() =>
|
|
28837
|
+
() => chunkVGU5S37T_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28835
28838
|
[s.layoutOptions, activeSlide]
|
|
28836
28839
|
);
|
|
28837
28840
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29238,14 +29241,14 @@ function ViewerToolbarSection(props) {
|
|
|
29238
29241
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29239
29242
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29240
29243
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29241
|
-
reviewComments:
|
|
29244
|
+
reviewComments: chunkVGU5S37T_js.createReviewCommentsHost({
|
|
29242
29245
|
state: s,
|
|
29243
29246
|
activeSlideIndex,
|
|
29244
29247
|
updateSlides: ops.updateSlides,
|
|
29245
29248
|
markDirty: history.markDirty
|
|
29246
29249
|
}),
|
|
29247
29250
|
formatPainterActive: s.formatPainterActive,
|
|
29248
|
-
canActivateFormatPainter:
|
|
29251
|
+
canActivateFormatPainter: chunk5DBKW7F3_js.hasCopyableFormat(selectedElement),
|
|
29249
29252
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29250
29253
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29251
29254
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29354,14 +29357,14 @@ function CustomShowsDialog({
|
|
|
29354
29357
|
onRun,
|
|
29355
29358
|
onClose
|
|
29356
29359
|
}) {
|
|
29357
|
-
const { t } =
|
|
29360
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29358
29361
|
const controller = React108.useMemo(
|
|
29359
29362
|
() => pptx.createCustomShowsController(customShows, activeCustomShowId),
|
|
29360
29363
|
// A fresh draft per open: the host mounts this only while the dialog is open.
|
|
29361
29364
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29362
29365
|
[]
|
|
29363
29366
|
);
|
|
29364
|
-
|
|
29367
|
+
chunkVGU5S37T_js.useController(controller);
|
|
29365
29368
|
const view = controller.view(slides);
|
|
29366
29369
|
const [active, setActive] = React108.useState(activeCustomShowId ?? "");
|
|
29367
29370
|
const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
|
|
@@ -29640,8 +29643,8 @@ function EquationEditorDialog({
|
|
|
29640
29643
|
onInsert,
|
|
29641
29644
|
existingOmml
|
|
29642
29645
|
}) {
|
|
29643
|
-
const { t } =
|
|
29644
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29646
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29647
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
29645
29648
|
const initialLatex = React108.useMemo(() => {
|
|
29646
29649
|
if (!existingOmml) {
|
|
29647
29650
|
return "";
|
|
@@ -29763,7 +29766,7 @@ function EquationEditorDialog({
|
|
|
29763
29766
|
{
|
|
29764
29767
|
type: "button",
|
|
29765
29768
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29766
|
-
className:
|
|
29769
|
+
className: chunk5DBKW7F3_js.cn(
|
|
29767
29770
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29768
29771
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29769
29772
|
),
|
|
@@ -29828,7 +29831,7 @@ function InsertSmartArtDialog({
|
|
|
29828
29831
|
onInsert
|
|
29829
29832
|
}) {
|
|
29830
29833
|
const ref = React108.useRef(null);
|
|
29831
|
-
const { t } =
|
|
29834
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29832
29835
|
React108.useLayoutEffect(() => {
|
|
29833
29836
|
if (ref.current) {
|
|
29834
29837
|
ref.current.translateLabel = t;
|
|
@@ -29852,7 +29855,7 @@ function InsertChartDialog({
|
|
|
29852
29855
|
onInsert
|
|
29853
29856
|
}) {
|
|
29854
29857
|
const ref = React108.useRef(null);
|
|
29855
|
-
const { t } =
|
|
29858
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29856
29859
|
React108.useLayoutEffect(() => {
|
|
29857
29860
|
if (ref.current) {
|
|
29858
29861
|
ref.current.translateLabel = t;
|
|
@@ -30359,11 +30362,11 @@ function PresentationStage({
|
|
|
30359
30362
|
})
|
|
30360
30363
|
},
|
|
30361
30364
|
children: [
|
|
30362
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30365
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30363
30366
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30364
30367
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30365
30368
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30366
|
-
|
|
30369
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
30367
30370
|
{
|
|
30368
30371
|
element,
|
|
30369
30372
|
activeSlide,
|
|
@@ -30401,7 +30404,7 @@ function PresentationStage({
|
|
|
30401
30404
|
`tpl-${element.id}`
|
|
30402
30405
|
)),
|
|
30403
30406
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30404
|
-
|
|
30407
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
30405
30408
|
{
|
|
30406
30409
|
element,
|
|
30407
30410
|
activeSlide,
|
|
@@ -30454,7 +30457,7 @@ function PresentationStage({
|
|
|
30454
30457
|
function noop() {
|
|
30455
30458
|
}
|
|
30456
30459
|
function PresentationContextMenu(p) {
|
|
30457
|
-
const { t } =
|
|
30460
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
30458
30461
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30459
30462
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30460
30463
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30513,7 +30516,7 @@ function PresentationTransitionMount({
|
|
|
30513
30516
|
templateElementsBySlideId
|
|
30514
30517
|
);
|
|
30515
30518
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30516
|
-
|
|
30519
|
+
chunkVGU5S37T_js.PresentationTransitionOverlay,
|
|
30517
30520
|
{
|
|
30518
30521
|
outgoingSlide,
|
|
30519
30522
|
templateElements: templates.outgoing,
|
|
@@ -30558,9 +30561,9 @@ function ViewerCanvasArea(props) {
|
|
|
30558
30561
|
aiHighlightOverlay,
|
|
30559
30562
|
aiCanvasActive = false
|
|
30560
30563
|
} = props;
|
|
30561
|
-
const { t } =
|
|
30562
|
-
const { isHidden } =
|
|
30563
|
-
const viewerOptions =
|
|
30564
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
30565
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(hiddenActions);
|
|
30566
|
+
const viewerOptions = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
30564
30567
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30565
30568
|
state: s,
|
|
30566
30569
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30606,9 +30609,9 @@ function ViewerCanvasArea(props) {
|
|
|
30606
30609
|
);
|
|
30607
30610
|
const handleHyperlinkClick = React108.useCallback(
|
|
30608
30611
|
(url) => {
|
|
30609
|
-
if (
|
|
30612
|
+
if (chunk5DBKW7F3_js.isPpactionUrl(url)) {
|
|
30610
30613
|
if (mode === "present") {
|
|
30611
|
-
const parsed =
|
|
30614
|
+
const parsed = chunk5DBKW7F3_js.parsePpactionUrl(url);
|
|
30612
30615
|
if (parsed) {
|
|
30613
30616
|
const action = {
|
|
30614
30617
|
action: parsed.action,
|
|
@@ -30693,7 +30696,7 @@ function ViewerCanvasArea(props) {
|
|
|
30693
30696
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30694
30697
|
}
|
|
30695
30698
|
}, [mode, presentation, s]);
|
|
30696
|
-
const swipe =
|
|
30699
|
+
const swipe = chunkVGU5S37T_js.useSwipeNavigation({
|
|
30697
30700
|
enabled: swipeEnabled,
|
|
30698
30701
|
onNext: handleSwipeNext,
|
|
30699
30702
|
onPrev: handleSwipePrev
|
|
@@ -30879,14 +30882,14 @@ function ViewerCanvasArea(props) {
|
|
|
30879
30882
|
outlineAuthoring,
|
|
30880
30883
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30881
30884
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30882
|
-
|
|
30885
|
+
chunkVGU5S37T_js.RemoteSelectionOverlay,
|
|
30883
30886
|
{
|
|
30884
30887
|
elements: effectiveSlide?.elements ?? [],
|
|
30885
30888
|
activeSlideIndex
|
|
30886
30889
|
}
|
|
30887
30890
|
),
|
|
30888
30891
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30889
|
-
|
|
30892
|
+
chunkVGU5S37T_js.CollaborationCursorOverlay,
|
|
30890
30893
|
{
|
|
30891
30894
|
activeSlideIndex,
|
|
30892
30895
|
canvasWidth: canvasSize.width,
|
|
@@ -31123,8 +31126,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31123
31126
|
] });
|
|
31124
31127
|
}
|
|
31125
31128
|
function ChartFormatPanel() {
|
|
31126
|
-
const { t } =
|
|
31127
|
-
const commands =
|
|
31129
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31130
|
+
const commands = chunkVGU5S37T_js.useChartFormatContext();
|
|
31128
31131
|
const ref = React108.useRef(null);
|
|
31129
31132
|
const chart = commands?.chart;
|
|
31130
31133
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31159,7 +31162,7 @@ function ChartFormatPanel() {
|
|
|
31159
31162
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
31160
31163
|
}
|
|
31161
31164
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
31162
|
-
const { t } =
|
|
31165
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31163
31166
|
const ref = React108.useRef(null);
|
|
31164
31167
|
React108.useEffect(() => {
|
|
31165
31168
|
const node = ref.current;
|
|
@@ -31196,8 +31199,8 @@ function MobileDismissSheet({
|
|
|
31196
31199
|
className,
|
|
31197
31200
|
children
|
|
31198
31201
|
}) {
|
|
31199
|
-
const { t } =
|
|
31200
|
-
const { dragY, handlers } =
|
|
31202
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31203
|
+
const { dragY, handlers } = chunkVGU5S37T_js.useSheetDismissDrag(onClose);
|
|
31201
31204
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31202
31205
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31203
31206
|
"button",
|
|
@@ -31466,7 +31469,7 @@ function ThemeThumbnail({
|
|
|
31466
31469
|
{
|
|
31467
31470
|
type: "button",
|
|
31468
31471
|
onClick,
|
|
31469
|
-
className:
|
|
31472
|
+
className: chunk5DBKW7F3_js.cn(
|
|
31470
31473
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31471
31474
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31472
31475
|
),
|
|
@@ -31497,7 +31500,7 @@ function ThemeGallery({
|
|
|
31497
31500
|
onApplyTheme,
|
|
31498
31501
|
onImportTheme
|
|
31499
31502
|
}) {
|
|
31500
|
-
const { t } =
|
|
31503
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31501
31504
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31502
31505
|
const fileInputRef = React108.useRef(null);
|
|
31503
31506
|
React108.useEffect(() => {
|
|
@@ -31634,8 +31637,8 @@ function ViewerSidePanels(props) {
|
|
|
31634
31637
|
aiBridge,
|
|
31635
31638
|
aiPanel
|
|
31636
31639
|
} = props;
|
|
31637
|
-
const aiAssistant =
|
|
31638
|
-
const AiPanel = aiAssistant?.panel ??
|
|
31640
|
+
const aiAssistant = chunkPNDORR6S_js.aiAssistants.resolve(aiConfig);
|
|
31641
|
+
const AiPanel = aiAssistant?.panel ?? chunkPNDORR6S_js.AiChatPanelLazy;
|
|
31639
31642
|
const handleSetSlideSize = (size, rescaleMode) => {
|
|
31640
31643
|
if (rescaleMode && s.slideSizeEmu) {
|
|
31641
31644
|
s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
|
|
@@ -31941,7 +31944,7 @@ function ViewerMainContent(props) {
|
|
|
31941
31944
|
);
|
|
31942
31945
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
31943
31946
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31944
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31947
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31945
31948
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31946
31949
|
slidesPaneRenderer ? (
|
|
31947
31950
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -32151,7 +32154,7 @@ function AutosaveRecoveryDialog({
|
|
|
32151
32154
|
onDiscard,
|
|
32152
32155
|
busy = false
|
|
32153
32156
|
}) {
|
|
32154
|
-
const { t } =
|
|
32157
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32155
32158
|
if (!prompt) {
|
|
32156
32159
|
return null;
|
|
32157
32160
|
}
|
|
@@ -32207,7 +32210,7 @@ function CompatibilityToasts({
|
|
|
32207
32210
|
rightInset = 0,
|
|
32208
32211
|
bottomInset = 0
|
|
32209
32212
|
}) {
|
|
32210
|
-
const { t } =
|
|
32213
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32211
32214
|
const ref = useWebControl(
|
|
32212
32215
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
32213
32216
|
{
|
|
@@ -32252,7 +32255,7 @@ function HeaderFooterPanel({
|
|
|
32252
32255
|
onApplyToCurrent,
|
|
32253
32256
|
onClose
|
|
32254
32257
|
}) {
|
|
32255
|
-
const { t } =
|
|
32258
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32256
32259
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
32257
32260
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
32258
32261
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -32393,7 +32396,7 @@ function HeaderFooterPanel({
|
|
|
32393
32396
|
] }) });
|
|
32394
32397
|
}
|
|
32395
32398
|
function MobileBottomBar(p) {
|
|
32396
|
-
const { t } =
|
|
32399
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32397
32400
|
const handlers = {
|
|
32398
32401
|
slides: p.onOpenSlides,
|
|
32399
32402
|
insert: p.onOpenInsert,
|
|
@@ -32419,7 +32422,7 @@ function MobileSlidesSheet({
|
|
|
32419
32422
|
onClose,
|
|
32420
32423
|
...sidebar
|
|
32421
32424
|
}) {
|
|
32422
|
-
const { t } =
|
|
32425
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32423
32426
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32424
32427
|
MobileSheet,
|
|
32425
32428
|
{
|
|
@@ -32446,7 +32449,7 @@ function MobileChromeOverlay(props) {
|
|
|
32446
32449
|
slideSectionGroups,
|
|
32447
32450
|
canEdit,
|
|
32448
32451
|
commentCount
|
|
32449
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32452
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkVGU5S37T_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32450
32453
|
s.setIsSlidesPaneOpen(false);
|
|
32451
32454
|
s.setIsMobileInsertOpen(false);
|
|
32452
32455
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32546,7 +32549,7 @@ function MobileChromeOverlay(props) {
|
|
|
32546
32549
|
] });
|
|
32547
32550
|
}
|
|
32548
32551
|
function ReadOnlyBanner(p) {
|
|
32549
|
-
const { t } =
|
|
32552
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32550
32553
|
const ref = useWebControl(
|
|
32551
32554
|
pptx.readOnlyBannerState(
|
|
32552
32555
|
p.recommendation,
|
|
@@ -32580,7 +32583,7 @@ function RibbonCustomizationStyle({
|
|
|
32580
32583
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32581
32584
|
}
|
|
32582
32585
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32583
|
-
const { t } =
|
|
32586
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32584
32587
|
if (notices.length === 0) {
|
|
32585
32588
|
return null;
|
|
32586
32589
|
}
|
|
@@ -32638,14 +32641,14 @@ function AddinTable({
|
|
|
32638
32641
|
selectedId,
|
|
32639
32642
|
onSelect
|
|
32640
32643
|
}) {
|
|
32641
|
-
const { t } =
|
|
32644
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32642
32645
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32643
32646
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32644
32647
|
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(
|
|
32645
32648
|
"tr",
|
|
32646
32649
|
{
|
|
32647
32650
|
onClick: () => onSelect(row.id),
|
|
32648
|
-
className:
|
|
32651
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32649
32652
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32650
32653
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32651
32654
|
),
|
|
@@ -32660,7 +32663,7 @@ function AddinTable({
|
|
|
32660
32663
|
] });
|
|
32661
32664
|
}
|
|
32662
32665
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32663
|
-
const { t } =
|
|
32666
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32664
32667
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32665
32668
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32666
32669
|
const active = rows.filter((row) => row.active);
|
|
@@ -32703,7 +32706,7 @@ function CommandList({
|
|
|
32703
32706
|
selectedId,
|
|
32704
32707
|
onSelect
|
|
32705
32708
|
}) {
|
|
32706
|
-
const { t } =
|
|
32709
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32707
32710
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32708
32711
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32709
32712
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32724,7 +32727,7 @@ function CommandList({
|
|
|
32724
32727
|
role: "option",
|
|
32725
32728
|
"aria-selected": selectedId === id,
|
|
32726
32729
|
onClick: () => onSelect(id),
|
|
32727
|
-
className:
|
|
32730
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32728
32731
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32729
32732
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32730
32733
|
),
|
|
@@ -32742,7 +32745,7 @@ function OptionsQuickAccessPane({
|
|
|
32742
32745
|
onQuickAccessCommandsChange,
|
|
32743
32746
|
onResetQuickAccess
|
|
32744
32747
|
}) {
|
|
32745
|
-
const { t } =
|
|
32748
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32746
32749
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32747
32750
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32748
32751
|
const current = options.quickAccess.commandIds;
|
|
@@ -32856,7 +32859,7 @@ function OptionsRibbonPane({
|
|
|
32856
32859
|
onRibbonTabHiddenChange,
|
|
32857
32860
|
onResetRibbon
|
|
32858
32861
|
}) {
|
|
32859
|
-
const { t } =
|
|
32862
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32860
32863
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32861
32864
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32862
32865
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32868,7 +32871,7 @@ function OptionsRibbonPane({
|
|
|
32868
32871
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32869
32872
|
"label",
|
|
32870
32873
|
{
|
|
32871
|
-
className:
|
|
32874
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32872
32875
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32873
32876
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32874
32877
|
),
|
|
@@ -32902,7 +32905,7 @@ function OptionsRibbonPane({
|
|
|
32902
32905
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32903
32906
|
"div",
|
|
32904
32907
|
{
|
|
32905
|
-
className:
|
|
32908
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32906
32909
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32907
32910
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32908
32911
|
),
|
|
@@ -32923,12 +32926,12 @@ async function exportAiChatLogs(options) {
|
|
|
32923
32926
|
chats,
|
|
32924
32927
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32925
32928
|
(filename, content, mime) => {
|
|
32926
|
-
|
|
32929
|
+
chunkVGU5S37T_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32927
32930
|
}
|
|
32928
32931
|
);
|
|
32929
32932
|
}
|
|
32930
32933
|
function SettingsAiTab({ store }) {
|
|
32931
|
-
const { t } =
|
|
32934
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32932
32935
|
const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
32933
32936
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
32934
32937
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -33020,7 +33023,7 @@ function SettingsAppearanceTab({
|
|
|
33020
33023
|
themes,
|
|
33021
33024
|
onSelectTheme
|
|
33022
33025
|
}) {
|
|
33023
|
-
const { t } =
|
|
33026
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33024
33027
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
33025
33028
|
const isActive = entry.key === activeThemeKey;
|
|
33026
33029
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -33031,7 +33034,7 @@ function SettingsAppearanceTab({
|
|
|
33031
33034
|
type: "button",
|
|
33032
33035
|
onClick: () => onSelectTheme(entry.key),
|
|
33033
33036
|
"aria-pressed": isActive,
|
|
33034
|
-
className:
|
|
33037
|
+
className: chunk5DBKW7F3_js.cn(
|
|
33035
33038
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33036
33039
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33037
33040
|
),
|
|
@@ -33048,7 +33051,7 @@ function SettingsAppearanceTab({
|
|
|
33048
33051
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33049
33052
|
"span",
|
|
33050
33053
|
{
|
|
33051
|
-
className:
|
|
33054
|
+
className: chunk5DBKW7F3_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33052
33055
|
children: t(entry.labelKey)
|
|
33053
33056
|
}
|
|
33054
33057
|
)
|
|
@@ -33063,7 +33066,7 @@ function SettingsCustomFontsSection({
|
|
|
33063
33066
|
families,
|
|
33064
33067
|
onRegistered
|
|
33065
33068
|
}) {
|
|
33066
|
-
const { t } =
|
|
33069
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33067
33070
|
const inputRef = React108.useRef(null);
|
|
33068
33071
|
const [error, setError] = React108.useState(false);
|
|
33069
33072
|
const handleFile = async (file) => {
|
|
@@ -33128,7 +33131,7 @@ function SettingsLanguageTab({
|
|
|
33128
33131
|
type: "button",
|
|
33129
33132
|
onClick: () => onSelectLocale(locale.code),
|
|
33130
33133
|
"aria-pressed": isActive,
|
|
33131
|
-
className:
|
|
33134
|
+
className: chunk5DBKW7F3_js.cn(
|
|
33132
33135
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33133
33136
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33134
33137
|
),
|
|
@@ -33167,7 +33170,7 @@ function OpenSettingsDialog({
|
|
|
33167
33170
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
33168
33171
|
onCustomFontRegistered
|
|
33169
33172
|
}) {
|
|
33170
|
-
const { t } =
|
|
33173
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33171
33174
|
const viewerCustomization = useViewerCustomizationContext();
|
|
33172
33175
|
const customization = React108.useMemo(
|
|
33173
33176
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -33276,7 +33279,7 @@ function ViewerOptionsProvider({
|
|
|
33276
33279
|
store,
|
|
33277
33280
|
children
|
|
33278
33281
|
}) {
|
|
33279
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33282
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33280
33283
|
}
|
|
33281
33284
|
function useAiBridge(input) {
|
|
33282
33285
|
const ref = React108.useRef(input);
|
|
@@ -33359,7 +33362,7 @@ function useAiPanelController(input) {
|
|
|
33359
33362
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
33360
33363
|
})
|
|
33361
33364
|
);
|
|
33362
|
-
const state =
|
|
33365
|
+
const state = chunkVGU5S37T_js.useController(controller);
|
|
33363
33366
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
33364
33367
|
const liveFocusTargets = React108.useMemo(
|
|
33365
33368
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33592,7 +33595,7 @@ function useMasterViewCrud(input) {
|
|
|
33592
33595
|
forgetHistory,
|
|
33593
33596
|
pushToast
|
|
33594
33597
|
} = input;
|
|
33595
|
-
const { t } =
|
|
33598
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33596
33599
|
const data = React108.useMemo(
|
|
33597
33600
|
() => ({ slides, slideMasters }),
|
|
33598
33601
|
[slides, slideMasters]
|
|
@@ -33981,7 +33984,7 @@ function useHostLanguage({
|
|
|
33981
33984
|
availableLocales,
|
|
33982
33985
|
onLocaleChange
|
|
33983
33986
|
}) {
|
|
33984
|
-
const { t, i18n } =
|
|
33987
|
+
const { t, i18n } = chunk5DBKW7F3_js.useHostI18next();
|
|
33985
33988
|
const [localeCode, setLocaleCode] = React108.useState(
|
|
33986
33989
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
33987
33990
|
);
|
|
@@ -34021,7 +34024,7 @@ function useProvidedLanguage({
|
|
|
34021
34024
|
availableLocales,
|
|
34022
34025
|
onLocaleChange
|
|
34023
34026
|
}) {
|
|
34024
|
-
const state = React108.useContext(
|
|
34027
|
+
const state = React108.useContext(chunk5DBKW7F3_js.PptxI18nContext);
|
|
34025
34028
|
const { locale } = state;
|
|
34026
34029
|
const locales = availableLocales ?? NO_LOCALES;
|
|
34027
34030
|
const controls = React108.useMemo(
|
|
@@ -34041,7 +34044,7 @@ function useProvidedLanguage({
|
|
|
34041
34044
|
return { state, controls };
|
|
34042
34045
|
}
|
|
34043
34046
|
function provideLanguage({ state, controls }, children) {
|
|
34044
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34047
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5DBKW7F3_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5DBKW7F3_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
34045
34048
|
}
|
|
34046
34049
|
function HostLanguageRoot({ children, ...props }) {
|
|
34047
34050
|
return provideLanguage(useHostLanguage(props), children);
|
|
@@ -34050,11 +34053,11 @@ function ProvidedLanguageRoot({ children, ...props }) {
|
|
|
34050
34053
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
34051
34054
|
}
|
|
34052
34055
|
function ViewerI18nRoot(props) {
|
|
34053
|
-
const Root = React108.useContext(
|
|
34056
|
+
const Root = React108.useContext(chunk5DBKW7F3_js.PptxI18nContext) ? ProvidedLanguageRoot : HostLanguageRoot;
|
|
34054
34057
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
34055
34058
|
}
|
|
34056
34059
|
function useViewerLocaleControls() {
|
|
34057
|
-
return React108.useContext(
|
|
34060
|
+
return React108.useContext(chunk5DBKW7F3_js.ViewerLocaleControlsContext);
|
|
34058
34061
|
}
|
|
34059
34062
|
var NO_RIBBON_ADD_INS = [];
|
|
34060
34063
|
var NO_FILE_PROVIDERS = [];
|
|
@@ -34133,9 +34136,9 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34133
34136
|
limits
|
|
34134
34137
|
} = props;
|
|
34135
34138
|
const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
|
|
34136
|
-
const cloudFile =
|
|
34139
|
+
const cloudFile = chunkVGU5S37T_js.useController(cloudDocument).file;
|
|
34137
34140
|
const {
|
|
34138
|
-
storage,
|
|
34141
|
+
storage: viewerStorage,
|
|
34139
34142
|
fileName,
|
|
34140
34143
|
filePath,
|
|
34141
34144
|
// `readOnly` takes editing away from a host that also allows it.
|
|
@@ -34146,6 +34149,12 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34146
34149
|
fileName: hostFileName,
|
|
34147
34150
|
filePath: hostFilePath
|
|
34148
34151
|
});
|
|
34152
|
+
const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
|
|
34153
|
+
const saveProgressState = chunkVGU5S37T_js.useController(saveProgress);
|
|
34154
|
+
const storage = React108.useMemo(
|
|
34155
|
+
() => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
|
|
34156
|
+
[viewerStorage, saveProgress]
|
|
34157
|
+
);
|
|
34149
34158
|
const collaboration = pptx.resolveCollaborationConfig(collaborationInput);
|
|
34150
34159
|
const rootOptions = pptx.resolveViewerRootOptions(props);
|
|
34151
34160
|
React108.useEffect(() => {
|
|
@@ -34182,7 +34191,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34182
34191
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34183
34192
|
);
|
|
34184
34193
|
}, []);
|
|
34185
|
-
const { t } =
|
|
34194
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
34186
34195
|
const {
|
|
34187
34196
|
localeCode,
|
|
34188
34197
|
locales: resolvedLocales,
|
|
@@ -34239,7 +34248,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34239
34248
|
},
|
|
34240
34249
|
[hostStorage, cloudDocument]
|
|
34241
34250
|
);
|
|
34242
|
-
const { optionsStore, options: viewerOptions } =
|
|
34251
|
+
const { optionsStore, options: viewerOptions } = chunkVGU5S37T_js.useViewerOptions();
|
|
34243
34252
|
const custom = useViewerCustomization(
|
|
34244
34253
|
customization,
|
|
34245
34254
|
legacyHiddenActions,
|
|
@@ -34258,8 +34267,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34258
34267
|
const handleEnableEditing = React108.useCallback(() => {
|
|
34259
34268
|
setProtectedViewOverridden(true);
|
|
34260
34269
|
}, []);
|
|
34261
|
-
const readOnlyRec =
|
|
34262
|
-
const compatToastsState =
|
|
34270
|
+
const readOnlyRec = chunkVGU5S37T_js.useReadOnlyRecommendationState(content);
|
|
34271
|
+
const compatToastsState = chunkVGU5S37T_js.useCompatibilityToastsState();
|
|
34263
34272
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
34264
34273
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34265
34274
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -34282,8 +34291,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34282
34291
|
filePath
|
|
34283
34292
|
});
|
|
34284
34293
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
34285
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34286
|
-
const state =
|
|
34294
|
+
const { reducedMotion, toggleReducedMotion } = chunkVGU5S37T_js.useReducedMotion();
|
|
34295
|
+
const state = chunkVGU5S37T_js.useViewerState({
|
|
34287
34296
|
content,
|
|
34288
34297
|
canEdit,
|
|
34289
34298
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -34410,16 +34419,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34410
34419
|
}
|
|
34411
34420
|
}, [settings, optionsStore]);
|
|
34412
34421
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
34413
|
-
const mobile =
|
|
34422
|
+
const mobile = chunkVGU5S37T_js.useIsMobile();
|
|
34414
34423
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34415
|
-
const resizablePanels =
|
|
34424
|
+
const resizablePanels = chunkVGU5S37T_js.useResizablePanels();
|
|
34416
34425
|
const {
|
|
34417
34426
|
gridSpacingPx,
|
|
34418
34427
|
visibleSlideIndexes,
|
|
34419
34428
|
slideSectionGroups,
|
|
34420
34429
|
masterPseudoSlide,
|
|
34421
34430
|
authoredRange
|
|
34422
|
-
} =
|
|
34431
|
+
} = chunkVGU5S37T_js.useDerivedSlideState({
|
|
34423
34432
|
slides,
|
|
34424
34433
|
sections: state.sections,
|
|
34425
34434
|
customShows: state.customShows,
|
|
@@ -34444,7 +34453,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34444
34453
|
state.cropSessionRef
|
|
34445
34454
|
]
|
|
34446
34455
|
);
|
|
34447
|
-
const zoom =
|
|
34456
|
+
const zoom = chunkVGU5S37T_js.useZoomViewport({
|
|
34448
34457
|
canvasSize,
|
|
34449
34458
|
selectedElements: state.selectedElements,
|
|
34450
34459
|
fitPadding: props.fitPadding,
|
|
@@ -34460,7 +34469,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34460
34469
|
onChangeCallback.current?.();
|
|
34461
34470
|
}, [setIsDirty]);
|
|
34462
34471
|
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
34463
|
-
const history =
|
|
34472
|
+
const history = chunkVGU5S37T_js.useEditorHistory({
|
|
34464
34473
|
slides,
|
|
34465
34474
|
canvasSize,
|
|
34466
34475
|
activeSlideIndex,
|
|
@@ -34489,7 +34498,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34489
34498
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34490
34499
|
setHeaderFooter: state.setHeaderFooter
|
|
34491
34500
|
});
|
|
34492
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34501
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkVGU5S37T_js.usePresentationSetup({
|
|
34493
34502
|
mode,
|
|
34494
34503
|
slides,
|
|
34495
34504
|
visibleSlideIndexes,
|
|
@@ -34568,7 +34577,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34568
34577
|
loading,
|
|
34569
34578
|
error
|
|
34570
34579
|
]);
|
|
34571
|
-
|
|
34580
|
+
chunkVGU5S37T_js.useTouchGestures({
|
|
34572
34581
|
targetRef: zoom.canvasViewportRef,
|
|
34573
34582
|
currentScale: zoom.scale,
|
|
34574
34583
|
callbacks: {
|
|
@@ -34590,7 +34599,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34590
34599
|
},
|
|
34591
34600
|
enabled: isTouchDevice
|
|
34592
34601
|
});
|
|
34593
|
-
const dialogs =
|
|
34602
|
+
const dialogs = chunkVGU5S37T_js.useViewerDialogs({
|
|
34594
34603
|
mode,
|
|
34595
34604
|
slides,
|
|
34596
34605
|
activeSlide,
|
|
@@ -34618,7 +34627,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34618
34627
|
history,
|
|
34619
34628
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34620
34629
|
});
|
|
34621
|
-
|
|
34630
|
+
chunkVGU5S37T_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34622
34631
|
const zoomBeforePresentRef = React108.useRef(null);
|
|
34623
34632
|
React108.useEffect(() => {
|
|
34624
34633
|
if (mode !== "present") {
|
|
@@ -34636,7 +34645,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34636
34645
|
zoom.handleZoomToFit();
|
|
34637
34646
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34638
34647
|
}, [mode]);
|
|
34639
|
-
const editorOps =
|
|
34648
|
+
const editorOps = chunkVGU5S37T_js.useEditorOperations({
|
|
34640
34649
|
state,
|
|
34641
34650
|
history,
|
|
34642
34651
|
zoom,
|
|
@@ -34681,7 +34690,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34681
34690
|
handlerRef,
|
|
34682
34691
|
viewerApi,
|
|
34683
34692
|
loadVersion
|
|
34684
|
-
} =
|
|
34693
|
+
} = chunkVGU5S37T_js.useViewerIntegration({
|
|
34685
34694
|
transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
|
|
34686
34695
|
state,
|
|
34687
34696
|
zoom,
|
|
@@ -34824,7 +34833,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34824
34833
|
updateElementById: editorOps.ops.updateElementById
|
|
34825
34834
|
});
|
|
34826
34835
|
const ribbonScope = useRibbonScopeToken();
|
|
34827
|
-
const viewPreferencesSync =
|
|
34836
|
+
const viewPreferencesSync = chunkVGU5S37T_js.useViewPreferencesSync({
|
|
34828
34837
|
loadVersion,
|
|
34829
34838
|
viewProperties: state.viewProperties,
|
|
34830
34839
|
setViewProperties: state.setViewProperties,
|
|
@@ -34875,7 +34884,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34875
34884
|
},
|
|
34876
34885
|
[state]
|
|
34877
34886
|
);
|
|
34878
|
-
const layoutSwitching =
|
|
34887
|
+
const layoutSwitching = chunkVGU5S37T_js.useLayoutSwitching({
|
|
34879
34888
|
handler: handlerRef.current,
|
|
34880
34889
|
slides,
|
|
34881
34890
|
activeSlideIndex,
|
|
@@ -34994,7 +35003,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34994
35003
|
"data-pptx-editor-chrome": "",
|
|
34995
35004
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
34996
35005
|
"aria-busy": loading,
|
|
34997
|
-
className:
|
|
35006
|
+
className: chunk5DBKW7F3_js.cn(
|
|
34998
35007
|
"h-full w-full bg-background text-foreground relative",
|
|
34999
35008
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35000
35009
|
),
|
|
@@ -35144,6 +35153,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35144
35153
|
activeSlideIndex,
|
|
35145
35154
|
isDirty: state.isDirty,
|
|
35146
35155
|
autosaveStatus,
|
|
35156
|
+
saveProgress: saveProgressState,
|
|
35147
35157
|
onToggleNotes: () => state.setIsSlideNotesCollapsed((p) => !p),
|
|
35148
35158
|
onUpdateNotes: propertyHandlers.handleUpdateNotes,
|
|
35149
35159
|
collaborationSlot: collaboration && shareAvailable ? /* @__PURE__ */ jsxRuntime.jsx(CollaborationStatusStrip, {}) : void 0,
|
|
@@ -35394,8 +35404,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35394
35404
|
// Nothing previously provided it, so every one of those consumers was
|
|
35395
35405
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35396
35406
|
// the user changed in the Options dialog.
|
|
35397
|
-
/* @__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(
|
|
35398
|
-
|
|
35407
|
+
/* @__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(chunkVGU5S37T_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35408
|
+
chunkVGU5S37T_js.CollaborationProvider,
|
|
35399
35409
|
{
|
|
35400
35410
|
config: collaboration,
|
|
35401
35411
|
canvasWidth: canvasSize.width,
|
|
@@ -35452,19 +35462,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35452
35462
|
slideCount: slides.length
|
|
35453
35463
|
}
|
|
35454
35464
|
),
|
|
35455
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35465
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
35456
35466
|
]
|
|
35457
35467
|
}
|
|
35458
35468
|
) }) }) }) }) }) }) }) }) })
|
|
35459
35469
|
);
|
|
35460
35470
|
}
|
|
35461
35471
|
);
|
|
35462
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
35472
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunkVGU5S37T_js.withDisplayName(
|
|
35463
35473
|
PowerPointViewerComponent,
|
|
35464
35474
|
"PowerPointViewer"
|
|
35465
35475
|
);
|
|
35466
35476
|
function CollaborationStatusStrip() {
|
|
35467
|
-
const collab =
|
|
35477
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35468
35478
|
if (!collab) {
|
|
35469
35479
|
return null;
|
|
35470
35480
|
}
|
|
@@ -35481,9 +35491,9 @@ function CollaborationStateReporter({
|
|
|
35481
35491
|
onChange,
|
|
35482
35492
|
onStatus
|
|
35483
35493
|
}) {
|
|
35484
|
-
const collab =
|
|
35494
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35485
35495
|
useCollaborationStateReport(collab, onChange);
|
|
35486
|
-
|
|
35496
|
+
chunkVGU5S37T_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35487
35497
|
return null;
|
|
35488
35498
|
}
|
|
35489
35499
|
function CollaborationDocumentSync({
|
|
@@ -35498,8 +35508,8 @@ function CollaborationDocumentSync({
|
|
|
35498
35508
|
onReadOnlyChange,
|
|
35499
35509
|
history
|
|
35500
35510
|
}) {
|
|
35501
|
-
const collab =
|
|
35502
|
-
|
|
35511
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35512
|
+
chunkVGU5S37T_js.useCollaborationDocumentSync({
|
|
35503
35513
|
collaboration: collab,
|
|
35504
35514
|
history,
|
|
35505
35515
|
slides,
|
|
@@ -35519,14 +35529,14 @@ function CollaborationFollowLayer({
|
|
|
35519
35529
|
setActiveSlideIndex,
|
|
35520
35530
|
slideCount
|
|
35521
35531
|
}) {
|
|
35522
|
-
const collab =
|
|
35523
|
-
const { followedClientId, followUser } =
|
|
35532
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35533
|
+
const { followedClientId, followUser } = chunkVGU5S37T_js.useFollowMode({
|
|
35524
35534
|
collab,
|
|
35525
35535
|
activeSlideIndex,
|
|
35526
35536
|
setActiveSlideIndex,
|
|
35527
35537
|
slideCount
|
|
35528
35538
|
});
|
|
35529
|
-
|
|
35539
|
+
chunkVGU5S37T_js.useBroadcastFollower({
|
|
35530
35540
|
collab,
|
|
35531
35541
|
activeSlideIndex,
|
|
35532
35542
|
setActiveSlideIndex,
|
|
@@ -35568,7 +35578,7 @@ function PptxI18nProvider({
|
|
|
35568
35578
|
() => ({ t: withEnglishFallback(translate), locale }),
|
|
35569
35579
|
[translate, locale]
|
|
35570
35580
|
);
|
|
35571
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35581
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5DBKW7F3_js.PptxI18nContext.Provider, { value: state, children });
|
|
35572
35582
|
}
|
|
35573
35583
|
|
|
35574
35584
|
Object.defineProperty(exports, "THEME_CATALOG", {
|