pptx-react-viewer 4.66.0 → 4.68.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 +38 -0
- package/README.md +10 -0
- package/dist/{AiChatPanel-JKWJQX4N.mjs → AiChatPanel-E7CJSTW7.mjs} +1 -1
- package/dist/AiChatPanel-E7CJSTW7.mjs.br +0 -0
- package/dist/AiChatPanel-E7CJSTW7.mjs.gz +0 -0
- package/dist/{AiChatPanel-DL7EBR2V.js → AiChatPanel-PLQ3NBTK.js} +19 -19
- package/dist/AiChatPanel-PLQ3NBTK.js.br +0 -0
- package/dist/AiChatPanel-PLQ3NBTK.js.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-DORVZDQT.mjs → chunk-BJLJJUP3.mjs} +25 -11
- package/dist/chunk-BJLJJUP3.mjs.br +0 -0
- package/dist/chunk-BJLJJUP3.mjs.gz +0 -0
- package/dist/{chunk-A4K2TM2K.mjs → chunk-FBSPQYRE.mjs} +4 -1
- package/dist/chunk-FBSPQYRE.mjs.br +0 -0
- package/dist/{chunk-A4K2TM2K.mjs.gz → chunk-FBSPQYRE.mjs.gz} +0 -0
- package/dist/{chunk-ZRU67AVX.mjs → chunk-GG4I3L2W.mjs} +165 -135
- package/dist/chunk-GG4I3L2W.mjs.br +0 -0
- package/dist/chunk-GG4I3L2W.mjs.gz +0 -0
- package/dist/{chunk-SLFVXZHA.mjs → chunk-JZE6BORE.mjs} +1 -1
- package/dist/chunk-JZE6BORE.mjs.br +0 -0
- package/dist/chunk-JZE6BORE.mjs.gz +0 -0
- package/dist/{chunk-UC57KUGO.js → chunk-LVEFHZ76.js} +1 -1
- package/dist/chunk-LVEFHZ76.js.br +0 -0
- package/dist/chunk-LVEFHZ76.js.gz +0 -0
- package/dist/{chunk-YQ67KAQR.js → chunk-NRTPKXZX.js} +364 -334
- package/dist/chunk-NRTPKXZX.js.br +0 -0
- package/dist/chunk-NRTPKXZX.js.gz +0 -0
- package/dist/{chunk-73S5EOD3.js → chunk-P2COO2QO.js} +4 -1
- package/dist/chunk-P2COO2QO.js.br +0 -0
- package/dist/{chunk-73S5EOD3.js.gz → chunk-P2COO2QO.js.gz} +0 -0
- package/dist/{chunk-QLXYEA54.js → chunk-Q5QEVT54.js} +581 -567
- package/dist/chunk-Q5QEVT54.js.br +0 -0
- package/dist/chunk-Q5QEVT54.js.gz +0 -0
- package/dist/i18n/de.cjs +3 -0
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +3 -0
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +3 -0
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +3 -0
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +3 -0
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +3 -0
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +3 -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 +3 -0
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.d.ts +4 -1
- 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.d.ts +9 -2
- 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/viewer/index.d.ts +4 -1
- 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 +4 -4
- package/dist/AiChatPanel-DL7EBR2V.js.br +0 -0
- package/dist/AiChatPanel-DL7EBR2V.js.gz +0 -0
- package/dist/AiChatPanel-JKWJQX4N.mjs.br +0 -0
- package/dist/AiChatPanel-JKWJQX4N.mjs.gz +0 -0
- package/dist/chunk-73S5EOD3.js.br +0 -0
- package/dist/chunk-A4K2TM2K.mjs.br +0 -0
- package/dist/chunk-DORVZDQT.mjs.br +0 -0
- package/dist/chunk-DORVZDQT.mjs.gz +0 -0
- package/dist/chunk-QLXYEA54.js.br +0 -0
- package/dist/chunk-QLXYEA54.js.gz +0 -0
- package/dist/chunk-SLFVXZHA.mjs.br +0 -0
- package/dist/chunk-SLFVXZHA.mjs.gz +0 -0
- package/dist/chunk-UC57KUGO.js.br +0 -0
- package/dist/chunk-UC57KUGO.js.gz +0 -0
- package/dist/chunk-YQ67KAQR.js.br +0 -0
- package/dist/chunk-YQ67KAQR.js.gz +0 -0
- package/dist/chunk-ZRU67AVX.mjs.br +0 -0
- package/dist/chunk-ZRU67AVX.mjs.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkLVEFHZ76_js = require('./chunk-LVEFHZ76.js');
|
|
4
|
+
var chunkNRTPKXZX_js = require('./chunk-NRTPKXZX.js');
|
|
5
|
+
var chunkP2COO2QO_js = require('./chunk-P2COO2QO.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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 ?? chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
553
553
|
const transitionLabel = slide.transition ? (() => {
|
|
554
|
-
const opt =
|
|
554
|
+
const opt = chunkP2COO2QO_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(chunkNRTPKXZX_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
|
+
chunkNRTPKXZX_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 !== chunkP2COO2QO_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkP2COO2QO_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 } = chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
1045
|
+
const collab = chunkNRTPKXZX_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 !== chunkP2COO2QO_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 } = chunkNRTPKXZX_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
|
+
chunkNRTPKXZX_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 } = chunkP2COO2QO_js.useTranslation();
|
|
1493
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
2044
|
+
const { dragY, dragging, handlers } = chunkNRTPKXZX_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkNRTPKXZX_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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
|
+
chunkNRTPKXZX_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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.68.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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkNRTPKXZX_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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: chunkP2COO2QO_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
|
+
chunkNRTPKXZX_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
3845
|
+
const supplied = React108.useContext(chunkNRTPKXZX_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 } = chunkP2COO2QO_js.useTranslation();
|
|
3879
|
+
const { isHidden } = chunkNRTPKXZX_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
4397
4397
|
const { open, onClose } = props;
|
|
4398
4398
|
const [active, setActive] = React108.useState("home");
|
|
4399
|
-
const { isTabVisible } =
|
|
4399
|
+
const { isTabVisible } = chunkNRTPKXZX_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkNRTPKXZX_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 } = chunkP2COO2QO_js.useTranslation();
|
|
4738
|
+
const commands = chunkNRTPKXZX_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 } = chunkNRTPKXZX_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
4942
|
+
const viewerOptions = chunkNRTPKXZX_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
|
+
chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
5019
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
5020
5020
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
5021
|
-
const { isHidden } =
|
|
5021
|
+
const { isHidden } = chunkNRTPKXZX_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 } = chunkP2COO2QO_js.useTranslation();
|
|
5076
|
+
const options = chunkNRTPKXZX_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 } = chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 = chunkNRTPKXZX_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: chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_js.useTranslation();
|
|
5808
|
+
const { isTabVisible } = chunkNRTPKXZX_js.useToolbarVisibility(p.hiddenActions);
|
|
5809
|
+
const viewerOptions = chunkNRTPKXZX_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: chunkP2COO2QO_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: chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 ? chunkNRTPKXZX_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 = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 } = chunkP2COO2QO_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 = chunkNRTPKXZX_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__ */ chunkNRTPKXZX_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__ */ chunkNRTPKXZX_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, chunkP2COO2QO_js.MIN_ELEMENT_SIZE),
|
|
7754
|
+
height: Math.max(element.height, chunkP2COO2QO_js.MIN_ELEMENT_SIZE),
|
|
7755
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunkP2COO2QO_js.MIN_ELEMENT_SIZE)}px`,
|
|
7756
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunkP2COO2QO_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: chunkP2COO2QO_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
|
+
chunkNRTPKXZX_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: chunkP2COO2QO_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(chunkNRTPKXZX_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(chunkNRTPKXZX_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
|
+
chunkNRTPKXZX_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 ? chunkP2COO2QO_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
|
+
chunkNRTPKXZX_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 ? chunkP2COO2QO_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
|
+
chunkNRTPKXZX_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) && !chunkP2COO2QO_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8924
8924
|
SelectionHandleOverlay,
|
|
8925
8925
|
{
|
|
8926
8926
|
element: selectedElement,
|
|
8927
|
-
adjustmentHandles:
|
|
8927
|
+
adjustmentHandles: chunkP2COO2QO_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
8928
8928
|
onResizePointerDown: stableResizePointerDown,
|
|
8929
8929
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8930
8930
|
onRotate: stableRotate,
|
|
@@ -9030,15 +9030,15 @@ function SlideCanvasContent({
|
|
|
9030
9030
|
}
|
|
9031
9031
|
);
|
|
9032
9032
|
}
|
|
9033
|
-
function LoadingState({ className }) {
|
|
9034
|
-
const { t } =
|
|
9033
|
+
function LoadingState({ className, fontProgress }) {
|
|
9034
|
+
const { t } = chunkP2COO2QO_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: chunkP2COO2QO_js.cn(
|
|
9042
9042
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
9043
9043
|
className
|
|
9044
9044
|
),
|
|
@@ -9050,7 +9050,10 @@ function LoadingState({ className }) {
|
|
|
9050
9050
|
"aria-hidden": "true"
|
|
9051
9051
|
}
|
|
9052
9052
|
),
|
|
9053
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.viewer.
|
|
9053
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: fontProgress ? t("pptx.viewer.loadingFonts", {
|
|
9054
|
+
loaded: fontProgress.loaded,
|
|
9055
|
+
total: fontProgress.total
|
|
9056
|
+
}) : t("pptx.viewer.loading") })
|
|
9054
9057
|
] })
|
|
9055
9058
|
}
|
|
9056
9059
|
);
|
|
@@ -9061,7 +9064,7 @@ function ErrorState({ className, error }) {
|
|
|
9061
9064
|
{
|
|
9062
9065
|
role: "alert",
|
|
9063
9066
|
"aria-live": "assertive",
|
|
9064
|
-
className:
|
|
9067
|
+
className: chunkP2COO2QO_js.cn(
|
|
9065
9068
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
9066
9069
|
className
|
|
9067
9070
|
),
|
|
@@ -9070,7 +9073,7 @@ function ErrorState({ className, error }) {
|
|
|
9070
9073
|
);
|
|
9071
9074
|
}
|
|
9072
9075
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
9073
|
-
const { t } =
|
|
9076
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9074
9077
|
if (!isOpen) {
|
|
9075
9078
|
return null;
|
|
9076
9079
|
}
|
|
@@ -9092,7 +9095,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
9092
9095
|
}
|
|
9093
9096
|
)
|
|
9094
9097
|
] }),
|
|
9095
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
9098
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkP2COO2QO_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9096
9099
|
"div",
|
|
9097
9100
|
{
|
|
9098
9101
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -9114,7 +9117,7 @@ function AccessibilityPanel({
|
|
|
9114
9117
|
reducedMotion,
|
|
9115
9118
|
onToggleReducedMotion
|
|
9116
9119
|
}) {
|
|
9117
|
-
const { t } =
|
|
9120
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9118
9121
|
if (!isOpen) {
|
|
9119
9122
|
return null;
|
|
9120
9123
|
}
|
|
@@ -9152,14 +9155,14 @@ function AccessibilityPanel({
|
|
|
9152
9155
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
9153
9156
|
"aria-checked": reducedMotion ?? false,
|
|
9154
9157
|
onClick: onToggleReducedMotion,
|
|
9155
|
-
className:
|
|
9158
|
+
className: chunkP2COO2QO_js.cn(
|
|
9156
9159
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
9157
9160
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
9158
9161
|
),
|
|
9159
9162
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9160
9163
|
"span",
|
|
9161
9164
|
{
|
|
9162
|
-
className:
|
|
9165
|
+
className: chunkP2COO2QO_js.cn(
|
|
9163
9166
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
9164
9167
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
9165
9168
|
)
|
|
@@ -9178,7 +9181,7 @@ function AccessibilityPanel({
|
|
|
9178
9181
|
"div",
|
|
9179
9182
|
{
|
|
9180
9183
|
role: "listitem",
|
|
9181
|
-
className:
|
|
9184
|
+
className: chunkP2COO2QO_js.cn(
|
|
9182
9185
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
9183
9186
|
/* Severity-based background and text colouring */
|
|
9184
9187
|
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 +9209,7 @@ function ExportProgressModal({
|
|
|
9206
9209
|
statusMessage,
|
|
9207
9210
|
onCancel
|
|
9208
9211
|
}) {
|
|
9209
|
-
const { t } =
|
|
9212
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9210
9213
|
const ref = useWebControl(
|
|
9211
9214
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
9212
9215
|
{ "export-cancel": () => onCancel() }
|
|
@@ -9214,7 +9217,7 @@ function ExportProgressModal({
|
|
|
9214
9217
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
9215
9218
|
}
|
|
9216
9219
|
function StatusBar(p) {
|
|
9217
|
-
const { t } =
|
|
9220
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9218
9221
|
const ref = React108.useRef(null);
|
|
9219
9222
|
React108.useEffect(() => {
|
|
9220
9223
|
const host = ref.current;
|
|
@@ -9227,6 +9230,7 @@ function StatusBar(p) {
|
|
|
9227
9230
|
dirty: p.isDirty,
|
|
9228
9231
|
autosave: p.autosaveStatus,
|
|
9229
9232
|
saveProgress: p.saveProgress ? pptx.saveProgressStatus(p.saveProgress, t) : void 0,
|
|
9233
|
+
fontProgress: p.fontProgress,
|
|
9230
9234
|
zoomPercent: p.scale !== void 0 && !p.hideZoomControls ? p.scale * 100 : void 0,
|
|
9231
9235
|
notesExpanded: p.isNotesExpanded,
|
|
9232
9236
|
viewMode: pptx.statusBarViewMode(p.mode),
|
|
@@ -9295,7 +9299,7 @@ function ResizeHandle({
|
|
|
9295
9299
|
{
|
|
9296
9300
|
role: "separator",
|
|
9297
9301
|
"aria-orientation": direction,
|
|
9298
|
-
className:
|
|
9302
|
+
className: chunkP2COO2QO_js.cn(
|
|
9299
9303
|
// Outer container: generous hit area for easy clicking.
|
|
9300
9304
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
9301
9305
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -9306,7 +9310,7 @@ function ResizeHandle({
|
|
|
9306
9310
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9307
9311
|
"div",
|
|
9308
9312
|
{
|
|
9309
|
-
className:
|
|
9313
|
+
className: chunkP2COO2QO_js.cn(
|
|
9310
9314
|
"absolute transition-colors",
|
|
9311
9315
|
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"
|
|
9312
9316
|
)
|
|
@@ -9395,10 +9399,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
|
|
|
9395
9399
|
}
|
|
9396
9400
|
function ContextMenu(props) {
|
|
9397
9401
|
const { contextMenuState, mode, onClose } = props;
|
|
9398
|
-
const { t } =
|
|
9402
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9399
9403
|
const customization = useViewerCustomizationContext();
|
|
9400
9404
|
const shapeFormat = useShapeFormatContext();
|
|
9401
|
-
const chartFormat =
|
|
9405
|
+
const chartFormat = chunkNRTPKXZX_js.useChartFormatContext();
|
|
9402
9406
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
9403
9407
|
const handlers = {
|
|
9404
9408
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -9474,7 +9478,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
9474
9478
|
}
|
|
9475
9479
|
function CanvasContextMenu(props) {
|
|
9476
9480
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
9477
|
-
const { t } =
|
|
9481
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9478
9482
|
const customization = useViewerCustomizationContext();
|
|
9479
9483
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
9480
9484
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -9537,7 +9541,7 @@ function FindReplacePanel({
|
|
|
9537
9541
|
onReplaceAll,
|
|
9538
9542
|
onClose
|
|
9539
9543
|
}) {
|
|
9540
|
-
const { t } =
|
|
9544
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9541
9545
|
const searchInputRef = React108.useRef(null);
|
|
9542
9546
|
React108.useEffect(() => {
|
|
9543
9547
|
searchInputRef.current?.focus();
|
|
@@ -9728,7 +9732,7 @@ function HandoutMasterPanel({
|
|
|
9728
9732
|
onSlidesPerPageChange,
|
|
9729
9733
|
onBackgroundChange
|
|
9730
9734
|
}) {
|
|
9731
|
-
const { t } =
|
|
9735
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9732
9736
|
if (!handoutMaster) {
|
|
9733
9737
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9734
9738
|
}
|
|
@@ -9740,7 +9744,7 @@ function HandoutMasterPanel({
|
|
|
9740
9744
|
{
|
|
9741
9745
|
type: "button",
|
|
9742
9746
|
"aria-pressed": slidesPerPage === count,
|
|
9743
|
-
className:
|
|
9747
|
+
className: chunkP2COO2QO_js.cn(
|
|
9744
9748
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9745
9749
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9746
9750
|
),
|
|
@@ -9783,7 +9787,7 @@ function NotesMasterPanel({
|
|
|
9783
9787
|
notesMaster,
|
|
9784
9788
|
onBackgroundChange
|
|
9785
9789
|
}) {
|
|
9786
|
-
const { t } =
|
|
9790
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9787
9791
|
const placeholderLabels = React108.useMemo(() => {
|
|
9788
9792
|
if (!notesMaster?.placeholders) {
|
|
9789
9793
|
return [];
|
|
@@ -9845,7 +9849,7 @@ function SlideMastersList({
|
|
|
9845
9849
|
React108.useEffect(() => {
|
|
9846
9850
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9847
9851
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9848
|
-
const { t } =
|
|
9852
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9849
9853
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9850
9854
|
slideMasters.map((master, masterIdx) => {
|
|
9851
9855
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -9858,7 +9862,7 @@ function SlideMastersList({
|
|
|
9858
9862
|
ref: isMasterActive ? activeRef : void 0,
|
|
9859
9863
|
"aria-pressed": isMasterActive,
|
|
9860
9864
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9861
|
-
className:
|
|
9865
|
+
className: chunkP2COO2QO_js.cn(
|
|
9862
9866
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9863
9867
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9864
9868
|
),
|
|
@@ -9875,7 +9879,7 @@ function SlideMastersList({
|
|
|
9875
9879
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9876
9880
|
"span",
|
|
9877
9881
|
{
|
|
9878
|
-
className:
|
|
9882
|
+
className: chunkP2COO2QO_js.cn(
|
|
9879
9883
|
"text-[10px] font-medium",
|
|
9880
9884
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9881
9885
|
),
|
|
@@ -9894,7 +9898,7 @@ function SlideMastersList({
|
|
|
9894
9898
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9895
9899
|
"aria-pressed": isLayoutActive,
|
|
9896
9900
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9897
|
-
className:
|
|
9901
|
+
className: chunkP2COO2QO_js.cn(
|
|
9898
9902
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9899
9903
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9900
9904
|
),
|
|
@@ -9911,7 +9915,7 @@ function SlideMastersList({
|
|
|
9911
9915
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9912
9916
|
"span",
|
|
9913
9917
|
{
|
|
9914
|
-
className:
|
|
9918
|
+
className: chunkP2COO2QO_js.cn(
|
|
9915
9919
|
"text-[9px]",
|
|
9916
9920
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9917
9921
|
),
|
|
@@ -9955,7 +9959,7 @@ function MasterViewSidebar({
|
|
|
9955
9959
|
onSlidesBackgroundChange
|
|
9956
9960
|
}) {
|
|
9957
9961
|
const scrollRef = React108.useRef(null);
|
|
9958
|
-
const { t } =
|
|
9962
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
9959
9963
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
9960
9964
|
{ slideMasters },
|
|
9961
9965
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -10003,7 +10007,7 @@ function MasterViewSidebar({
|
|
|
10003
10007
|
type: "button",
|
|
10004
10008
|
role: "tab",
|
|
10005
10009
|
"aria-selected": masterViewTab === tab.key,
|
|
10006
|
-
className:
|
|
10010
|
+
className: chunkP2COO2QO_js.cn(
|
|
10007
10011
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
10008
10012
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
10009
10013
|
),
|
|
@@ -10105,7 +10109,7 @@ function NotesMasterCanvas({
|
|
|
10105
10109
|
notesText,
|
|
10106
10110
|
slideNumber
|
|
10107
10111
|
}) {
|
|
10108
|
-
const { t } =
|
|
10112
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
10109
10113
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10110
10114
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10111
10115
|
const scale = React108.useMemo(() => {
|
|
@@ -10365,7 +10369,7 @@ function HandoutMasterCanvas({
|
|
|
10365
10369
|
slideThumbnails,
|
|
10366
10370
|
pageNumber
|
|
10367
10371
|
}) {
|
|
10368
|
-
const { t } =
|
|
10372
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
10369
10373
|
const slideAspect = 4 / 3;
|
|
10370
10374
|
const scale = React108.useMemo(() => {
|
|
10371
10375
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10506,7 +10510,7 @@ function SectionBlock({
|
|
|
10506
10510
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10507
10511
|
lu.LuChevronDown,
|
|
10508
10512
|
{
|
|
10509
|
-
className:
|
|
10513
|
+
className: chunkP2COO2QO_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10510
10514
|
}
|
|
10511
10515
|
),
|
|
10512
10516
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10550,12 +10554,12 @@ function SlideCardImpl({
|
|
|
10550
10554
|
onDragLeave,
|
|
10551
10555
|
onDrop
|
|
10552
10556
|
}) {
|
|
10553
|
-
const { t } =
|
|
10557
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
10554
10558
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10555
10559
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10556
10560
|
"div",
|
|
10557
10561
|
{
|
|
10558
|
-
className:
|
|
10562
|
+
className: chunkP2COO2QO_js.cn(
|
|
10559
10563
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10560
10564
|
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",
|
|
10561
10565
|
slide.hidden && "opacity-40"
|
|
@@ -10578,7 +10582,7 @@ function SlideCardImpl({
|
|
|
10578
10582
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10579
10583
|
"span",
|
|
10580
10584
|
{
|
|
10581
|
-
className:
|
|
10585
|
+
className: chunkP2COO2QO_js.cn(
|
|
10582
10586
|
"text-[11px] font-medium px-0.5",
|
|
10583
10587
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10584
10588
|
),
|
|
@@ -10656,7 +10660,7 @@ function SorterContextMenu({
|
|
|
10656
10660
|
onToggleHide,
|
|
10657
10661
|
onClose
|
|
10658
10662
|
}) {
|
|
10659
|
-
const { t } =
|
|
10663
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
10660
10664
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10661
10665
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10662
10666
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -11011,7 +11015,7 @@ function SlideSorterOverlay({
|
|
|
11011
11015
|
onToggleHideSlides,
|
|
11012
11016
|
onClose
|
|
11013
11017
|
}) {
|
|
11014
|
-
const { t } =
|
|
11018
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
11015
11019
|
const state = useSlideSorterState({
|
|
11016
11020
|
slides,
|
|
11017
11021
|
templateElementsBySlideId,
|
|
@@ -11257,7 +11261,7 @@ function OutlineViewOverlay({
|
|
|
11257
11261
|
bumpHistory,
|
|
11258
11262
|
onClose
|
|
11259
11263
|
}) {
|
|
11260
|
-
const { t } =
|
|
11264
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
11261
11265
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11262
11266
|
slides,
|
|
11263
11267
|
canvasSize,
|
|
@@ -11348,7 +11352,7 @@ function ReadingViewStage({
|
|
|
11348
11352
|
"div",
|
|
11349
11353
|
{
|
|
11350
11354
|
className: "absolute inset-0",
|
|
11351
|
-
style: { backgroundColor:
|
|
11355
|
+
style: { backgroundColor: chunkP2COO2QO_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11352
11356
|
}
|
|
11353
11357
|
),
|
|
11354
11358
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11367,7 +11371,7 @@ function ReadingViewStage({
|
|
|
11367
11371
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11368
11372
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11369
11373
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11370
|
-
|
|
11374
|
+
chunkNRTPKXZX_js.StaticElementRenderer,
|
|
11371
11375
|
{
|
|
11372
11376
|
element,
|
|
11373
11377
|
activeSlide: slide,
|
|
@@ -11448,7 +11452,7 @@ function ReadingViewOverlay({
|
|
|
11448
11452
|
activeSlideIndex,
|
|
11449
11453
|
onExit
|
|
11450
11454
|
}) {
|
|
11451
|
-
const { t } =
|
|
11455
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
11452
11456
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11453
11457
|
slideCount: slides.length,
|
|
11454
11458
|
canvasSize,
|
|
@@ -11579,7 +11583,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11579
11583
|
if (segment.style.fontFamily) {
|
|
11580
11584
|
style.fontFamily = segment.style.fontFamily;
|
|
11581
11585
|
}
|
|
11582
|
-
if (segment.style.hyperlink &&
|
|
11586
|
+
if (segment.style.hyperlink && chunkP2COO2QO_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11583
11587
|
const safeHref = segment.style.hyperlink;
|
|
11584
11588
|
style.color = "#4a9eff";
|
|
11585
11589
|
style.textDecoration = "underline";
|
|
@@ -11592,7 +11596,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11592
11596
|
style,
|
|
11593
11597
|
onClick: (e) => {
|
|
11594
11598
|
e.preventDefault();
|
|
11595
|
-
|
|
11599
|
+
chunkP2COO2QO_js.safeOpenUrl(safeHref);
|
|
11596
11600
|
},
|
|
11597
11601
|
children: segment.text
|
|
11598
11602
|
},
|
|
@@ -11616,7 +11620,7 @@ function NotesPrintDialog({
|
|
|
11616
11620
|
onClose,
|
|
11617
11621
|
notesStyle
|
|
11618
11622
|
}) {
|
|
11619
|
-
const { t } =
|
|
11623
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
11620
11624
|
const printFrameRef = React108.useRef(null);
|
|
11621
11625
|
const handlePrint = React108.useCallback(() => {
|
|
11622
11626
|
const iframe = printFrameRef.current;
|
|
@@ -11674,7 +11678,7 @@ function NotesPrintDialog({
|
|
|
11674
11678
|
] }) });
|
|
11675
11679
|
}
|
|
11676
11680
|
function NotesToolbar(p) {
|
|
11677
|
-
const { t } =
|
|
11681
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
11678
11682
|
const ref = React108.useRef(null);
|
|
11679
11683
|
React108.useEffect(() => {
|
|
11680
11684
|
const host = ref.current;
|
|
@@ -11941,7 +11945,7 @@ function useSlideNotes({
|
|
|
11941
11945
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11942
11946
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11943
11947
|
e.preventDefault();
|
|
11944
|
-
|
|
11948
|
+
chunkP2COO2QO_js.safeOpenUrl(href);
|
|
11945
11949
|
}
|
|
11946
11950
|
}, []);
|
|
11947
11951
|
return {
|
|
@@ -11978,7 +11982,7 @@ function SlideNotesPanel({
|
|
|
11978
11982
|
notesStyle,
|
|
11979
11983
|
onHeightChange
|
|
11980
11984
|
}) {
|
|
11981
|
-
const { t } =
|
|
11985
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
11982
11986
|
const rootRef = React108__default.default.useRef(null);
|
|
11983
11987
|
React108__default.default.useEffect(() => {
|
|
11984
11988
|
const el = rootRef.current;
|
|
@@ -12022,7 +12026,7 @@ function SlideNotesPanel({
|
|
|
12022
12026
|
});
|
|
12023
12027
|
const hasNotes = draft.trim().length > 0;
|
|
12024
12028
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
12025
|
-
const { dragY, handlers: dragHandlers } =
|
|
12029
|
+
const { dragY, handlers: dragHandlers } = chunkNRTPKXZX_js.useSheetDismissDrag(onToggle);
|
|
12026
12030
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12027
12031
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12028
12032
|
"button",
|
|
@@ -12038,7 +12042,7 @@ function SlideNotesPanel({
|
|
|
12038
12042
|
{
|
|
12039
12043
|
ref: rootRef,
|
|
12040
12044
|
"data-pptx-chrome": "notes",
|
|
12041
|
-
className:
|
|
12045
|
+
className: chunkP2COO2QO_js.cn(
|
|
12042
12046
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
12043
12047
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
12044
12048
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12222,7 +12226,7 @@ function VersionHistoryPanel({
|
|
|
12222
12226
|
onClose,
|
|
12223
12227
|
onRestore
|
|
12224
12228
|
}) {
|
|
12225
|
-
const { t } =
|
|
12229
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
12226
12230
|
const [versions, setVersions] = React108.useState([]);
|
|
12227
12231
|
const [loading, setLoading] = React108.useState(false);
|
|
12228
12232
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12368,7 +12372,7 @@ function SlideDiffRow({
|
|
|
12368
12372
|
onAccept,
|
|
12369
12373
|
onReject
|
|
12370
12374
|
}) {
|
|
12371
|
-
const { t } =
|
|
12375
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
12372
12376
|
const [expanded, setExpanded] = React108.useState(diff.status === "changed");
|
|
12373
12377
|
const statusLabel = (() => {
|
|
12374
12378
|
switch (diff.status) {
|
|
@@ -12402,7 +12406,7 @@ function SlideDiffRow({
|
|
|
12402
12406
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12403
12407
|
"div",
|
|
12404
12408
|
{
|
|
12405
|
-
className:
|
|
12409
|
+
className: chunkP2COO2QO_js.cn(
|
|
12406
12410
|
"rounded-lg border transition-colors",
|
|
12407
12411
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12408
12412
|
),
|
|
@@ -12416,7 +12420,7 @@ function SlideDiffRow({
|
|
|
12416
12420
|
children: [
|
|
12417
12421
|
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" }),
|
|
12418
12422
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12419
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12423
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkP2COO2QO_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12420
12424
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12421
12425
|
diff.changes.length,
|
|
12422
12426
|
" ",
|
|
@@ -12426,7 +12430,7 @@ function SlideDiffRow({
|
|
|
12426
12430
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12427
12431
|
"span",
|
|
12428
12432
|
{
|
|
12429
|
-
className:
|
|
12433
|
+
className: chunkP2COO2QO_js.cn(
|
|
12430
12434
|
"text-[10px] font-medium",
|
|
12431
12435
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12432
12436
|
),
|
|
@@ -12454,7 +12458,7 @@ function SlideDiffRow({
|
|
|
12454
12458
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12455
12459
|
"div",
|
|
12456
12460
|
{
|
|
12457
|
-
className:
|
|
12461
|
+
className: chunkP2COO2QO_js.cn(
|
|
12458
12462
|
"rounded border overflow-hidden",
|
|
12459
12463
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12460
12464
|
),
|
|
@@ -12521,7 +12525,7 @@ function ComparePanel({
|
|
|
12521
12525
|
onRejectSlide,
|
|
12522
12526
|
onAcceptAll
|
|
12523
12527
|
}) {
|
|
12524
|
-
const { t } =
|
|
12528
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
12525
12529
|
const [accepted, setAccepted] = React108.useState({});
|
|
12526
12530
|
const [rejected, setRejected] = React108.useState({});
|
|
12527
12531
|
const handleAccept = React108.useCallback(
|
|
@@ -12650,7 +12654,7 @@ function PasswordProtectionDialog({
|
|
|
12650
12654
|
onSetPassword,
|
|
12651
12655
|
onRemovePassword
|
|
12652
12656
|
}) {
|
|
12653
|
-
const { t } =
|
|
12657
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
12654
12658
|
const [password, setPassword] = React108.useState("");
|
|
12655
12659
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12656
12660
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -12866,7 +12870,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12866
12870
|
customProperties,
|
|
12867
12871
|
onUpdate
|
|
12868
12872
|
}) {
|
|
12869
|
-
const { t } =
|
|
12873
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
12870
12874
|
const handleAdd = React108.useCallback(() => {
|
|
12871
12875
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
12872
12876
|
}, [customProperties, onUpdate]);
|
|
@@ -13068,7 +13072,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
13068
13072
|
onUpdateAppProperties,
|
|
13069
13073
|
canEdit
|
|
13070
13074
|
}) {
|
|
13071
|
-
const { t } =
|
|
13075
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13072
13076
|
const handleEditableChange = React108.useCallback(
|
|
13073
13077
|
(key, value) => {
|
|
13074
13078
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13108,7 +13112,7 @@ function DocumentPropertiesDialog({
|
|
|
13108
13112
|
onClose,
|
|
13109
13113
|
onSave
|
|
13110
13114
|
}) {
|
|
13111
|
-
const { t } =
|
|
13115
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13112
13116
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13113
13117
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13114
13118
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13159,7 +13163,7 @@ function DocumentPropertiesDialog({
|
|
|
13159
13163
|
const handleClose = React108.useCallback(() => {
|
|
13160
13164
|
onClose();
|
|
13161
13165
|
}, [onClose]);
|
|
13162
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13166
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_js.useModalDismissDrag(handleClose);
|
|
13163
13167
|
if (!isOpen) {
|
|
13164
13168
|
return null;
|
|
13165
13169
|
}
|
|
@@ -13296,7 +13300,7 @@ function FontEmbeddingPanel({
|
|
|
13296
13300
|
onClose,
|
|
13297
13301
|
onToggleEmbedFonts
|
|
13298
13302
|
}) {
|
|
13299
|
-
const { t } =
|
|
13303
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13300
13304
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13301
13305
|
const [scanning, setScanning] = React108.useState(false);
|
|
13302
13306
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13424,7 +13428,7 @@ function DigitalSignaturesDialog({
|
|
|
13424
13428
|
hasSignatures,
|
|
13425
13429
|
signatureCount
|
|
13426
13430
|
}) {
|
|
13427
|
-
const { t } =
|
|
13431
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13428
13432
|
if (!isOpen) {
|
|
13429
13433
|
return null;
|
|
13430
13434
|
}
|
|
@@ -13496,7 +13500,7 @@ function SignatureStatusBadge({
|
|
|
13496
13500
|
signatureCount,
|
|
13497
13501
|
onClick
|
|
13498
13502
|
}) {
|
|
13499
|
-
const { t } =
|
|
13503
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13500
13504
|
if (!hasSignatures || signatureCount === 0) {
|
|
13501
13505
|
return null;
|
|
13502
13506
|
}
|
|
@@ -13522,7 +13526,7 @@ function SignatureStrippedDialog({
|
|
|
13522
13526
|
onConfirm,
|
|
13523
13527
|
onCancel
|
|
13524
13528
|
}) {
|
|
13525
|
-
const { t } =
|
|
13529
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13526
13530
|
if (!isOpen) {
|
|
13527
13531
|
return null;
|
|
13528
13532
|
}
|
|
@@ -13591,7 +13595,7 @@ function EncryptedFileDialog({
|
|
|
13591
13595
|
isOpen,
|
|
13592
13596
|
onClose
|
|
13593
13597
|
}) {
|
|
13594
|
-
const { t } =
|
|
13598
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13595
13599
|
if (!isOpen) {
|
|
13596
13600
|
return null;
|
|
13597
13601
|
}
|
|
@@ -13738,7 +13742,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13738
13742
|
] });
|
|
13739
13743
|
}
|
|
13740
13744
|
function PresentationEndOverlay({ onExit }) {
|
|
13741
|
-
const { t } =
|
|
13745
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13742
13746
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13743
13747
|
"button",
|
|
13744
13748
|
{
|
|
@@ -13754,9 +13758,9 @@ function PresentationSubtitleBar({
|
|
|
13754
13758
|
visible,
|
|
13755
13759
|
onCaptionChange
|
|
13756
13760
|
}) {
|
|
13757
|
-
const { t } =
|
|
13761
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13758
13762
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13759
|
-
pptx.subtitleSettingsFromOptions(
|
|
13763
|
+
pptx.subtitleSettingsFromOptions(chunkNRTPKXZX_js.useViewerOptionsContext()),
|
|
13760
13764
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13761
13765
|
);
|
|
13762
13766
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13833,7 +13837,7 @@ function renderNotesSegments(segments) {
|
|
|
13833
13837
|
});
|
|
13834
13838
|
}
|
|
13835
13839
|
function PresenterConsoleToolbar(p) {
|
|
13836
|
-
const { t } =
|
|
13840
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
13837
13841
|
const ref = useWebControl(
|
|
13838
13842
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13839
13843
|
{
|
|
@@ -13924,7 +13928,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13924
13928
|
{
|
|
13925
13929
|
className: "absolute inset-0",
|
|
13926
13930
|
style: {
|
|
13927
|
-
backgroundColor:
|
|
13931
|
+
backgroundColor: chunkP2COO2QO_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13928
13932
|
}
|
|
13929
13933
|
}
|
|
13930
13934
|
),
|
|
@@ -13950,7 +13954,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13950
13954
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13951
13955
|
},
|
|
13952
13956
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13953
|
-
|
|
13957
|
+
chunkNRTPKXZX_js.StaticElementRenderer,
|
|
13954
13958
|
{
|
|
13955
13959
|
element,
|
|
13956
13960
|
activeSlide: slide,
|
|
@@ -14017,7 +14021,7 @@ function PresenterNotesRail({
|
|
|
14017
14021
|
onMove,
|
|
14018
14022
|
onUpdateNotes
|
|
14019
14023
|
}) {
|
|
14020
|
-
const { t } =
|
|
14024
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14021
14025
|
const slide = slides[current];
|
|
14022
14026
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
14023
14027
|
const notesText = slide?.notes ?? "";
|
|
@@ -14142,7 +14146,7 @@ function PresenterNotesRail({
|
|
|
14142
14146
|
] });
|
|
14143
14147
|
}
|
|
14144
14148
|
function PresenterSlideNavigator(props) {
|
|
14145
|
-
const { t } =
|
|
14149
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14146
14150
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14147
14151
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14148
14152
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14284,7 +14288,7 @@ function PresenterView({
|
|
|
14284
14288
|
onSwapDisplays,
|
|
14285
14289
|
onUpdateNotes
|
|
14286
14290
|
}) {
|
|
14287
|
-
const { t } =
|
|
14291
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14288
14292
|
const [now, setNow] = React108.useState(Date.now());
|
|
14289
14293
|
React108.useEffect(() => {
|
|
14290
14294
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14441,7 +14445,7 @@ function MobilePresenterView({
|
|
|
14441
14445
|
onMovePresentationSlide,
|
|
14442
14446
|
onExit
|
|
14443
14447
|
}) {
|
|
14444
|
-
const { t } =
|
|
14448
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14445
14449
|
const [now, setNow] = React108.useState(Date.now());
|
|
14446
14450
|
React108.useEffect(() => {
|
|
14447
14451
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14554,7 +14558,7 @@ function RehearseTimingsHud({
|
|
|
14554
14558
|
paused,
|
|
14555
14559
|
onTogglePause
|
|
14556
14560
|
}) {
|
|
14557
|
-
const { t } =
|
|
14561
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14558
14562
|
const [tick, setTick] = React108.useState(0);
|
|
14559
14563
|
React108.useEffect(() => {
|
|
14560
14564
|
if (paused) {
|
|
@@ -14602,7 +14606,7 @@ function RehearseTimingsSummary({
|
|
|
14602
14606
|
onSave,
|
|
14603
14607
|
onDiscard
|
|
14604
14608
|
}) {
|
|
14605
|
-
const { t } =
|
|
14609
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14606
14610
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14607
14611
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14608
14612
|
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: [
|
|
@@ -14686,7 +14690,7 @@ function SelectionPane({
|
|
|
14686
14690
|
markDirty,
|
|
14687
14691
|
onClose
|
|
14688
14692
|
}) {
|
|
14689
|
-
const { t } =
|
|
14693
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
14690
14694
|
const activeSlide = slides[activeSlideIndex];
|
|
14691
14695
|
const elements = activeSlide?.elements ?? [];
|
|
14692
14696
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14841,7 +14845,7 @@ function SelectionPane({
|
|
|
14841
14845
|
setDragIndex(null);
|
|
14842
14846
|
setDragOverIndex(null);
|
|
14843
14847
|
},
|
|
14844
|
-
className:
|
|
14848
|
+
className: chunkP2COO2QO_js.cn(
|
|
14845
14849
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14846
14850
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14847
14851
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14895,13 +14899,13 @@ function SelectionPane({
|
|
|
14895
14899
|
}
|
|
14896
14900
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14897
14901
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14898
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
14902
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunkP2COO2QO_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14899
14903
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14900
14904
|
);
|
|
14901
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
14905
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunkP2COO2QO_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14902
14906
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14903
14907
|
);
|
|
14904
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
14908
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunkP2COO2QO_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14905
14909
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14906
14910
|
);
|
|
14907
14911
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -15002,7 +15006,7 @@ function AfterAnimationRow({
|
|
|
15002
15006
|
onActionChange,
|
|
15003
15007
|
onColorChange
|
|
15004
15008
|
}) {
|
|
15005
|
-
const { t } =
|
|
15009
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
15006
15010
|
const commitRecentColor = useRecentColorCommit();
|
|
15007
15011
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
15008
15012
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15053,7 +15057,7 @@ function AnimationTimelineSection({
|
|
|
15053
15057
|
canEdit,
|
|
15054
15058
|
handlers
|
|
15055
15059
|
}) {
|
|
15056
|
-
const { t } =
|
|
15060
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
15057
15061
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
15058
15062
|
const {
|
|
15059
15063
|
sortedAnimations,
|
|
@@ -15084,7 +15088,7 @@ function AnimationTimelineSection({
|
|
|
15084
15088
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15085
15089
|
"div",
|
|
15086
15090
|
{
|
|
15087
|
-
className:
|
|
15091
|
+
className: chunkP2COO2QO_js.cn(
|
|
15088
15092
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15089
15093
|
animationTypeColor(bar.anim),
|
|
15090
15094
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15113,7 +15117,7 @@ function AnimationTimelineSection({
|
|
|
15113
15117
|
onDragLeave: handleDragLeave,
|
|
15114
15118
|
onDrop: (e) => handleDrop(index, e),
|
|
15115
15119
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15116
|
-
className:
|
|
15120
|
+
className: chunkP2COO2QO_js.cn(
|
|
15117
15121
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15118
15122
|
"bg-muted/20 text-muted-foreground/70",
|
|
15119
15123
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15152,7 +15156,7 @@ function AnimationTimelineSection({
|
|
|
15152
15156
|
onDragEnd: handleDragEnd,
|
|
15153
15157
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15154
15158
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15155
|
-
className:
|
|
15159
|
+
className: chunkP2COO2QO_js.cn(
|
|
15156
15160
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15157
15161
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15158
15162
|
isDragging && "opacity-40",
|
|
@@ -15213,7 +15217,7 @@ function BookmarkTriggerRow({
|
|
|
15213
15217
|
style,
|
|
15214
15218
|
onChange
|
|
15215
15219
|
}) {
|
|
15216
|
-
const { t } =
|
|
15220
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
15217
15221
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15218
15222
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15219
15223
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15246,7 +15250,7 @@ function EffectSoundRow({
|
|
|
15246
15250
|
onPick,
|
|
15247
15251
|
onPickStock
|
|
15248
15252
|
}) {
|
|
15249
|
-
const { t } =
|
|
15253
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
15250
15254
|
const fileInputRef = React108__default.default.useRef(null);
|
|
15251
15255
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15252
15256
|
const handleSelectChange = (event) => {
|
|
@@ -15284,7 +15288,7 @@ function EffectSoundRow({
|
|
|
15284
15288
|
}
|
|
15285
15289
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15286
15290
|
if (asset) {
|
|
15287
|
-
|
|
15291
|
+
chunkNRTPKXZX_js.playAnimationSound(asset.dataUrl);
|
|
15288
15292
|
}
|
|
15289
15293
|
};
|
|
15290
15294
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15337,7 +15341,7 @@ function MotionPathRow({
|
|
|
15337
15341
|
canEdit,
|
|
15338
15342
|
onChange
|
|
15339
15343
|
}) {
|
|
15340
|
-
const { t } =
|
|
15344
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
15341
15345
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15342
15346
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15343
15347
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15459,7 +15463,7 @@ function useAnimationPreview({
|
|
|
15459
15463
|
}) {
|
|
15460
15464
|
const handleAnimationHover = React108.useCallback((anim) => {
|
|
15461
15465
|
if (anim.motionPath) {
|
|
15462
|
-
|
|
15466
|
+
chunkP2COO2QO_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15463
15467
|
durationMs: anim.durationMs,
|
|
15464
15468
|
delayMs: anim.delayMs,
|
|
15465
15469
|
timingCurve: anim.timingCurve
|
|
@@ -15470,19 +15474,19 @@ function useAnimationPreview({
|
|
|
15470
15474
|
if (!preset || preset === "none") {
|
|
15471
15475
|
return;
|
|
15472
15476
|
}
|
|
15473
|
-
|
|
15477
|
+
chunkP2COO2QO_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15474
15478
|
direction: anim.direction,
|
|
15475
15479
|
durationMs: anim.durationMs ?? 500,
|
|
15476
15480
|
timingCurve: anim.timingCurve
|
|
15477
15481
|
});
|
|
15478
15482
|
}, []);
|
|
15479
|
-
const handleAnimationHoverEnd = React108.useCallback(() =>
|
|
15483
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunkP2COO2QO_js.stopPreviewAnimation(), []);
|
|
15480
15484
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15481
15485
|
if (!selectedElementAnimation) {
|
|
15482
15486
|
return;
|
|
15483
15487
|
}
|
|
15484
15488
|
if (selectedElementAnimation.motionPath) {
|
|
15485
|
-
|
|
15489
|
+
chunkP2COO2QO_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15486
15490
|
durationMs: selectedElementAnimation.durationMs,
|
|
15487
15491
|
delayMs: selectedElementAnimation.delayMs,
|
|
15488
15492
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15493,7 +15497,7 @@ function useAnimationPreview({
|
|
|
15493
15497
|
if (!preset || preset === "none") {
|
|
15494
15498
|
return;
|
|
15495
15499
|
}
|
|
15496
|
-
|
|
15500
|
+
chunkP2COO2QO_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15497
15501
|
direction: selectedElementAnimation.direction,
|
|
15498
15502
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15499
15503
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15728,7 +15732,7 @@ function useAnimationHandlers({
|
|
|
15728
15732
|
return anim.elementId.slice(0, 8);
|
|
15729
15733
|
}
|
|
15730
15734
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15731
|
-
return text ||
|
|
15735
|
+
return text || chunkP2COO2QO_js.getElementLabel(el);
|
|
15732
15736
|
},
|
|
15733
15737
|
[activeSlide.elements]
|
|
15734
15738
|
);
|
|
@@ -15739,7 +15743,7 @@ function useAnimationHandlers({
|
|
|
15739
15743
|
return id.slice(0, 8);
|
|
15740
15744
|
}
|
|
15741
15745
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15742
|
-
return text ||
|
|
15746
|
+
return text || chunkP2COO2QO_js.getElementLabel(el);
|
|
15743
15747
|
}).join(", "),
|
|
15744
15748
|
[activeSlide.elements]
|
|
15745
15749
|
);
|
|
@@ -15795,8 +15799,8 @@ function AnimationPanel({
|
|
|
15795
15799
|
canEdit,
|
|
15796
15800
|
onUpdateSlide
|
|
15797
15801
|
}) {
|
|
15798
|
-
const { t } =
|
|
15799
|
-
const { viewportWidth } =
|
|
15802
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
15803
|
+
const { viewportWidth } = chunkNRTPKXZX_js.useIsMobile();
|
|
15800
15804
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15801
15805
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15802
15806
|
const handlers = useAnimationHandlers({
|
|
@@ -15924,7 +15928,7 @@ function AnimationPanel({
|
|
|
15924
15928
|
type: "button",
|
|
15925
15929
|
disabled: !canEdit,
|
|
15926
15930
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15927
|
-
className:
|
|
15931
|
+
className: chunkP2COO2QO_js.cn(
|
|
15928
15932
|
"flex items-center justify-center rounded border transition-colors",
|
|
15929
15933
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15930
15934
|
),
|
|
@@ -15990,7 +15994,7 @@ function AnimationPanel({
|
|
|
15990
15994
|
style: fieldStyle,
|
|
15991
15995
|
children: [
|
|
15992
15996
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15993
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15997
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkP2COO2QO_js.getElementLabel(el) }, el.id))
|
|
15994
15998
|
]
|
|
15995
15999
|
}
|
|
15996
16000
|
)
|
|
@@ -16134,7 +16138,7 @@ function ActionTargetFields({
|
|
|
16134
16138
|
returnAfter,
|
|
16135
16139
|
onChange
|
|
16136
16140
|
}) {
|
|
16137
|
-
const { t } =
|
|
16141
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16138
16142
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16139
16143
|
if (urlLabelKey) {
|
|
16140
16144
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16143,7 +16147,7 @@ function ActionTargetFields({
|
|
|
16143
16147
|
type: "text",
|
|
16144
16148
|
disabled: !canEdit,
|
|
16145
16149
|
"aria-label": t(urlLabelKey),
|
|
16146
|
-
className:
|
|
16150
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
|
|
16147
16151
|
placeholder: "https://...",
|
|
16148
16152
|
value: url ?? "",
|
|
16149
16153
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16157,7 +16161,7 @@ function ActionTargetFields({
|
|
|
16157
16161
|
type: "number",
|
|
16158
16162
|
disabled: !canEdit,
|
|
16159
16163
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16160
|
-
className:
|
|
16164
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
|
|
16161
16165
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16162
16166
|
min: 1,
|
|
16163
16167
|
max: slideCount,
|
|
@@ -16179,7 +16183,7 @@ function ActionTargetFields({
|
|
|
16179
16183
|
"data-testid": "pptx-action-custom-show",
|
|
16180
16184
|
disabled: !canEdit,
|
|
16181
16185
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16182
|
-
className:
|
|
16186
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
|
|
16183
16187
|
value: customShowId ?? "",
|
|
16184
16188
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16185
16189
|
children: [
|
|
@@ -16211,7 +16215,7 @@ function ActionSettingsPanel({
|
|
|
16211
16215
|
customShows,
|
|
16212
16216
|
onUpdateElement
|
|
16213
16217
|
}) {
|
|
16214
|
-
const { t } =
|
|
16218
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16215
16219
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16216
16220
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16217
16221
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16287,7 +16291,7 @@ function ActionTriggerSection({
|
|
|
16287
16291
|
onChangeType,
|
|
16288
16292
|
onChangeTarget
|
|
16289
16293
|
}) {
|
|
16290
|
-
const { t } =
|
|
16294
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16291
16295
|
const [pendingType, setPendingType] = React108.useState(void 0);
|
|
16292
16296
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16293
16297
|
const changeType = (type) => {
|
|
@@ -16301,7 +16305,7 @@ function ActionTriggerSection({
|
|
|
16301
16305
|
{
|
|
16302
16306
|
disabled: !canEdit,
|
|
16303
16307
|
"aria-label": label,
|
|
16304
|
-
className:
|
|
16308
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
|
|
16305
16309
|
value: effectiveType,
|
|
16306
16310
|
onChange: (e) => changeType(e.target.value),
|
|
16307
16311
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16329,7 +16333,7 @@ var AXIS_ROWS = [
|
|
|
16329
16333
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16330
16334
|
];
|
|
16331
16335
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16332
|
-
const { t } =
|
|
16336
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16333
16337
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16334
16338
|
...row,
|
|
16335
16339
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16474,7 +16478,7 @@ function ChartAxisStyleOptions({
|
|
|
16474
16478
|
onSetTitleStyle,
|
|
16475
16479
|
onSetGridlineStyle
|
|
16476
16480
|
}) {
|
|
16477
|
-
const { t } =
|
|
16481
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16478
16482
|
const commitRecentColor = useRecentColorCommit();
|
|
16479
16483
|
const rows = SCALE_AXES.map((row) => ({
|
|
16480
16484
|
...row,
|
|
@@ -16646,7 +16650,7 @@ function ChartComboTypeOptions({
|
|
|
16646
16650
|
canEdit,
|
|
16647
16651
|
onSetSeriesType
|
|
16648
16652
|
}) {
|
|
16649
|
-
const { t } =
|
|
16653
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16650
16654
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16651
16655
|
return null;
|
|
16652
16656
|
}
|
|
@@ -16675,7 +16679,7 @@ function ChartDataLabelOptions({
|
|
|
16675
16679
|
canEdit,
|
|
16676
16680
|
onUpdateStyle
|
|
16677
16681
|
}) {
|
|
16678
|
-
const { t } =
|
|
16682
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16679
16683
|
if (!style?.hasDataLabels) {
|
|
16680
16684
|
return null;
|
|
16681
16685
|
}
|
|
@@ -16723,7 +16727,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16723
16727
|
canEdit,
|
|
16724
16728
|
onSetPointMarker
|
|
16725
16729
|
}) {
|
|
16726
|
-
const { t } =
|
|
16730
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16727
16731
|
const commitRecentColor = useRecentColorCommit();
|
|
16728
16732
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16729
16733
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16829,7 +16833,7 @@ function ChartDataPointOptions({
|
|
|
16829
16833
|
onSetPointExplosion,
|
|
16830
16834
|
onSetPointLabel
|
|
16831
16835
|
}) {
|
|
16832
|
-
const { t } =
|
|
16836
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16833
16837
|
const commitRecentColor = useRecentColorCommit();
|
|
16834
16838
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16835
16839
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -16931,7 +16935,7 @@ function ChartDataSheet({
|
|
|
16931
16935
|
highlightCell,
|
|
16932
16936
|
onChange
|
|
16933
16937
|
}) {
|
|
16934
|
-
const { t } =
|
|
16938
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16935
16939
|
const ref = React108.useRef(null);
|
|
16936
16940
|
React108.useLayoutEffect(() => {
|
|
16937
16941
|
if (ref.current) {
|
|
@@ -16962,7 +16966,7 @@ function ChartDisplayOptions({
|
|
|
16962
16966
|
hasGridlines,
|
|
16963
16967
|
onToggleGridlines
|
|
16964
16968
|
}) {
|
|
16965
|
-
const { t } =
|
|
16969
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
16966
16970
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
16967
16971
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
16968
16972
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -17039,7 +17043,7 @@ function ChartErrorBarOptions({
|
|
|
17039
17043
|
canEdit,
|
|
17040
17044
|
onSetErrorBars
|
|
17041
17045
|
}) {
|
|
17042
|
-
const { t } =
|
|
17046
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17043
17047
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17044
17048
|
return null;
|
|
17045
17049
|
}
|
|
@@ -17119,7 +17123,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17119
17123
|
onRestoreSeries,
|
|
17120
17124
|
onSetDataLabelsRangeCache
|
|
17121
17125
|
}) {
|
|
17122
|
-
const { t } =
|
|
17126
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17123
17127
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17124
17128
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17125
17129
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17199,7 +17203,7 @@ function ChartMarkerOptions({
|
|
|
17199
17203
|
canEdit,
|
|
17200
17204
|
onSetMarker
|
|
17201
17205
|
}) {
|
|
17202
|
-
const { t } =
|
|
17206
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17203
17207
|
const commitRecentColor = useRecentColorCommit();
|
|
17204
17208
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17205
17209
|
return null;
|
|
@@ -17308,7 +17312,7 @@ function ChartSeriesColorOptions({
|
|
|
17308
17312
|
onSetColor,
|
|
17309
17313
|
onToggleSecondaryAxis
|
|
17310
17314
|
}) {
|
|
17311
|
-
const { t } =
|
|
17315
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17312
17316
|
const series = chartData.series;
|
|
17313
17317
|
if (series.length === 0) {
|
|
17314
17318
|
return null;
|
|
@@ -17358,7 +17362,7 @@ function ChartSubtypeOptions({
|
|
|
17358
17362
|
canEdit,
|
|
17359
17363
|
onUpdateChartData
|
|
17360
17364
|
}) {
|
|
17361
|
-
const { t } =
|
|
17365
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17362
17366
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17363
17367
|
return null;
|
|
17364
17368
|
}
|
|
@@ -17424,7 +17428,7 @@ function ChartTrendlineOptions({
|
|
|
17424
17428
|
canEdit,
|
|
17425
17429
|
onSetTrendline
|
|
17426
17430
|
}) {
|
|
17427
|
-
const { t } =
|
|
17431
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17428
17432
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17429
17433
|
return null;
|
|
17430
17434
|
}
|
|
@@ -17497,7 +17501,7 @@ function ChartTypeSelector({
|
|
|
17497
17501
|
onUpdateChartData,
|
|
17498
17502
|
onTitleChange
|
|
17499
17503
|
}) {
|
|
17500
|
-
const { t } =
|
|
17504
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17501
17505
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17502
17506
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17503
17507
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17578,7 +17582,7 @@ function RotationField({
|
|
|
17578
17582
|
canEdit,
|
|
17579
17583
|
onRotationPatch
|
|
17580
17584
|
}) {
|
|
17581
|
-
const { t } =
|
|
17585
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17582
17586
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17583
17587
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17584
17588
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17600,7 +17604,7 @@ function FlipFields({
|
|
|
17600
17604
|
canEdit,
|
|
17601
17605
|
onFlipPatch
|
|
17602
17606
|
}) {
|
|
17603
|
-
const { t } =
|
|
17607
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17604
17608
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17605
17609
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17606
17610
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17639,7 +17643,7 @@ function ChartUserShapePositionFields({
|
|
|
17639
17643
|
onRotationPatch,
|
|
17640
17644
|
onFlipPatch
|
|
17641
17645
|
}) {
|
|
17642
|
-
const { t } =
|
|
17646
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17643
17647
|
const update = (patch) => onPatch(row.path, patch);
|
|
17644
17648
|
if (row.depth === 0) {
|
|
17645
17649
|
const from = row.from;
|
|
@@ -17763,7 +17767,7 @@ function ChartUserShapeOptions({
|
|
|
17763
17767
|
canEdit,
|
|
17764
17768
|
onUpdateChartData
|
|
17765
17769
|
}) {
|
|
17766
|
-
const { t } =
|
|
17770
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
17767
17771
|
const shapes = chartData.userShapes;
|
|
17768
17772
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17769
17773
|
const kindLabel = (kind) => {
|
|
@@ -17921,8 +17925,8 @@ function ChartUserShapeOptions({
|
|
|
17921
17925
|
}
|
|
17922
17926
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17923
17927
|
const chartData = selectedElement.chartData;
|
|
17924
|
-
const followDataPoint =
|
|
17925
|
-
const { selection: partSelection } =
|
|
17928
|
+
const followDataPoint = chunkNRTPKXZX_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17929
|
+
const { selection: partSelection } = chunkNRTPKXZX_js.useChartPartSelection();
|
|
17926
17930
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17927
17931
|
const title = chartData?.title;
|
|
17928
17932
|
const chartType = chartData?.chartType;
|
|
@@ -18360,7 +18364,7 @@ function OleEditorDialog({
|
|
|
18360
18364
|
element,
|
|
18361
18365
|
onUpdateElement
|
|
18362
18366
|
}) {
|
|
18363
|
-
const { t } =
|
|
18367
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18364
18368
|
const dialogRef = React108.useRef(null);
|
|
18365
18369
|
const fileInputRef = React108.useRef(null);
|
|
18366
18370
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18608,7 +18612,7 @@ function ConnectorArrowsSection({
|
|
|
18608
18612
|
onUpdateShapeStyle,
|
|
18609
18613
|
markDirty
|
|
18610
18614
|
}) {
|
|
18611
|
-
const { t } =
|
|
18615
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18612
18616
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18613
18617
|
["Start", "End"].map((end) => {
|
|
18614
18618
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18627,7 +18631,7 @@ function ConnectorArrowsSection({
|
|
|
18627
18631
|
},
|
|
18628
18632
|
disabled: !canEdit,
|
|
18629
18633
|
className: SELECT_CLS2,
|
|
18630
|
-
children:
|
|
18634
|
+
children: chunkP2COO2QO_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18631
18635
|
}
|
|
18632
18636
|
)
|
|
18633
18637
|
] }, end);
|
|
@@ -18651,7 +18655,7 @@ function ConnectorArrowsSection({
|
|
|
18651
18655
|
},
|
|
18652
18656
|
disabled: !canEdit,
|
|
18653
18657
|
className: SELECT_CLS2,
|
|
18654
|
-
children:
|
|
18658
|
+
children: chunkP2COO2QO_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18655
18659
|
}
|
|
18656
18660
|
)
|
|
18657
18661
|
] }),
|
|
@@ -18670,7 +18674,7 @@ function ConnectorArrowsSection({
|
|
|
18670
18674
|
},
|
|
18671
18675
|
disabled: !canEdit,
|
|
18672
18676
|
className: SELECT_CLS2,
|
|
18673
|
-
children:
|
|
18677
|
+
children: chunkP2COO2QO_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18674
18678
|
}
|
|
18675
18679
|
)
|
|
18676
18680
|
] })
|
|
@@ -18701,7 +18705,7 @@ function ConnectorPanel({
|
|
|
18701
18705
|
function GroupInfoPanel({
|
|
18702
18706
|
selectedElement
|
|
18703
18707
|
}) {
|
|
18704
|
-
const { t } =
|
|
18708
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18705
18709
|
if (selectedElement.type !== "group") {
|
|
18706
18710
|
return null;
|
|
18707
18711
|
}
|
|
@@ -18716,7 +18720,7 @@ function OlePropertiesPanel({
|
|
|
18716
18720
|
canEdit,
|
|
18717
18721
|
onUpdateElement
|
|
18718
18722
|
}) {
|
|
18719
|
-
const { t } =
|
|
18723
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18720
18724
|
const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
|
|
18721
18725
|
if (selectedElement.type !== "ole") {
|
|
18722
18726
|
return null;
|
|
@@ -18761,7 +18765,7 @@ function OlePropertiesPanel({
|
|
|
18761
18765
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18762
18766
|
"span",
|
|
18763
18767
|
{
|
|
18764
|
-
className:
|
|
18768
|
+
className: chunkP2COO2QO_js.cn(
|
|
18765
18769
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18766
18770
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18767
18771
|
),
|
|
@@ -18814,7 +18818,7 @@ function LayerOrderButtons({
|
|
|
18814
18818
|
"button",
|
|
18815
18819
|
{
|
|
18816
18820
|
type: "button",
|
|
18817
|
-
className:
|
|
18821
|
+
className: chunkP2COO2QO_js.cn("flex-1", BTN2),
|
|
18818
18822
|
disabled: !canEdit,
|
|
18819
18823
|
onClick: () => onMoveLayer("forward"),
|
|
18820
18824
|
children: "\u2191 Forward"
|
|
@@ -18824,7 +18828,7 @@ function LayerOrderButtons({
|
|
|
18824
18828
|
"button",
|
|
18825
18829
|
{
|
|
18826
18830
|
type: "button",
|
|
18827
|
-
className:
|
|
18831
|
+
className: chunkP2COO2QO_js.cn("flex-1", BTN2),
|
|
18828
18832
|
disabled: !canEdit,
|
|
18829
18833
|
onClick: () => onMoveLayer("backward"),
|
|
18830
18834
|
children: "\u2193 Backward"
|
|
@@ -18838,7 +18842,7 @@ function ArtisticEffectsGallery({
|
|
|
18838
18842
|
canEdit,
|
|
18839
18843
|
updateEffects
|
|
18840
18844
|
}) {
|
|
18841
|
-
const { t } =
|
|
18845
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18842
18846
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18843
18847
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18844
18848
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18848,7 +18852,7 @@ function ArtisticEffectsGallery({
|
|
|
18848
18852
|
{
|
|
18849
18853
|
type: "button",
|
|
18850
18854
|
disabled: !canEdit,
|
|
18851
|
-
className:
|
|
18855
|
+
className: chunkP2COO2QO_js.cn(
|
|
18852
18856
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18853
18857
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18854
18858
|
),
|
|
@@ -18883,7 +18887,7 @@ function ColorChangeSection({
|
|
|
18883
18887
|
canEdit,
|
|
18884
18888
|
updateEffects
|
|
18885
18889
|
}) {
|
|
18886
|
-
const { t } =
|
|
18890
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18887
18891
|
const cc = fx?.clrChange;
|
|
18888
18892
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18889
18893
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18910,7 +18914,7 @@ function ColorChangeSection({
|
|
|
18910
18914
|
DebouncedColorInput,
|
|
18911
18915
|
{
|
|
18912
18916
|
disabled: !canEdit,
|
|
18913
|
-
value:
|
|
18917
|
+
value: chunkP2COO2QO_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18914
18918
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18915
18919
|
onCommit: (hex) => updateEffects({
|
|
18916
18920
|
clrChange: {
|
|
@@ -18928,7 +18932,7 @@ function ColorChangeSection({
|
|
|
18928
18932
|
DebouncedColorInput,
|
|
18929
18933
|
{
|
|
18930
18934
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18931
|
-
value:
|
|
18935
|
+
value: chunkP2COO2QO_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18932
18936
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18933
18937
|
onCommit: (hex) => updateEffects({
|
|
18934
18938
|
clrChange: {
|
|
@@ -18965,7 +18969,7 @@ function ColorWashSection({
|
|
|
18965
18969
|
canEdit,
|
|
18966
18970
|
updateEffects
|
|
18967
18971
|
}) {
|
|
18968
|
-
const { t } =
|
|
18972
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
18969
18973
|
const wash = fx?.colorWash;
|
|
18970
18974
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18971
18975
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18988,7 +18992,7 @@ function ColorWashSection({
|
|
|
18988
18992
|
DebouncedColorInput,
|
|
18989
18993
|
{
|
|
18990
18994
|
disabled: !canEdit,
|
|
18991
|
-
value:
|
|
18995
|
+
value: chunkP2COO2QO_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18992
18996
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18993
18997
|
onCommit: (hex) => updateEffects({
|
|
18994
18998
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19065,7 +19069,7 @@ function DuotonePanel({
|
|
|
19065
19069
|
canEdit,
|
|
19066
19070
|
onUpdateElement
|
|
19067
19071
|
}) {
|
|
19068
|
-
const { t } =
|
|
19072
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19069
19073
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
19070
19074
|
const commitDuotone = React108.useCallback(
|
|
19071
19075
|
(color1, color2) => {
|
|
@@ -19086,8 +19090,8 @@ function DuotonePanel({
|
|
|
19086
19090
|
}
|
|
19087
19091
|
});
|
|
19088
19092
|
}, [effects, onUpdateElement]);
|
|
19089
|
-
const shadowColor =
|
|
19090
|
-
const highlightColor =
|
|
19093
|
+
const shadowColor = chunkP2COO2QO_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19094
|
+
const highlightColor = chunkP2COO2QO_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19091
19095
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19092
19096
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19093
19097
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19118,7 +19122,7 @@ function DuotonePanel({
|
|
|
19118
19122
|
] }),
|
|
19119
19123
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19120
19124
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19121
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19125
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkNRTPKXZX_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19122
19126
|
"button",
|
|
19123
19127
|
{
|
|
19124
19128
|
type: "button",
|
|
@@ -19154,7 +19158,7 @@ function ImageAdjustmentsPanel({
|
|
|
19154
19158
|
canEdit,
|
|
19155
19159
|
onUpdateElement
|
|
19156
19160
|
}) {
|
|
19157
|
-
const { t } =
|
|
19161
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19158
19162
|
const effects = React108.useMemo(
|
|
19159
19163
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19160
19164
|
[selectedElement]
|
|
@@ -19255,7 +19259,7 @@ function ImageCropSection({
|
|
|
19255
19259
|
canEdit,
|
|
19256
19260
|
onUpdateElement
|
|
19257
19261
|
}) {
|
|
19258
|
-
const { t } =
|
|
19262
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19259
19263
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19260
19264
|
return null;
|
|
19261
19265
|
}
|
|
@@ -19273,7 +19277,7 @@ function ImageCropSection({
|
|
|
19273
19277
|
max: MAX_CROP_PERCENT,
|
|
19274
19278
|
disabled: !croppable,
|
|
19275
19279
|
className: "accent-primary",
|
|
19276
|
-
value: Math.round(
|
|
19280
|
+
value: Math.round(chunkP2COO2QO_js.clampCropValue(selectedElement[key]) * 100),
|
|
19277
19281
|
onChange: (e) => onUpdateElement({
|
|
19278
19282
|
[key]: Number(e.target.value) / 100
|
|
19279
19283
|
})
|
|
@@ -19320,7 +19324,7 @@ function ImagePropertiesPanel({
|
|
|
19320
19324
|
canEdit,
|
|
19321
19325
|
onUpdateElement
|
|
19322
19326
|
}) {
|
|
19323
|
-
const { t } =
|
|
19327
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19324
19328
|
const fx = selectedElement.imageEffects;
|
|
19325
19329
|
const updateEffects = (patch) => {
|
|
19326
19330
|
onUpdateElement({
|
|
@@ -19337,7 +19341,7 @@ function ImagePropertiesPanel({
|
|
|
19337
19341
|
{
|
|
19338
19342
|
rows: 2,
|
|
19339
19343
|
disabled: !canEdit,
|
|
19340
|
-
className:
|
|
19344
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19341
19345
|
value: selectedElement.altText ?? "",
|
|
19342
19346
|
onChange: (e) => onUpdateElement({
|
|
19343
19347
|
altText: e.target.value
|
|
@@ -19525,7 +19529,7 @@ function InspectorFields({
|
|
|
19525
19529
|
liveTarget,
|
|
19526
19530
|
livePatch
|
|
19527
19531
|
}) {
|
|
19528
|
-
const { t } =
|
|
19532
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19529
19533
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19530
19534
|
const change = (sectionId, fieldId, raw) => {
|
|
19531
19535
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19753,7 +19757,7 @@ function MediaInspector({
|
|
|
19753
19757
|
durationSeconds,
|
|
19754
19758
|
onUpdateElement
|
|
19755
19759
|
}) {
|
|
19756
|
-
const { t } =
|
|
19760
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19757
19761
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19758
19762
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19759
19763
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19983,7 +19987,7 @@ function MediaPlaybackBookmarks({
|
|
|
19983
19987
|
onUpdateElement,
|
|
19984
19988
|
onSeekTo
|
|
19985
19989
|
}) {
|
|
19986
|
-
const { t } =
|
|
19990
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
19987
19991
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
19988
19992
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19989
19993
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20233,7 +20237,7 @@ function MediaPropertiesPanel({
|
|
|
20233
20237
|
canEdit,
|
|
20234
20238
|
onUpdateElement
|
|
20235
20239
|
}) {
|
|
20236
|
-
const { t } =
|
|
20240
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20237
20241
|
const mediaRef = React108.useRef(null);
|
|
20238
20242
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20239
20243
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20467,7 +20471,7 @@ function AccessibilityTextSection({
|
|
|
20467
20471
|
canEdit,
|
|
20468
20472
|
onUpdateElement
|
|
20469
20473
|
}) {
|
|
20470
|
-
const { t } =
|
|
20474
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20471
20475
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20472
20476
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20473
20477
|
return null;
|
|
@@ -20482,7 +20486,7 @@ function AccessibilityTextSection({
|
|
|
20482
20486
|
rows: 2,
|
|
20483
20487
|
disabled: !canEdit,
|
|
20484
20488
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20485
|
-
className:
|
|
20489
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20486
20490
|
value: fields.altText,
|
|
20487
20491
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20488
20492
|
}
|
|
@@ -20496,7 +20500,7 @@ function AccessibilityTextSection({
|
|
|
20496
20500
|
type: "text",
|
|
20497
20501
|
disabled: !canEdit,
|
|
20498
20502
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20499
|
-
className:
|
|
20503
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "text-[11px]"),
|
|
20500
20504
|
value: fields.title,
|
|
20501
20505
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20502
20506
|
}
|
|
@@ -20524,7 +20528,7 @@ function RecentColorsRow({
|
|
|
20524
20528
|
disabled,
|
|
20525
20529
|
onCommit
|
|
20526
20530
|
}) {
|
|
20527
|
-
const { t } =
|
|
20531
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20528
20532
|
const { recentColors, pushColor } = useRecentColors();
|
|
20529
20533
|
const shown = recentColors.length > 0;
|
|
20530
20534
|
const ref = React108.useRef(null);
|
|
@@ -20566,7 +20570,7 @@ function ThemeColorSwatchGrid({
|
|
|
20566
20570
|
selectedHex,
|
|
20567
20571
|
onPick
|
|
20568
20572
|
}) {
|
|
20569
|
-
const { t } =
|
|
20573
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20570
20574
|
const themeColorMap = useThemeColorMap();
|
|
20571
20575
|
const columns = React108.useMemo(
|
|
20572
20576
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20613,7 +20617,7 @@ function SelectRow({
|
|
|
20613
20617
|
options,
|
|
20614
20618
|
onChange
|
|
20615
20619
|
}) {
|
|
20616
|
-
const { t } =
|
|
20620
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20617
20621
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20618
20622
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20619
20623
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20637,14 +20641,14 @@ function ColorPickerRow({
|
|
|
20637
20641
|
onChange,
|
|
20638
20642
|
styleChange
|
|
20639
20643
|
}) {
|
|
20640
|
-
const { t } =
|
|
20644
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20641
20645
|
const { pushColor } = useRecentColors();
|
|
20642
20646
|
const commit = (color, ref) => {
|
|
20643
20647
|
onChange(color, ref);
|
|
20644
20648
|
pushColor(color);
|
|
20645
20649
|
};
|
|
20646
20650
|
const handleEyedropper = async () => {
|
|
20647
|
-
const color = await
|
|
20651
|
+
const color = await chunkP2COO2QO_js.openNativeEyeDropper();
|
|
20648
20652
|
if (color) {
|
|
20649
20653
|
commit(color);
|
|
20650
20654
|
}
|
|
@@ -20717,7 +20721,7 @@ function GradientStopRow({
|
|
|
20717
20721
|
onUpdate,
|
|
20718
20722
|
allStops
|
|
20719
20723
|
}) {
|
|
20720
|
-
const { t } =
|
|
20724
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20721
20725
|
const { pushColor } = useRecentColors();
|
|
20722
20726
|
const commitRecentColor = useRecentColorCommit();
|
|
20723
20727
|
const patchStop = (patch) => {
|
|
@@ -20730,9 +20734,9 @@ function GradientStopRow({
|
|
|
20730
20734
|
"input",
|
|
20731
20735
|
{
|
|
20732
20736
|
type: "color",
|
|
20733
|
-
value:
|
|
20737
|
+
value: chunkP2COO2QO_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20734
20738
|
ref: commitRecentColor,
|
|
20735
|
-
onChange: (e) => patchStop({ color:
|
|
20739
|
+
onChange: (e) => patchStop({ color: chunkP2COO2QO_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20736
20740
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20737
20741
|
}
|
|
20738
20742
|
),
|
|
@@ -20807,7 +20811,7 @@ function FillAdvancedControls({
|
|
|
20807
20811
|
onUpdateGradientStops,
|
|
20808
20812
|
onSetFillColor: _onSetFillColor
|
|
20809
20813
|
}) {
|
|
20810
|
-
const { t } =
|
|
20814
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20811
20815
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20812
20816
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20813
20817
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20861,7 +20865,7 @@ function FillAdvancedControls({
|
|
|
20861
20865
|
onClick: () => onUpdateGradientStops([
|
|
20862
20866
|
...gradientStops,
|
|
20863
20867
|
{
|
|
20864
|
-
color:
|
|
20868
|
+
color: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
|
|
20865
20869
|
position: 50,
|
|
20866
20870
|
opacity: 1
|
|
20867
20871
|
}
|
|
@@ -20875,9 +20879,9 @@ function FillAdvancedControls({
|
|
|
20875
20879
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20876
20880
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20877
20881
|
/* @__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) => {
|
|
20878
|
-
const fgColor =
|
|
20879
|
-
const bgColor =
|
|
20880
|
-
const svgPattern =
|
|
20882
|
+
const fgColor = chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR);
|
|
20883
|
+
const bgColor = chunkP2COO2QO_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20884
|
+
const svgPattern = chunkP2COO2QO_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20881
20885
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20882
20886
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20883
20887
|
"button",
|
|
@@ -20910,7 +20914,7 @@ function FillAdvancedControls({
|
|
|
20910
20914
|
{
|
|
20911
20915
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20912
20916
|
prefix: "pattern-fg",
|
|
20913
|
-
value:
|
|
20917
|
+
value: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
|
|
20914
20918
|
disabled: isLine,
|
|
20915
20919
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
20916
20920
|
styleChange: patternForeground
|
|
@@ -20921,7 +20925,7 @@ function FillAdvancedControls({
|
|
|
20921
20925
|
{
|
|
20922
20926
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20923
20927
|
prefix: "pattern-bg",
|
|
20924
|
-
value:
|
|
20928
|
+
value: chunkP2COO2QO_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20925
20929
|
disabled: isLine,
|
|
20926
20930
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
20927
20931
|
styleChange: patternBackground
|
|
@@ -20986,7 +20990,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20986
20990
|
function QuickStylesGallery({
|
|
20987
20991
|
onUpdateShapeStyle
|
|
20988
20992
|
}) {
|
|
20989
|
-
const { t } =
|
|
20993
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
20990
20994
|
const ref = React108.useRef(null);
|
|
20991
20995
|
React108.useLayoutEffect(() => {
|
|
20992
20996
|
const gallery = ref.current;
|
|
@@ -21023,14 +21027,14 @@ function StrokeEffectsSection({
|
|
|
21023
21027
|
onUpdateShapeStyle,
|
|
21024
21028
|
onSetStrokeColor
|
|
21025
21029
|
}) {
|
|
21026
|
-
const { t } =
|
|
21030
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21027
21031
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21028
21032
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21029
21033
|
ColorPickerRow,
|
|
21030
21034
|
{
|
|
21031
21035
|
label: t("pptx.inspector.stroke"),
|
|
21032
21036
|
prefix: "stroke",
|
|
21033
|
-
value:
|
|
21037
|
+
value: chunkP2COO2QO_js.normalizeHexColor(style?.strokeColor, chunkP2COO2QO_js.DEFAULT_STROKE_COLOR),
|
|
21034
21038
|
selectedRef: style?.strokeColorRef,
|
|
21035
21039
|
onChange: onSetStrokeColor,
|
|
21036
21040
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -21073,7 +21077,7 @@ function FillStrokeProperties({
|
|
|
21073
21077
|
onSetFillColor,
|
|
21074
21078
|
onSetStrokeColor
|
|
21075
21079
|
}) {
|
|
21076
|
-
const { t } =
|
|
21080
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21077
21081
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
21078
21082
|
const style = selectedShapeStyle;
|
|
21079
21083
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21089,10 +21093,10 @@ function FillStrokeProperties({
|
|
|
21089
21093
|
return;
|
|
21090
21094
|
}
|
|
21091
21095
|
if (nextMode === "gradient") {
|
|
21092
|
-
const existing =
|
|
21096
|
+
const existing = chunkP2COO2QO_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21093
21097
|
const stops = existing.length >= 2 ? existing : [
|
|
21094
21098
|
{
|
|
21095
|
-
color:
|
|
21099
|
+
color: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
|
|
21096
21100
|
position: 0,
|
|
21097
21101
|
opacity: 1
|
|
21098
21102
|
},
|
|
@@ -21117,7 +21121,7 @@ function FillStrokeProperties({
|
|
|
21117
21121
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21118
21122
|
};
|
|
21119
21123
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21120
|
-
{ color:
|
|
21124
|
+
{ color: chunkP2COO2QO_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21121
21125
|
{ color: "#ffffff", position: 100 }
|
|
21122
21126
|
];
|
|
21123
21127
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21144,7 +21148,7 @@ function FillStrokeProperties({
|
|
|
21144
21148
|
{
|
|
21145
21149
|
label: t("pptx.fill.fill"),
|
|
21146
21150
|
prefix: "fill",
|
|
21147
|
-
value:
|
|
21151
|
+
value: chunkP2COO2QO_js.normalizeHexColor(style?.fillColor, chunkP2COO2QO_js.DEFAULT_FILL_COLOR),
|
|
21148
21152
|
selectedRef: style?.fillColorRef,
|
|
21149
21153
|
disabled: line,
|
|
21150
21154
|
onChange: onSetFillColor,
|
|
@@ -21182,7 +21186,7 @@ function Text3DProperties({
|
|
|
21182
21186
|
ts,
|
|
21183
21187
|
onUpdateTextStyle
|
|
21184
21188
|
}) {
|
|
21185
|
-
const { t } =
|
|
21189
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21186
21190
|
const commitRecentColor = useRecentColorCommit();
|
|
21187
21191
|
const t3d = ts?.text3d;
|
|
21188
21192
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21229,7 +21233,7 @@ function Text3DProperties({
|
|
|
21229
21233
|
"input",
|
|
21230
21234
|
{
|
|
21231
21235
|
type: "color",
|
|
21232
|
-
value:
|
|
21236
|
+
value: chunkP2COO2QO_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21233
21237
|
ref: commitRecentColor,
|
|
21234
21238
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21235
21239
|
className: COLOR_CLS
|
|
@@ -21396,7 +21400,7 @@ function AdvancedTextFormatting({
|
|
|
21396
21400
|
onUpdateTextStyle,
|
|
21397
21401
|
numChange
|
|
21398
21402
|
}) {
|
|
21399
|
-
const { t } =
|
|
21403
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21400
21404
|
const commitRecentColor = useRecentColorCommit();
|
|
21401
21405
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21402
21406
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21418,7 +21422,7 @@ function AdvancedTextFormatting({
|
|
|
21418
21422
|
"input",
|
|
21419
21423
|
{
|
|
21420
21424
|
type: "color",
|
|
21421
|
-
value:
|
|
21425
|
+
value: chunkP2COO2QO_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21422
21426
|
ref: commitRecentColor,
|
|
21423
21427
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21424
21428
|
disabled: !canEdit,
|
|
@@ -21560,7 +21564,7 @@ function TextReflectionSection({
|
|
|
21560
21564
|
onUpdateTextStyle,
|
|
21561
21565
|
numChange
|
|
21562
21566
|
}) {
|
|
21563
|
-
const { t } =
|
|
21567
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21564
21568
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21565
21569
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21566
21570
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21668,7 +21672,7 @@ function TextEffectsPanel({
|
|
|
21668
21672
|
onUpdateTextStyle,
|
|
21669
21673
|
numChange
|
|
21670
21674
|
}) {
|
|
21671
|
-
const { t } =
|
|
21675
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21672
21676
|
const commitRecentColor = useRecentColorCommit();
|
|
21673
21677
|
const hasShadow = Boolean(
|
|
21674
21678
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21714,7 +21718,7 @@ function TextEffectsPanel({
|
|
|
21714
21718
|
"input",
|
|
21715
21719
|
{
|
|
21716
21720
|
type: "color",
|
|
21717
|
-
value:
|
|
21721
|
+
value: chunkP2COO2QO_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21718
21722
|
ref: commitRecentColor,
|
|
21719
21723
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21720
21724
|
className: COLOR_CLS2
|
|
@@ -21819,7 +21823,7 @@ function TextEffectsPanel({
|
|
|
21819
21823
|
"input",
|
|
21820
21824
|
{
|
|
21821
21825
|
type: "color",
|
|
21822
|
-
value:
|
|
21826
|
+
value: chunkP2COO2QO_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21823
21827
|
ref: commitRecentColor,
|
|
21824
21828
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21825
21829
|
className: COLOR_CLS2
|
|
@@ -21869,7 +21873,7 @@ function TextWarpGallery({
|
|
|
21869
21873
|
ts,
|
|
21870
21874
|
onUpdateTextStyle
|
|
21871
21875
|
}) {
|
|
21872
|
-
const { t } =
|
|
21876
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21873
21877
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
21874
21878
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21875
21879
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21950,7 +21954,7 @@ function ShapeTextPanels({
|
|
|
21950
21954
|
onUpdateElementStyle,
|
|
21951
21955
|
onUpdateTextStyle
|
|
21952
21956
|
}) {
|
|
21953
|
-
const { t } =
|
|
21957
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
21954
21958
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21955
21959
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21956
21960
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21959,11 +21963,11 @@ function ShapeTextPanels({
|
|
|
21959
21963
|
{
|
|
21960
21964
|
value: selectedElement.shapeType || "rect",
|
|
21961
21965
|
disabled: !canEdit,
|
|
21962
|
-
className:
|
|
21966
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
|
|
21963
21967
|
onChange: (e) => onUpdateElement({
|
|
21964
21968
|
shapeType: e.target.value
|
|
21965
21969
|
}),
|
|
21966
|
-
children:
|
|
21970
|
+
children: chunkP2COO2QO_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21967
21971
|
}
|
|
21968
21972
|
)
|
|
21969
21973
|
] }),
|
|
@@ -21975,7 +21979,7 @@ function ShapeTextPanels({
|
|
|
21975
21979
|
selectedElement,
|
|
21976
21980
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21977
21981
|
selectedShapeType: selectedElement.shapeType,
|
|
21978
|
-
selectedGradientStops:
|
|
21982
|
+
selectedGradientStops: chunkP2COO2QO_js.sanitizeGradientStops(
|
|
21979
21983
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21980
21984
|
),
|
|
21981
21985
|
canEdit,
|
|
@@ -22011,7 +22015,7 @@ function ShapeTextPanels({
|
|
|
22011
22015
|
{
|
|
22012
22016
|
disabled: !canEdit,
|
|
22013
22017
|
"aria-label": "Text Color",
|
|
22014
|
-
value:
|
|
22018
|
+
value: chunkP2COO2QO_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22015
22019
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22016
22020
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
22017
22021
|
patch: textColorPatch
|
|
@@ -22102,7 +22106,7 @@ function TextFormatToggle({
|
|
|
22102
22106
|
{
|
|
22103
22107
|
type: "button",
|
|
22104
22108
|
disabled,
|
|
22105
|
-
className:
|
|
22109
|
+
className: chunkP2COO2QO_js.cn(
|
|
22106
22110
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22107
22111
|
italic && "italic",
|
|
22108
22112
|
underline && "underline",
|
|
@@ -22271,7 +22275,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22271
22275
|
canEdit,
|
|
22272
22276
|
onUpdateSmartArt
|
|
22273
22277
|
}) {
|
|
22274
|
-
const { t } =
|
|
22278
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22275
22279
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22276
22280
|
const handleLayoutSwitch = (newLayout) => {
|
|
22277
22281
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22290,7 +22294,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22290
22294
|
type: "button",
|
|
22291
22295
|
"data-testid": `smartart-layout-${type}`,
|
|
22292
22296
|
disabled: !canEdit,
|
|
22293
|
-
className:
|
|
22297
|
+
className: chunkP2COO2QO_js.cn(
|
|
22294
22298
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22295
22299
|
"text-[9px] leading-tight",
|
|
22296
22300
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22317,7 +22321,7 @@ function SmartArtStyleControls({
|
|
|
22317
22321
|
onChangeColorScheme,
|
|
22318
22322
|
onChangeStyle
|
|
22319
22323
|
}) {
|
|
22320
|
-
const { t } =
|
|
22324
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22321
22325
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22322
22326
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22323
22327
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22328,7 +22332,7 @@ function SmartArtStyleControls({
|
|
|
22328
22332
|
disabled: !canEdit,
|
|
22329
22333
|
"data-testid": "smartart-color-scheme",
|
|
22330
22334
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22331
|
-
className:
|
|
22335
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-full"),
|
|
22332
22336
|
value: colorScheme,
|
|
22333
22337
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22334
22338
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22343,7 +22347,7 @@ function SmartArtStyleControls({
|
|
|
22343
22347
|
type: "button",
|
|
22344
22348
|
disabled: !canEdit,
|
|
22345
22349
|
"aria-pressed": style === s,
|
|
22346
|
-
className:
|
|
22350
|
+
className: chunkP2COO2QO_js.cn(
|
|
22347
22351
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22348
22352
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22349
22353
|
),
|
|
@@ -22369,14 +22373,14 @@ function SmartArtPropertiesPanel({
|
|
|
22369
22373
|
onUpdateElement,
|
|
22370
22374
|
box
|
|
22371
22375
|
}) {
|
|
22372
|
-
const { t } =
|
|
22376
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22373
22377
|
const { pushColor } = useRecentColors();
|
|
22374
22378
|
const paneRef = React108__default.default.useRef(null);
|
|
22375
22379
|
const applySmartArtData = (newData) => {
|
|
22376
22380
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22377
22381
|
newData,
|
|
22378
22382
|
newData.layout,
|
|
22379
|
-
|
|
22383
|
+
chunkNRTPKXZX_js.resolveSmartArtDataPalette(newData),
|
|
22380
22384
|
newData.style ?? "flat",
|
|
22381
22385
|
"inspector",
|
|
22382
22386
|
box
|
|
@@ -22447,9 +22451,9 @@ function TableDataGrid({
|
|
|
22447
22451
|
canEdit,
|
|
22448
22452
|
onUpdateElement
|
|
22449
22453
|
}) {
|
|
22450
|
-
const { t } =
|
|
22454
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22451
22455
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22452
|
-
const { viewportWidth } =
|
|
22456
|
+
const { viewportWidth } = chunkNRTPKXZX_js.useIsMobile();
|
|
22453
22457
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22454
22458
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22455
22459
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22613,7 +22617,7 @@ function TableCellPatternFill({
|
|
|
22613
22617
|
canEdit,
|
|
22614
22618
|
onUpdateCellStyle
|
|
22615
22619
|
}) {
|
|
22616
|
-
const { t } =
|
|
22620
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22617
22621
|
const commitRecentColor = useRecentColorCommit();
|
|
22618
22622
|
const translate = (key) => t(key);
|
|
22619
22623
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22668,7 +22672,7 @@ function TableCellAdvancedFill({
|
|
|
22668
22672
|
canEdit,
|
|
22669
22673
|
onUpdateCellStyle
|
|
22670
22674
|
}) {
|
|
22671
|
-
const { t } =
|
|
22675
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22672
22676
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22673
22677
|
const handleFillModeChange = (mode) => {
|
|
22674
22678
|
const next = mode;
|
|
@@ -22756,7 +22760,7 @@ function GradientControls({
|
|
|
22756
22760
|
canEdit,
|
|
22757
22761
|
onUpdateCellStyle
|
|
22758
22762
|
}) {
|
|
22759
|
-
const { t } =
|
|
22763
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22760
22764
|
const commitRecentColor = useRecentColorCommit();
|
|
22761
22765
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22762
22766
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22854,7 +22858,7 @@ function TableCellColorField({
|
|
|
22854
22858
|
disabled,
|
|
22855
22859
|
onCommit
|
|
22856
22860
|
}) {
|
|
22857
|
-
const hex =
|
|
22861
|
+
const hex = chunkP2COO2QO_js.normalizeHexColor(value, fallback);
|
|
22858
22862
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22859
22863
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22860
22864
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22884,7 +22888,7 @@ function TableCellFormattingPanel({
|
|
|
22884
22888
|
onUpdateTableData,
|
|
22885
22889
|
onUpdateMergeRows
|
|
22886
22890
|
}) {
|
|
22887
|
-
const { t } =
|
|
22891
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
22888
22892
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22889
22893
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22890
22894
|
if (!cell) {
|
|
@@ -22962,7 +22966,7 @@ function TableCellFormattingPanel({
|
|
|
22962
22966
|
{
|
|
22963
22967
|
type: "button",
|
|
22964
22968
|
disabled: !canEdit,
|
|
22965
|
-
className:
|
|
22969
|
+
className: chunkP2COO2QO_js.cn(
|
|
22966
22970
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22967
22971
|
cls,
|
|
22968
22972
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22981,7 +22985,7 @@ function TableCellFormattingPanel({
|
|
|
22981
22985
|
{
|
|
22982
22986
|
type: "button",
|
|
22983
22987
|
disabled: !canEdit,
|
|
22984
|
-
className:
|
|
22988
|
+
className: chunkP2COO2QO_js.cn(
|
|
22985
22989
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22986
22990
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22987
22991
|
),
|
|
@@ -22999,7 +23003,7 @@ function TableCellFormattingPanel({
|
|
|
22999
23003
|
{
|
|
23000
23004
|
type: "button",
|
|
23001
23005
|
disabled: !canEdit,
|
|
23002
|
-
className:
|
|
23006
|
+
className: chunkP2COO2QO_js.cn(
|
|
23003
23007
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23004
23008
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23005
23009
|
),
|
|
@@ -23022,7 +23026,7 @@ function TableCellFormattingPanel({
|
|
|
23022
23026
|
DebouncedColorInput,
|
|
23023
23027
|
{
|
|
23024
23028
|
disabled: !canEdit,
|
|
23025
|
-
value:
|
|
23029
|
+
value: chunkP2COO2QO_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23026
23030
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23027
23031
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23028
23032
|
}
|
|
@@ -23032,7 +23036,7 @@ function TableCellFormattingPanel({
|
|
|
23032
23036
|
{
|
|
23033
23037
|
type: "number",
|
|
23034
23038
|
disabled: !canEdit,
|
|
23035
|
-
className:
|
|
23039
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-14"),
|
|
23036
23040
|
min: 0,
|
|
23037
23041
|
max: 10,
|
|
23038
23042
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -23048,7 +23052,7 @@ function TableCellFormattingPanel({
|
|
|
23048
23052
|
{
|
|
23049
23053
|
type: "button",
|
|
23050
23054
|
disabled: !canEdit,
|
|
23051
|
-
className:
|
|
23055
|
+
className: chunkP2COO2QO_js.cn(BTN2, "text-center"),
|
|
23052
23056
|
onClick: () => {
|
|
23053
23057
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23054
23058
|
if (newRows) {
|
|
@@ -23063,7 +23067,7 @@ function TableCellFormattingPanel({
|
|
|
23063
23067
|
{
|
|
23064
23068
|
type: "button",
|
|
23065
23069
|
disabled: !canEdit,
|
|
23066
|
-
className:
|
|
23070
|
+
className: chunkP2COO2QO_js.cn(BTN2, "text-center"),
|
|
23067
23071
|
onClick: () => {
|
|
23068
23072
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23069
23073
|
if (newRows) {
|
|
@@ -23078,7 +23082,7 @@ function TableCellFormattingPanel({
|
|
|
23078
23082
|
{
|
|
23079
23083
|
type: "button",
|
|
23080
23084
|
disabled: !canEdit,
|
|
23081
|
-
className:
|
|
23085
|
+
className: chunkP2COO2QO_js.cn(BTN2, "text-center"),
|
|
23082
23086
|
onClick: () => {
|
|
23083
23087
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23084
23088
|
if (newRows) {
|
|
@@ -23097,7 +23101,7 @@ function TableStyleEditorFields({
|
|
|
23097
23101
|
canEdit,
|
|
23098
23102
|
onEdit
|
|
23099
23103
|
}) {
|
|
23100
|
-
const { t } =
|
|
23104
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23101
23105
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23102
23106
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23103
23107
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23202,7 +23206,7 @@ function BorderSideRow({
|
|
|
23202
23206
|
canEdit,
|
|
23203
23207
|
onEdit
|
|
23204
23208
|
}) {
|
|
23205
|
-
const { t } =
|
|
23209
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23206
23210
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23207
23211
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23208
23212
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23259,7 +23263,7 @@ function TableStyleEditor({
|
|
|
23259
23263
|
onAssignStyle,
|
|
23260
23264
|
onClose
|
|
23261
23265
|
}) {
|
|
23262
|
-
const { t } =
|
|
23266
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23263
23267
|
const themeColorMap = useThemeColorMap();
|
|
23264
23268
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23265
23269
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23351,7 +23355,7 @@ function TablePropertiesPanel({
|
|
|
23351
23355
|
onTableStyleMapChange,
|
|
23352
23356
|
onDeleteTableStyle
|
|
23353
23357
|
}) {
|
|
23354
|
-
const { t } =
|
|
23358
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23355
23359
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23356
23360
|
const td = tableElement.tableData;
|
|
23357
23361
|
if (!td) {
|
|
@@ -23433,7 +23437,7 @@ function TablePropertiesPanel({
|
|
|
23433
23437
|
] }),
|
|
23434
23438
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23435
23439
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23436
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23440
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkP2COO2QO_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23437
23441
|
"button",
|
|
23438
23442
|
{
|
|
23439
23443
|
type: "button",
|
|
@@ -23581,7 +23585,7 @@ function ElementInspectorBody({
|
|
|
23581
23585
|
onUpdateTextStyle,
|
|
23582
23586
|
onMoveLayer
|
|
23583
23587
|
}) {
|
|
23584
|
-
const { t } =
|
|
23588
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23585
23589
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23586
23590
|
const handleToggleLock = () => {
|
|
23587
23591
|
if (!canEdit) {
|
|
@@ -23731,7 +23735,7 @@ function CommentMentionTextarea({
|
|
|
23731
23735
|
className,
|
|
23732
23736
|
ariaLabel
|
|
23733
23737
|
}) {
|
|
23734
|
-
const { t } =
|
|
23738
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23735
23739
|
const textareaRef = React108.useRef(null);
|
|
23736
23740
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23737
23741
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23820,7 +23824,7 @@ function CommentMentionTextarea({
|
|
|
23820
23824
|
"data-testid": "pptx-comment-mention-option",
|
|
23821
23825
|
role: "option",
|
|
23822
23826
|
"aria-selected": index === safeHighlighted,
|
|
23823
|
-
className:
|
|
23827
|
+
className: chunkP2COO2QO_js.cn(
|
|
23824
23828
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23825
23829
|
index === safeHighlighted && "bg-accent"
|
|
23826
23830
|
),
|
|
@@ -23867,7 +23871,7 @@ function InspectorCommentReplyForm({
|
|
|
23867
23871
|
onSubmit,
|
|
23868
23872
|
onCancel
|
|
23869
23873
|
}) {
|
|
23870
|
-
const { t } =
|
|
23874
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23871
23875
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23872
23876
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23873
23877
|
CommentMentionTextarea,
|
|
@@ -23933,7 +23937,7 @@ function InspectorCommentRow({
|
|
|
23933
23937
|
onSelectElement,
|
|
23934
23938
|
depth = 0
|
|
23935
23939
|
}) {
|
|
23936
|
-
const { t } =
|
|
23940
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
23937
23941
|
const isEditing = editingCommentId === comment.id;
|
|
23938
23942
|
const isReplying = replyingToCommentId === comment.id;
|
|
23939
23943
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23943,7 +23947,7 @@ function InspectorCommentRow({
|
|
|
23943
23947
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23944
23948
|
"div",
|
|
23945
23949
|
{
|
|
23946
|
-
className:
|
|
23950
|
+
className: chunkP2COO2QO_js.cn(
|
|
23947
23951
|
"rounded border border-border bg-card p-2",
|
|
23948
23952
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23949
23953
|
),
|
|
@@ -23957,7 +23961,7 @@ function InspectorCommentRow({
|
|
|
23957
23961
|
t("pptx.comments.resolved")
|
|
23958
23962
|
] })
|
|
23959
23963
|
] }),
|
|
23960
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23964
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkP2COO2QO_js.formatCommentTimestamp(comment.createdAt) })
|
|
23961
23965
|
] }),
|
|
23962
23966
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23963
23967
|
"button",
|
|
@@ -23965,12 +23969,12 @@ function InspectorCommentRow({
|
|
|
23965
23969
|
type: "button",
|
|
23966
23970
|
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",
|
|
23967
23971
|
title: t("pptx.comments.commentingOn", {
|
|
23968
|
-
element:
|
|
23972
|
+
element: chunkP2COO2QO_js.getElementLabel(targetElement)
|
|
23969
23973
|
}),
|
|
23970
23974
|
onClick: () => onSelectElement(targetElement.id),
|
|
23971
23975
|
children: [
|
|
23972
23976
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23973
|
-
|
|
23977
|
+
chunkP2COO2QO_js.getElementLabel(targetElement)
|
|
23974
23978
|
]
|
|
23975
23979
|
}
|
|
23976
23980
|
) : /* @__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") })),
|
|
@@ -24039,7 +24043,7 @@ function InspectorCommentRow({
|
|
|
24039
24043
|
"button",
|
|
24040
24044
|
{
|
|
24041
24045
|
type: "button",
|
|
24042
|
-
className:
|
|
24046
|
+
className: chunkP2COO2QO_js.cn(
|
|
24043
24047
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24044
24048
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24045
24049
|
),
|
|
@@ -24145,7 +24149,7 @@ function InspectorCommentsSection({
|
|
|
24145
24149
|
onSubmitReply,
|
|
24146
24150
|
onSelectElement
|
|
24147
24151
|
}) {
|
|
24148
|
-
const { t } =
|
|
24152
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24149
24153
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24150
24154
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24151
24155
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24182,7 +24186,7 @@ function InspectorCommentsSection({
|
|
|
24182
24186
|
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: [
|
|
24183
24187
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24184
24188
|
t("pptx.comments.commentingOn", {
|
|
24185
|
-
element:
|
|
24189
|
+
element: chunkP2COO2QO_js.getElementLabel(selectedElement)
|
|
24186
24190
|
})
|
|
24187
24191
|
] }),
|
|
24188
24192
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24193,7 +24197,7 @@ function InspectorCommentsSection({
|
|
|
24193
24197
|
authors: commentAuthors,
|
|
24194
24198
|
rows: 2,
|
|
24195
24199
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24196
|
-
element:
|
|
24200
|
+
element: chunkP2COO2QO_js.getElementLabel(selectedElement)
|
|
24197
24201
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24198
24202
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24199
24203
|
onChange: onSetCommentDraft,
|
|
@@ -24206,7 +24210,7 @@ function InspectorCommentsSection({
|
|
|
24206
24210
|
type: "button",
|
|
24207
24211
|
onClick: onAddComment,
|
|
24208
24212
|
disabled: !commentDraft.trim(),
|
|
24209
|
-
className:
|
|
24213
|
+
className: chunkP2COO2QO_js.cn(
|
|
24210
24214
|
"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]!",
|
|
24211
24215
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24212
24216
|
),
|
|
@@ -24231,7 +24235,7 @@ function InspectorElementsTab({
|
|
|
24231
24235
|
onSelectElement,
|
|
24232
24236
|
onUpdateSlide
|
|
24233
24237
|
}) {
|
|
24234
|
-
const { t } =
|
|
24238
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24235
24239
|
const toggleHidden = (elementId2) => {
|
|
24236
24240
|
const elements2 = activeSlide?.elements;
|
|
24237
24241
|
if (!canEdit || !elements2) {
|
|
@@ -24247,13 +24251,13 @@ function InspectorElementsTab({
|
|
|
24247
24251
|
};
|
|
24248
24252
|
if (!activeSlide) {
|
|
24249
24253
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24250
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24254
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkP2COO2QO_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24251
24255
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24252
24256
|
] });
|
|
24253
24257
|
}
|
|
24254
24258
|
const elements = activeSlide.elements || [];
|
|
24255
24259
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24256
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24260
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkP2COO2QO_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24257
24261
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24258
24262
|
const index = elements.length - 1 - reversedIndex;
|
|
24259
24263
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24261,7 +24265,7 @@ function InspectorElementsTab({
|
|
|
24261
24265
|
"div",
|
|
24262
24266
|
{
|
|
24263
24267
|
title: `${el.type} - ${el.id}`,
|
|
24264
|
-
className:
|
|
24268
|
+
className: chunkP2COO2QO_js.cn(
|
|
24265
24269
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24266
24270
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24267
24271
|
),
|
|
@@ -24297,8 +24301,8 @@ function InspectorPaneHeader({
|
|
|
24297
24301
|
onSetActiveTab,
|
|
24298
24302
|
onClose
|
|
24299
24303
|
}) {
|
|
24300
|
-
const { t } =
|
|
24301
|
-
const { viewportWidth } =
|
|
24304
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24305
|
+
const { viewportWidth } = chunkNRTPKXZX_js.useIsMobile();
|
|
24302
24306
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24303
24307
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24304
24308
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24321,7 +24325,7 @@ function InspectorPaneHeader({
|
|
|
24321
24325
|
type: "button",
|
|
24322
24326
|
title: t(labelKey),
|
|
24323
24327
|
style: touchBtnStyle,
|
|
24324
|
-
className:
|
|
24328
|
+
className: chunkP2COO2QO_js.cn(
|
|
24325
24329
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24326
24330
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24327
24331
|
),
|
|
@@ -24381,7 +24385,7 @@ function CustomPropertiesBlock({
|
|
|
24381
24385
|
canEdit,
|
|
24382
24386
|
onUpdate
|
|
24383
24387
|
}) {
|
|
24384
|
-
const { t } =
|
|
24388
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24385
24389
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24386
24390
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24387
24391
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24435,7 +24439,7 @@ function CustomPropertiesBlock({
|
|
|
24435
24439
|
"button",
|
|
24436
24440
|
{
|
|
24437
24441
|
type: "button",
|
|
24438
|
-
className:
|
|
24442
|
+
className: chunkP2COO2QO_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24439
24443
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24440
24444
|
children: "\xD7"
|
|
24441
24445
|
}
|
|
@@ -24448,7 +24452,7 @@ function NotesHandoutCard({
|
|
|
24448
24452
|
notesMaster,
|
|
24449
24453
|
handoutMaster
|
|
24450
24454
|
}) {
|
|
24451
|
-
const { t } =
|
|
24455
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24452
24456
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24453
24457
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24454
24458
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24485,7 +24489,7 @@ function DocumentPropertiesCard({
|
|
|
24485
24489
|
onUpdateAppProperties,
|
|
24486
24490
|
onUpdateCustomProperties
|
|
24487
24491
|
}) {
|
|
24488
|
-
const { t } =
|
|
24492
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24489
24493
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24490
24494
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24491
24495
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24539,7 +24543,7 @@ function DocumentPropertiesCard({
|
|
|
24539
24543
|
function SlideSizeRescalePrompt({
|
|
24540
24544
|
onChoose
|
|
24541
24545
|
}) {
|
|
24542
|
-
const { t } =
|
|
24546
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24543
24547
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24544
24548
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24545
24549
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24581,7 +24585,7 @@ function SlideSizeCard({
|
|
|
24581
24585
|
onUpdateSlideSize,
|
|
24582
24586
|
hasContent
|
|
24583
24587
|
}) {
|
|
24584
|
-
const { t } =
|
|
24588
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24585
24589
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24586
24590
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24587
24591
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24692,7 +24696,7 @@ function PresentationSettingsCard({
|
|
|
24692
24696
|
canEdit,
|
|
24693
24697
|
onUpdate
|
|
24694
24698
|
}) {
|
|
24695
|
-
const { t } =
|
|
24699
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24696
24700
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24697
24701
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24698
24702
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24763,7 +24767,7 @@ function PresentationSettingsCard({
|
|
|
24763
24767
|
min: 1,
|
|
24764
24768
|
max: 16,
|
|
24765
24769
|
disabled: !canEdit,
|
|
24766
|
-
className:
|
|
24770
|
+
className: chunkP2COO2QO_js.cn(INPUT2, "w-20"),
|
|
24767
24771
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24768
24772
|
onChange: (e) => onUpdate({
|
|
24769
24773
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24784,7 +24788,7 @@ function ThemeSelectorCard({
|
|
|
24784
24788
|
canEdit,
|
|
24785
24789
|
onApplyTheme
|
|
24786
24790
|
}) {
|
|
24787
|
-
const { t } =
|
|
24791
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24788
24792
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24789
24793
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24790
24794
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24847,7 +24851,7 @@ function SlideThemeOverridePanel({
|
|
|
24847
24851
|
canEdit,
|
|
24848
24852
|
onUpdateSlide
|
|
24849
24853
|
}) {
|
|
24850
|
-
const { t } =
|
|
24854
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24851
24855
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24852
24856
|
const override = activeSlide?.clrMapOverride;
|
|
24853
24857
|
const isOverrideActive = override !== void 0;
|
|
@@ -24954,7 +24958,7 @@ function DirectionPicker({
|
|
|
24954
24958
|
disabled,
|
|
24955
24959
|
onChange
|
|
24956
24960
|
}) {
|
|
24957
|
-
const { t } =
|
|
24961
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
24958
24962
|
if (directions.length <= 3) {
|
|
24959
24963
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24960
24964
|
"button",
|
|
@@ -24996,10 +25000,10 @@ function TransitionPreview({
|
|
|
24996
25000
|
const previewRef = React108.useRef(null);
|
|
24997
25001
|
const [playing, setPlaying] = React108.useState(false);
|
|
24998
25002
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
24999
|
-
const { t } =
|
|
25003
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25000
25004
|
const durationMs = transition.durationMs ?? 500;
|
|
25001
25005
|
const animations = React108.useMemo(
|
|
25002
|
-
() =>
|
|
25006
|
+
() => chunkNRTPKXZX_js.getSlideTransitionAnimations(
|
|
25003
25007
|
transition.type,
|
|
25004
25008
|
durationMs,
|
|
25005
25009
|
transition.direction,
|
|
@@ -25068,7 +25072,7 @@ function TransitionPreview({
|
|
|
25068
25072
|
]
|
|
25069
25073
|
}
|
|
25070
25074
|
),
|
|
25071
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25075
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkNRTPKXZX_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25072
25076
|
] });
|
|
25073
25077
|
}
|
|
25074
25078
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25080,7 +25084,7 @@ function SlideTransitionSection({
|
|
|
25080
25084
|
canEdit = true,
|
|
25081
25085
|
onTransitionChange
|
|
25082
25086
|
}) {
|
|
25083
|
-
const { t } =
|
|
25087
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25084
25088
|
if (!activeSlide) {
|
|
25085
25089
|
return null;
|
|
25086
25090
|
}
|
|
@@ -25111,7 +25115,7 @@ function SlideTransitionSection({
|
|
|
25111
25115
|
type: e.target.value
|
|
25112
25116
|
}),
|
|
25113
25117
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25114
|
-
children:
|
|
25118
|
+
children: chunkP2COO2QO_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25115
25119
|
}
|
|
25116
25120
|
)
|
|
25117
25121
|
] }),
|
|
@@ -25269,7 +25273,7 @@ function TagsSection({
|
|
|
25269
25273
|
onUpdateTagCollections,
|
|
25270
25274
|
canEdit
|
|
25271
25275
|
}) {
|
|
25272
|
-
const { t } =
|
|
25276
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25273
25277
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25274
25278
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25275
25279
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25327,7 +25331,7 @@ function TagsSection({
|
|
|
25327
25331
|
"button",
|
|
25328
25332
|
{
|
|
25329
25333
|
type: "button",
|
|
25330
|
-
className:
|
|
25334
|
+
className: chunkP2COO2QO_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25331
25335
|
title: t("pptx.tags.deleteTag"),
|
|
25332
25336
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25333
25337
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25369,7 +25373,7 @@ function PresentationPropertiesPanel({
|
|
|
25369
25373
|
tagCollections,
|
|
25370
25374
|
onUpdateTagCollections
|
|
25371
25375
|
}) {
|
|
25372
|
-
const { t } =
|
|
25376
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25373
25377
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25374
25378
|
(updates) => {
|
|
25375
25379
|
onUpdateSlide({
|
|
@@ -25456,7 +25460,7 @@ function PresentationPropertiesPanel({
|
|
|
25456
25460
|
canEdit
|
|
25457
25461
|
}
|
|
25458
25462
|
) }),
|
|
25459
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25463
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunkP2COO2QO_js.cn(CARD2, "space-y-1"), children: [
|
|
25460
25464
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25461
25465
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25462
25466
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25474,17 +25478,17 @@ function SlideBackgroundPanel({
|
|
|
25474
25478
|
onSetTemplateBackground,
|
|
25475
25479
|
onGetTemplateBackgroundColor
|
|
25476
25480
|
}) {
|
|
25477
|
-
const { t } =
|
|
25481
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25478
25482
|
const bgImageInputRef = React108.useRef(null);
|
|
25479
25483
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25480
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25484
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkP2COO2QO_js.cn(CARD2, "space-y-2"), children: [
|
|
25481
25485
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25482
25486
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25483
25487
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25484
25488
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25485
25489
|
DebouncedColorInput,
|
|
25486
25490
|
{
|
|
25487
|
-
value:
|
|
25491
|
+
value: chunkP2COO2QO_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25488
25492
|
disabled: !canEdit,
|
|
25489
25493
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25490
25494
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25523,7 +25527,7 @@ function SlideBackgroundPanel({
|
|
|
25523
25527
|
"button",
|
|
25524
25528
|
{
|
|
25525
25529
|
type: "button",
|
|
25526
|
-
className:
|
|
25530
|
+
className: chunkP2COO2QO_js.cn(BTN2, "flex-1 text-center"),
|
|
25527
25531
|
disabled: !canEdit,
|
|
25528
25532
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25529
25533
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25556,7 +25560,7 @@ function SlideBackgroundPanel({
|
|
|
25556
25560
|
"button",
|
|
25557
25561
|
{
|
|
25558
25562
|
type: "button",
|
|
25559
|
-
className:
|
|
25563
|
+
className: chunkP2COO2QO_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25560
25564
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25561
25565
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25562
25566
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25593,21 +25597,21 @@ function TemplateBackgroundCard({
|
|
|
25593
25597
|
onSetTemplateBackground,
|
|
25594
25598
|
onGetTemplateBackgroundColor
|
|
25595
25599
|
}) {
|
|
25596
|
-
const { t } =
|
|
25600
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25597
25601
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25598
25602
|
activeSlide,
|
|
25599
25603
|
slideMasters,
|
|
25600
25604
|
t("pptx.master.layout"),
|
|
25601
25605
|
t("pptx.master.master")
|
|
25602
25606
|
);
|
|
25603
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25607
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkP2COO2QO_js.cn(CARD2, "space-y-2"), children: [
|
|
25604
25608
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25605
25609
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25606
25610
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25607
25611
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25608
25612
|
DebouncedColorInput,
|
|
25609
25613
|
{
|
|
25610
|
-
value:
|
|
25614
|
+
value: chunkP2COO2QO_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25611
25615
|
disabled: !canEdit,
|
|
25612
25616
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25613
25617
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25620,7 +25624,7 @@ function TemplateBackgroundCard({
|
|
|
25620
25624
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25621
25625
|
DebouncedColorInput,
|
|
25622
25626
|
{
|
|
25623
|
-
value:
|
|
25627
|
+
value: chunkP2COO2QO_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25624
25628
|
disabled: !canEdit,
|
|
25625
25629
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25626
25630
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25730,8 +25734,8 @@ function InspectorPane(props) {
|
|
|
25730
25734
|
panelWidth
|
|
25731
25735
|
} = props;
|
|
25732
25736
|
const hasSelection = selectedElement !== null;
|
|
25733
|
-
const { t } =
|
|
25734
|
-
const { dragY, handlers: dragHandlers } =
|
|
25737
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
25738
|
+
const { dragY, handlers: dragHandlers } = chunkNRTPKXZX_js.useSheetDismissDrag(onClose);
|
|
25735
25739
|
const {
|
|
25736
25740
|
animationPanelHeight,
|
|
25737
25741
|
effectiveThemeOptions,
|
|
@@ -25753,7 +25757,7 @@ function InspectorPane(props) {
|
|
|
25753
25757
|
"div",
|
|
25754
25758
|
{
|
|
25755
25759
|
"data-pptx-chrome": "inspector",
|
|
25756
|
-
className:
|
|
25760
|
+
className: chunkP2COO2QO_js.cn(
|
|
25757
25761
|
// Shared styles
|
|
25758
25762
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25759
25763
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26084,7 +26088,7 @@ function PresentationAnnotationOverlay({
|
|
|
26084
26088
|
);
|
|
26085
26089
|
}
|
|
26086
26090
|
function PresentationToolbar(p) {
|
|
26087
|
-
const { t } =
|
|
26091
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26088
26092
|
const ref = useWebControl(
|
|
26089
26093
|
{
|
|
26090
26094
|
current: p.currentSlideIndex,
|
|
@@ -26143,8 +26147,8 @@ function PresentationTouchControls({
|
|
|
26143
26147
|
onEndPresentation,
|
|
26144
26148
|
hideNavigation = false
|
|
26145
26149
|
}) {
|
|
26146
|
-
const { t } =
|
|
26147
|
-
const { isTouchDevice } =
|
|
26150
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26151
|
+
const { isTouchDevice } = chunkNRTPKXZX_js.useIsMobile();
|
|
26148
26152
|
if (!isTouchDevice) {
|
|
26149
26153
|
return null;
|
|
26150
26154
|
}
|
|
@@ -26226,7 +26230,7 @@ function KeepAnnotationsDialog({
|
|
|
26226
26230
|
onKeep,
|
|
26227
26231
|
onDiscard
|
|
26228
26232
|
}) {
|
|
26229
|
-
const { t } =
|
|
26233
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26230
26234
|
if (!isOpen) {
|
|
26231
26235
|
return null;
|
|
26232
26236
|
}
|
|
@@ -26274,7 +26278,7 @@ function PasteSpecialDialog({
|
|
|
26274
26278
|
onCancel,
|
|
26275
26279
|
onConfirm
|
|
26276
26280
|
}) {
|
|
26277
|
-
const { t } =
|
|
26281
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26278
26282
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26279
26283
|
if (!isOpen) {
|
|
26280
26284
|
return null;
|
|
@@ -26332,7 +26336,7 @@ function PasteOptionsToolbar({
|
|
|
26332
26336
|
onChoose,
|
|
26333
26337
|
onDismiss
|
|
26334
26338
|
}) {
|
|
26335
|
-
const { t } =
|
|
26339
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26336
26340
|
const [rect, setRect] = React108.useState(null);
|
|
26337
26341
|
React108.useEffect(() => {
|
|
26338
26342
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26359,7 +26363,7 @@ function NotesPagePreview({
|
|
|
26359
26363
|
frameSlides,
|
|
26360
26364
|
maxPages = 3
|
|
26361
26365
|
}) {
|
|
26362
|
-
const { t } =
|
|
26366
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26363
26367
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26364
26368
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26365
26369
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26447,15 +26451,15 @@ function PrintPreview({
|
|
|
26447
26451
|
frameSlides,
|
|
26448
26452
|
maxPages = 3
|
|
26449
26453
|
}) {
|
|
26450
|
-
const { t } =
|
|
26454
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26451
26455
|
const pages = React108.useMemo(
|
|
26452
|
-
() =>
|
|
26456
|
+
() => chunkP2COO2QO_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26453
26457
|
[slideIndices, slidesPerPage, orientation]
|
|
26454
26458
|
);
|
|
26455
|
-
const printable = React108.useMemo(() =>
|
|
26459
|
+
const printable = React108.useMemo(() => chunkP2COO2QO_js.getPrintableArea(orientation), [orientation]);
|
|
26456
26460
|
const visiblePages = pages.slice(0, maxPages);
|
|
26457
26461
|
const isThreePerPage = slidesPerPage === 3;
|
|
26458
|
-
const noteLineCount =
|
|
26462
|
+
const noteLineCount = chunkP2COO2QO_js.generateNoteLineCount();
|
|
26459
26463
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26460
26464
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26461
26465
|
const noteAreaFraction = 0.5;
|
|
@@ -26553,7 +26557,7 @@ function PrintSettingsPanel({
|
|
|
26553
26557
|
totalSlides,
|
|
26554
26558
|
activeSlideIndex
|
|
26555
26559
|
}) {
|
|
26556
|
-
const { t } =
|
|
26560
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26557
26561
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26558
26562
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26559
26563
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26789,13 +26793,13 @@ function PrintDialog({
|
|
|
26789
26793
|
defaultSlidesPerPage,
|
|
26790
26794
|
defaultFrameSlides
|
|
26791
26795
|
}) {
|
|
26792
|
-
const { t } =
|
|
26796
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26793
26797
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26794
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26795
|
-
const { viewportWidth } =
|
|
26798
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_js.useModalDismissDrag(onClose);
|
|
26799
|
+
const { viewportWidth } = chunkNRTPKXZX_js.useIsMobile();
|
|
26796
26800
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26797
26801
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26798
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26802
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkNRTPKXZX_js.useViewerOptionsContext());
|
|
26799
26803
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26800
26804
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26801
26805
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -26979,7 +26983,7 @@ function ShowOptionsFieldset({
|
|
|
26979
26983
|
draft,
|
|
26980
26984
|
update
|
|
26981
26985
|
}) {
|
|
26982
|
-
const { t } =
|
|
26986
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
26983
26987
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26984
26988
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26985
26989
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27037,7 +27041,7 @@ function ShowSlidesFieldset({
|
|
|
27037
27041
|
slideCount,
|
|
27038
27042
|
customShows
|
|
27039
27043
|
}) {
|
|
27040
|
-
const { t } =
|
|
27044
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27041
27045
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
27042
27046
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
27043
27047
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27147,7 +27151,7 @@ function SetUpSlideShowDialog({
|
|
|
27147
27151
|
customShows,
|
|
27148
27152
|
slideCount
|
|
27149
27153
|
}) {
|
|
27150
|
-
const { t } =
|
|
27154
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27151
27155
|
const [draft, setDraft] = React108.useState({
|
|
27152
27156
|
...properties
|
|
27153
27157
|
});
|
|
@@ -27283,16 +27287,16 @@ function BroadcastDialog({
|
|
|
27283
27287
|
defaultUserName,
|
|
27284
27288
|
defaultServerUrl
|
|
27285
27289
|
}) {
|
|
27286
|
-
const { t } =
|
|
27290
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27287
27291
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27288
|
-
const collab =
|
|
27292
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
27289
27293
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27290
27294
|
const [roomId, setRoomId] = React108.useState("");
|
|
27291
27295
|
const [userName, setUserName] = React108.useState("");
|
|
27292
27296
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27293
27297
|
const [copied, setCopied] = React108.useState(false);
|
|
27294
27298
|
const dialogRef = React108.useRef(null);
|
|
27295
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27299
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_js.useModalDismissDrag(onClose);
|
|
27296
27300
|
useModalFocus(open, dialogRef, onClose);
|
|
27297
27301
|
React108.useEffect(() => {
|
|
27298
27302
|
if (open && !isBroadcasting) {
|
|
@@ -27451,7 +27455,7 @@ function StartBroadcastForm({
|
|
|
27451
27455
|
onUserNameChange,
|
|
27452
27456
|
onServerUrlChange
|
|
27453
27457
|
}) {
|
|
27454
|
-
const { t } =
|
|
27458
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27455
27459
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27456
27460
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27457
27461
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27527,7 +27531,7 @@ function ActiveBroadcastView({
|
|
|
27527
27531
|
onCopyUrl,
|
|
27528
27532
|
onStopBroadcast
|
|
27529
27533
|
}) {
|
|
27530
|
-
const { t } =
|
|
27534
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27531
27535
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27532
27536
|
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" });
|
|
27533
27537
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27608,7 +27612,7 @@ function ActiveSessionView({
|
|
|
27608
27612
|
onCopyRoomId,
|
|
27609
27613
|
onStopCollaboration
|
|
27610
27614
|
}) {
|
|
27611
|
-
const { t } =
|
|
27615
|
+
const { t } = chunkP2COO2QO_js.useTranslation(), viewerOptions = chunkNRTPKXZX_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({
|
|
27612
27616
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27613
27617
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27614
27618
|
localUserColor: collab.config.userColor,
|
|
@@ -27706,8 +27710,8 @@ function StartSessionForm({
|
|
|
27706
27710
|
connectionFailed,
|
|
27707
27711
|
onRetry
|
|
27708
27712
|
}) {
|
|
27709
|
-
const { t } =
|
|
27710
|
-
const { viewportWidth } =
|
|
27713
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27714
|
+
const { viewportWidth } = chunkNRTPKXZX_js.useIsMobile();
|
|
27711
27715
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27712
27716
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27713
27717
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27841,9 +27845,9 @@ function ShareDialog({
|
|
|
27841
27845
|
defaultUserName,
|
|
27842
27846
|
defaultServerUrl
|
|
27843
27847
|
}) {
|
|
27844
|
-
const collab =
|
|
27848
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
27845
27849
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27846
|
-
const { t } =
|
|
27850
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
27847
27851
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27848
27852
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27849
27853
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27852,9 +27856,9 @@ function ShareDialog({
|
|
|
27852
27856
|
const [invitation, setInvitation] = React108.useState("");
|
|
27853
27857
|
const [copied, setCopied] = React108.useState(false);
|
|
27854
27858
|
const dialogRef = React108.useRef(null);
|
|
27855
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27859
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_js.useModalDismissDrag(onClose);
|
|
27856
27860
|
useModalFocus(open, dialogRef, onClose);
|
|
27857
|
-
const { viewportWidth, viewportHeight } =
|
|
27861
|
+
const { viewportWidth, viewportHeight } = chunkNRTPKXZX_js.useIsMobile();
|
|
27858
27862
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27859
27863
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27860
27864
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28027,7 +28031,7 @@ function HyperlinkTabContent({
|
|
|
28027
28031
|
inputCls,
|
|
28028
28032
|
onEnterConfirm
|
|
28029
28033
|
}) {
|
|
28030
|
-
const { t } =
|
|
28034
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
28031
28035
|
const handleEnterKey = (e) => {
|
|
28032
28036
|
if (e.key === "Enter") {
|
|
28033
28037
|
onEnterConfirm();
|
|
@@ -28152,13 +28156,13 @@ function HyperlinkEditDialog({
|
|
|
28152
28156
|
onConfirm,
|
|
28153
28157
|
onCancel
|
|
28154
28158
|
}) {
|
|
28155
|
-
const { t } =
|
|
28156
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28159
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
28160
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_js.useModalDismissDrag(onCancel);
|
|
28157
28161
|
const inputRef = React108.useRef(null);
|
|
28158
|
-
const detectedType =
|
|
28159
|
-
const emailParts =
|
|
28160
|
-
const detectedSlide =
|
|
28161
|
-
const detectedVerb = initialAction ?
|
|
28162
|
+
const detectedType = chunkNRTPKXZX_js.detectTargetType(initialUrl, initialAction);
|
|
28163
|
+
const emailParts = chunkNRTPKXZX_js.parseEmailUrl(initialUrl || "");
|
|
28164
|
+
const detectedSlide = chunkNRTPKXZX_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28165
|
+
const detectedVerb = initialAction ? chunkNRTPKXZX_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28162
28166
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
28163
28167
|
const [url, setUrl] = React108.useState(
|
|
28164
28168
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28189,7 +28193,7 @@ function HyperlinkEditDialog({
|
|
|
28189
28193
|
actionVerb
|
|
28190
28194
|
});
|
|
28191
28195
|
};
|
|
28192
|
-
const tabCls = (active) =>
|
|
28196
|
+
const tabCls = (active) => chunkP2COO2QO_js.cn(
|
|
28193
28197
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28194
28198
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28195
28199
|
);
|
|
@@ -28419,6 +28423,7 @@ function ViewerBottomPanels({
|
|
|
28419
28423
|
isDirty,
|
|
28420
28424
|
autosaveStatus,
|
|
28421
28425
|
saveProgress,
|
|
28426
|
+
fontProgress,
|
|
28422
28427
|
onToggleNotes,
|
|
28423
28428
|
onUpdateNotes,
|
|
28424
28429
|
collaborationSlot,
|
|
@@ -28436,7 +28441,7 @@ function ViewerBottomPanels({
|
|
|
28436
28441
|
notesStyle,
|
|
28437
28442
|
onNotesHeightChange
|
|
28438
28443
|
}) {
|
|
28439
|
-
const { isHidden } =
|
|
28444
|
+
const { isHidden } = chunkNRTPKXZX_js.useToolbarVisibility(hiddenActions);
|
|
28440
28445
|
const customization = useViewerCustomizationContext();
|
|
28441
28446
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28442
28447
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28493,6 +28498,7 @@ function ViewerBottomPanels({
|
|
|
28493
28498
|
isDirty,
|
|
28494
28499
|
autosaveStatus,
|
|
28495
28500
|
saveProgress,
|
|
28501
|
+
fontProgress,
|
|
28496
28502
|
scale,
|
|
28497
28503
|
onZoomIn,
|
|
28498
28504
|
onZoomOut,
|
|
@@ -28566,7 +28572,7 @@ function ViewerInspector({
|
|
|
28566
28572
|
onPreviewElement,
|
|
28567
28573
|
elementById
|
|
28568
28574
|
}) {
|
|
28569
|
-
const { t } =
|
|
28575
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
28570
28576
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28571
28577
|
const liveEdit = onPreviewElement ? {
|
|
28572
28578
|
element: selectedElement,
|
|
@@ -28781,7 +28787,7 @@ function ViewerToolbarSection(props) {
|
|
|
28781
28787
|
onSetSnapToShape,
|
|
28782
28788
|
onSetShowGuides
|
|
28783
28789
|
} = props;
|
|
28784
|
-
const { t } =
|
|
28790
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
28785
28791
|
const customization = useViewerCustomizationContext();
|
|
28786
28792
|
const handleAddAnimation = React108.useCallback(
|
|
28787
28793
|
(preset, group) => {
|
|
@@ -28834,7 +28840,7 @@ function ViewerToolbarSection(props) {
|
|
|
28834
28840
|
[activeSlide, propertyHandlers]
|
|
28835
28841
|
);
|
|
28836
28842
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28837
|
-
() =>
|
|
28843
|
+
() => chunkNRTPKXZX_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28838
28844
|
[s.layoutOptions, activeSlide]
|
|
28839
28845
|
);
|
|
28840
28846
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29241,14 +29247,14 @@ function ViewerToolbarSection(props) {
|
|
|
29241
29247
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29242
29248
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29243
29249
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29244
|
-
reviewComments:
|
|
29250
|
+
reviewComments: chunkNRTPKXZX_js.createReviewCommentsHost({
|
|
29245
29251
|
state: s,
|
|
29246
29252
|
activeSlideIndex,
|
|
29247
29253
|
updateSlides: ops.updateSlides,
|
|
29248
29254
|
markDirty: history.markDirty
|
|
29249
29255
|
}),
|
|
29250
29256
|
formatPainterActive: s.formatPainterActive,
|
|
29251
|
-
canActivateFormatPainter:
|
|
29257
|
+
canActivateFormatPainter: chunkP2COO2QO_js.hasCopyableFormat(selectedElement),
|
|
29252
29258
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29253
29259
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29254
29260
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29357,14 +29363,14 @@ function CustomShowsDialog({
|
|
|
29357
29363
|
onRun,
|
|
29358
29364
|
onClose
|
|
29359
29365
|
}) {
|
|
29360
|
-
const { t } =
|
|
29366
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
29361
29367
|
const controller = React108.useMemo(
|
|
29362
29368
|
() => pptx.createCustomShowsController(customShows, activeCustomShowId),
|
|
29363
29369
|
// A fresh draft per open: the host mounts this only while the dialog is open.
|
|
29364
29370
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29365
29371
|
[]
|
|
29366
29372
|
);
|
|
29367
|
-
|
|
29373
|
+
chunkNRTPKXZX_js.useController(controller);
|
|
29368
29374
|
const view = controller.view(slides);
|
|
29369
29375
|
const [active, setActive] = React108.useState(activeCustomShowId ?? "");
|
|
29370
29376
|
const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
|
|
@@ -29643,8 +29649,8 @@ function EquationEditorDialog({
|
|
|
29643
29649
|
onInsert,
|
|
29644
29650
|
existingOmml
|
|
29645
29651
|
}) {
|
|
29646
|
-
const { t } =
|
|
29647
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29652
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
29653
|
+
const { panelStyle, handlers: dragHandlers } = chunkNRTPKXZX_js.useModalDismissDrag(onClose);
|
|
29648
29654
|
const initialLatex = React108.useMemo(() => {
|
|
29649
29655
|
if (!existingOmml) {
|
|
29650
29656
|
return "";
|
|
@@ -29766,7 +29772,7 @@ function EquationEditorDialog({
|
|
|
29766
29772
|
{
|
|
29767
29773
|
type: "button",
|
|
29768
29774
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29769
|
-
className:
|
|
29775
|
+
className: chunkP2COO2QO_js.cn(
|
|
29770
29776
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29771
29777
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29772
29778
|
),
|
|
@@ -29831,7 +29837,7 @@ function InsertSmartArtDialog({
|
|
|
29831
29837
|
onInsert
|
|
29832
29838
|
}) {
|
|
29833
29839
|
const ref = React108.useRef(null);
|
|
29834
|
-
const { t } =
|
|
29840
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
29835
29841
|
React108.useLayoutEffect(() => {
|
|
29836
29842
|
if (ref.current) {
|
|
29837
29843
|
ref.current.translateLabel = t;
|
|
@@ -29855,7 +29861,7 @@ function InsertChartDialog({
|
|
|
29855
29861
|
onInsert
|
|
29856
29862
|
}) {
|
|
29857
29863
|
const ref = React108.useRef(null);
|
|
29858
|
-
const { t } =
|
|
29864
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
29859
29865
|
React108.useLayoutEffect(() => {
|
|
29860
29866
|
if (ref.current) {
|
|
29861
29867
|
ref.current.translateLabel = t;
|
|
@@ -30362,11 +30368,11 @@ function PresentationStage({
|
|
|
30362
30368
|
})
|
|
30363
30369
|
},
|
|
30364
30370
|
children: [
|
|
30365
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30371
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkNRTPKXZX_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30366
30372
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30367
30373
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30368
30374
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30369
|
-
|
|
30375
|
+
chunkNRTPKXZX_js.ElementRenderer,
|
|
30370
30376
|
{
|
|
30371
30377
|
element,
|
|
30372
30378
|
activeSlide,
|
|
@@ -30404,7 +30410,7 @@ function PresentationStage({
|
|
|
30404
30410
|
`tpl-${element.id}`
|
|
30405
30411
|
)),
|
|
30406
30412
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30407
|
-
|
|
30413
|
+
chunkNRTPKXZX_js.ElementRenderer,
|
|
30408
30414
|
{
|
|
30409
30415
|
element,
|
|
30410
30416
|
activeSlide,
|
|
@@ -30457,7 +30463,7 @@ function PresentationStage({
|
|
|
30457
30463
|
function noop() {
|
|
30458
30464
|
}
|
|
30459
30465
|
function PresentationContextMenu(p) {
|
|
30460
|
-
const { t } =
|
|
30466
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
30461
30467
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30462
30468
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30463
30469
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30516,7 +30522,7 @@ function PresentationTransitionMount({
|
|
|
30516
30522
|
templateElementsBySlideId
|
|
30517
30523
|
);
|
|
30518
30524
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30519
|
-
|
|
30525
|
+
chunkNRTPKXZX_js.PresentationTransitionOverlay,
|
|
30520
30526
|
{
|
|
30521
30527
|
outgoingSlide,
|
|
30522
30528
|
templateElements: templates.outgoing,
|
|
@@ -30561,9 +30567,9 @@ function ViewerCanvasArea(props) {
|
|
|
30561
30567
|
aiHighlightOverlay,
|
|
30562
30568
|
aiCanvasActive = false
|
|
30563
30569
|
} = props;
|
|
30564
|
-
const { t } =
|
|
30565
|
-
const { isHidden } =
|
|
30566
|
-
const viewerOptions =
|
|
30570
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
30571
|
+
const { isHidden } = chunkNRTPKXZX_js.useToolbarVisibility(hiddenActions);
|
|
30572
|
+
const viewerOptions = chunkNRTPKXZX_js.useViewerOptionsContext();
|
|
30567
30573
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30568
30574
|
state: s,
|
|
30569
30575
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30609,9 +30615,9 @@ function ViewerCanvasArea(props) {
|
|
|
30609
30615
|
);
|
|
30610
30616
|
const handleHyperlinkClick = React108.useCallback(
|
|
30611
30617
|
(url) => {
|
|
30612
|
-
if (
|
|
30618
|
+
if (chunkP2COO2QO_js.isPpactionUrl(url)) {
|
|
30613
30619
|
if (mode === "present") {
|
|
30614
|
-
const parsed =
|
|
30620
|
+
const parsed = chunkP2COO2QO_js.parsePpactionUrl(url);
|
|
30615
30621
|
if (parsed) {
|
|
30616
30622
|
const action = {
|
|
30617
30623
|
action: parsed.action,
|
|
@@ -30696,7 +30702,7 @@ function ViewerCanvasArea(props) {
|
|
|
30696
30702
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30697
30703
|
}
|
|
30698
30704
|
}, [mode, presentation, s]);
|
|
30699
|
-
const swipe =
|
|
30705
|
+
const swipe = chunkNRTPKXZX_js.useSwipeNavigation({
|
|
30700
30706
|
enabled: swipeEnabled,
|
|
30701
30707
|
onNext: handleSwipeNext,
|
|
30702
30708
|
onPrev: handleSwipePrev
|
|
@@ -30882,14 +30888,14 @@ function ViewerCanvasArea(props) {
|
|
|
30882
30888
|
outlineAuthoring,
|
|
30883
30889
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30884
30890
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30885
|
-
|
|
30891
|
+
chunkNRTPKXZX_js.RemoteSelectionOverlay,
|
|
30886
30892
|
{
|
|
30887
30893
|
elements: effectiveSlide?.elements ?? [],
|
|
30888
30894
|
activeSlideIndex
|
|
30889
30895
|
}
|
|
30890
30896
|
),
|
|
30891
30897
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30892
|
-
|
|
30898
|
+
chunkNRTPKXZX_js.CollaborationCursorOverlay,
|
|
30893
30899
|
{
|
|
30894
30900
|
activeSlideIndex,
|
|
30895
30901
|
canvasWidth: canvasSize.width,
|
|
@@ -31126,8 +31132,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31126
31132
|
] });
|
|
31127
31133
|
}
|
|
31128
31134
|
function ChartFormatPanel() {
|
|
31129
|
-
const { t } =
|
|
31130
|
-
const commands =
|
|
31135
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
31136
|
+
const commands = chunkNRTPKXZX_js.useChartFormatContext();
|
|
31131
31137
|
const ref = React108.useRef(null);
|
|
31132
31138
|
const chart = commands?.chart;
|
|
31133
31139
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31162,7 +31168,7 @@ function ChartFormatPanel() {
|
|
|
31162
31168
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
31163
31169
|
}
|
|
31164
31170
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
31165
|
-
const { t } =
|
|
31171
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
31166
31172
|
const ref = React108.useRef(null);
|
|
31167
31173
|
React108.useEffect(() => {
|
|
31168
31174
|
const node = ref.current;
|
|
@@ -31199,8 +31205,8 @@ function MobileDismissSheet({
|
|
|
31199
31205
|
className,
|
|
31200
31206
|
children
|
|
31201
31207
|
}) {
|
|
31202
|
-
const { t } =
|
|
31203
|
-
const { dragY, handlers } =
|
|
31208
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
31209
|
+
const { dragY, handlers } = chunkNRTPKXZX_js.useSheetDismissDrag(onClose);
|
|
31204
31210
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31205
31211
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31206
31212
|
"button",
|
|
@@ -31469,7 +31475,7 @@ function ThemeThumbnail({
|
|
|
31469
31475
|
{
|
|
31470
31476
|
type: "button",
|
|
31471
31477
|
onClick,
|
|
31472
|
-
className:
|
|
31478
|
+
className: chunkP2COO2QO_js.cn(
|
|
31473
31479
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31474
31480
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31475
31481
|
),
|
|
@@ -31500,7 +31506,7 @@ function ThemeGallery({
|
|
|
31500
31506
|
onApplyTheme,
|
|
31501
31507
|
onImportTheme
|
|
31502
31508
|
}) {
|
|
31503
|
-
const { t } =
|
|
31509
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
31504
31510
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31505
31511
|
const fileInputRef = React108.useRef(null);
|
|
31506
31512
|
React108.useEffect(() => {
|
|
@@ -31637,8 +31643,8 @@ function ViewerSidePanels(props) {
|
|
|
31637
31643
|
aiBridge,
|
|
31638
31644
|
aiPanel
|
|
31639
31645
|
} = props;
|
|
31640
|
-
const aiAssistant =
|
|
31641
|
-
const AiPanel = aiAssistant?.panel ??
|
|
31646
|
+
const aiAssistant = chunkLVEFHZ76_js.aiAssistants.resolve(aiConfig);
|
|
31647
|
+
const AiPanel = aiAssistant?.panel ?? chunkLVEFHZ76_js.AiChatPanelLazy;
|
|
31642
31648
|
const handleSetSlideSize = (size, rescaleMode) => {
|
|
31643
31649
|
if (rescaleMode && s.slideSizeEmu) {
|
|
31644
31650
|
s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
|
|
@@ -31944,7 +31950,7 @@ function ViewerMainContent(props) {
|
|
|
31944
31950
|
);
|
|
31945
31951
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
31946
31952
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31947
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31953
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkNRTPKXZX_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31948
31954
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31949
31955
|
slidesPaneRenderer ? (
|
|
31950
31956
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -32154,7 +32160,7 @@ function AutosaveRecoveryDialog({
|
|
|
32154
32160
|
onDiscard,
|
|
32155
32161
|
busy = false
|
|
32156
32162
|
}) {
|
|
32157
|
-
const { t } =
|
|
32163
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32158
32164
|
if (!prompt) {
|
|
32159
32165
|
return null;
|
|
32160
32166
|
}
|
|
@@ -32210,7 +32216,7 @@ function CompatibilityToasts({
|
|
|
32210
32216
|
rightInset = 0,
|
|
32211
32217
|
bottomInset = 0
|
|
32212
32218
|
}) {
|
|
32213
|
-
const { t } =
|
|
32219
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32214
32220
|
const ref = useWebControl(
|
|
32215
32221
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
32216
32222
|
{
|
|
@@ -32255,7 +32261,7 @@ function HeaderFooterPanel({
|
|
|
32255
32261
|
onApplyToCurrent,
|
|
32256
32262
|
onClose
|
|
32257
32263
|
}) {
|
|
32258
|
-
const { t } =
|
|
32264
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32259
32265
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
32260
32266
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
32261
32267
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -32396,7 +32402,7 @@ function HeaderFooterPanel({
|
|
|
32396
32402
|
] }) });
|
|
32397
32403
|
}
|
|
32398
32404
|
function MobileBottomBar(p) {
|
|
32399
|
-
const { t } =
|
|
32405
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32400
32406
|
const handlers = {
|
|
32401
32407
|
slides: p.onOpenSlides,
|
|
32402
32408
|
insert: p.onOpenInsert,
|
|
@@ -32422,7 +32428,7 @@ function MobileSlidesSheet({
|
|
|
32422
32428
|
onClose,
|
|
32423
32429
|
...sidebar
|
|
32424
32430
|
}) {
|
|
32425
|
-
const { t } =
|
|
32431
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32426
32432
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32427
32433
|
MobileSheet,
|
|
32428
32434
|
{
|
|
@@ -32449,7 +32455,7 @@ function MobileChromeOverlay(props) {
|
|
|
32449
32455
|
slideSectionGroups,
|
|
32450
32456
|
canEdit,
|
|
32451
32457
|
commentCount
|
|
32452
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32458
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkNRTPKXZX_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32453
32459
|
s.setIsSlidesPaneOpen(false);
|
|
32454
32460
|
s.setIsMobileInsertOpen(false);
|
|
32455
32461
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32549,7 +32555,7 @@ function MobileChromeOverlay(props) {
|
|
|
32549
32555
|
] });
|
|
32550
32556
|
}
|
|
32551
32557
|
function ReadOnlyBanner(p) {
|
|
32552
|
-
const { t } =
|
|
32558
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32553
32559
|
const ref = useWebControl(
|
|
32554
32560
|
pptx.readOnlyBannerState(
|
|
32555
32561
|
p.recommendation,
|
|
@@ -32583,7 +32589,7 @@ function RibbonCustomizationStyle({
|
|
|
32583
32589
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32584
32590
|
}
|
|
32585
32591
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32586
|
-
const { t } =
|
|
32592
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32587
32593
|
if (notices.length === 0) {
|
|
32588
32594
|
return null;
|
|
32589
32595
|
}
|
|
@@ -32641,14 +32647,14 @@ function AddinTable({
|
|
|
32641
32647
|
selectedId,
|
|
32642
32648
|
onSelect
|
|
32643
32649
|
}) {
|
|
32644
|
-
const { t } =
|
|
32650
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32645
32651
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32646
32652
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32647
32653
|
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(
|
|
32648
32654
|
"tr",
|
|
32649
32655
|
{
|
|
32650
32656
|
onClick: () => onSelect(row.id),
|
|
32651
|
-
className:
|
|
32657
|
+
className: chunkP2COO2QO_js.cn(
|
|
32652
32658
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32653
32659
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32654
32660
|
),
|
|
@@ -32663,7 +32669,7 @@ function AddinTable({
|
|
|
32663
32669
|
] });
|
|
32664
32670
|
}
|
|
32665
32671
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32666
|
-
const { t } =
|
|
32672
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32667
32673
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32668
32674
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32669
32675
|
const active = rows.filter((row) => row.active);
|
|
@@ -32706,7 +32712,7 @@ function CommandList({
|
|
|
32706
32712
|
selectedId,
|
|
32707
32713
|
onSelect
|
|
32708
32714
|
}) {
|
|
32709
|
-
const { t } =
|
|
32715
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32710
32716
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32711
32717
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32712
32718
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32727,7 +32733,7 @@ function CommandList({
|
|
|
32727
32733
|
role: "option",
|
|
32728
32734
|
"aria-selected": selectedId === id,
|
|
32729
32735
|
onClick: () => onSelect(id),
|
|
32730
|
-
className:
|
|
32736
|
+
className: chunkP2COO2QO_js.cn(
|
|
32731
32737
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32732
32738
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32733
32739
|
),
|
|
@@ -32745,7 +32751,7 @@ function OptionsQuickAccessPane({
|
|
|
32745
32751
|
onQuickAccessCommandsChange,
|
|
32746
32752
|
onResetQuickAccess
|
|
32747
32753
|
}) {
|
|
32748
|
-
const { t } =
|
|
32754
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32749
32755
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32750
32756
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32751
32757
|
const current = options.quickAccess.commandIds;
|
|
@@ -32859,7 +32865,7 @@ function OptionsRibbonPane({
|
|
|
32859
32865
|
onRibbonTabHiddenChange,
|
|
32860
32866
|
onResetRibbon
|
|
32861
32867
|
}) {
|
|
32862
|
-
const { t } =
|
|
32868
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32863
32869
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32864
32870
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32865
32871
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32871,7 +32877,7 @@ function OptionsRibbonPane({
|
|
|
32871
32877
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32872
32878
|
"label",
|
|
32873
32879
|
{
|
|
32874
|
-
className:
|
|
32880
|
+
className: chunkP2COO2QO_js.cn(
|
|
32875
32881
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32876
32882
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32877
32883
|
),
|
|
@@ -32905,7 +32911,7 @@ function OptionsRibbonPane({
|
|
|
32905
32911
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32906
32912
|
"div",
|
|
32907
32913
|
{
|
|
32908
|
-
className:
|
|
32914
|
+
className: chunkP2COO2QO_js.cn(
|
|
32909
32915
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32910
32916
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32911
32917
|
),
|
|
@@ -32926,12 +32932,12 @@ async function exportAiChatLogs(options) {
|
|
|
32926
32932
|
chats,
|
|
32927
32933
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32928
32934
|
(filename, content, mime) => {
|
|
32929
|
-
|
|
32935
|
+
chunkNRTPKXZX_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32930
32936
|
}
|
|
32931
32937
|
);
|
|
32932
32938
|
}
|
|
32933
32939
|
function SettingsAiTab({ store }) {
|
|
32934
|
-
const { t } =
|
|
32940
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
32935
32941
|
const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
32936
32942
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
32937
32943
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -33023,7 +33029,7 @@ function SettingsAppearanceTab({
|
|
|
33023
33029
|
themes,
|
|
33024
33030
|
onSelectTheme
|
|
33025
33031
|
}) {
|
|
33026
|
-
const { t } =
|
|
33032
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
33027
33033
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
33028
33034
|
const isActive = entry.key === activeThemeKey;
|
|
33029
33035
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -33034,7 +33040,7 @@ function SettingsAppearanceTab({
|
|
|
33034
33040
|
type: "button",
|
|
33035
33041
|
onClick: () => onSelectTheme(entry.key),
|
|
33036
33042
|
"aria-pressed": isActive,
|
|
33037
|
-
className:
|
|
33043
|
+
className: chunkP2COO2QO_js.cn(
|
|
33038
33044
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33039
33045
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33040
33046
|
),
|
|
@@ -33051,7 +33057,7 @@ function SettingsAppearanceTab({
|
|
|
33051
33057
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33052
33058
|
"span",
|
|
33053
33059
|
{
|
|
33054
|
-
className:
|
|
33060
|
+
className: chunkP2COO2QO_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33055
33061
|
children: t(entry.labelKey)
|
|
33056
33062
|
}
|
|
33057
33063
|
)
|
|
@@ -33066,7 +33072,7 @@ function SettingsCustomFontsSection({
|
|
|
33066
33072
|
families,
|
|
33067
33073
|
onRegistered
|
|
33068
33074
|
}) {
|
|
33069
|
-
const { t } =
|
|
33075
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
33070
33076
|
const inputRef = React108.useRef(null);
|
|
33071
33077
|
const [error, setError] = React108.useState(false);
|
|
33072
33078
|
const handleFile = async (file) => {
|
|
@@ -33131,7 +33137,7 @@ function SettingsLanguageTab({
|
|
|
33131
33137
|
type: "button",
|
|
33132
33138
|
onClick: () => onSelectLocale(locale.code),
|
|
33133
33139
|
"aria-pressed": isActive,
|
|
33134
|
-
className:
|
|
33140
|
+
className: chunkP2COO2QO_js.cn(
|
|
33135
33141
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33136
33142
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33137
33143
|
),
|
|
@@ -33170,7 +33176,7 @@ function OpenSettingsDialog({
|
|
|
33170
33176
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
33171
33177
|
onCustomFontRegistered
|
|
33172
33178
|
}) {
|
|
33173
|
-
const { t } =
|
|
33179
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
33174
33180
|
const viewerCustomization = useViewerCustomizationContext();
|
|
33175
33181
|
const customization = React108.useMemo(
|
|
33176
33182
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -33279,7 +33285,7 @@ function ViewerOptionsProvider({
|
|
|
33279
33285
|
store,
|
|
33280
33286
|
children
|
|
33281
33287
|
}) {
|
|
33282
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33288
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkNRTPKXZX_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkNRTPKXZX_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33283
33289
|
}
|
|
33284
33290
|
function useAiBridge(input) {
|
|
33285
33291
|
const ref = React108.useRef(input);
|
|
@@ -33362,7 +33368,7 @@ function useAiPanelController(input) {
|
|
|
33362
33368
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
33363
33369
|
})
|
|
33364
33370
|
);
|
|
33365
|
-
const state =
|
|
33371
|
+
const state = chunkNRTPKXZX_js.useController(controller);
|
|
33366
33372
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
33367
33373
|
const liveFocusTargets = React108.useMemo(
|
|
33368
33374
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33595,7 +33601,7 @@ function useMasterViewCrud(input) {
|
|
|
33595
33601
|
forgetHistory,
|
|
33596
33602
|
pushToast
|
|
33597
33603
|
} = input;
|
|
33598
|
-
const { t } =
|
|
33604
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
33599
33605
|
const data = React108.useMemo(
|
|
33600
33606
|
() => ({ slides, slideMasters }),
|
|
33601
33607
|
[slides, slideMasters]
|
|
@@ -33936,16 +33942,20 @@ function useShapeFormatCommands(input) {
|
|
|
33936
33942
|
crop
|
|
33937
33943
|
};
|
|
33938
33944
|
}
|
|
33939
|
-
function useViewerCustomization(customization, legacyHiddenActions, optionsStore, allowExternalContent) {
|
|
33945
|
+
function useViewerCustomization(customization, legacyHiddenActions, optionsStore, allowExternalContent, googleFonts) {
|
|
33940
33946
|
const controllerRef = React108.useRef(null);
|
|
33941
33947
|
if (!controllerRef.current) {
|
|
33942
33948
|
controllerRef.current = pptx.createCustomizationController(customization);
|
|
33943
33949
|
controllerRef.current.setAllowExternalContent(allowExternalContent);
|
|
33950
|
+
controllerRef.current.setGoogleFonts(googleFonts);
|
|
33944
33951
|
}
|
|
33945
33952
|
const controller = controllerRef.current;
|
|
33946
33953
|
React108.useLayoutEffect(() => {
|
|
33947
33954
|
controller.setAllowExternalContent(allowExternalContent);
|
|
33948
33955
|
}, [controller, allowExternalContent]);
|
|
33956
|
+
React108.useLayoutEffect(() => {
|
|
33957
|
+
controller.setGoogleFonts(googleFonts);
|
|
33958
|
+
}, [controller, googleFonts]);
|
|
33949
33959
|
const appliedRef = React108.useRef(customization);
|
|
33950
33960
|
React108.useLayoutEffect(() => {
|
|
33951
33961
|
if (appliedRef.current === customization) {
|
|
@@ -33984,7 +33994,7 @@ function useHostLanguage({
|
|
|
33984
33994
|
availableLocales,
|
|
33985
33995
|
onLocaleChange
|
|
33986
33996
|
}) {
|
|
33987
|
-
const { t, i18n } =
|
|
33997
|
+
const { t, i18n } = chunkP2COO2QO_js.useHostI18next();
|
|
33988
33998
|
const [localeCode, setLocaleCode] = React108.useState(
|
|
33989
33999
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
33990
34000
|
);
|
|
@@ -34024,7 +34034,7 @@ function useProvidedLanguage({
|
|
|
34024
34034
|
availableLocales,
|
|
34025
34035
|
onLocaleChange
|
|
34026
34036
|
}) {
|
|
34027
|
-
const state = React108.useContext(
|
|
34037
|
+
const state = React108.useContext(chunkP2COO2QO_js.PptxI18nContext);
|
|
34028
34038
|
const { locale } = state;
|
|
34029
34039
|
const locales = availableLocales ?? NO_LOCALES;
|
|
34030
34040
|
const controls = React108.useMemo(
|
|
@@ -34044,7 +34054,7 @@ function useProvidedLanguage({
|
|
|
34044
34054
|
return { state, controls };
|
|
34045
34055
|
}
|
|
34046
34056
|
function provideLanguage({ state, controls }, children) {
|
|
34047
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34057
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
34048
34058
|
}
|
|
34049
34059
|
function HostLanguageRoot({ children, ...props }) {
|
|
34050
34060
|
return provideLanguage(useHostLanguage(props), children);
|
|
@@ -34053,11 +34063,11 @@ function ProvidedLanguageRoot({ children, ...props }) {
|
|
|
34053
34063
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
34054
34064
|
}
|
|
34055
34065
|
function ViewerI18nRoot(props) {
|
|
34056
|
-
const Root = React108.useContext(
|
|
34066
|
+
const Root = React108.useContext(chunkP2COO2QO_js.PptxI18nContext) ? ProvidedLanguageRoot : HostLanguageRoot;
|
|
34057
34067
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
34058
34068
|
}
|
|
34059
34069
|
function useViewerLocaleControls() {
|
|
34060
|
-
return React108.useContext(
|
|
34070
|
+
return React108.useContext(chunkP2COO2QO_js.ViewerLocaleControlsContext);
|
|
34061
34071
|
}
|
|
34062
34072
|
var NO_RIBBON_ADD_INS = [];
|
|
34063
34073
|
var NO_FILE_PROVIDERS = [];
|
|
@@ -34136,7 +34146,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34136
34146
|
limits
|
|
34137
34147
|
} = props;
|
|
34138
34148
|
const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
|
|
34139
|
-
const cloudFile =
|
|
34149
|
+
const cloudFile = chunkNRTPKXZX_js.useController(cloudDocument).file;
|
|
34140
34150
|
const {
|
|
34141
34151
|
storage: viewerStorage,
|
|
34142
34152
|
fileName,
|
|
@@ -34150,7 +34160,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34150
34160
|
filePath: hostFilePath
|
|
34151
34161
|
});
|
|
34152
34162
|
const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
|
|
34153
|
-
const saveProgressState =
|
|
34163
|
+
const saveProgressState = chunkNRTPKXZX_js.useController(saveProgress);
|
|
34154
34164
|
const storage = React108.useMemo(
|
|
34155
34165
|
() => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
|
|
34156
34166
|
[viewerStorage, saveProgress]
|
|
@@ -34192,7 +34202,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34192
34202
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34193
34203
|
);
|
|
34194
34204
|
}, []);
|
|
34195
|
-
const { t } =
|
|
34205
|
+
const { t } = chunkP2COO2QO_js.useTranslation();
|
|
34196
34206
|
const {
|
|
34197
34207
|
localeCode,
|
|
34198
34208
|
locales: resolvedLocales,
|
|
@@ -34249,12 +34259,13 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34249
34259
|
},
|
|
34250
34260
|
[hostStorage, cloudDocument]
|
|
34251
34261
|
);
|
|
34252
|
-
const { optionsStore, options: viewerOptions } =
|
|
34262
|
+
const { optionsStore, options: viewerOptions } = chunkNRTPKXZX_js.useViewerOptions();
|
|
34253
34263
|
const custom = useViewerCustomization(
|
|
34254
34264
|
customization,
|
|
34255
34265
|
legacyHiddenActions,
|
|
34256
34266
|
optionsStore,
|
|
34257
|
-
allowExternalContent
|
|
34267
|
+
allowExternalContent,
|
|
34268
|
+
googleFonts
|
|
34258
34269
|
);
|
|
34259
34270
|
const { resolved: customizationResolved, hiddenActions } = custom;
|
|
34260
34271
|
const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
|
|
@@ -34268,8 +34279,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34268
34279
|
const handleEnableEditing = React108.useCallback(() => {
|
|
34269
34280
|
setProtectedViewOverridden(true);
|
|
34270
34281
|
}, []);
|
|
34271
|
-
const readOnlyRec =
|
|
34272
|
-
const compatToastsState =
|
|
34282
|
+
const readOnlyRec = chunkNRTPKXZX_js.useReadOnlyRecommendationState(content);
|
|
34283
|
+
const compatToastsState = chunkNRTPKXZX_js.useCompatibilityToastsState();
|
|
34273
34284
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
34274
34285
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34275
34286
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -34292,8 +34303,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34292
34303
|
filePath
|
|
34293
34304
|
});
|
|
34294
34305
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
34295
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34296
|
-
const state =
|
|
34306
|
+
const { reducedMotion, toggleReducedMotion } = chunkNRTPKXZX_js.useReducedMotion();
|
|
34307
|
+
const state = chunkNRTPKXZX_js.useViewerState({
|
|
34297
34308
|
content,
|
|
34298
34309
|
canEdit,
|
|
34299
34310
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -34420,16 +34431,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34420
34431
|
}
|
|
34421
34432
|
}, [settings, optionsStore]);
|
|
34422
34433
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
34423
|
-
const mobile =
|
|
34434
|
+
const mobile = chunkNRTPKXZX_js.useIsMobile();
|
|
34424
34435
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34425
|
-
const resizablePanels =
|
|
34436
|
+
const resizablePanels = chunkNRTPKXZX_js.useResizablePanels();
|
|
34426
34437
|
const {
|
|
34427
34438
|
gridSpacingPx,
|
|
34428
34439
|
visibleSlideIndexes,
|
|
34429
34440
|
slideSectionGroups,
|
|
34430
34441
|
masterPseudoSlide,
|
|
34431
34442
|
authoredRange
|
|
34432
|
-
} =
|
|
34443
|
+
} = chunkNRTPKXZX_js.useDerivedSlideState({
|
|
34433
34444
|
slides,
|
|
34434
34445
|
sections: state.sections,
|
|
34435
34446
|
customShows: state.customShows,
|
|
@@ -34454,7 +34465,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34454
34465
|
state.cropSessionRef
|
|
34455
34466
|
]
|
|
34456
34467
|
);
|
|
34457
|
-
const zoom =
|
|
34468
|
+
const zoom = chunkNRTPKXZX_js.useZoomViewport({
|
|
34458
34469
|
canvasSize,
|
|
34459
34470
|
selectedElements: state.selectedElements,
|
|
34460
34471
|
fitPadding: props.fitPadding,
|
|
@@ -34470,7 +34481,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34470
34481
|
onChangeCallback.current?.();
|
|
34471
34482
|
}, [setIsDirty]);
|
|
34472
34483
|
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
34473
|
-
const history =
|
|
34484
|
+
const history = chunkNRTPKXZX_js.useEditorHistory({
|
|
34474
34485
|
slides,
|
|
34475
34486
|
canvasSize,
|
|
34476
34487
|
activeSlideIndex,
|
|
@@ -34499,7 +34510,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34499
34510
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34500
34511
|
setHeaderFooter: state.setHeaderFooter
|
|
34501
34512
|
});
|
|
34502
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34513
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkNRTPKXZX_js.usePresentationSetup({
|
|
34503
34514
|
mode,
|
|
34504
34515
|
slides,
|
|
34505
34516
|
visibleSlideIndexes,
|
|
@@ -34578,7 +34589,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34578
34589
|
loading,
|
|
34579
34590
|
error
|
|
34580
34591
|
]);
|
|
34581
|
-
|
|
34592
|
+
chunkNRTPKXZX_js.useTouchGestures({
|
|
34582
34593
|
targetRef: zoom.canvasViewportRef,
|
|
34583
34594
|
currentScale: zoom.scale,
|
|
34584
34595
|
callbacks: {
|
|
@@ -34600,7 +34611,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34600
34611
|
},
|
|
34601
34612
|
enabled: isTouchDevice
|
|
34602
34613
|
});
|
|
34603
|
-
const dialogs =
|
|
34614
|
+
const dialogs = chunkNRTPKXZX_js.useViewerDialogs({
|
|
34604
34615
|
mode,
|
|
34605
34616
|
slides,
|
|
34606
34617
|
activeSlide,
|
|
@@ -34628,7 +34639,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34628
34639
|
history,
|
|
34629
34640
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34630
34641
|
});
|
|
34631
|
-
|
|
34642
|
+
chunkNRTPKXZX_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34632
34643
|
const zoomBeforePresentRef = React108.useRef(null);
|
|
34633
34644
|
React108.useEffect(() => {
|
|
34634
34645
|
if (mode !== "present") {
|
|
@@ -34646,7 +34657,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34646
34657
|
zoom.handleZoomToFit();
|
|
34647
34658
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34648
34659
|
}, [mode]);
|
|
34649
|
-
const editorOps =
|
|
34660
|
+
const editorOps = chunkNRTPKXZX_js.useEditorOperations({
|
|
34650
34661
|
state,
|
|
34651
34662
|
history,
|
|
34652
34663
|
zoom,
|
|
@@ -34691,7 +34702,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34691
34702
|
handlerRef,
|
|
34692
34703
|
viewerApi,
|
|
34693
34704
|
loadVersion
|
|
34694
|
-
} =
|
|
34705
|
+
} = chunkNRTPKXZX_js.useViewerIntegration({
|
|
34695
34706
|
transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
|
|
34696
34707
|
state,
|
|
34697
34708
|
zoom,
|
|
@@ -34724,7 +34735,9 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34724
34735
|
// http(s) image sources actually load.
|
|
34725
34736
|
allowExternalImages: pptx.resolveAllowExternalContent(allowExternalContent, viewerOptions),
|
|
34726
34737
|
initialSlide,
|
|
34727
|
-
googleFonts,
|
|
34738
|
+
// Host `googleFonts` first, else Trust Center > "Download fonts"; read per render, so the
|
|
34739
|
+
// managed webfont link follows the option and the next load never sees a stale value.
|
|
34740
|
+
googleFonts: pptx.resolveEffectiveGoogleFonts(googleFonts, viewerOptions),
|
|
34728
34741
|
limits,
|
|
34729
34742
|
setReadOnlyRecommendation: readOnlyRec.setRecommendation,
|
|
34730
34743
|
setModifyVerifier: readOnlyRec.setModifyVerifier,
|
|
@@ -34834,7 +34847,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34834
34847
|
updateElementById: editorOps.ops.updateElementById
|
|
34835
34848
|
});
|
|
34836
34849
|
const ribbonScope = useRibbonScopeToken();
|
|
34837
|
-
const viewPreferencesSync =
|
|
34850
|
+
const viewPreferencesSync = chunkNRTPKXZX_js.useViewPreferencesSync({
|
|
34838
34851
|
loadVersion,
|
|
34839
34852
|
viewProperties: state.viewProperties,
|
|
34840
34853
|
setViewProperties: state.setViewProperties,
|
|
@@ -34885,7 +34898,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34885
34898
|
},
|
|
34886
34899
|
[state]
|
|
34887
34900
|
);
|
|
34888
|
-
const layoutSwitching =
|
|
34901
|
+
const layoutSwitching = chunkNRTPKXZX_js.useLayoutSwitching({
|
|
34889
34902
|
handler: handlerRef.current,
|
|
34890
34903
|
slides,
|
|
34891
34904
|
activeSlideIndex,
|
|
@@ -35004,7 +35017,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35004
35017
|
"data-pptx-editor-chrome": "",
|
|
35005
35018
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35006
35019
|
"aria-busy": loading,
|
|
35007
|
-
className:
|
|
35020
|
+
className: chunkP2COO2QO_js.cn(
|
|
35008
35021
|
"h-full w-full bg-background text-foreground relative",
|
|
35009
35022
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35010
35023
|
),
|
|
@@ -35017,7 +35030,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35017
35030
|
ref: containerRef,
|
|
35018
35031
|
tabIndex: 0,
|
|
35019
35032
|
className: "h-full w-full flex flex-col overflow-hidden outline-none",
|
|
35020
|
-
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingState, {}) : error ? /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { error }) : /* @__PURE__ */ jsxRuntime.jsx(ThemeColorMapProvider, { value: themeColorMapValue, children: /* @__PURE__ */ jsxRuntime.jsxs(RecentColorsProvider, { value: recentColorsValue, children: [
|
|
35033
|
+
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingState, { fontProgress: state.fontProgress }) : error ? /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { error }) : /* @__PURE__ */ jsxRuntime.jsx(ThemeColorMapProvider, { value: themeColorMapValue, children: /* @__PURE__ */ jsxRuntime.jsxs(RecentColorsProvider, { value: recentColorsValue, children: [
|
|
35021
35034
|
mode !== "present" && rootOptions.showToolbar && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35022
35035
|
ViewerToolbarSection,
|
|
35023
35036
|
{
|
|
@@ -35155,6 +35168,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35155
35168
|
isDirty: state.isDirty,
|
|
35156
35169
|
autosaveStatus,
|
|
35157
35170
|
saveProgress: saveProgressState,
|
|
35171
|
+
fontProgress: state.fontProgress,
|
|
35158
35172
|
onToggleNotes: () => state.setIsSlideNotesCollapsed((p) => !p),
|
|
35159
35173
|
onUpdateNotes: propertyHandlers.handleUpdateNotes,
|
|
35160
35174
|
collaborationSlot: collaboration && shareAvailable ? /* @__PURE__ */ jsxRuntime.jsx(CollaborationStatusStrip, {}) : void 0,
|
|
@@ -35405,8 +35419,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35405
35419
|
// Nothing previously provided it, so every one of those consumers was
|
|
35406
35420
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35407
35421
|
// the user changed in the Options dialog.
|
|
35408
|
-
/* @__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(
|
|
35409
|
-
|
|
35422
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkNRTPKXZX_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35423
|
+
chunkNRTPKXZX_js.CollaborationProvider,
|
|
35410
35424
|
{
|
|
35411
35425
|
config: collaboration,
|
|
35412
35426
|
canvasWidth: canvasSize.width,
|
|
@@ -35463,19 +35477,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35463
35477
|
slideCount: slides.length
|
|
35464
35478
|
}
|
|
35465
35479
|
),
|
|
35466
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35480
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkNRTPKXZX_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
35467
35481
|
]
|
|
35468
35482
|
}
|
|
35469
35483
|
) }) }) }) }) }) }) }) }) })
|
|
35470
35484
|
);
|
|
35471
35485
|
}
|
|
35472
35486
|
);
|
|
35473
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
35487
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunkNRTPKXZX_js.withDisplayName(
|
|
35474
35488
|
PowerPointViewerComponent,
|
|
35475
35489
|
"PowerPointViewer"
|
|
35476
35490
|
);
|
|
35477
35491
|
function CollaborationStatusStrip() {
|
|
35478
|
-
const collab =
|
|
35492
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
35479
35493
|
if (!collab) {
|
|
35480
35494
|
return null;
|
|
35481
35495
|
}
|
|
@@ -35492,9 +35506,9 @@ function CollaborationStateReporter({
|
|
|
35492
35506
|
onChange,
|
|
35493
35507
|
onStatus
|
|
35494
35508
|
}) {
|
|
35495
|
-
const collab =
|
|
35509
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
35496
35510
|
useCollaborationStateReport(collab, onChange);
|
|
35497
|
-
|
|
35511
|
+
chunkNRTPKXZX_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35498
35512
|
return null;
|
|
35499
35513
|
}
|
|
35500
35514
|
function CollaborationDocumentSync({
|
|
@@ -35509,8 +35523,8 @@ function CollaborationDocumentSync({
|
|
|
35509
35523
|
onReadOnlyChange,
|
|
35510
35524
|
history
|
|
35511
35525
|
}) {
|
|
35512
|
-
const collab =
|
|
35513
|
-
|
|
35526
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
35527
|
+
chunkNRTPKXZX_js.useCollaborationDocumentSync({
|
|
35514
35528
|
collaboration: collab,
|
|
35515
35529
|
history,
|
|
35516
35530
|
slides,
|
|
@@ -35530,14 +35544,14 @@ function CollaborationFollowLayer({
|
|
|
35530
35544
|
setActiveSlideIndex,
|
|
35531
35545
|
slideCount
|
|
35532
35546
|
}) {
|
|
35533
|
-
const collab =
|
|
35534
|
-
const { followedClientId, followUser } =
|
|
35547
|
+
const collab = chunkNRTPKXZX_js.useCollaboration();
|
|
35548
|
+
const { followedClientId, followUser } = chunkNRTPKXZX_js.useFollowMode({
|
|
35535
35549
|
collab,
|
|
35536
35550
|
activeSlideIndex,
|
|
35537
35551
|
setActiveSlideIndex,
|
|
35538
35552
|
slideCount
|
|
35539
35553
|
});
|
|
35540
|
-
|
|
35554
|
+
chunkNRTPKXZX_js.useBroadcastFollower({
|
|
35541
35555
|
collab,
|
|
35542
35556
|
activeSlideIndex,
|
|
35543
35557
|
setActiveSlideIndex,
|
|
@@ -35579,7 +35593,7 @@ function PptxI18nProvider({
|
|
|
35579
35593
|
() => ({ t: withEnglishFallback(translate), locale }),
|
|
35580
35594
|
[translate, locale]
|
|
35581
35595
|
);
|
|
35582
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35596
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.PptxI18nContext.Provider, { value: state, children });
|
|
35583
35597
|
}
|
|
35584
35598
|
|
|
35585
35599
|
Object.defineProperty(exports, "THEME_CATALOG", {
|