pptx-react-viewer 4.76.0 → 4.77.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 +16 -0
- package/dist/{AiChatPanel-6ML3VLIX.mjs → AiChatPanel-7BPX44IR.mjs} +1 -1
- package/dist/AiChatPanel-7BPX44IR.mjs.br +0 -0
- package/dist/AiChatPanel-7BPX44IR.mjs.gz +0 -0
- package/dist/{AiChatPanel-4V7QB5Z3.js → AiChatPanel-YJ5R7PPW.js} +19 -19
- package/dist/AiChatPanel-YJ5R7PPW.js.br +0 -0
- package/dist/AiChatPanel-YJ5R7PPW.js.gz +0 -0
- package/dist/ai.js +2 -2
- package/dist/ai.js.br +2 -3
- 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-P2IEKYVG.js → chunk-3T5NEBOR.js} +2 -2
- package/dist/chunk-3T5NEBOR.js.br +0 -0
- package/dist/chunk-3T5NEBOR.js.gz +0 -0
- package/dist/{chunk-SEIVQGH5.js → chunk-5CJHRYFK.js} +252 -227
- package/dist/chunk-5CJHRYFK.js.br +0 -0
- package/dist/chunk-5CJHRYFK.js.gz +0 -0
- package/dist/{chunk-6GFSF2ML.js → chunk-AIA7CY5U.js} +4 -29
- package/dist/chunk-AIA7CY5U.js.br +0 -0
- package/dist/chunk-AIA7CY5U.js.gz +0 -0
- package/dist/{chunk-PPOGAZ53.mjs → chunk-I5WQFYAK.mjs} +50 -26
- package/dist/chunk-I5WQFYAK.mjs.br +0 -0
- package/dist/chunk-I5WQFYAK.mjs.gz +0 -0
- package/dist/{chunk-RMEWSJZU.mjs → chunk-J4NOGC3R.mjs} +1 -1
- package/dist/chunk-J4NOGC3R.mjs.br +0 -0
- package/dist/chunk-J4NOGC3R.mjs.gz +0 -0
- package/dist/{chunk-Y53EC3JU.mjs → chunk-JB37G6GW.mjs} +1 -1
- package/dist/chunk-JB37G6GW.mjs.br +0 -0
- package/dist/chunk-JB37G6GW.mjs.gz +0 -0
- package/dist/{chunk-OC4RP2CB.mjs → chunk-MMBLGDHD.mjs} +15 -36
- package/dist/chunk-MMBLGDHD.mjs.br +0 -0
- package/dist/chunk-MMBLGDHD.mjs.gz +0 -0
- package/dist/{chunk-N3YK2BCA.mjs → chunk-N6BJW23K.mjs} +5 -30
- package/dist/chunk-N6BJW23K.mjs.br +0 -0
- package/dist/chunk-N6BJW23K.mjs.gz +0 -0
- package/dist/{chunk-XTYBIJ2S.js → chunk-USEEERPE.js} +584 -605
- package/dist/chunk-USEEERPE.js.br +0 -0
- package/dist/chunk-USEEERPE.js.gz +0 -0
- package/dist/{chunk-MU3BIZ2U.js → chunk-VCNDY7HS.js} +1 -1
- package/dist/chunk-VCNDY7HS.js.br +0 -0
- package/dist/chunk-VCNDY7HS.js.gz +0 -0
- package/dist/index.d.ts +21 -14
- package/dist/index.js +29 -29
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +14 -15
- package/dist/internals.js +82 -82
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -3
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/no-i18next.d.ts +21 -14
- package/dist/no-i18next.js +28 -28
- package/dist/no-i18next.js.br +0 -0
- package/dist/no-i18next.js.gz +0 -0
- package/dist/no-i18next.mjs +4 -4
- package/dist/no-i18next.mjs.br +0 -0
- package/dist/no-i18next.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +7 -1
- package/dist/viewer/index.js +22 -22
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +5 -5
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +2 -2
- package/dist/AiChatPanel-4V7QB5Z3.js.br +0 -0
- package/dist/AiChatPanel-4V7QB5Z3.js.gz +0 -0
- package/dist/AiChatPanel-6ML3VLIX.mjs.br +0 -0
- package/dist/AiChatPanel-6ML3VLIX.mjs.gz +0 -0
- package/dist/chunk-6GFSF2ML.js.br +0 -0
- package/dist/chunk-6GFSF2ML.js.gz +0 -0
- package/dist/chunk-MU3BIZ2U.js.br +0 -0
- package/dist/chunk-MU3BIZ2U.js.gz +0 -0
- package/dist/chunk-N3YK2BCA.mjs.br +0 -0
- package/dist/chunk-N3YK2BCA.mjs.gz +0 -0
- package/dist/chunk-OC4RP2CB.mjs.br +0 -0
- package/dist/chunk-OC4RP2CB.mjs.gz +0 -0
- package/dist/chunk-P2IEKYVG.js.br +0 -0
- package/dist/chunk-P2IEKYVG.js.gz +0 -0
- package/dist/chunk-PPOGAZ53.mjs.br +0 -0
- package/dist/chunk-PPOGAZ53.mjs.gz +0 -0
- package/dist/chunk-RMEWSJZU.mjs.br +0 -0
- package/dist/chunk-RMEWSJZU.mjs.gz +0 -0
- package/dist/chunk-SEIVQGH5.js.br +0 -0
- package/dist/chunk-SEIVQGH5.js.gz +0 -0
- package/dist/chunk-XTYBIJ2S.js.br +0 -0
- package/dist/chunk-XTYBIJ2S.js.gz +0 -0
- package/dist/chunk-Y53EC3JU.mjs.br +0 -0
- package/dist/chunk-Y53EC3JU.mjs.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkVCNDY7HS_js = require('./chunk-VCNDY7HS.js');
|
|
4
|
+
var chunk5CJHRYFK_js = require('./chunk-5CJHRYFK.js');
|
|
5
|
+
var chunkAIA7CY5U_js = require('./chunk-AIA7CY5U.js');
|
|
6
6
|
var pptx = require('ooxml-ui/pptx');
|
|
7
7
|
var React108 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -59,12 +59,12 @@ function SlideThumbnailImpl({
|
|
|
59
59
|
const layout = pptx.slideThumbnailLayout(
|
|
60
60
|
safeCanvasWidth,
|
|
61
61
|
safeCanvasHeight,
|
|
62
|
-
previewWidth ??
|
|
62
|
+
previewWidth ?? chunkAIA7CY5U_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
63
63
|
);
|
|
64
64
|
const { height: previewHeight, scale } = layout;
|
|
65
65
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
66
66
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
67
|
-
const { t } =
|
|
67
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
68
68
|
const transitionBadge = pptx.slideThumbnailTransitionBadge(slide, t);
|
|
69
69
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
70
70
|
"div",
|
|
@@ -90,9 +90,9 @@ function SlideThumbnailImpl({
|
|
|
90
90
|
...pptx.deviceStrokeStageStyle(scale)
|
|
91
91
|
},
|
|
92
92
|
children: [
|
|
93
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.SlideBackgroundImageLayer, { slide }),
|
|
94
94
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
-
|
|
95
|
+
chunk5CJHRYFK_js.StaticElementRenderer,
|
|
96
96
|
{
|
|
97
97
|
element,
|
|
98
98
|
activeSlide: slide,
|
|
@@ -161,7 +161,7 @@ function AvatarCircle({
|
|
|
161
161
|
avatar,
|
|
162
162
|
isLocal
|
|
163
163
|
}) {
|
|
164
|
-
const { t } =
|
|
164
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
165
165
|
const initials = getInitials(name);
|
|
166
166
|
const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
|
|
167
167
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -196,7 +196,7 @@ function UserAvatarBar({
|
|
|
196
196
|
status,
|
|
197
197
|
maxVisible = 5
|
|
198
198
|
}) {
|
|
199
|
-
const { t } =
|
|
199
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
200
200
|
if (status === "disconnected" || status === "error") {
|
|
201
201
|
return null;
|
|
202
202
|
}
|
|
@@ -270,7 +270,7 @@ function CollaborationStatusIndicator({
|
|
|
270
270
|
connectedCount,
|
|
271
271
|
onRetry
|
|
272
272
|
}) {
|
|
273
|
-
const { t } =
|
|
273
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
274
274
|
const style = STATUS_STYLES[status];
|
|
275
275
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
276
276
|
"div",
|
|
@@ -311,7 +311,7 @@ function FollowModeBar({
|
|
|
311
311
|
followedClientId,
|
|
312
312
|
onFollow
|
|
313
313
|
}) {
|
|
314
|
-
const { t } =
|
|
314
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
315
315
|
if (presences.length === 0) {
|
|
316
316
|
return null;
|
|
317
317
|
}
|
|
@@ -416,7 +416,7 @@ function SectionContextMenu({
|
|
|
416
416
|
onAddSection,
|
|
417
417
|
onClose
|
|
418
418
|
}) {
|
|
419
|
-
const { t } =
|
|
419
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
420
420
|
React108.useEffect(() => {
|
|
421
421
|
const onKeyDown = (event) => {
|
|
422
422
|
if (event.key === "Escape") {
|
|
@@ -517,7 +517,7 @@ function SectionHeader({
|
|
|
517
517
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
518
518
|
lu.LuChevronDown,
|
|
519
519
|
{
|
|
520
|
-
className:
|
|
520
|
+
className: chunkAIA7CY5U_js.cn(
|
|
521
521
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
522
522
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
523
523
|
)
|
|
@@ -592,7 +592,7 @@ function SlideContextMenu({
|
|
|
592
592
|
onAddSection,
|
|
593
593
|
onClose
|
|
594
594
|
}) {
|
|
595
|
-
const { t } =
|
|
595
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
596
596
|
const selected = state.selectedIndexes;
|
|
597
597
|
const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
|
|
598
598
|
const entries = pptx.buildSlidePaneContextMenuEntries({
|
|
@@ -697,7 +697,7 @@ function LazyThumbnailInner({
|
|
|
697
697
|
}
|
|
698
698
|
var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
|
|
699
699
|
function declaredSectionFacts(groups, sectionId) {
|
|
700
|
-
const declared = groups.filter((group) => group.id !==
|
|
700
|
+
const declared = groups.filter((group) => group.id !== chunkAIA7CY5U_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkAIA7CY5U_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
701
701
|
return {
|
|
702
702
|
isDeclared: declared.includes(sectionId),
|
|
703
703
|
index: declared.indexOf(sectionId),
|
|
@@ -754,7 +754,7 @@ function SlideItemInner({
|
|
|
754
754
|
onDrop,
|
|
755
755
|
slideRef
|
|
756
756
|
}) {
|
|
757
|
-
const { t } =
|
|
757
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
758
758
|
const isHidden = Boolean(slide.hidden);
|
|
759
759
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
760
760
|
const handleContextMenu = React108.useCallback(
|
|
@@ -782,7 +782,7 @@ function SlideItemInner({
|
|
|
782
782
|
"data-pptx-chrome": "slide-row",
|
|
783
783
|
"aria-describedby": cue.labelId,
|
|
784
784
|
"data-pptx-slide-hidden": cue.marker,
|
|
785
|
-
className:
|
|
785
|
+
className: chunkAIA7CY5U_js.cn(
|
|
786
786
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
787
787
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
788
788
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -804,7 +804,7 @@ function SlideItemInner({
|
|
|
804
804
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
805
805
|
"span",
|
|
806
806
|
{
|
|
807
|
-
className:
|
|
807
|
+
className: chunkAIA7CY5U_js.cn(
|
|
808
808
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
809
809
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
810
810
|
),
|
|
@@ -827,7 +827,7 @@ function SlideItemInner({
|
|
|
827
827
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
828
828
|
"div",
|
|
829
829
|
{
|
|
830
|
-
className:
|
|
830
|
+
className: chunkAIA7CY5U_js.cn(
|
|
831
831
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
832
832
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
833
833
|
),
|
|
@@ -997,11 +997,10 @@ function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionColl
|
|
|
997
997
|
var EMPTY_TEMPLATE_ELEMENTS = [];
|
|
998
998
|
var VIRTUALIZATION_THRESHOLD = pptx.SLIDE_VIRTUALIZATION_THRESHOLD;
|
|
999
999
|
function SlidesPaneSidebar(props) {
|
|
1000
|
-
const
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
);
|
|
1004
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(SlidesPaneSidebarContent, { ...props }) });
|
|
1000
|
+
const inherited = React108.useContext(chunk5CJHRYFK_js.ElementRenderErrorReportingContext);
|
|
1001
|
+
const reporter = props.onElementRenderError ?? inherited?.onElementRenderError;
|
|
1002
|
+
const errorReporting = React108.useMemo(() => ({ onElementRenderError: reporter }), [reporter]);
|
|
1003
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(SlidesPaneSidebarContent, { ...props }) });
|
|
1005
1004
|
}
|
|
1006
1005
|
function SlidesPaneSidebarContent({
|
|
1007
1006
|
slides,
|
|
@@ -1032,8 +1031,8 @@ function SlidesPaneSidebarContent({
|
|
|
1032
1031
|
fieldContext,
|
|
1033
1032
|
tableStyleContext
|
|
1034
1033
|
}) {
|
|
1035
|
-
const { t } =
|
|
1036
|
-
const collab =
|
|
1034
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
1035
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
1037
1036
|
const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
|
|
1038
1037
|
const renameInputRef = React108.useRef(null);
|
|
1039
1038
|
const slidePresenceMap = React108.useMemo(() => {
|
|
@@ -1058,7 +1057,7 @@ function SlidesPaneSidebarContent({
|
|
|
1058
1057
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
1059
1058
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
1060
1059
|
);
|
|
1061
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
1060
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkAIA7CY5U_js.DEFAULT_SECTION_GROUP_ID);
|
|
1062
1061
|
const {
|
|
1063
1062
|
collapsedSections,
|
|
1064
1063
|
renamingSectionId,
|
|
@@ -1128,7 +1127,7 @@ function SlidesPaneSidebarContent({
|
|
|
1128
1127
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
1129
1128
|
);
|
|
1130
1129
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
1131
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
1130
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk5CJHRYFK_js.useVirtualizedSlides({
|
|
1132
1131
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
1133
1132
|
itemHeight: estimatedItemHeight
|
|
1134
1133
|
});
|
|
@@ -1413,7 +1412,7 @@ function SlideTemplatePreview({
|
|
|
1413
1412
|
transformOrigin: "top left"
|
|
1414
1413
|
},
|
|
1415
1414
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1416
|
-
|
|
1415
|
+
chunk5CJHRYFK_js.StaticElementRenderer,
|
|
1417
1416
|
{
|
|
1418
1417
|
element,
|
|
1419
1418
|
activeSlide: previewSlide,
|
|
@@ -1482,8 +1481,8 @@ function SlideTemplateGalleryDialog({
|
|
|
1482
1481
|
onInsert,
|
|
1483
1482
|
scheme
|
|
1484
1483
|
}) {
|
|
1485
|
-
const { t } =
|
|
1486
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
1484
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
1485
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
|
|
1487
1486
|
const [selected, setSelected] = React108.useState(null);
|
|
1488
1487
|
const dialogRef = React108.useRef(null);
|
|
1489
1488
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -1568,7 +1567,7 @@ function SlideTemplateGalleryDialog({
|
|
|
1568
1567
|
onInsert(spec.id);
|
|
1569
1568
|
onClose();
|
|
1570
1569
|
},
|
|
1571
|
-
className:
|
|
1570
|
+
className: chunkAIA7CY5U_js.cn(
|
|
1572
1571
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
1573
1572
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
1574
1573
|
),
|
|
@@ -1832,7 +1831,7 @@ function nowLocalInputValue() {
|
|
|
1832
1831
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
1833
1832
|
}
|
|
1834
1833
|
function DateTimeFieldDialog(p) {
|
|
1835
|
-
const { t } =
|
|
1834
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
1836
1835
|
const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
|
|
1837
1836
|
const [dateFormat, setDateFormat] = React108.useState("locale");
|
|
1838
1837
|
const confirmDatePicker = React108.useCallback(() => {
|
|
@@ -1938,7 +1937,7 @@ function useViewerCustomizationContext() {
|
|
|
1938
1937
|
return React108.useContext(ViewerCustomizationContext);
|
|
1939
1938
|
}
|
|
1940
1939
|
function InsertSection(p) {
|
|
1941
|
-
const { t } =
|
|
1940
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
1942
1941
|
const customization = useViewerCustomizationContext();
|
|
1943
1942
|
const ref = React108.useRef(null);
|
|
1944
1943
|
const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
|
|
@@ -2087,8 +2086,8 @@ function MobileSheet({
|
|
|
2087
2086
|
headerRight
|
|
2088
2087
|
}) {
|
|
2089
2088
|
const sheetRef = React108.useRef(null);
|
|
2090
|
-
const { t } =
|
|
2091
|
-
const { dragY, dragging, handlers } =
|
|
2089
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2090
|
+
const { dragY, dragging, handlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onClose);
|
|
2092
2091
|
useModalFocus(open, sheetRef, onClose);
|
|
2093
2092
|
if (!open) {
|
|
2094
2093
|
return null;
|
|
@@ -2112,7 +2111,7 @@ function MobileSheet({
|
|
|
2112
2111
|
"aria-modal": "true",
|
|
2113
2112
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
2114
2113
|
tabIndex: -1,
|
|
2115
|
-
className:
|
|
2114
|
+
className: chunkAIA7CY5U_js.cn(
|
|
2116
2115
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
2117
2116
|
"animate-in slide-in-from-bottom duration-200",
|
|
2118
2117
|
className
|
|
@@ -2159,7 +2158,7 @@ function MobileSheet({
|
|
|
2159
2158
|
] });
|
|
2160
2159
|
}
|
|
2161
2160
|
function MobileInsertSheet(p) {
|
|
2162
|
-
const { t } =
|
|
2161
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2163
2162
|
const close = () => p.onCloseMobileInsert?.();
|
|
2164
2163
|
const customization = useViewerCustomizationContext();
|
|
2165
2164
|
const [dateOpen, setDateOpen] = React108.useState(false);
|
|
@@ -2235,7 +2234,7 @@ function MobileInsertSheet(p) {
|
|
|
2235
2234
|
] });
|
|
2236
2235
|
}
|
|
2237
2236
|
function AnimationsSection(p) {
|
|
2238
|
-
const { t } =
|
|
2237
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2239
2238
|
const ref = React108.useRef(null);
|
|
2240
2239
|
const [previewActive, setPreviewActive] = React108.useState(false);
|
|
2241
2240
|
const timer = React108.useRef(void 0);
|
|
@@ -2316,7 +2315,7 @@ function WebHomeControls({
|
|
|
2316
2315
|
onPopup,
|
|
2317
2316
|
layoutArtwork
|
|
2318
2317
|
}) {
|
|
2319
|
-
const { t } =
|
|
2318
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2320
2319
|
const ref = React108.useRef(null);
|
|
2321
2320
|
React108.useEffect(() => {
|
|
2322
2321
|
if (ref.current) {
|
|
@@ -2357,7 +2356,7 @@ function WebHomeControls({
|
|
|
2357
2356
|
function ShapeArrangeExtras(p) {
|
|
2358
2357
|
const commands = useShapeFormatContext();
|
|
2359
2358
|
const crop = commands?.crop;
|
|
2360
|
-
const { isHidden } =
|
|
2359
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
|
|
2361
2360
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
2362
2361
|
const controls = React108.useMemo(
|
|
2363
2362
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -2408,7 +2407,7 @@ function ShapeArrangeExtras(p) {
|
|
|
2408
2407
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
|
|
2409
2408
|
}
|
|
2410
2409
|
function ArrangeSection(p) {
|
|
2411
|
-
const { t } =
|
|
2410
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2412
2411
|
const {
|
|
2413
2412
|
onAlignElements,
|
|
2414
2413
|
onDistributeElements,
|
|
@@ -2515,7 +2514,7 @@ function RibbonGallery({
|
|
|
2515
2514
|
tagControl = true,
|
|
2516
2515
|
onCommand
|
|
2517
2516
|
}) {
|
|
2518
|
-
const { t } =
|
|
2517
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2519
2518
|
const ref = React108.useRef(null);
|
|
2520
2519
|
const commands = useRibbonGalleryCommands();
|
|
2521
2520
|
const context = commands?.context;
|
|
@@ -2650,7 +2649,7 @@ function WebRibbonToggle({
|
|
|
2650
2649
|
);
|
|
2651
2650
|
}
|
|
2652
2651
|
function TransitionsSection(p) {
|
|
2653
|
-
const { t } =
|
|
2652
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2654
2653
|
const ref = React108.useRef(null);
|
|
2655
2654
|
const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
2656
2655
|
const transition = p.activeSlide?.transition;
|
|
@@ -2692,7 +2691,7 @@ function TransitionsSection(p) {
|
|
|
2692
2691
|
case "soundPreview": {
|
|
2693
2692
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
2694
2693
|
if (url) {
|
|
2695
|
-
|
|
2694
|
+
chunk5CJHRYFK_js.playAnimationSound(url);
|
|
2696
2695
|
}
|
|
2697
2696
|
break;
|
|
2698
2697
|
}
|
|
@@ -2711,7 +2710,7 @@ function TransitionsSection(p) {
|
|
|
2711
2710
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
|
|
2712
2711
|
}
|
|
2713
2712
|
function DesignSection(p) {
|
|
2714
|
-
const { t } =
|
|
2713
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2715
2714
|
const actions = {
|
|
2716
2715
|
"design.themes.browseThemes": p.onToggleThemeGallery,
|
|
2717
2716
|
"design.themes.editTheme": p.onToggleThemeEditor,
|
|
@@ -2774,7 +2773,7 @@ function useRecentColors() {
|
|
|
2774
2773
|
return React108.useContext(RecentColorsContext);
|
|
2775
2774
|
}
|
|
2776
2775
|
function DrawSection(p) {
|
|
2777
|
-
const { t } =
|
|
2776
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2778
2777
|
const { pushColor, recentColors } = useRecentColors();
|
|
2779
2778
|
const ref = React108.useRef(null);
|
|
2780
2779
|
React108.useEffect(() => {
|
|
@@ -2872,7 +2871,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
|
|
|
2872
2871
|
);
|
|
2873
2872
|
var cardClass = "border border-border bg-card p-6 text-card-foreground";
|
|
2874
2873
|
function AccountPage() {
|
|
2875
|
-
const { t } =
|
|
2874
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
2876
2875
|
const accountAuth = React108.useContext(AccountAuthContext);
|
|
2877
2876
|
const storage = useViewerStorage();
|
|
2878
2877
|
const cloud = useViewerCloudFiles();
|
|
@@ -2900,7 +2899,7 @@ function AccountPage() {
|
|
|
2900
2899
|
refreshUsage();
|
|
2901
2900
|
setTimeout(() => setCleared(false), 4e3);
|
|
2902
2901
|
};
|
|
2903
|
-
const version = "4.
|
|
2902
|
+
const version = "4.77.0" ;
|
|
2904
2903
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2905
2904
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
2906
2905
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -2940,7 +2939,7 @@ function AccountPage() {
|
|
|
2940
2939
|
"aria-label": color,
|
|
2941
2940
|
"aria-pressed": profile.avatarColor === color,
|
|
2942
2941
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
2943
|
-
className:
|
|
2942
|
+
className: chunkAIA7CY5U_js.cn(
|
|
2944
2943
|
"size-7 rounded-full border-2 transition-transform",
|
|
2945
2944
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
2946
2945
|
),
|
|
@@ -3015,7 +3014,7 @@ function BackstageAction(props) {
|
|
|
3015
3014
|
] });
|
|
3016
3015
|
}
|
|
3017
3016
|
function BackstageNewGallery(props) {
|
|
3018
|
-
const { t } =
|
|
3017
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3019
3018
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3020
3019
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
|
|
3021
3020
|
/* @__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(
|
|
@@ -3041,7 +3040,7 @@ function BackstageNewGallery(props) {
|
|
|
3041
3040
|
] });
|
|
3042
3041
|
}
|
|
3043
3042
|
function BackstageRecentList(props) {
|
|
3044
|
-
const { t } =
|
|
3043
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3045
3044
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
|
|
3046
3045
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
|
|
3047
3046
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
|
|
@@ -3095,7 +3094,7 @@ function BackstageCards({
|
|
|
3095
3094
|
props,
|
|
3096
3095
|
run
|
|
3097
3096
|
}) {
|
|
3098
|
-
const { t } =
|
|
3097
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3099
3098
|
const handlers = {
|
|
3100
3099
|
protect: props.onOpenPasswordProtection,
|
|
3101
3100
|
inspect: props.onOpenDocumentProperties,
|
|
@@ -3157,7 +3156,7 @@ function BackstageNavIcon({ page }) {
|
|
|
3157
3156
|
return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
|
|
3158
3157
|
}
|
|
3159
3158
|
function FileSection(p) {
|
|
3160
|
-
const { t, locale } =
|
|
3159
|
+
const { t, locale } = chunkAIA7CY5U_js.useTranslation();
|
|
3161
3160
|
const [requestedPage, setRequestedPage] = React108.useState("home");
|
|
3162
3161
|
const customization = useViewerCustomizationContext();
|
|
3163
3162
|
const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
|
|
@@ -3165,7 +3164,7 @@ function FileSection(p) {
|
|
|
3165
3164
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
3166
3165
|
const [query, setQuery] = React108.useState("");
|
|
3167
3166
|
const [recent, setRecent] = React108.useState([]);
|
|
3168
|
-
const { isHidden } =
|
|
3167
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
|
|
3169
3168
|
const exportHidden = isHidden("export");
|
|
3170
3169
|
const storage = useViewerStorage();
|
|
3171
3170
|
const cloud = useViewerCloudFiles();
|
|
@@ -3434,7 +3433,7 @@ function RibbonMenu({
|
|
|
3434
3433
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3435
3434
|
"div",
|
|
3436
3435
|
{
|
|
3437
|
-
className:
|
|
3436
|
+
className: chunkAIA7CY5U_js.cn("fixed z-50", className),
|
|
3438
3437
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
3439
3438
|
children
|
|
3440
3439
|
}
|
|
@@ -3444,7 +3443,7 @@ var THUMB_WIDTH = 128;
|
|
|
3444
3443
|
var THUMB_HEIGHT = 72;
|
|
3445
3444
|
var MAX_PREVIEW_ELEMENTS = 100;
|
|
3446
3445
|
function LayoutGalleryMenu(p) {
|
|
3447
|
-
const { t } =
|
|
3446
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3448
3447
|
return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3449
3448
|
"div",
|
|
3450
3449
|
{
|
|
@@ -3460,7 +3459,7 @@ function LayoutGalleryMenu(p) {
|
|
|
3460
3459
|
type: "button",
|
|
3461
3460
|
"aria-current": isCurrent ? "true" : void 0,
|
|
3462
3461
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
3463
|
-
className:
|
|
3462
|
+
className: chunkAIA7CY5U_js.cn(
|
|
3464
3463
|
"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",
|
|
3465
3464
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
3466
3465
|
),
|
|
@@ -3534,7 +3533,7 @@ function LayoutArtwork({
|
|
|
3534
3533
|
backgroundColor
|
|
3535
3534
|
};
|
|
3536
3535
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3537
|
-
|
|
3536
|
+
chunk5CJHRYFK_js.StaticElementRenderer,
|
|
3538
3537
|
{
|
|
3539
3538
|
element,
|
|
3540
3539
|
activeSlide: slide,
|
|
@@ -3809,7 +3808,7 @@ function WebRibbonSection({
|
|
|
3809
3808
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
|
|
3810
3809
|
}
|
|
3811
3810
|
function ReviewSection(p) {
|
|
3812
|
-
const { t } =
|
|
3811
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3813
3812
|
const [activeCommentId, setActiveCommentId] = React108.useState(null);
|
|
3814
3813
|
React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
|
|
3815
3814
|
const host = p.commentsHost;
|
|
@@ -3869,7 +3868,7 @@ function SlideShowOptions({
|
|
|
3869
3868
|
children
|
|
3870
3869
|
}) {
|
|
3871
3870
|
const ref = React108.useRef(null);
|
|
3872
|
-
const { t } =
|
|
3871
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3873
3872
|
React108.useLayoutEffect(() => {
|
|
3874
3873
|
if (!ref.current) {
|
|
3875
3874
|
return;
|
|
@@ -3888,8 +3887,8 @@ function SlideShowOptions({
|
|
|
3888
3887
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
|
|
3889
3888
|
}
|
|
3890
3889
|
function SubtitleSettingsControl() {
|
|
3891
|
-
const { t } =
|
|
3892
|
-
const supplied = React108.useContext(
|
|
3890
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3891
|
+
const supplied = React108.useContext(chunk5CJHRYFK_js.ViewerOptionsStoreContext);
|
|
3893
3892
|
const fallback = React108.useRef(null);
|
|
3894
3893
|
if (!supplied) {
|
|
3895
3894
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -3922,8 +3921,8 @@ function SubtitleSettingsControl() {
|
|
|
3922
3921
|
);
|
|
3923
3922
|
}
|
|
3924
3923
|
function SlideShowSection(p) {
|
|
3925
|
-
const { t } =
|
|
3926
|
-
const { isHidden } =
|
|
3924
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
3925
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
|
|
3927
3926
|
const actions = {
|
|
3928
3927
|
"slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
|
|
3929
3928
|
"slideShow.startSlideShow.fromCurrent": p.onPresent,
|
|
@@ -4167,7 +4166,7 @@ function FontFormatGroup(p) {
|
|
|
4167
4166
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
|
|
4168
4167
|
}
|
|
4169
4168
|
function FontPickerGroup(p) {
|
|
4170
|
-
const { t } =
|
|
4169
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4171
4170
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
4172
4171
|
const { onFamily, onSize } = p;
|
|
4173
4172
|
const controls = React108.useMemo(
|
|
@@ -4190,7 +4189,7 @@ function FontPickerGroup(p) {
|
|
|
4190
4189
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
|
|
4191
4190
|
}
|
|
4192
4191
|
function ParagraphGroup(p) {
|
|
4193
|
-
const { t } =
|
|
4192
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4194
4193
|
const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
|
|
4195
4194
|
const commands = useRibbonGalleryCommands();
|
|
4196
4195
|
const align = pptx.paragraphHomeAlign(effectiveTs?.align);
|
|
@@ -4291,7 +4290,7 @@ function useParagraphListKind(element) {
|
|
|
4291
4290
|
return React108.useSyncExternalStore(subscribe, read, readServer);
|
|
4292
4291
|
}
|
|
4293
4292
|
function TextSection(p) {
|
|
4294
|
-
const { t } =
|
|
4293
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4295
4294
|
const hasSel = Boolean(p.selectedElement);
|
|
4296
4295
|
const canMut = hasSel && p.canEdit;
|
|
4297
4296
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
@@ -4367,7 +4366,7 @@ function TextSection(p) {
|
|
|
4367
4366
|
] });
|
|
4368
4367
|
}
|
|
4369
4368
|
function ViewSection(p) {
|
|
4370
|
-
const { t } =
|
|
4369
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4371
4370
|
const ref = React108.useRef(null);
|
|
4372
4371
|
React108.useEffect(() => {
|
|
4373
4372
|
const host = ref.current;
|
|
@@ -4440,10 +4439,10 @@ var MENU_ITEMS = [
|
|
|
4440
4439
|
{ key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
|
|
4441
4440
|
];
|
|
4442
4441
|
function MobileMenuSheet(props) {
|
|
4443
|
-
const { t } =
|
|
4442
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4444
4443
|
const { open, onClose } = props;
|
|
4445
4444
|
const [active, setActive] = React108.useState("home");
|
|
4446
|
-
const { isTabVisible } =
|
|
4445
|
+
const { isTabVisible } = chunk5CJHRYFK_js.useToolbarVisibility(props.hiddenActions);
|
|
4447
4446
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4448
4447
|
MobileSheet,
|
|
4449
4448
|
{
|
|
@@ -4457,7 +4456,7 @@ function MobileMenuSheet(props) {
|
|
|
4457
4456
|
{
|
|
4458
4457
|
type: "button",
|
|
4459
4458
|
onClick: () => setActive(active === key ? null : key),
|
|
4460
|
-
className:
|
|
4459
|
+
className: chunkAIA7CY5U_js.cn(
|
|
4461
4460
|
"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]",
|
|
4462
4461
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
4463
4462
|
),
|
|
@@ -4732,10 +4731,10 @@ function MobileSectionBody({
|
|
|
4732
4731
|
}
|
|
4733
4732
|
}
|
|
4734
4733
|
function MobileToolbar(props) {
|
|
4735
|
-
const { t } =
|
|
4734
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4736
4735
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
4737
4736
|
const [menuOpen, setMenuOpen] = React108.useState(false);
|
|
4738
|
-
const { isHidden } =
|
|
4737
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(props.hiddenActions);
|
|
4739
4738
|
const showEdit = mode === "edit" || mode === "master";
|
|
4740
4739
|
const hidden = [];
|
|
4741
4740
|
if (isHidden("undo")) {
|
|
@@ -4781,8 +4780,8 @@ function MobileToolbar(props) {
|
|
|
4781
4780
|
] });
|
|
4782
4781
|
}
|
|
4783
4782
|
function ChartSelectionStrip() {
|
|
4784
|
-
const { t } =
|
|
4785
|
-
const commands =
|
|
4783
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4784
|
+
const commands = chunk5CJHRYFK_js.useChartFormatContext();
|
|
4786
4785
|
const chart = commands?.chart;
|
|
4787
4786
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
4788
4787
|
const controls = React108.useMemo(
|
|
@@ -4813,7 +4812,7 @@ function PictureSizeStrip({
|
|
|
4813
4812
|
hiddenActions
|
|
4814
4813
|
}) {
|
|
4815
4814
|
const crop = useShapeFormatContext()?.crop;
|
|
4816
|
-
const { isHidden } =
|
|
4815
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(hiddenActions);
|
|
4817
4816
|
const controls = React108.useMemo(
|
|
4818
4817
|
() => pptx.pictureSizeHomeControls({
|
|
4819
4818
|
editable: Boolean(crop),
|
|
@@ -4830,7 +4829,7 @@ function PictureSizeStrip({
|
|
|
4830
4829
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
|
|
4831
4830
|
}
|
|
4832
4831
|
function useTranslateOr() {
|
|
4833
|
-
const { t } =
|
|
4832
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4834
4833
|
return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
|
|
4835
4834
|
}
|
|
4836
4835
|
function ContextualTabSection({
|
|
@@ -4853,7 +4852,7 @@ function ContextualTabSection({
|
|
|
4853
4852
|
)) });
|
|
4854
4853
|
}
|
|
4855
4854
|
function DrawingGroup(p) {
|
|
4856
|
-
const { t } =
|
|
4855
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4857
4856
|
const { recentColors, pushColor } = useRecentColors();
|
|
4858
4857
|
const themeColors = useThemeColorMap();
|
|
4859
4858
|
const commands = useRibbonGalleryCommands();
|
|
@@ -4939,7 +4938,7 @@ function DrawingGroup(p) {
|
|
|
4939
4938
|
] });
|
|
4940
4939
|
}
|
|
4941
4940
|
function EditingSection(p) {
|
|
4942
|
-
const { t } =
|
|
4941
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4943
4942
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
4944
4943
|
const controls = React108.useMemo(
|
|
4945
4944
|
() => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
|
|
@@ -4987,7 +4986,7 @@ var RIBBON_OVERLAY_CLASS = 'absolute inset-x-0 top-full z-[35] border-b border-b
|
|
|
4987
4986
|
function RibbonRevealStrip({
|
|
4988
4987
|
ribbon
|
|
4989
4988
|
}) {
|
|
4990
|
-
const { t } =
|
|
4989
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
4991
4990
|
const label = t(pptx.RIBBON_DISPLAY_REVEAL_LABEL_KEY);
|
|
4992
4991
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4993
4992
|
"button",
|
|
@@ -5006,7 +5005,7 @@ function RibbonDisplayButton({
|
|
|
5006
5005
|
ribbon,
|
|
5007
5006
|
state
|
|
5008
5007
|
}) {
|
|
5009
|
-
const { t } =
|
|
5008
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5010
5009
|
const label = t(pptx.RIBBON_DISPLAY_OPTIONS_LABEL_KEY);
|
|
5011
5010
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5012
5011
|
"button",
|
|
@@ -5018,7 +5017,7 @@ function RibbonDisplayButton({
|
|
|
5018
5017
|
title: label,
|
|
5019
5018
|
"data-pptx-chrome": "ribbon-display-options",
|
|
5020
5019
|
onClick: () => ribbon.toggleMenu(),
|
|
5021
|
-
className:
|
|
5020
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5022
5021
|
"mx-1 inline-flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded-sm text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
5023
5022
|
state.menuOpen && "bg-accent text-foreground"
|
|
5024
5023
|
),
|
|
@@ -5034,7 +5033,7 @@ function RibbonDisplayButton({
|
|
|
5034
5033
|
strokeLinecap: "round",
|
|
5035
5034
|
strokeLinejoin: "round",
|
|
5036
5035
|
"aria-hidden": "true",
|
|
5037
|
-
className:
|
|
5036
|
+
className: chunkAIA7CY5U_js.cn(state.effectiveMode === "tabs" && "rotate-180"),
|
|
5038
5037
|
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m4 6 4 4 4-4" })
|
|
5039
5038
|
}
|
|
5040
5039
|
)
|
|
@@ -5045,7 +5044,7 @@ function RibbonDisplayMenu({
|
|
|
5045
5044
|
ribbon,
|
|
5046
5045
|
state
|
|
5047
5046
|
}) {
|
|
5048
|
-
const { t } =
|
|
5047
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5049
5048
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5050
5049
|
"div",
|
|
5051
5050
|
{
|
|
@@ -5075,7 +5074,7 @@ function RibbonDisplayMenu({
|
|
|
5075
5074
|
strokeLinecap: "round",
|
|
5076
5075
|
strokeLinejoin: "round",
|
|
5077
5076
|
"aria-hidden": "true",
|
|
5078
|
-
className:
|
|
5077
|
+
className: chunkAIA7CY5U_js.cn("shrink-0", !item.checked && "invisible"),
|
|
5079
5078
|
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m3 8.5 3 3 7-7" })
|
|
5080
5079
|
}
|
|
5081
5080
|
),
|
|
@@ -5090,8 +5089,8 @@ function RibbonDisplayMenu({
|
|
|
5090
5089
|
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";
|
|
5091
5090
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
5092
5091
|
function RibbonTabBar(p) {
|
|
5093
|
-
const { t } =
|
|
5094
|
-
const viewerOptions =
|
|
5092
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5093
|
+
const viewerOptions = chunk5CJHRYFK_js.useViewerOptionsContext();
|
|
5095
5094
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5096
5095
|
"div",
|
|
5097
5096
|
{
|
|
@@ -5099,7 +5098,7 @@ function RibbonTabBar(p) {
|
|
|
5099
5098
|
"data-pptx-chrome": "ribbon-tabs",
|
|
5100
5099
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
5101
5100
|
children: [
|
|
5102
|
-
|
|
5101
|
+
chunkAIA7CY5U_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
5103
5102
|
const selected = p.activeSection === s.id;
|
|
5104
5103
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5105
5104
|
"button",
|
|
@@ -5110,7 +5109,7 @@ function RibbonTabBar(p) {
|
|
|
5110
5109
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
5111
5110
|
onClick: () => p.onSelectSection(s.id),
|
|
5112
5111
|
onDoubleClick: s.id === "file" ? void 0 : () => p.onToggleCollapsed?.(),
|
|
5113
|
-
className:
|
|
5112
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5114
5113
|
TAB_BASE,
|
|
5115
5114
|
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"
|
|
5116
5115
|
),
|
|
@@ -5131,7 +5130,7 @@ function RibbonTabBar(p) {
|
|
|
5131
5130
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
5132
5131
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
5133
5132
|
onDoubleClick: () => p.onToggleCollapsed?.(),
|
|
5134
|
-
className:
|
|
5133
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5135
5134
|
TAB_BASE,
|
|
5136
5135
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
5137
5136
|
),
|
|
@@ -5153,7 +5152,7 @@ function RibbonTabBar(p) {
|
|
|
5153
5152
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
5154
5153
|
onClick: () => p.onSelectContextual(id),
|
|
5155
5154
|
onDoubleClick: () => p.onToggleCollapsed?.(),
|
|
5156
|
-
className:
|
|
5155
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5157
5156
|
TAB_BASE,
|
|
5158
5157
|
"text-primary",
|
|
5159
5158
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -5170,10 +5169,10 @@ function RibbonTabBar(p) {
|
|
|
5170
5169
|
);
|
|
5171
5170
|
}
|
|
5172
5171
|
function TabRowActions(p) {
|
|
5173
|
-
const { t } =
|
|
5174
|
-
const collab =
|
|
5172
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5173
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
5175
5174
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
5176
|
-
const { isHidden } =
|
|
5175
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
|
|
5177
5176
|
const customization = useViewerCustomizationContext();
|
|
5178
5177
|
const ref = React108.useRef(null);
|
|
5179
5178
|
const handlers = React108.useRef(p);
|
|
@@ -5227,8 +5226,8 @@ function TabRowActions(p) {
|
|
|
5227
5226
|
] });
|
|
5228
5227
|
}
|
|
5229
5228
|
function TitleBarElement(p) {
|
|
5230
|
-
const { t } =
|
|
5231
|
-
const options =
|
|
5229
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5230
|
+
const options = chunk5CJHRYFK_js.useViewerOptionsContext();
|
|
5232
5231
|
const customization = useViewerCustomizationContext();
|
|
5233
5232
|
const ref = React108.useRef(null);
|
|
5234
5233
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -5293,7 +5292,7 @@ function CustomShowsControls({
|
|
|
5293
5292
|
onDeleteActiveCustomShow,
|
|
5294
5293
|
onToggleCurrentSlideInActiveShow
|
|
5295
5294
|
}) {
|
|
5296
|
-
const { t } =
|
|
5295
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5297
5296
|
if (customShows.length > 0) {
|
|
5298
5297
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5299
5298
|
sep,
|
|
@@ -5348,7 +5347,7 @@ function CustomShowsControls({
|
|
|
5348
5347
|
{
|
|
5349
5348
|
type: "button",
|
|
5350
5349
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
5351
|
-
className:
|
|
5350
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5352
5351
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
5353
5352
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
5354
5353
|
),
|
|
@@ -5387,7 +5386,7 @@ function PresentDropdown({
|
|
|
5387
5386
|
onToggleSubtitles,
|
|
5388
5387
|
showSubtitles
|
|
5389
5388
|
}) {
|
|
5390
|
-
const { t } =
|
|
5389
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5391
5390
|
const [open, setOpen] = React108.useState(false);
|
|
5392
5391
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
5393
5392
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
|
|
@@ -5396,7 +5395,7 @@ function PresentDropdown({
|
|
|
5396
5395
|
{
|
|
5397
5396
|
type: "button",
|
|
5398
5397
|
onClick: onPresent,
|
|
5399
|
-
className:
|
|
5398
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5400
5399
|
"px-2 py-1 transition-colors",
|
|
5401
5400
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5402
5401
|
),
|
|
@@ -5409,7 +5408,7 @@ function PresentDropdown({
|
|
|
5409
5408
|
{
|
|
5410
5409
|
type: "button",
|
|
5411
5410
|
onClick: () => setOpen((prev) => !prev),
|
|
5412
|
-
className:
|
|
5411
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5413
5412
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
5414
5413
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5415
5414
|
),
|
|
@@ -5537,7 +5536,7 @@ function ModeSwitcher({
|
|
|
5537
5536
|
onToggleSubtitles,
|
|
5538
5537
|
showSubtitles
|
|
5539
5538
|
}) {
|
|
5540
|
-
const { t } =
|
|
5539
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5541
5540
|
if (mode === "master") {
|
|
5542
5541
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
|
|
5543
5542
|
/* @__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") }),
|
|
@@ -5575,7 +5574,7 @@ var EXPORT_CARD_OF = {
|
|
|
5575
5574
|
copyImg: "copyImage"
|
|
5576
5575
|
};
|
|
5577
5576
|
function OverflowMenu(p) {
|
|
5578
|
-
const { t } =
|
|
5577
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5579
5578
|
const customization = useViewerCustomizationContext();
|
|
5580
5579
|
const offered = (k) => {
|
|
5581
5580
|
const card = EXPORT_CARD_OF[k];
|
|
@@ -5612,7 +5611,7 @@ function OverflowMenu(p) {
|
|
|
5612
5611
|
{
|
|
5613
5612
|
type: "button",
|
|
5614
5613
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
5615
|
-
className:
|
|
5614
|
+
className: chunkAIA7CY5U_js.cn(
|
|
5616
5615
|
"p-1.5 rounded transition-colors",
|
|
5617
5616
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
5618
5617
|
),
|
|
@@ -5650,7 +5649,7 @@ function OverflowMenu(p) {
|
|
|
5650
5649
|
] });
|
|
5651
5650
|
}
|
|
5652
5651
|
function ToolbarPrimaryRow(p) {
|
|
5653
|
-
const { t } =
|
|
5652
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5654
5653
|
const {
|
|
5655
5654
|
mode,
|
|
5656
5655
|
canEdit,
|
|
@@ -5659,7 +5658,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5659
5658
|
onToggleSidebar,
|
|
5660
5659
|
onToggleInspector
|
|
5661
5660
|
} = p;
|
|
5662
|
-
const collab =
|
|
5661
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
5663
5662
|
const customization = useViewerCustomizationContext();
|
|
5664
5663
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
5665
5664
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -5679,7 +5678,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5679
5678
|
{
|
|
5680
5679
|
type: "button",
|
|
5681
5680
|
onClick: onToggleSidebar,
|
|
5682
|
-
className:
|
|
5681
|
+
className: chunkAIA7CY5U_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
5683
5682
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
5684
5683
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
5685
5684
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -5740,7 +5739,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5740
5739
|
{
|
|
5741
5740
|
type: "button",
|
|
5742
5741
|
onClick: onToggleInspector,
|
|
5743
|
-
className:
|
|
5742
|
+
className: chunkAIA7CY5U_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
5744
5743
|
title: t("pptx.toolbar.toggleInspector"),
|
|
5745
5744
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
5746
5745
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -5751,7 +5750,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5751
5750
|
{
|
|
5752
5751
|
type: "button",
|
|
5753
5752
|
onClick: p.onToggleAiPanel,
|
|
5754
|
-
className:
|
|
5753
|
+
className: chunkAIA7CY5U_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
5755
5754
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
5756
5755
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
5757
5756
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -5762,7 +5761,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5762
5761
|
{
|
|
5763
5762
|
type: "button",
|
|
5764
5763
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
5765
|
-
className:
|
|
5764
|
+
className: chunkAIA7CY5U_js.cn(qab, "text-muted-foreground"),
|
|
5766
5765
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
5767
5766
|
"aria-label": t("pptx.toolbar.settings"),
|
|
5768
5767
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -5806,7 +5805,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
|
|
|
5806
5805
|
return { visible, active, fellBack, select: setChosen };
|
|
5807
5806
|
}
|
|
5808
5807
|
function HelpSection(p) {
|
|
5809
|
-
const { t } =
|
|
5808
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5810
5809
|
const groups = pptx.buildHelpRibbon(t, {
|
|
5811
5810
|
options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
|
|
5812
5811
|
});
|
|
@@ -5826,7 +5825,7 @@ function HelpSection(p) {
|
|
|
5826
5825
|
return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
|
|
5827
5826
|
}
|
|
5828
5827
|
function RecordSection(props) {
|
|
5829
|
-
const { t } =
|
|
5828
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5830
5829
|
const request = (id) => {
|
|
5831
5830
|
if (id === "record.record.fromBeginning") {
|
|
5832
5831
|
props.onRecordFromBeginning();
|
|
@@ -5959,9 +5958,9 @@ function ToolbarLateTabs({
|
|
|
5959
5958
|
}
|
|
5960
5959
|
function Toolbar(p) {
|
|
5961
5960
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
5962
|
-
const { t } =
|
|
5963
|
-
const { isTabVisible } =
|
|
5964
|
-
const viewerOptions =
|
|
5961
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
5962
|
+
const { isTabVisible } = chunk5CJHRYFK_js.useToolbarVisibility(p.hiddenActions);
|
|
5963
|
+
const viewerOptions = chunk5CJHRYFK_js.useViewerOptionsContext();
|
|
5965
5964
|
const customization = useViewerCustomizationContext();
|
|
5966
5965
|
const belowInput = React108.useMemo(
|
|
5967
5966
|
() => ({
|
|
@@ -5977,7 +5976,7 @@ function Toolbar(p) {
|
|
|
5977
5976
|
const contextual = useContextualRibbonTab(p.selectedElement, customization, fallBackHome);
|
|
5978
5977
|
const addIns = useRibbonAddInTabs(fallBackHome);
|
|
5979
5978
|
const ribbon = useRibbonDisplayFallback(p.ribbonDisplay);
|
|
5980
|
-
const ribbonState =
|
|
5979
|
+
const ribbonState = chunk5CJHRYFK_js.useController(ribbon);
|
|
5981
5980
|
const { layout, effectiveMode, peek } = ribbonState;
|
|
5982
5981
|
const detachOverflow = React108.useRef(null);
|
|
5983
5982
|
const inspector = React108.useRef({ open: p.isInspectorPaneOpen, toggle: p.onToggleInspector });
|
|
@@ -6029,7 +6028,7 @@ function Toolbar(p) {
|
|
|
6029
6028
|
"data-ribbon-display": effectiveMode,
|
|
6030
6029
|
"data-ribbon-peek": peek ? "" : void 0,
|
|
6031
6030
|
"aria-label": t("pptx.toolbar.presentationToolbarAria"),
|
|
6032
|
-
className:
|
|
6031
|
+
className: chunkAIA7CY5U_js.cn(
|
|
6033
6032
|
peekedFullScreen ? RIBBON_PEEK_ROOT_CLASS : "relative z-20 border-b border-border bg-secondary/50 overflow-visible",
|
|
6034
6033
|
!rootShown && "hidden"
|
|
6035
6034
|
),
|
|
@@ -6080,7 +6079,7 @@ function Toolbar(p) {
|
|
|
6080
6079
|
{
|
|
6081
6080
|
type: "button",
|
|
6082
6081
|
onClick: p.onToggleCompactToolbar,
|
|
6083
|
-
className:
|
|
6082
|
+
className: chunkAIA7CY5U_js.cn(
|
|
6084
6083
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
6085
6084
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
6086
6085
|
),
|
|
@@ -6110,7 +6109,7 @@ function Toolbar(p) {
|
|
|
6110
6109
|
{
|
|
6111
6110
|
ref: attachOverflow,
|
|
6112
6111
|
"data-pptx-chrome": "ribbon-content",
|
|
6113
|
-
className:
|
|
6112
|
+
className: chunkAIA7CY5U_js.cn(
|
|
6114
6113
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
6115
6114
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
6116
6115
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -6303,7 +6302,7 @@ function Toolbar(p) {
|
|
|
6303
6302
|
] });
|
|
6304
6303
|
}
|
|
6305
6304
|
function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
|
|
6306
|
-
const { t } =
|
|
6305
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
6307
6306
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6308
6307
|
"div",
|
|
6309
6308
|
{
|
|
@@ -6515,7 +6514,7 @@ function ChartQuickActionsOverlay({
|
|
|
6515
6514
|
scale: stageScale = 1,
|
|
6516
6515
|
onUpdateElement
|
|
6517
6516
|
}) {
|
|
6518
|
-
const { t } =
|
|
6517
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
6519
6518
|
const [open, setOpen] = React108.useState(null);
|
|
6520
6519
|
const hostRef = React108.useRef(null);
|
|
6521
6520
|
React108.useEffect(() => {
|
|
@@ -6686,7 +6685,7 @@ function CommentMarkersOverlay({
|
|
|
6686
6685
|
canvasSize,
|
|
6687
6686
|
onCommentMarkerClick
|
|
6688
6687
|
}) {
|
|
6689
|
-
const { t } =
|
|
6688
|
+
const { t } = chunkAIA7CY5U_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
|
|
6690
6689
|
comments,
|
|
6691
6690
|
canvasSize.width,
|
|
6692
6691
|
canvasSize.height,
|
|
@@ -6730,7 +6729,7 @@ function ConnectorEndpointOverlay({
|
|
|
6730
6729
|
canvasStageRef,
|
|
6731
6730
|
onUpdateElement
|
|
6732
6731
|
}) {
|
|
6733
|
-
const { t } =
|
|
6732
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
6734
6733
|
const [drag, setDrag] = React108.useState(null);
|
|
6735
6734
|
const candidates = React108.useMemo(
|
|
6736
6735
|
() => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
@@ -6966,7 +6965,7 @@ function DrawingOverlaySvg({
|
|
|
6966
6965
|
onPointerDown,
|
|
6967
6966
|
onPointerMove,
|
|
6968
6967
|
onPointerUp,
|
|
6969
|
-
children: isStrokeActive && liveStrokeView ?
|
|
6968
|
+
children: isStrokeActive && liveStrokeView ? chunk5CJHRYFK_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6970
6969
|
"path",
|
|
6971
6970
|
{
|
|
6972
6971
|
d: liveStrokeD,
|
|
@@ -6981,7 +6980,7 @@ function DrawingOverlaySvg({
|
|
|
6981
6980
|
}
|
|
6982
6981
|
);
|
|
6983
6982
|
}
|
|
6984
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
6983
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunkAIA7CY5U_js.GRID_SIZE, visible }) {
|
|
6985
6984
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
6986
6985
|
const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
6987
6986
|
if (!visible) {
|
|
@@ -7009,7 +7008,7 @@ function MotionPathOverlay({
|
|
|
7009
7008
|
canEdit,
|
|
7010
7009
|
onChangePath
|
|
7011
7010
|
}) {
|
|
7012
|
-
const { t } =
|
|
7011
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
7013
7012
|
const dragRef = React108.useRef(null);
|
|
7014
7013
|
const frame = {
|
|
7015
7014
|
originX: element.x + element.width / 2,
|
|
@@ -7123,7 +7122,7 @@ function MotionPathOverlay({
|
|
|
7123
7122
|
);
|
|
7124
7123
|
}
|
|
7125
7124
|
function EditPointsMenu({ menu, onRun }) {
|
|
7126
|
-
const { t } =
|
|
7125
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
7127
7126
|
const stop2 = (event) => event.stopPropagation();
|
|
7128
7127
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7129
7128
|
"div",
|
|
@@ -7169,7 +7168,7 @@ function EditPointsOverlay({
|
|
|
7169
7168
|
onCommit,
|
|
7170
7169
|
onExit
|
|
7171
7170
|
}) {
|
|
7172
|
-
const { t } =
|
|
7171
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
7173
7172
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
7174
7173
|
const svgRef = React108.useRef(null);
|
|
7175
7174
|
const latest = React108.useRef({ onCommit, onExit });
|
|
@@ -7325,7 +7324,7 @@ function FreeformToolOverlay({
|
|
|
7325
7324
|
onCommit,
|
|
7326
7325
|
onCancel
|
|
7327
7326
|
}) {
|
|
7328
|
-
const { t } =
|
|
7327
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
7329
7328
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
7330
7329
|
const svgRef = React108.useRef(null);
|
|
7331
7330
|
const latest = React108.useRef({ onCommit, onCancel });
|
|
@@ -7468,7 +7467,7 @@ function PictureCropOverlay({
|
|
|
7468
7467
|
onUpdate,
|
|
7469
7468
|
onContextMenu
|
|
7470
7469
|
}) {
|
|
7471
|
-
const { t } =
|
|
7470
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
7472
7471
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
7473
7472
|
const dragRef = React108.useRef(null);
|
|
7474
7473
|
const latest = React108.useRef({ scale, onUpdate });
|
|
@@ -7516,7 +7515,7 @@ function PictureCropOverlay({
|
|
|
7516
7515
|
};
|
|
7517
7516
|
};
|
|
7518
7517
|
const { ghost, frame, handles } = overlay;
|
|
7519
|
-
const src =
|
|
7518
|
+
const src = chunk5CJHRYFK_js.imgSrc(element);
|
|
7520
7519
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7521
7520
|
"div",
|
|
7522
7521
|
{
|
|
@@ -7692,7 +7691,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
7692
7691
|
}
|
|
7693
7692
|
);
|
|
7694
7693
|
}
|
|
7695
|
-
var HorizontalRuler = /* @__PURE__ */
|
|
7694
|
+
var HorizontalRuler = /* @__PURE__ */ chunk5CJHRYFK_js.withDisplayName(
|
|
7696
7695
|
/* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
|
|
7697
7696
|
"HorizontalRuler"
|
|
7698
7697
|
);
|
|
@@ -7766,7 +7765,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
7766
7765
|
}
|
|
7767
7766
|
);
|
|
7768
7767
|
}
|
|
7769
|
-
var VerticalRuler = /* @__PURE__ */
|
|
7768
|
+
var VerticalRuler = /* @__PURE__ */ chunk5CJHRYFK_js.withDisplayName(
|
|
7770
7769
|
/* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
|
|
7771
7770
|
"VerticalRuler"
|
|
7772
7771
|
);
|
|
@@ -7933,10 +7932,10 @@ function SelectionHandleOverlay({
|
|
|
7933
7932
|
position: "absolute",
|
|
7934
7933
|
left: element.x,
|
|
7935
7934
|
top: element.y,
|
|
7936
|
-
width: Math.max(element.width,
|
|
7937
|
-
height: Math.max(element.height,
|
|
7938
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
7939
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
7935
|
+
width: Math.max(element.width, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE),
|
|
7936
|
+
height: Math.max(element.height, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE),
|
|
7937
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE)}px`,
|
|
7938
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunkAIA7CY5U_js.MIN_ELEMENT_SIZE)}px`,
|
|
7940
7939
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
7941
7940
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
7942
7941
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -7948,7 +7947,7 @@ function SelectionHandleOverlay({
|
|
|
7948
7947
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
7949
7948
|
// any realistic per-slide element count.
|
|
7950
7949
|
zIndex: 58,
|
|
7951
|
-
transform:
|
|
7950
|
+
transform: chunkAIA7CY5U_js.getElementTransform(element),
|
|
7952
7951
|
transformOrigin: "center",
|
|
7953
7952
|
// Transparent everywhere a handle button is not, so a click that
|
|
7954
7953
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -7960,14 +7959,14 @@ function SelectionHandleOverlay({
|
|
|
7960
7959
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
7961
7960
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
7962
7961
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7963
|
-
|
|
7962
|
+
chunk5CJHRYFK_js.ResizeHandles,
|
|
7964
7963
|
{
|
|
7965
7964
|
elementId: element.id,
|
|
7966
7965
|
adjustmentHandles,
|
|
7967
7966
|
onResizePointerDown,
|
|
7968
7967
|
onAdjustmentPointerDown,
|
|
7969
7968
|
rotation: element.rotation,
|
|
7970
|
-
nonRotationTransform:
|
|
7969
|
+
nonRotationTransform: chunkAIA7CY5U_js.getElementTransformWithoutRotation(element),
|
|
7971
7970
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
7972
7971
|
forcePointerEvents: true
|
|
7973
7972
|
}
|
|
@@ -8005,29 +8004,10 @@ function useCanvasEventHandlers({
|
|
|
8005
8004
|
onMoveGuide
|
|
8006
8005
|
}) {
|
|
8007
8006
|
const elementFindHighlightsMap = React108.useMemo(() => {
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
return map;
|
|
8007
|
+
if (!findResults || findResults.length === 0 || activeSlideIndex === void 0) {
|
|
8008
|
+
return /* @__PURE__ */ new Map();
|
|
8011
8009
|
}
|
|
8012
|
-
|
|
8013
|
-
const r = findResults[i];
|
|
8014
|
-
if (r.slideIndex !== activeSlideIndex) {
|
|
8015
|
-
continue;
|
|
8016
|
-
}
|
|
8017
|
-
if (!map.has(r.elementId)) {
|
|
8018
|
-
map.set(r.elementId, /* @__PURE__ */ new Map());
|
|
8019
|
-
}
|
|
8020
|
-
const elMap = map.get(r.elementId);
|
|
8021
|
-
if (!elMap.has(r.segmentIndex)) {
|
|
8022
|
-
elMap.set(r.segmentIndex, []);
|
|
8023
|
-
}
|
|
8024
|
-
elMap.get(r.segmentIndex).push({
|
|
8025
|
-
startOffset: r.startOffset,
|
|
8026
|
-
length: r.length,
|
|
8027
|
-
isCurrent: i === (findResultIndex ?? -1)
|
|
8028
|
-
});
|
|
8029
|
-
}
|
|
8030
|
-
return map;
|
|
8010
|
+
return pptx.findTextHighlightsByElement(findResults, findResultIndex ?? -1, activeSlideIndex);
|
|
8031
8011
|
}, [findResults, findResultIndex, activeSlideIndex]);
|
|
8032
8012
|
const selectedBounds = React108.useMemo(() => {
|
|
8033
8013
|
if (!selectedElement) {
|
|
@@ -8671,11 +8651,10 @@ function SlideCanvas(props) {
|
|
|
8671
8651
|
props.registerInlineEditReader
|
|
8672
8652
|
]
|
|
8673
8653
|
);
|
|
8674
|
-
const
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
);
|
|
8678
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSEIVQGH5_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) }) });
|
|
8654
|
+
const inherited = React108.useContext(chunk5CJHRYFK_js.ElementRenderErrorReportingContext);
|
|
8655
|
+
const reporter = props.onElementRenderError ?? inherited?.onElementRenderError;
|
|
8656
|
+
const errorReporting = React108.useMemo(() => ({ onElementRenderError: reporter }), [reporter]);
|
|
8657
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) }) });
|
|
8679
8658
|
}
|
|
8680
8659
|
function SlideCanvasContent({
|
|
8681
8660
|
imagePaste,
|
|
@@ -8948,7 +8927,7 @@ function SlideCanvasContent({
|
|
|
8948
8927
|
onPointerMove: handleStagePointerMove,
|
|
8949
8928
|
onPointerUp: handleStagePointerUp,
|
|
8950
8929
|
children: [
|
|
8951
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8930
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
8952
8931
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
8953
8932
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
8954
8933
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8960,7 +8939,7 @@ function SlideCanvasContent({
|
|
|
8960
8939
|
}
|
|
8961
8940
|
),
|
|
8962
8941
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8963
|
-
|
|
8942
|
+
chunk5CJHRYFK_js.ElementRenderer,
|
|
8964
8943
|
{
|
|
8965
8944
|
element,
|
|
8966
8945
|
activeSlide,
|
|
@@ -8983,7 +8962,7 @@ function SlideCanvasContent({
|
|
|
8983
8962
|
),
|
|
8984
8963
|
renderInk: false,
|
|
8985
8964
|
renderGroups: true,
|
|
8986
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8965
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkAIA7CY5U_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8987
8966
|
onResizePointerDown: stableResizePointerDown,
|
|
8988
8967
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8989
8968
|
onRotate: stableRotate,
|
|
@@ -9005,7 +8984,7 @@ function SlideCanvasContent({
|
|
|
9005
8984
|
`tpl-${element.id}`
|
|
9006
8985
|
)),
|
|
9007
8986
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
9008
|
-
|
|
8987
|
+
chunk5CJHRYFK_js.ElementRenderer,
|
|
9009
8988
|
{
|
|
9010
8989
|
element,
|
|
9011
8990
|
activeSlide,
|
|
@@ -9028,7 +9007,7 @@ function SlideCanvasContent({
|
|
|
9028
9007
|
),
|
|
9029
9008
|
renderInk: true,
|
|
9030
9009
|
renderGroups: true,
|
|
9031
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
9010
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkAIA7CY5U_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
9032
9011
|
onResizePointerDown: stableResizePointerDown,
|
|
9033
9012
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
9034
9013
|
onRotate: stableRotate,
|
|
@@ -9072,7 +9051,7 @@ function SlideCanvasContent({
|
|
|
9072
9051
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9073
9052
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
9074
9053
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9075
|
-
|
|
9054
|
+
chunk5CJHRYFK_js.ElementRenderer,
|
|
9076
9055
|
{
|
|
9077
9056
|
element: editingMember.member,
|
|
9078
9057
|
activeSlide,
|
|
@@ -9107,11 +9086,11 @@ function SlideCanvasContent({
|
|
|
9107
9086
|
`group-member-edit-${editingMember.member.id}`
|
|
9108
9087
|
)
|
|
9109
9088
|
] }),
|
|
9110
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
9089
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkAIA7CY5U_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9111
9090
|
SelectionHandleOverlay,
|
|
9112
9091
|
{
|
|
9113
9092
|
element: selectedElement,
|
|
9114
|
-
adjustmentHandles:
|
|
9093
|
+
adjustmentHandles: chunkAIA7CY5U_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
9115
9094
|
onResizePointerDown: stableResizePointerDown,
|
|
9116
9095
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
9117
9096
|
onRotate: stableRotate,
|
|
@@ -9218,14 +9197,14 @@ function SlideCanvasContent({
|
|
|
9218
9197
|
);
|
|
9219
9198
|
}
|
|
9220
9199
|
function LoadingState({ className, fontProgress }) {
|
|
9221
|
-
const { t } =
|
|
9200
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9222
9201
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9223
9202
|
"div",
|
|
9224
9203
|
{
|
|
9225
9204
|
role: "status",
|
|
9226
9205
|
"aria-live": "polite",
|
|
9227
9206
|
"aria-atomic": "true",
|
|
9228
|
-
className:
|
|
9207
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9229
9208
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
9230
9209
|
className
|
|
9231
9210
|
),
|
|
@@ -9251,7 +9230,7 @@ function ErrorState({ className, error }) {
|
|
|
9251
9230
|
{
|
|
9252
9231
|
role: "alert",
|
|
9253
9232
|
"aria-live": "assertive",
|
|
9254
|
-
className:
|
|
9233
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9255
9234
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
9256
9235
|
className
|
|
9257
9236
|
),
|
|
@@ -9260,7 +9239,7 @@ function ErrorState({ className, error }) {
|
|
|
9260
9239
|
);
|
|
9261
9240
|
}
|
|
9262
9241
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
9263
|
-
const { t } =
|
|
9242
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9264
9243
|
if (!isOpen) {
|
|
9265
9244
|
return null;
|
|
9266
9245
|
}
|
|
@@ -9282,7 +9261,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
9282
9261
|
}
|
|
9283
9262
|
)
|
|
9284
9263
|
] }),
|
|
9285
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
9264
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkAIA7CY5U_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9286
9265
|
"div",
|
|
9287
9266
|
{
|
|
9288
9267
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -9304,7 +9283,7 @@ function AccessibilityPanel({
|
|
|
9304
9283
|
reducedMotion,
|
|
9305
9284
|
onToggleReducedMotion
|
|
9306
9285
|
}) {
|
|
9307
|
-
const { t } =
|
|
9286
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9308
9287
|
if (!isOpen) {
|
|
9309
9288
|
return null;
|
|
9310
9289
|
}
|
|
@@ -9342,14 +9321,14 @@ function AccessibilityPanel({
|
|
|
9342
9321
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
9343
9322
|
"aria-checked": reducedMotion ?? false,
|
|
9344
9323
|
onClick: onToggleReducedMotion,
|
|
9345
|
-
className:
|
|
9324
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9346
9325
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
9347
9326
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
9348
9327
|
),
|
|
9349
9328
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9350
9329
|
"span",
|
|
9351
9330
|
{
|
|
9352
|
-
className:
|
|
9331
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9353
9332
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
9354
9333
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
9355
9334
|
)
|
|
@@ -9368,7 +9347,7 @@ function AccessibilityPanel({
|
|
|
9368
9347
|
"div",
|
|
9369
9348
|
{
|
|
9370
9349
|
role: "listitem",
|
|
9371
|
-
className:
|
|
9350
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9372
9351
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
9373
9352
|
/* Severity-based background and text colouring */
|
|
9374
9353
|
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"
|
|
@@ -9396,7 +9375,7 @@ function ExportProgressModal({
|
|
|
9396
9375
|
statusMessage,
|
|
9397
9376
|
onCancel
|
|
9398
9377
|
}) {
|
|
9399
|
-
const { t } =
|
|
9378
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9400
9379
|
const ref = useWebControl(
|
|
9401
9380
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
9402
9381
|
{ "export-cancel": () => onCancel() }
|
|
@@ -9404,7 +9383,7 @@ function ExportProgressModal({
|
|
|
9404
9383
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
9405
9384
|
}
|
|
9406
9385
|
function StatusBar(p) {
|
|
9407
|
-
const { t } =
|
|
9386
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9408
9387
|
const ref = React108.useRef(null);
|
|
9409
9388
|
React108.useEffect(() => {
|
|
9410
9389
|
const host = ref.current;
|
|
@@ -9486,7 +9465,7 @@ function ResizeHandle({
|
|
|
9486
9465
|
{
|
|
9487
9466
|
role: "separator",
|
|
9488
9467
|
"aria-orientation": direction,
|
|
9489
|
-
className:
|
|
9468
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9490
9469
|
// Outer container: generous hit area for easy clicking.
|
|
9491
9470
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
9492
9471
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -9497,7 +9476,7 @@ function ResizeHandle({
|
|
|
9497
9476
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9498
9477
|
"div",
|
|
9499
9478
|
{
|
|
9500
|
-
className:
|
|
9479
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9501
9480
|
"absolute transition-colors",
|
|
9502
9481
|
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"
|
|
9503
9482
|
)
|
|
@@ -9586,10 +9565,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
|
|
|
9586
9565
|
}
|
|
9587
9566
|
function ContextMenu(props) {
|
|
9588
9567
|
const { contextMenuState, mode, onClose } = props;
|
|
9589
|
-
const { t } =
|
|
9568
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9590
9569
|
const customization = useViewerCustomizationContext();
|
|
9591
9570
|
const shapeFormat = useShapeFormatContext();
|
|
9592
|
-
const chartFormat =
|
|
9571
|
+
const chartFormat = chunk5CJHRYFK_js.useChartFormatContext();
|
|
9593
9572
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
9594
9573
|
const handlers = {
|
|
9595
9574
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -9665,7 +9644,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
9665
9644
|
}
|
|
9666
9645
|
function CanvasContextMenu(props) {
|
|
9667
9646
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
9668
|
-
const { t } =
|
|
9647
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9669
9648
|
const customization = useViewerCustomizationContext();
|
|
9670
9649
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
9671
9650
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -9728,7 +9707,7 @@ function FindReplacePanel({
|
|
|
9728
9707
|
onReplaceAll,
|
|
9729
9708
|
onClose
|
|
9730
9709
|
}) {
|
|
9731
|
-
const { t } =
|
|
9710
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9732
9711
|
const searchInputRef = React108.useRef(null);
|
|
9733
9712
|
React108.useEffect(() => {
|
|
9734
9713
|
searchInputRef.current?.focus();
|
|
@@ -9919,7 +9898,7 @@ function HandoutMasterPanel({
|
|
|
9919
9898
|
onSlidesPerPageChange,
|
|
9920
9899
|
onBackgroundChange
|
|
9921
9900
|
}) {
|
|
9922
|
-
const { t } =
|
|
9901
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9923
9902
|
if (!handoutMaster) {
|
|
9924
9903
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9925
9904
|
}
|
|
@@ -9931,7 +9910,7 @@ function HandoutMasterPanel({
|
|
|
9931
9910
|
{
|
|
9932
9911
|
type: "button",
|
|
9933
9912
|
"aria-pressed": slidesPerPage === count,
|
|
9934
|
-
className:
|
|
9913
|
+
className: chunkAIA7CY5U_js.cn(
|
|
9935
9914
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9936
9915
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9937
9916
|
),
|
|
@@ -9974,7 +9953,7 @@ function NotesMasterPanel({
|
|
|
9974
9953
|
notesMaster,
|
|
9975
9954
|
onBackgroundChange
|
|
9976
9955
|
}) {
|
|
9977
|
-
const { t } =
|
|
9956
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
9978
9957
|
const placeholderLabels = React108.useMemo(() => {
|
|
9979
9958
|
if (!notesMaster?.placeholders) {
|
|
9980
9959
|
return [];
|
|
@@ -10036,7 +10015,7 @@ function SlideMastersList({
|
|
|
10036
10015
|
React108.useEffect(() => {
|
|
10037
10016
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
10038
10017
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
10039
|
-
const { t } =
|
|
10018
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
10040
10019
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10041
10020
|
slideMasters.map((master, masterIdx) => {
|
|
10042
10021
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -10049,7 +10028,7 @@ function SlideMastersList({
|
|
|
10049
10028
|
ref: isMasterActive ? activeRef : void 0,
|
|
10050
10029
|
"aria-pressed": isMasterActive,
|
|
10051
10030
|
"aria-label": master.name || t("pptx.master.master"),
|
|
10052
|
-
className:
|
|
10031
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10053
10032
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
10054
10033
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
10055
10034
|
),
|
|
@@ -10066,7 +10045,7 @@ function SlideMastersList({
|
|
|
10066
10045
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10067
10046
|
"span",
|
|
10068
10047
|
{
|
|
10069
|
-
className:
|
|
10048
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10070
10049
|
"text-[10px] font-medium",
|
|
10071
10050
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
10072
10051
|
),
|
|
@@ -10085,7 +10064,7 @@ function SlideMastersList({
|
|
|
10085
10064
|
ref: isLayoutActive ? activeRef : void 0,
|
|
10086
10065
|
"aria-pressed": isLayoutActive,
|
|
10087
10066
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
10088
|
-
className:
|
|
10067
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10089
10068
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
10090
10069
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
10091
10070
|
),
|
|
@@ -10102,7 +10081,7 @@ function SlideMastersList({
|
|
|
10102
10081
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10103
10082
|
"span",
|
|
10104
10083
|
{
|
|
10105
|
-
className:
|
|
10084
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10106
10085
|
"text-[9px]",
|
|
10107
10086
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
10108
10087
|
),
|
|
@@ -10146,7 +10125,7 @@ function MasterViewSidebar({
|
|
|
10146
10125
|
onSlidesBackgroundChange
|
|
10147
10126
|
}) {
|
|
10148
10127
|
const scrollRef = React108.useRef(null);
|
|
10149
|
-
const { t } =
|
|
10128
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
10150
10129
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
10151
10130
|
{ slideMasters },
|
|
10152
10131
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -10194,7 +10173,7 @@ function MasterViewSidebar({
|
|
|
10194
10173
|
type: "button",
|
|
10195
10174
|
role: "tab",
|
|
10196
10175
|
"aria-selected": masterViewTab === tab.key,
|
|
10197
|
-
className:
|
|
10176
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10198
10177
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
10199
10178
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
10200
10179
|
),
|
|
@@ -10296,7 +10275,7 @@ function NotesMasterCanvas({
|
|
|
10296
10275
|
notesText,
|
|
10297
10276
|
slideNumber
|
|
10298
10277
|
}) {
|
|
10299
|
-
const { t } =
|
|
10278
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
10300
10279
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10301
10280
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10302
10281
|
const scale = React108.useMemo(() => {
|
|
@@ -10556,7 +10535,7 @@ function HandoutMasterCanvas({
|
|
|
10556
10535
|
slideThumbnails,
|
|
10557
10536
|
pageNumber
|
|
10558
10537
|
}) {
|
|
10559
|
-
const { t } =
|
|
10538
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
10560
10539
|
const slideAspect = 4 / 3;
|
|
10561
10540
|
const scale = React108.useMemo(() => {
|
|
10562
10541
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10697,7 +10676,7 @@ function SectionBlock({
|
|
|
10697
10676
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10698
10677
|
lu.LuChevronDown,
|
|
10699
10678
|
{
|
|
10700
|
-
className:
|
|
10679
|
+
className: chunkAIA7CY5U_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10701
10680
|
}
|
|
10702
10681
|
),
|
|
10703
10682
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10741,12 +10720,12 @@ function SlideCardImpl({
|
|
|
10741
10720
|
onDragLeave,
|
|
10742
10721
|
onDrop
|
|
10743
10722
|
}) {
|
|
10744
|
-
const { t } =
|
|
10723
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
10745
10724
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10746
10725
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10747
10726
|
"div",
|
|
10748
10727
|
{
|
|
10749
|
-
className:
|
|
10728
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10750
10729
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10751
10730
|
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",
|
|
10752
10731
|
slide.hidden && "opacity-40"
|
|
@@ -10769,7 +10748,7 @@ function SlideCardImpl({
|
|
|
10769
10748
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10770
10749
|
"span",
|
|
10771
10750
|
{
|
|
10772
|
-
className:
|
|
10751
|
+
className: chunkAIA7CY5U_js.cn(
|
|
10773
10752
|
"text-[11px] font-medium px-0.5",
|
|
10774
10753
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10775
10754
|
),
|
|
@@ -10838,7 +10817,7 @@ function SorterContextMenu({
|
|
|
10838
10817
|
onToggleHide,
|
|
10839
10818
|
onClose
|
|
10840
10819
|
}) {
|
|
10841
|
-
const { t } =
|
|
10820
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
10842
10821
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10843
10822
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10844
10823
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -11193,7 +11172,7 @@ function SlideSorterOverlay({
|
|
|
11193
11172
|
onToggleHideSlides,
|
|
11194
11173
|
onClose
|
|
11195
11174
|
}) {
|
|
11196
|
-
const { t } =
|
|
11175
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
11197
11176
|
const state = useSlideSorterState({
|
|
11198
11177
|
slides,
|
|
11199
11178
|
templateElementsBySlideId,
|
|
@@ -11439,7 +11418,7 @@ function OutlineViewOverlay({
|
|
|
11439
11418
|
bumpHistory,
|
|
11440
11419
|
onClose
|
|
11441
11420
|
}) {
|
|
11442
|
-
const { t } =
|
|
11421
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
11443
11422
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11444
11423
|
slides,
|
|
11445
11424
|
canvasSize,
|
|
@@ -11531,7 +11510,7 @@ function ReadingViewStage({
|
|
|
11531
11510
|
"div",
|
|
11532
11511
|
{
|
|
11533
11512
|
className: "absolute inset-0",
|
|
11534
|
-
style: { backgroundColor:
|
|
11513
|
+
style: { backgroundColor: chunkAIA7CY5U_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11535
11514
|
}
|
|
11536
11515
|
),
|
|
11537
11516
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11550,7 +11529,7 @@ function ReadingViewStage({
|
|
|
11550
11529
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11551
11530
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11552
11531
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11553
|
-
|
|
11532
|
+
chunk5CJHRYFK_js.StaticElementRenderer,
|
|
11554
11533
|
{
|
|
11555
11534
|
element,
|
|
11556
11535
|
activeSlide: slide,
|
|
@@ -11632,7 +11611,7 @@ function ReadingViewOverlay({
|
|
|
11632
11611
|
activeSlideIndex,
|
|
11633
11612
|
onExit
|
|
11634
11613
|
}) {
|
|
11635
|
-
const { t } =
|
|
11614
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
11636
11615
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11637
11616
|
slideCount: slides.length,
|
|
11638
11617
|
canvasSize,
|
|
@@ -11763,7 +11742,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11763
11742
|
if (segment.style.fontFamily) {
|
|
11764
11743
|
style.fontFamily = segment.style.fontFamily;
|
|
11765
11744
|
}
|
|
11766
|
-
if (segment.style.hyperlink &&
|
|
11745
|
+
if (segment.style.hyperlink && chunkAIA7CY5U_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11767
11746
|
const safeHref = segment.style.hyperlink;
|
|
11768
11747
|
style.color = "#4a9eff";
|
|
11769
11748
|
style.textDecoration = "underline";
|
|
@@ -11776,7 +11755,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11776
11755
|
style,
|
|
11777
11756
|
onClick: (e) => {
|
|
11778
11757
|
e.preventDefault();
|
|
11779
|
-
|
|
11758
|
+
chunkAIA7CY5U_js.safeOpenUrl(safeHref);
|
|
11780
11759
|
},
|
|
11781
11760
|
children: segment.text
|
|
11782
11761
|
},
|
|
@@ -11800,7 +11779,7 @@ function NotesPrintDialog({
|
|
|
11800
11779
|
onClose,
|
|
11801
11780
|
notesStyle
|
|
11802
11781
|
}) {
|
|
11803
|
-
const { t } =
|
|
11782
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
11804
11783
|
const printFrameRef = React108.useRef(null);
|
|
11805
11784
|
const handlePrint = React108.useCallback(() => {
|
|
11806
11785
|
const iframe = printFrameRef.current;
|
|
@@ -11858,7 +11837,7 @@ function NotesPrintDialog({
|
|
|
11858
11837
|
] }) });
|
|
11859
11838
|
}
|
|
11860
11839
|
function NotesToolbar(p) {
|
|
11861
|
-
const { t } =
|
|
11840
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
11862
11841
|
const ref = React108.useRef(null);
|
|
11863
11842
|
React108.useEffect(() => {
|
|
11864
11843
|
const host = ref.current;
|
|
@@ -12125,7 +12104,7 @@ function useSlideNotes({
|
|
|
12125
12104
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
12126
12105
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
12127
12106
|
e.preventDefault();
|
|
12128
|
-
|
|
12107
|
+
chunkAIA7CY5U_js.safeOpenUrl(href);
|
|
12129
12108
|
}
|
|
12130
12109
|
}, []);
|
|
12131
12110
|
return {
|
|
@@ -12162,7 +12141,7 @@ function SlideNotesPanel({
|
|
|
12162
12141
|
notesStyle,
|
|
12163
12142
|
onHeightChange
|
|
12164
12143
|
}) {
|
|
12165
|
-
const { t } =
|
|
12144
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
12166
12145
|
const rootRef = React108__default.default.useRef(null);
|
|
12167
12146
|
React108__default.default.useEffect(() => {
|
|
12168
12147
|
const el = rootRef.current;
|
|
@@ -12206,7 +12185,7 @@ function SlideNotesPanel({
|
|
|
12206
12185
|
});
|
|
12207
12186
|
const hasNotes = draft.trim().length > 0;
|
|
12208
12187
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
12209
|
-
const { dragY, handlers: dragHandlers } =
|
|
12188
|
+
const { dragY, handlers: dragHandlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onToggle);
|
|
12210
12189
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12211
12190
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12212
12191
|
"button",
|
|
@@ -12222,7 +12201,7 @@ function SlideNotesPanel({
|
|
|
12222
12201
|
{
|
|
12223
12202
|
ref: rootRef,
|
|
12224
12203
|
"data-pptx-chrome": "notes",
|
|
12225
|
-
className:
|
|
12204
|
+
className: chunkAIA7CY5U_js.cn(
|
|
12226
12205
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
12227
12206
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
12228
12207
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12406,7 +12385,7 @@ function VersionHistoryPanel({
|
|
|
12406
12385
|
onClose,
|
|
12407
12386
|
onRestore
|
|
12408
12387
|
}) {
|
|
12409
|
-
const { t } =
|
|
12388
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
12410
12389
|
const [versions, setVersions] = React108.useState([]);
|
|
12411
12390
|
const [loading, setLoading] = React108.useState(false);
|
|
12412
12391
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12552,7 +12531,7 @@ function SlideDiffRow({
|
|
|
12552
12531
|
onAccept,
|
|
12553
12532
|
onReject
|
|
12554
12533
|
}) {
|
|
12555
|
-
const { t } =
|
|
12534
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
12556
12535
|
const [expanded, setExpanded] = React108.useState(diff.status === "changed");
|
|
12557
12536
|
const statusLabel = (() => {
|
|
12558
12537
|
switch (diff.status) {
|
|
@@ -12586,7 +12565,7 @@ function SlideDiffRow({
|
|
|
12586
12565
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12587
12566
|
"div",
|
|
12588
12567
|
{
|
|
12589
|
-
className:
|
|
12568
|
+
className: chunkAIA7CY5U_js.cn(
|
|
12590
12569
|
"rounded-lg border transition-colors",
|
|
12591
12570
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12592
12571
|
),
|
|
@@ -12600,7 +12579,7 @@ function SlideDiffRow({
|
|
|
12600
12579
|
children: [
|
|
12601
12580
|
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" }),
|
|
12602
12581
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12603
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12582
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkAIA7CY5U_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12604
12583
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12605
12584
|
diff.changes.length,
|
|
12606
12585
|
" ",
|
|
@@ -12610,7 +12589,7 @@ function SlideDiffRow({
|
|
|
12610
12589
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12611
12590
|
"span",
|
|
12612
12591
|
{
|
|
12613
|
-
className:
|
|
12592
|
+
className: chunkAIA7CY5U_js.cn(
|
|
12614
12593
|
"text-[10px] font-medium",
|
|
12615
12594
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12616
12595
|
),
|
|
@@ -12638,7 +12617,7 @@ function SlideDiffRow({
|
|
|
12638
12617
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12639
12618
|
"div",
|
|
12640
12619
|
{
|
|
12641
|
-
className:
|
|
12620
|
+
className: chunkAIA7CY5U_js.cn(
|
|
12642
12621
|
"rounded border overflow-hidden",
|
|
12643
12622
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12644
12623
|
),
|
|
@@ -12705,7 +12684,7 @@ function ComparePanel({
|
|
|
12705
12684
|
onRejectSlide,
|
|
12706
12685
|
onAcceptAll
|
|
12707
12686
|
}) {
|
|
12708
|
-
const { t } =
|
|
12687
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
12709
12688
|
const [accepted, setAccepted] = React108.useState({});
|
|
12710
12689
|
const [rejected, setRejected] = React108.useState({});
|
|
12711
12690
|
const handleAccept = React108.useCallback(
|
|
@@ -12817,7 +12796,7 @@ function PasswordProtectionDialog({
|
|
|
12817
12796
|
onSetPassword,
|
|
12818
12797
|
onRemovePassword
|
|
12819
12798
|
}) {
|
|
12820
|
-
const { t } =
|
|
12799
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
12821
12800
|
const [password, setPassword] = React108.useState("");
|
|
12822
12801
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12823
12802
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -13026,7 +13005,7 @@ function DocumentPropertiesCustomTab({
|
|
|
13026
13005
|
customProperties,
|
|
13027
13006
|
onUpdate
|
|
13028
13007
|
}) {
|
|
13029
|
-
const { t } =
|
|
13008
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13030
13009
|
const handleAdd = React108.useCallback(() => {
|
|
13031
13010
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
13032
13011
|
}, [customProperties, onUpdate]);
|
|
@@ -13228,7 +13207,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
13228
13207
|
onUpdateAppProperties,
|
|
13229
13208
|
canEdit
|
|
13230
13209
|
}) {
|
|
13231
|
-
const { t } =
|
|
13210
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13232
13211
|
const handleEditableChange = React108.useCallback(
|
|
13233
13212
|
(key, value) => {
|
|
13234
13213
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13268,7 +13247,7 @@ function DocumentPropertiesDialog({
|
|
|
13268
13247
|
onClose,
|
|
13269
13248
|
onSave
|
|
13270
13249
|
}) {
|
|
13271
|
-
const { t } =
|
|
13250
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13272
13251
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13273
13252
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13274
13253
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13307,7 +13286,7 @@ function DocumentPropertiesDialog({
|
|
|
13307
13286
|
const handleClose = React108.useCallback(() => {
|
|
13308
13287
|
onClose();
|
|
13309
13288
|
}, [onClose]);
|
|
13310
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13289
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(handleClose);
|
|
13311
13290
|
if (!isOpen) {
|
|
13312
13291
|
return null;
|
|
13313
13292
|
}
|
|
@@ -13444,7 +13423,7 @@ function FontEmbeddingPanel({
|
|
|
13444
13423
|
onClose,
|
|
13445
13424
|
onToggleEmbedFonts
|
|
13446
13425
|
}) {
|
|
13447
|
-
const { t } =
|
|
13426
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13448
13427
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13449
13428
|
const [scanning, setScanning] = React108.useState(false);
|
|
13450
13429
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13572,7 +13551,7 @@ function DigitalSignaturesDialog({
|
|
|
13572
13551
|
hasSignatures,
|
|
13573
13552
|
signatureCount
|
|
13574
13553
|
}) {
|
|
13575
|
-
const { t } =
|
|
13554
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13576
13555
|
if (!isOpen) {
|
|
13577
13556
|
return null;
|
|
13578
13557
|
}
|
|
@@ -13644,7 +13623,7 @@ function SignatureStatusBadge({
|
|
|
13644
13623
|
signatureCount,
|
|
13645
13624
|
onClick
|
|
13646
13625
|
}) {
|
|
13647
|
-
const { t } =
|
|
13626
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13648
13627
|
if (!hasSignatures || signatureCount === 0) {
|
|
13649
13628
|
return null;
|
|
13650
13629
|
}
|
|
@@ -13670,7 +13649,7 @@ function SignatureStrippedDialog({
|
|
|
13670
13649
|
onConfirm,
|
|
13671
13650
|
onCancel
|
|
13672
13651
|
}) {
|
|
13673
|
-
const { t } =
|
|
13652
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13674
13653
|
if (!isOpen) {
|
|
13675
13654
|
return null;
|
|
13676
13655
|
}
|
|
@@ -13739,7 +13718,7 @@ function EncryptedFileDialog({
|
|
|
13739
13718
|
isOpen,
|
|
13740
13719
|
onClose
|
|
13741
13720
|
}) {
|
|
13742
|
-
const { t } =
|
|
13721
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13743
13722
|
if (!isOpen) {
|
|
13744
13723
|
return null;
|
|
13745
13724
|
}
|
|
@@ -13886,7 +13865,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13886
13865
|
] });
|
|
13887
13866
|
}
|
|
13888
13867
|
function PresentationEndOverlay({ onExit }) {
|
|
13889
|
-
const { t } =
|
|
13868
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13890
13869
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13891
13870
|
"button",
|
|
13892
13871
|
{
|
|
@@ -13902,9 +13881,9 @@ function PresentationSubtitleBar({
|
|
|
13902
13881
|
visible,
|
|
13903
13882
|
onCaptionChange
|
|
13904
13883
|
}) {
|
|
13905
|
-
const { t } =
|
|
13884
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13906
13885
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13907
|
-
pptx.subtitleSettingsFromOptions(
|
|
13886
|
+
pptx.subtitleSettingsFromOptions(chunk5CJHRYFK_js.useViewerOptionsContext()),
|
|
13908
13887
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13909
13888
|
);
|
|
13910
13889
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13981,7 +13960,7 @@ function renderNotesSegments(segments) {
|
|
|
13981
13960
|
});
|
|
13982
13961
|
}
|
|
13983
13962
|
function PresenterConsoleToolbar(p) {
|
|
13984
|
-
const { t } =
|
|
13963
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
13985
13964
|
const ref = useWebControl(
|
|
13986
13965
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13987
13966
|
{
|
|
@@ -14073,7 +14052,7 @@ function ScaledSlidePreviewImpl({
|
|
|
14073
14052
|
{
|
|
14074
14053
|
className: "absolute inset-0",
|
|
14075
14054
|
style: {
|
|
14076
|
-
backgroundColor:
|
|
14055
|
+
backgroundColor: chunkAIA7CY5U_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
14077
14056
|
}
|
|
14078
14057
|
}
|
|
14079
14058
|
),
|
|
@@ -14099,7 +14078,7 @@ function ScaledSlidePreviewImpl({
|
|
|
14099
14078
|
...pptx.deviceStrokeStageStyle(scale)
|
|
14100
14079
|
},
|
|
14101
14080
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14102
|
-
|
|
14081
|
+
chunk5CJHRYFK_js.StaticElementRenderer,
|
|
14103
14082
|
{
|
|
14104
14083
|
element,
|
|
14105
14084
|
activeSlide: slide,
|
|
@@ -14149,7 +14128,7 @@ function PresenterNotesRail({
|
|
|
14149
14128
|
onMove,
|
|
14150
14129
|
onUpdateNotes
|
|
14151
14130
|
}) {
|
|
14152
|
-
const { t } =
|
|
14131
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14153
14132
|
const slide = slides[current];
|
|
14154
14133
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
14155
14134
|
const notesText = slide?.notes ?? "";
|
|
@@ -14274,7 +14253,7 @@ function PresenterNotesRail({
|
|
|
14274
14253
|
] });
|
|
14275
14254
|
}
|
|
14276
14255
|
function PresenterSlideNavigator(props) {
|
|
14277
|
-
const { t } =
|
|
14256
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14278
14257
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14279
14258
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14280
14259
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14416,7 +14395,7 @@ function PresenterView({
|
|
|
14416
14395
|
onSwapDisplays,
|
|
14417
14396
|
onUpdateNotes
|
|
14418
14397
|
}) {
|
|
14419
|
-
const { t } =
|
|
14398
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14420
14399
|
const [now, setNow] = React108.useState(Date.now());
|
|
14421
14400
|
React108.useEffect(() => {
|
|
14422
14401
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14573,7 +14552,7 @@ function MobilePresenterView({
|
|
|
14573
14552
|
onMovePresentationSlide,
|
|
14574
14553
|
onExit
|
|
14575
14554
|
}) {
|
|
14576
|
-
const { t } =
|
|
14555
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14577
14556
|
const [now, setNow] = React108.useState(Date.now());
|
|
14578
14557
|
React108.useEffect(() => {
|
|
14579
14558
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14686,7 +14665,7 @@ function RehearseTimingsHud({
|
|
|
14686
14665
|
paused,
|
|
14687
14666
|
onTogglePause
|
|
14688
14667
|
}) {
|
|
14689
|
-
const { t } =
|
|
14668
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14690
14669
|
const [tick, setTick] = React108.useState(0);
|
|
14691
14670
|
React108.useEffect(() => {
|
|
14692
14671
|
if (paused) {
|
|
@@ -14734,7 +14713,7 @@ function RehearseTimingsSummary({
|
|
|
14734
14713
|
onSave,
|
|
14735
14714
|
onDiscard
|
|
14736
14715
|
}) {
|
|
14737
|
-
const { t } =
|
|
14716
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14738
14717
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14739
14718
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14740
14719
|
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: [
|
|
@@ -14818,7 +14797,7 @@ function SelectionPane({
|
|
|
14818
14797
|
markDirty,
|
|
14819
14798
|
onClose
|
|
14820
14799
|
}) {
|
|
14821
|
-
const { t } =
|
|
14800
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
14822
14801
|
const activeSlide = slides[activeSlideIndex];
|
|
14823
14802
|
const elements = activeSlide?.elements ?? [];
|
|
14824
14803
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14973,7 +14952,7 @@ function SelectionPane({
|
|
|
14973
14952
|
setDragIndex(null);
|
|
14974
14953
|
setDragOverIndex(null);
|
|
14975
14954
|
},
|
|
14976
|
-
className:
|
|
14955
|
+
className: chunkAIA7CY5U_js.cn(
|
|
14977
14956
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14978
14957
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14979
14958
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -15027,13 +15006,13 @@ function SelectionPane({
|
|
|
15027
15006
|
}
|
|
15028
15007
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
15029
15008
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
15030
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
15009
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunkAIA7CY5U_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
15031
15010
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
15032
15011
|
);
|
|
15033
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
15012
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunkAIA7CY5U_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
15034
15013
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
15035
15014
|
);
|
|
15036
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
15015
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunkAIA7CY5U_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
15037
15016
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
15038
15017
|
);
|
|
15039
15018
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -15134,7 +15113,7 @@ function AfterAnimationRow({
|
|
|
15134
15113
|
onActionChange,
|
|
15135
15114
|
onColorChange
|
|
15136
15115
|
}) {
|
|
15137
|
-
const { t } =
|
|
15116
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
15138
15117
|
const commitRecentColor = useRecentColorCommit();
|
|
15139
15118
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
15140
15119
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15185,7 +15164,7 @@ function AnimationTimelineSection({
|
|
|
15185
15164
|
canEdit,
|
|
15186
15165
|
handlers
|
|
15187
15166
|
}) {
|
|
15188
|
-
const { t } =
|
|
15167
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
15189
15168
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
15190
15169
|
const {
|
|
15191
15170
|
sortedAnimations,
|
|
@@ -15216,7 +15195,7 @@ function AnimationTimelineSection({
|
|
|
15216
15195
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15217
15196
|
"div",
|
|
15218
15197
|
{
|
|
15219
|
-
className:
|
|
15198
|
+
className: chunkAIA7CY5U_js.cn(
|
|
15220
15199
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15221
15200
|
animationTypeColor(bar.anim),
|
|
15222
15201
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15245,7 +15224,7 @@ function AnimationTimelineSection({
|
|
|
15245
15224
|
onDragLeave: handleDragLeave,
|
|
15246
15225
|
onDrop: (e) => handleDrop(index, e),
|
|
15247
15226
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15248
|
-
className:
|
|
15227
|
+
className: chunkAIA7CY5U_js.cn(
|
|
15249
15228
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15250
15229
|
"bg-muted/20 text-muted-foreground/70",
|
|
15251
15230
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15284,7 +15263,7 @@ function AnimationTimelineSection({
|
|
|
15284
15263
|
onDragEnd: handleDragEnd,
|
|
15285
15264
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15286
15265
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15287
|
-
className:
|
|
15266
|
+
className: chunkAIA7CY5U_js.cn(
|
|
15288
15267
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15289
15268
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15290
15269
|
isDragging && "opacity-40",
|
|
@@ -15345,7 +15324,7 @@ function BookmarkTriggerRow({
|
|
|
15345
15324
|
style,
|
|
15346
15325
|
onChange
|
|
15347
15326
|
}) {
|
|
15348
|
-
const { t } =
|
|
15327
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
15349
15328
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15350
15329
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15351
15330
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15378,7 +15357,7 @@ function EffectSoundRow({
|
|
|
15378
15357
|
onPick,
|
|
15379
15358
|
onPickStock
|
|
15380
15359
|
}) {
|
|
15381
|
-
const { t } =
|
|
15360
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
15382
15361
|
const fileInputRef = React108__default.default.useRef(null);
|
|
15383
15362
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15384
15363
|
const handleSelectChange = (event) => {
|
|
@@ -15416,7 +15395,7 @@ function EffectSoundRow({
|
|
|
15416
15395
|
}
|
|
15417
15396
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15418
15397
|
if (asset) {
|
|
15419
|
-
|
|
15398
|
+
chunk5CJHRYFK_js.playAnimationSound(asset.dataUrl);
|
|
15420
15399
|
}
|
|
15421
15400
|
};
|
|
15422
15401
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15469,7 +15448,7 @@ function MotionPathRow({
|
|
|
15469
15448
|
canEdit,
|
|
15470
15449
|
onChange
|
|
15471
15450
|
}) {
|
|
15472
|
-
const { t } =
|
|
15451
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
15473
15452
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15474
15453
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15475
15454
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15591,7 +15570,7 @@ function useAnimationPreview({
|
|
|
15591
15570
|
}) {
|
|
15592
15571
|
const handleAnimationHover = React108.useCallback((anim) => {
|
|
15593
15572
|
if (anim.motionPath) {
|
|
15594
|
-
|
|
15573
|
+
chunkAIA7CY5U_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15595
15574
|
durationMs: anim.durationMs,
|
|
15596
15575
|
delayMs: anim.delayMs,
|
|
15597
15576
|
timingCurve: anim.timingCurve
|
|
@@ -15602,19 +15581,19 @@ function useAnimationPreview({
|
|
|
15602
15581
|
if (!preset || preset === "none") {
|
|
15603
15582
|
return;
|
|
15604
15583
|
}
|
|
15605
|
-
|
|
15584
|
+
chunkAIA7CY5U_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15606
15585
|
direction: anim.direction,
|
|
15607
15586
|
durationMs: anim.durationMs ?? 500,
|
|
15608
15587
|
timingCurve: anim.timingCurve
|
|
15609
15588
|
});
|
|
15610
15589
|
}, []);
|
|
15611
|
-
const handleAnimationHoverEnd = React108.useCallback(() =>
|
|
15590
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunkAIA7CY5U_js.stopPreviewAnimation(), []);
|
|
15612
15591
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15613
15592
|
if (!selectedElementAnimation) {
|
|
15614
15593
|
return;
|
|
15615
15594
|
}
|
|
15616
15595
|
if (selectedElementAnimation.motionPath) {
|
|
15617
|
-
|
|
15596
|
+
chunkAIA7CY5U_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15618
15597
|
durationMs: selectedElementAnimation.durationMs,
|
|
15619
15598
|
delayMs: selectedElementAnimation.delayMs,
|
|
15620
15599
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15625,7 +15604,7 @@ function useAnimationPreview({
|
|
|
15625
15604
|
if (!preset || preset === "none") {
|
|
15626
15605
|
return;
|
|
15627
15606
|
}
|
|
15628
|
-
|
|
15607
|
+
chunkAIA7CY5U_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15629
15608
|
direction: selectedElementAnimation.direction,
|
|
15630
15609
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15631
15610
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15860,7 +15839,7 @@ function useAnimationHandlers({
|
|
|
15860
15839
|
return anim.elementId.slice(0, 8);
|
|
15861
15840
|
}
|
|
15862
15841
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15863
|
-
return text ||
|
|
15842
|
+
return text || chunkAIA7CY5U_js.getElementLabel(el);
|
|
15864
15843
|
},
|
|
15865
15844
|
[activeSlide.elements]
|
|
15866
15845
|
);
|
|
@@ -15871,7 +15850,7 @@ function useAnimationHandlers({
|
|
|
15871
15850
|
return id.slice(0, 8);
|
|
15872
15851
|
}
|
|
15873
15852
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15874
|
-
return text ||
|
|
15853
|
+
return text || chunkAIA7CY5U_js.getElementLabel(el);
|
|
15875
15854
|
}).join(", "),
|
|
15876
15855
|
[activeSlide.elements]
|
|
15877
15856
|
);
|
|
@@ -15927,8 +15906,8 @@ function AnimationPanel({
|
|
|
15927
15906
|
canEdit,
|
|
15928
15907
|
onUpdateSlide
|
|
15929
15908
|
}) {
|
|
15930
|
-
const { t } =
|
|
15931
|
-
const { viewportWidth } =
|
|
15909
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
15910
|
+
const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
|
|
15932
15911
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15933
15912
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15934
15913
|
const handlers = useAnimationHandlers({
|
|
@@ -16056,7 +16035,7 @@ function AnimationPanel({
|
|
|
16056
16035
|
type: "button",
|
|
16057
16036
|
disabled: !canEdit,
|
|
16058
16037
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
16059
|
-
className:
|
|
16038
|
+
className: chunkAIA7CY5U_js.cn(
|
|
16060
16039
|
"flex items-center justify-center rounded border transition-colors",
|
|
16061
16040
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
16062
16041
|
),
|
|
@@ -16122,7 +16101,7 @@ function AnimationPanel({
|
|
|
16122
16101
|
style: fieldStyle,
|
|
16123
16102
|
children: [
|
|
16124
16103
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
16125
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
16104
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkAIA7CY5U_js.getElementLabel(el) }, el.id))
|
|
16126
16105
|
]
|
|
16127
16106
|
}
|
|
16128
16107
|
)
|
|
@@ -16266,7 +16245,7 @@ function ActionTargetFields({
|
|
|
16266
16245
|
returnAfter,
|
|
16267
16246
|
onChange
|
|
16268
16247
|
}) {
|
|
16269
|
-
const { t } =
|
|
16248
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16270
16249
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16271
16250
|
if (urlLabelKey) {
|
|
16272
16251
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16275,7 +16254,7 @@ function ActionTargetFields({
|
|
|
16275
16254
|
type: "text",
|
|
16276
16255
|
disabled: !canEdit,
|
|
16277
16256
|
"aria-label": t(urlLabelKey),
|
|
16278
|
-
className:
|
|
16257
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
|
|
16279
16258
|
placeholder: "https://...",
|
|
16280
16259
|
value: url ?? "",
|
|
16281
16260
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16289,7 +16268,7 @@ function ActionTargetFields({
|
|
|
16289
16268
|
type: "number",
|
|
16290
16269
|
disabled: !canEdit,
|
|
16291
16270
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16292
|
-
className:
|
|
16271
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
|
|
16293
16272
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16294
16273
|
min: 1,
|
|
16295
16274
|
max: slideCount,
|
|
@@ -16311,7 +16290,7 @@ function ActionTargetFields({
|
|
|
16311
16290
|
"data-testid": "pptx-action-custom-show",
|
|
16312
16291
|
disabled: !canEdit,
|
|
16313
16292
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16314
|
-
className:
|
|
16293
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
|
|
16315
16294
|
value: customShowId ?? "",
|
|
16316
16295
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16317
16296
|
children: [
|
|
@@ -16343,7 +16322,7 @@ function ActionSettingsPanel({
|
|
|
16343
16322
|
customShows,
|
|
16344
16323
|
onUpdateElement
|
|
16345
16324
|
}) {
|
|
16346
|
-
const { t } =
|
|
16325
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16347
16326
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16348
16327
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16349
16328
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16419,7 +16398,7 @@ function ActionTriggerSection({
|
|
|
16419
16398
|
onChangeType,
|
|
16420
16399
|
onChangeTarget
|
|
16421
16400
|
}) {
|
|
16422
|
-
const { t } =
|
|
16401
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16423
16402
|
const [pendingType, setPendingType] = React108.useState(void 0);
|
|
16424
16403
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16425
16404
|
const changeType = (type) => {
|
|
@@ -16433,7 +16412,7 @@ function ActionTriggerSection({
|
|
|
16433
16412
|
{
|
|
16434
16413
|
disabled: !canEdit,
|
|
16435
16414
|
"aria-label": label,
|
|
16436
|
-
className:
|
|
16415
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
|
|
16437
16416
|
value: effectiveType,
|
|
16438
16417
|
onChange: (e) => changeType(e.target.value),
|
|
16439
16418
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16461,7 +16440,7 @@ var AXIS_ROWS = [
|
|
|
16461
16440
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16462
16441
|
];
|
|
16463
16442
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16464
|
-
const { t } =
|
|
16443
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16465
16444
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16466
16445
|
...row,
|
|
16467
16446
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16606,7 +16585,7 @@ function ChartAxisStyleOptions({
|
|
|
16606
16585
|
onSetTitleStyle,
|
|
16607
16586
|
onSetGridlineStyle
|
|
16608
16587
|
}) {
|
|
16609
|
-
const { t } =
|
|
16588
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16610
16589
|
const commitRecentColor = useRecentColorCommit();
|
|
16611
16590
|
const rows = SCALE_AXES.map((row) => ({
|
|
16612
16591
|
...row,
|
|
@@ -16778,7 +16757,7 @@ function ChartComboTypeOptions({
|
|
|
16778
16757
|
canEdit,
|
|
16779
16758
|
onSetSeriesType
|
|
16780
16759
|
}) {
|
|
16781
|
-
const { t } =
|
|
16760
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16782
16761
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16783
16762
|
return null;
|
|
16784
16763
|
}
|
|
@@ -16807,7 +16786,7 @@ function ChartDataLabelOptions({
|
|
|
16807
16786
|
canEdit,
|
|
16808
16787
|
onUpdateStyle
|
|
16809
16788
|
}) {
|
|
16810
|
-
const { t } =
|
|
16789
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16811
16790
|
if (!style?.hasDataLabels) {
|
|
16812
16791
|
return null;
|
|
16813
16792
|
}
|
|
@@ -16855,7 +16834,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16855
16834
|
canEdit,
|
|
16856
16835
|
onSetPointMarker
|
|
16857
16836
|
}) {
|
|
16858
|
-
const { t } =
|
|
16837
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16859
16838
|
const commitRecentColor = useRecentColorCommit();
|
|
16860
16839
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16861
16840
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16961,7 +16940,7 @@ function ChartDataPointOptions({
|
|
|
16961
16940
|
onSetPointExplosion,
|
|
16962
16941
|
onSetPointLabel
|
|
16963
16942
|
}) {
|
|
16964
|
-
const { t } =
|
|
16943
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
16965
16944
|
const commitRecentColor = useRecentColorCommit();
|
|
16966
16945
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16967
16946
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -17063,7 +17042,7 @@ function ChartDataSheet({
|
|
|
17063
17042
|
highlightCell,
|
|
17064
17043
|
onChange
|
|
17065
17044
|
}) {
|
|
17066
|
-
const { t } =
|
|
17045
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17067
17046
|
const ref = React108.useRef(null);
|
|
17068
17047
|
React108.useLayoutEffect(() => {
|
|
17069
17048
|
if (ref.current) {
|
|
@@ -17094,7 +17073,7 @@ function ChartDisplayOptions({
|
|
|
17094
17073
|
hasGridlines,
|
|
17095
17074
|
onToggleGridlines
|
|
17096
17075
|
}) {
|
|
17097
|
-
const { t } =
|
|
17076
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17098
17077
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
17099
17078
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
17100
17079
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -17171,7 +17150,7 @@ function ChartErrorBarOptions({
|
|
|
17171
17150
|
canEdit,
|
|
17172
17151
|
onSetErrorBars
|
|
17173
17152
|
}) {
|
|
17174
|
-
const { t } =
|
|
17153
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17175
17154
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17176
17155
|
return null;
|
|
17177
17156
|
}
|
|
@@ -17251,7 +17230,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17251
17230
|
onRestoreSeries,
|
|
17252
17231
|
onSetDataLabelsRangeCache
|
|
17253
17232
|
}) {
|
|
17254
|
-
const { t } =
|
|
17233
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17255
17234
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17256
17235
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17257
17236
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17331,7 +17310,7 @@ function ChartMarkerOptions({
|
|
|
17331
17310
|
canEdit,
|
|
17332
17311
|
onSetMarker
|
|
17333
17312
|
}) {
|
|
17334
|
-
const { t } =
|
|
17313
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17335
17314
|
const commitRecentColor = useRecentColorCommit();
|
|
17336
17315
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17337
17316
|
return null;
|
|
@@ -17440,7 +17419,7 @@ function ChartSeriesColorOptions({
|
|
|
17440
17419
|
onSetColor,
|
|
17441
17420
|
onToggleSecondaryAxis
|
|
17442
17421
|
}) {
|
|
17443
|
-
const { t } =
|
|
17422
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17444
17423
|
const series = chartData.series;
|
|
17445
17424
|
if (series.length === 0) {
|
|
17446
17425
|
return null;
|
|
@@ -17490,7 +17469,7 @@ function ChartSubtypeOptions({
|
|
|
17490
17469
|
canEdit,
|
|
17491
17470
|
onUpdateChartData
|
|
17492
17471
|
}) {
|
|
17493
|
-
const { t } =
|
|
17472
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17494
17473
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17495
17474
|
return null;
|
|
17496
17475
|
}
|
|
@@ -17556,7 +17535,7 @@ function ChartTrendlineOptions({
|
|
|
17556
17535
|
canEdit,
|
|
17557
17536
|
onSetTrendline
|
|
17558
17537
|
}) {
|
|
17559
|
-
const { t } =
|
|
17538
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17560
17539
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17561
17540
|
return null;
|
|
17562
17541
|
}
|
|
@@ -17629,7 +17608,7 @@ function ChartTypeSelector({
|
|
|
17629
17608
|
onUpdateChartData,
|
|
17630
17609
|
onTitleChange
|
|
17631
17610
|
}) {
|
|
17632
|
-
const { t } =
|
|
17611
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17633
17612
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17634
17613
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17635
17614
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17710,7 +17689,7 @@ function RotationField({
|
|
|
17710
17689
|
canEdit,
|
|
17711
17690
|
onRotationPatch
|
|
17712
17691
|
}) {
|
|
17713
|
-
const { t } =
|
|
17692
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17714
17693
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17715
17694
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17716
17695
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17732,7 +17711,7 @@ function FlipFields({
|
|
|
17732
17711
|
canEdit,
|
|
17733
17712
|
onFlipPatch
|
|
17734
17713
|
}) {
|
|
17735
|
-
const { t } =
|
|
17714
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17736
17715
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17737
17716
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17738
17717
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17771,7 +17750,7 @@ function ChartUserShapePositionFields({
|
|
|
17771
17750
|
onRotationPatch,
|
|
17772
17751
|
onFlipPatch
|
|
17773
17752
|
}) {
|
|
17774
|
-
const { t } =
|
|
17753
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17775
17754
|
const update = (patch) => onPatch(row.path, patch);
|
|
17776
17755
|
if (row.depth === 0) {
|
|
17777
17756
|
const from = row.from;
|
|
@@ -17895,7 +17874,7 @@ function ChartUserShapeOptions({
|
|
|
17895
17874
|
canEdit,
|
|
17896
17875
|
onUpdateChartData
|
|
17897
17876
|
}) {
|
|
17898
|
-
const { t } =
|
|
17877
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
17899
17878
|
const shapes = chartData.userShapes;
|
|
17900
17879
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17901
17880
|
const kindLabel = (kind) => {
|
|
@@ -18053,8 +18032,8 @@ function ChartUserShapeOptions({
|
|
|
18053
18032
|
}
|
|
18054
18033
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
18055
18034
|
const chartData = selectedElement.chartData;
|
|
18056
|
-
const followDataPoint =
|
|
18057
|
-
const { selection: partSelection } =
|
|
18035
|
+
const followDataPoint = chunk5CJHRYFK_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
18036
|
+
const { selection: partSelection } = chunk5CJHRYFK_js.useChartPartSelection();
|
|
18058
18037
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
18059
18038
|
const title = chartData?.title;
|
|
18060
18039
|
const chartType = chartData?.chartType;
|
|
@@ -18492,7 +18471,7 @@ function OleEditorDialog({
|
|
|
18492
18471
|
element,
|
|
18493
18472
|
onUpdateElement
|
|
18494
18473
|
}) {
|
|
18495
|
-
const { t } =
|
|
18474
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
18496
18475
|
const dialogRef = React108.useRef(null);
|
|
18497
18476
|
const fileInputRef = React108.useRef(null);
|
|
18498
18477
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18740,7 +18719,7 @@ function ConnectorArrowsSection({
|
|
|
18740
18719
|
onUpdateShapeStyle,
|
|
18741
18720
|
markDirty
|
|
18742
18721
|
}) {
|
|
18743
|
-
const { t } =
|
|
18722
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
18744
18723
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18745
18724
|
["Start", "End"].map((end) => {
|
|
18746
18725
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18759,7 +18738,7 @@ function ConnectorArrowsSection({
|
|
|
18759
18738
|
},
|
|
18760
18739
|
disabled: !canEdit,
|
|
18761
18740
|
className: SELECT_CLS2,
|
|
18762
|
-
children:
|
|
18741
|
+
children: chunkAIA7CY5U_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18763
18742
|
}
|
|
18764
18743
|
)
|
|
18765
18744
|
] }, end);
|
|
@@ -18783,7 +18762,7 @@ function ConnectorArrowsSection({
|
|
|
18783
18762
|
},
|
|
18784
18763
|
disabled: !canEdit,
|
|
18785
18764
|
className: SELECT_CLS2,
|
|
18786
|
-
children:
|
|
18765
|
+
children: chunkAIA7CY5U_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18787
18766
|
}
|
|
18788
18767
|
)
|
|
18789
18768
|
] }),
|
|
@@ -18802,7 +18781,7 @@ function ConnectorArrowsSection({
|
|
|
18802
18781
|
},
|
|
18803
18782
|
disabled: !canEdit,
|
|
18804
18783
|
className: SELECT_CLS2,
|
|
18805
|
-
children:
|
|
18784
|
+
children: chunkAIA7CY5U_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18806
18785
|
}
|
|
18807
18786
|
)
|
|
18808
18787
|
] })
|
|
@@ -18833,7 +18812,7 @@ function ConnectorPanel({
|
|
|
18833
18812
|
function GroupInfoPanel({
|
|
18834
18813
|
selectedElement
|
|
18835
18814
|
}) {
|
|
18836
|
-
const { t } =
|
|
18815
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
18837
18816
|
if (selectedElement.type !== "group") {
|
|
18838
18817
|
return null;
|
|
18839
18818
|
}
|
|
@@ -18848,7 +18827,7 @@ function OlePropertiesPanel({
|
|
|
18848
18827
|
canEdit,
|
|
18849
18828
|
onUpdateElement
|
|
18850
18829
|
}) {
|
|
18851
|
-
const { t } =
|
|
18830
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
18852
18831
|
const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
|
|
18853
18832
|
if (selectedElement.type !== "ole") {
|
|
18854
18833
|
return null;
|
|
@@ -18893,7 +18872,7 @@ function OlePropertiesPanel({
|
|
|
18893
18872
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18894
18873
|
"span",
|
|
18895
18874
|
{
|
|
18896
|
-
className:
|
|
18875
|
+
className: chunkAIA7CY5U_js.cn(
|
|
18897
18876
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18898
18877
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18899
18878
|
),
|
|
@@ -18946,7 +18925,7 @@ function LayerOrderButtons({
|
|
|
18946
18925
|
"button",
|
|
18947
18926
|
{
|
|
18948
18927
|
type: "button",
|
|
18949
|
-
className:
|
|
18928
|
+
className: chunkAIA7CY5U_js.cn("flex-1", BTN2),
|
|
18950
18929
|
disabled: !canEdit,
|
|
18951
18930
|
onClick: () => onMoveLayer("forward"),
|
|
18952
18931
|
children: "\u2191 Forward"
|
|
@@ -18956,7 +18935,7 @@ function LayerOrderButtons({
|
|
|
18956
18935
|
"button",
|
|
18957
18936
|
{
|
|
18958
18937
|
type: "button",
|
|
18959
|
-
className:
|
|
18938
|
+
className: chunkAIA7CY5U_js.cn("flex-1", BTN2),
|
|
18960
18939
|
disabled: !canEdit,
|
|
18961
18940
|
onClick: () => onMoveLayer("backward"),
|
|
18962
18941
|
children: "\u2193 Backward"
|
|
@@ -18970,7 +18949,7 @@ function ArtisticEffectsGallery({
|
|
|
18970
18949
|
canEdit,
|
|
18971
18950
|
updateEffects
|
|
18972
18951
|
}) {
|
|
18973
|
-
const { t } =
|
|
18952
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
18974
18953
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18975
18954
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18976
18955
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18980,7 +18959,7 @@ function ArtisticEffectsGallery({
|
|
|
18980
18959
|
{
|
|
18981
18960
|
type: "button",
|
|
18982
18961
|
disabled: !canEdit,
|
|
18983
|
-
className:
|
|
18962
|
+
className: chunkAIA7CY5U_js.cn(
|
|
18984
18963
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18985
18964
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18986
18965
|
),
|
|
@@ -19015,7 +18994,7 @@ function ColorChangeSection({
|
|
|
19015
18994
|
canEdit,
|
|
19016
18995
|
updateEffects
|
|
19017
18996
|
}) {
|
|
19018
|
-
const { t } =
|
|
18997
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19019
18998
|
const cc = fx?.clrChange;
|
|
19020
18999
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
19021
19000
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -19042,7 +19021,7 @@ function ColorChangeSection({
|
|
|
19042
19021
|
DebouncedColorInput,
|
|
19043
19022
|
{
|
|
19044
19023
|
disabled: !canEdit,
|
|
19045
|
-
value:
|
|
19024
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
19046
19025
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19047
19026
|
onCommit: (hex) => updateEffects({
|
|
19048
19027
|
clrChange: {
|
|
@@ -19060,7 +19039,7 @@ function ColorChangeSection({
|
|
|
19060
19039
|
DebouncedColorInput,
|
|
19061
19040
|
{
|
|
19062
19041
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
19063
|
-
value:
|
|
19042
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
19064
19043
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19065
19044
|
onCommit: (hex) => updateEffects({
|
|
19066
19045
|
clrChange: {
|
|
@@ -19097,7 +19076,7 @@ function ColorWashSection({
|
|
|
19097
19076
|
canEdit,
|
|
19098
19077
|
updateEffects
|
|
19099
19078
|
}) {
|
|
19100
|
-
const { t } =
|
|
19079
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19101
19080
|
const wash = fx?.colorWash;
|
|
19102
19081
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
19103
19082
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -19120,7 +19099,7 @@ function ColorWashSection({
|
|
|
19120
19099
|
DebouncedColorInput,
|
|
19121
19100
|
{
|
|
19122
19101
|
disabled: !canEdit,
|
|
19123
|
-
value:
|
|
19102
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
19124
19103
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19125
19104
|
onCommit: (hex) => updateEffects({
|
|
19126
19105
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19197,7 +19176,7 @@ function DuotonePanel({
|
|
|
19197
19176
|
canEdit,
|
|
19198
19177
|
onUpdateElement
|
|
19199
19178
|
}) {
|
|
19200
|
-
const { t } =
|
|
19179
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19201
19180
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
19202
19181
|
const commitDuotone = React108.useCallback(
|
|
19203
19182
|
(color1, color2) => {
|
|
@@ -19218,8 +19197,8 @@ function DuotonePanel({
|
|
|
19218
19197
|
}
|
|
19219
19198
|
});
|
|
19220
19199
|
}, [effects, onUpdateElement]);
|
|
19221
|
-
const shadowColor =
|
|
19222
|
-
const highlightColor =
|
|
19200
|
+
const shadowColor = chunkAIA7CY5U_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19201
|
+
const highlightColor = chunkAIA7CY5U_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19223
19202
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19224
19203
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19225
19204
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19250,7 +19229,7 @@ function DuotonePanel({
|
|
|
19250
19229
|
] }),
|
|
19251
19230
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19252
19231
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19253
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19232
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunk5CJHRYFK_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19254
19233
|
"button",
|
|
19255
19234
|
{
|
|
19256
19235
|
type: "button",
|
|
@@ -19286,7 +19265,7 @@ function ImageAdjustmentsPanel({
|
|
|
19286
19265
|
canEdit,
|
|
19287
19266
|
onUpdateElement
|
|
19288
19267
|
}) {
|
|
19289
|
-
const { t } =
|
|
19268
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19290
19269
|
const effects = React108.useMemo(
|
|
19291
19270
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19292
19271
|
[selectedElement]
|
|
@@ -19387,7 +19366,7 @@ function ImageCropSection({
|
|
|
19387
19366
|
canEdit,
|
|
19388
19367
|
onUpdateElement
|
|
19389
19368
|
}) {
|
|
19390
|
-
const { t } =
|
|
19369
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19391
19370
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19392
19371
|
return null;
|
|
19393
19372
|
}
|
|
@@ -19405,7 +19384,7 @@ function ImageCropSection({
|
|
|
19405
19384
|
max: MAX_CROP_PERCENT,
|
|
19406
19385
|
disabled: !croppable,
|
|
19407
19386
|
className: "accent-primary",
|
|
19408
|
-
value: Math.round(
|
|
19387
|
+
value: Math.round(chunkAIA7CY5U_js.clampCropValue(selectedElement[key]) * 100),
|
|
19409
19388
|
onChange: (e) => onUpdateElement({
|
|
19410
19389
|
[key]: Number(e.target.value) / 100
|
|
19411
19390
|
})
|
|
@@ -19452,7 +19431,7 @@ function ImagePropertiesPanel({
|
|
|
19452
19431
|
canEdit,
|
|
19453
19432
|
onUpdateElement
|
|
19454
19433
|
}) {
|
|
19455
|
-
const { t } =
|
|
19434
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19456
19435
|
const fx = selectedElement.imageEffects;
|
|
19457
19436
|
const updateEffects = (patch) => {
|
|
19458
19437
|
onUpdateElement({
|
|
@@ -19469,7 +19448,7 @@ function ImagePropertiesPanel({
|
|
|
19469
19448
|
{
|
|
19470
19449
|
rows: 2,
|
|
19471
19450
|
disabled: !canEdit,
|
|
19472
|
-
className:
|
|
19451
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19473
19452
|
value: selectedElement.altText ?? "",
|
|
19474
19453
|
onChange: (e) => onUpdateElement({
|
|
19475
19454
|
altText: e.target.value
|
|
@@ -19657,7 +19636,7 @@ function InspectorFields({
|
|
|
19657
19636
|
liveTarget,
|
|
19658
19637
|
livePatch
|
|
19659
19638
|
}) {
|
|
19660
|
-
const { t } =
|
|
19639
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19661
19640
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19662
19641
|
const change = (sectionId, fieldId, raw) => {
|
|
19663
19642
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19885,7 +19864,7 @@ function MediaInspector({
|
|
|
19885
19864
|
durationSeconds,
|
|
19886
19865
|
onUpdateElement
|
|
19887
19866
|
}) {
|
|
19888
|
-
const { t } =
|
|
19867
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
19889
19868
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19890
19869
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19891
19870
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -20115,7 +20094,7 @@ function MediaPlaybackBookmarks({
|
|
|
20115
20094
|
onUpdateElement,
|
|
20116
20095
|
onSeekTo
|
|
20117
20096
|
}) {
|
|
20118
|
-
const { t } =
|
|
20097
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20119
20098
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
20120
20099
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
20121
20100
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20365,7 +20344,7 @@ function MediaPropertiesPanel({
|
|
|
20365
20344
|
canEdit,
|
|
20366
20345
|
onUpdateElement
|
|
20367
20346
|
}) {
|
|
20368
|
-
const { t } =
|
|
20347
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20369
20348
|
const mediaRef = React108.useRef(null);
|
|
20370
20349
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20371
20350
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20599,7 +20578,7 @@ function AccessibilityTextSection({
|
|
|
20599
20578
|
canEdit,
|
|
20600
20579
|
onUpdateElement
|
|
20601
20580
|
}) {
|
|
20602
|
-
const { t } =
|
|
20581
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20603
20582
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20604
20583
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20605
20584
|
return null;
|
|
@@ -20614,7 +20593,7 @@ function AccessibilityTextSection({
|
|
|
20614
20593
|
rows: 2,
|
|
20615
20594
|
disabled: !canEdit,
|
|
20616
20595
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20617
|
-
className:
|
|
20596
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20618
20597
|
value: fields.altText,
|
|
20619
20598
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20620
20599
|
}
|
|
@@ -20628,7 +20607,7 @@ function AccessibilityTextSection({
|
|
|
20628
20607
|
type: "text",
|
|
20629
20608
|
disabled: !canEdit,
|
|
20630
20609
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20631
|
-
className:
|
|
20610
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "text-[11px]"),
|
|
20632
20611
|
value: fields.title,
|
|
20633
20612
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20634
20613
|
}
|
|
@@ -20656,7 +20635,7 @@ function RecentColorsRow({
|
|
|
20656
20635
|
disabled,
|
|
20657
20636
|
onCommit
|
|
20658
20637
|
}) {
|
|
20659
|
-
const { t } =
|
|
20638
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20660
20639
|
const { recentColors, pushColor } = useRecentColors();
|
|
20661
20640
|
const shown = recentColors.length > 0;
|
|
20662
20641
|
const ref = React108.useRef(null);
|
|
@@ -20698,7 +20677,7 @@ function ThemeColorSwatchGrid({
|
|
|
20698
20677
|
selectedHex,
|
|
20699
20678
|
onPick
|
|
20700
20679
|
}) {
|
|
20701
|
-
const { t } =
|
|
20680
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20702
20681
|
const themeColorMap = useThemeColorMap();
|
|
20703
20682
|
const columns = React108.useMemo(
|
|
20704
20683
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20745,7 +20724,7 @@ function SelectRow({
|
|
|
20745
20724
|
options,
|
|
20746
20725
|
onChange
|
|
20747
20726
|
}) {
|
|
20748
|
-
const { t } =
|
|
20727
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20749
20728
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20750
20729
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20751
20730
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20769,14 +20748,14 @@ function ColorPickerRow({
|
|
|
20769
20748
|
onChange,
|
|
20770
20749
|
styleChange
|
|
20771
20750
|
}) {
|
|
20772
|
-
const { t } =
|
|
20751
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20773
20752
|
const { pushColor } = useRecentColors();
|
|
20774
20753
|
const commit = (color, ref) => {
|
|
20775
20754
|
onChange(color, ref);
|
|
20776
20755
|
pushColor(color);
|
|
20777
20756
|
};
|
|
20778
20757
|
const handleEyedropper = async () => {
|
|
20779
|
-
const color = await
|
|
20758
|
+
const color = await chunkAIA7CY5U_js.openNativeEyeDropper();
|
|
20780
20759
|
if (color) {
|
|
20781
20760
|
commit(color);
|
|
20782
20761
|
}
|
|
@@ -20849,7 +20828,7 @@ function GradientStopRow({
|
|
|
20849
20828
|
onUpdate,
|
|
20850
20829
|
allStops
|
|
20851
20830
|
}) {
|
|
20852
|
-
const { t } =
|
|
20831
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20853
20832
|
const { pushColor } = useRecentColors();
|
|
20854
20833
|
const commitRecentColor = useRecentColorCommit();
|
|
20855
20834
|
const patchStop = (patch) => {
|
|
@@ -20862,9 +20841,9 @@ function GradientStopRow({
|
|
|
20862
20841
|
"input",
|
|
20863
20842
|
{
|
|
20864
20843
|
type: "color",
|
|
20865
|
-
value:
|
|
20844
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20866
20845
|
ref: commitRecentColor,
|
|
20867
|
-
onChange: (e) => patchStop({ color:
|
|
20846
|
+
onChange: (e) => patchStop({ color: chunkAIA7CY5U_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20868
20847
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20869
20848
|
}
|
|
20870
20849
|
),
|
|
@@ -20939,7 +20918,7 @@ function FillAdvancedControls({
|
|
|
20939
20918
|
onUpdateGradientStops,
|
|
20940
20919
|
onSetFillColor: _onSetFillColor
|
|
20941
20920
|
}) {
|
|
20942
|
-
const { t } =
|
|
20921
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
20943
20922
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20944
20923
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20945
20924
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20993,7 +20972,7 @@ function FillAdvancedControls({
|
|
|
20993
20972
|
onClick: () => onUpdateGradientStops([
|
|
20994
20973
|
...gradientStops,
|
|
20995
20974
|
{
|
|
20996
|
-
color:
|
|
20975
|
+
color: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
|
|
20997
20976
|
position: 50,
|
|
20998
20977
|
opacity: 1
|
|
20999
20978
|
}
|
|
@@ -21007,9 +20986,9 @@ function FillAdvancedControls({
|
|
|
21007
20986
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
21008
20987
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
21009
20988
|
/* @__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) => {
|
|
21010
|
-
const fgColor =
|
|
21011
|
-
const bgColor =
|
|
21012
|
-
const svgPattern =
|
|
20989
|
+
const fgColor = chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR);
|
|
20990
|
+
const bgColor = chunkAIA7CY5U_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20991
|
+
const svgPattern = chunkAIA7CY5U_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
21013
20992
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
21014
20993
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21015
20994
|
"button",
|
|
@@ -21042,7 +21021,7 @@ function FillAdvancedControls({
|
|
|
21042
21021
|
{
|
|
21043
21022
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
21044
21023
|
prefix: "pattern-fg",
|
|
21045
|
-
value:
|
|
21024
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
|
|
21046
21025
|
disabled: isLine,
|
|
21047
21026
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
21048
21027
|
styleChange: patternForeground
|
|
@@ -21053,7 +21032,7 @@ function FillAdvancedControls({
|
|
|
21053
21032
|
{
|
|
21054
21033
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
21055
21034
|
prefix: "pattern-bg",
|
|
21056
|
-
value:
|
|
21035
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
21057
21036
|
disabled: isLine,
|
|
21058
21037
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
21059
21038
|
styleChange: patternBackground
|
|
@@ -21118,7 +21097,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
21118
21097
|
function QuickStylesGallery({
|
|
21119
21098
|
onUpdateShapeStyle
|
|
21120
21099
|
}) {
|
|
21121
|
-
const { t } =
|
|
21100
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21122
21101
|
const ref = React108.useRef(null);
|
|
21123
21102
|
React108.useLayoutEffect(() => {
|
|
21124
21103
|
const gallery = ref.current;
|
|
@@ -21155,14 +21134,14 @@ function StrokeEffectsSection({
|
|
|
21155
21134
|
onUpdateShapeStyle,
|
|
21156
21135
|
onSetStrokeColor
|
|
21157
21136
|
}) {
|
|
21158
|
-
const { t } =
|
|
21137
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21159
21138
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21160
21139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21161
21140
|
ColorPickerRow,
|
|
21162
21141
|
{
|
|
21163
21142
|
label: t("pptx.inspector.stroke"),
|
|
21164
21143
|
prefix: "stroke",
|
|
21165
|
-
value:
|
|
21144
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(style?.strokeColor, chunkAIA7CY5U_js.DEFAULT_STROKE_COLOR),
|
|
21166
21145
|
selectedRef: style?.strokeColorRef,
|
|
21167
21146
|
onChange: onSetStrokeColor,
|
|
21168
21147
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -21205,7 +21184,7 @@ function FillStrokeProperties({
|
|
|
21205
21184
|
onSetFillColor,
|
|
21206
21185
|
onSetStrokeColor
|
|
21207
21186
|
}) {
|
|
21208
|
-
const { t } =
|
|
21187
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21209
21188
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
21210
21189
|
const style = selectedShapeStyle;
|
|
21211
21190
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21221,10 +21200,10 @@ function FillStrokeProperties({
|
|
|
21221
21200
|
return;
|
|
21222
21201
|
}
|
|
21223
21202
|
if (nextMode === "gradient") {
|
|
21224
|
-
const existing =
|
|
21203
|
+
const existing = chunkAIA7CY5U_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21225
21204
|
const stops = existing.length >= 2 ? existing : [
|
|
21226
21205
|
{
|
|
21227
|
-
color:
|
|
21206
|
+
color: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
|
|
21228
21207
|
position: 0,
|
|
21229
21208
|
opacity: 1
|
|
21230
21209
|
},
|
|
@@ -21249,7 +21228,7 @@ function FillStrokeProperties({
|
|
|
21249
21228
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21250
21229
|
};
|
|
21251
21230
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21252
|
-
{ color:
|
|
21231
|
+
{ color: chunkAIA7CY5U_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21253
21232
|
{ color: "#ffffff", position: 100 }
|
|
21254
21233
|
];
|
|
21255
21234
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21276,7 +21255,7 @@ function FillStrokeProperties({
|
|
|
21276
21255
|
{
|
|
21277
21256
|
label: t("pptx.fill.fill"),
|
|
21278
21257
|
prefix: "fill",
|
|
21279
|
-
value:
|
|
21258
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(style?.fillColor, chunkAIA7CY5U_js.DEFAULT_FILL_COLOR),
|
|
21280
21259
|
selectedRef: style?.fillColorRef,
|
|
21281
21260
|
disabled: line,
|
|
21282
21261
|
onChange: onSetFillColor,
|
|
@@ -21314,7 +21293,7 @@ function Text3DProperties({
|
|
|
21314
21293
|
ts,
|
|
21315
21294
|
onUpdateTextStyle
|
|
21316
21295
|
}) {
|
|
21317
|
-
const { t } =
|
|
21296
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21318
21297
|
const commitRecentColor = useRecentColorCommit();
|
|
21319
21298
|
const t3d = ts?.text3d;
|
|
21320
21299
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21361,7 +21340,7 @@ function Text3DProperties({
|
|
|
21361
21340
|
"input",
|
|
21362
21341
|
{
|
|
21363
21342
|
type: "color",
|
|
21364
|
-
value:
|
|
21343
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21365
21344
|
ref: commitRecentColor,
|
|
21366
21345
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21367
21346
|
className: COLOR_CLS
|
|
@@ -21528,7 +21507,7 @@ function AdvancedTextFormatting({
|
|
|
21528
21507
|
onUpdateTextStyle,
|
|
21529
21508
|
numChange
|
|
21530
21509
|
}) {
|
|
21531
|
-
const { t } =
|
|
21510
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21532
21511
|
const commitRecentColor = useRecentColorCommit();
|
|
21533
21512
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21534
21513
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21550,7 +21529,7 @@ function AdvancedTextFormatting({
|
|
|
21550
21529
|
"input",
|
|
21551
21530
|
{
|
|
21552
21531
|
type: "color",
|
|
21553
|
-
value:
|
|
21532
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21554
21533
|
ref: commitRecentColor,
|
|
21555
21534
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21556
21535
|
disabled: !canEdit,
|
|
@@ -21692,7 +21671,7 @@ function TextReflectionSection({
|
|
|
21692
21671
|
onUpdateTextStyle,
|
|
21693
21672
|
numChange
|
|
21694
21673
|
}) {
|
|
21695
|
-
const { t } =
|
|
21674
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21696
21675
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21697
21676
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21698
21677
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21800,7 +21779,7 @@ function TextEffectsPanel({
|
|
|
21800
21779
|
onUpdateTextStyle,
|
|
21801
21780
|
numChange
|
|
21802
21781
|
}) {
|
|
21803
|
-
const { t } =
|
|
21782
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
21804
21783
|
const commitRecentColor = useRecentColorCommit();
|
|
21805
21784
|
const hasShadow = Boolean(
|
|
21806
21785
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21846,7 +21825,7 @@ function TextEffectsPanel({
|
|
|
21846
21825
|
"input",
|
|
21847
21826
|
{
|
|
21848
21827
|
type: "color",
|
|
21849
|
-
value:
|
|
21828
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21850
21829
|
ref: commitRecentColor,
|
|
21851
21830
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21852
21831
|
className: COLOR_CLS2
|
|
@@ -21951,7 +21930,7 @@ function TextEffectsPanel({
|
|
|
21951
21930
|
"input",
|
|
21952
21931
|
{
|
|
21953
21932
|
type: "color",
|
|
21954
|
-
value:
|
|
21933
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21955
21934
|
ref: commitRecentColor,
|
|
21956
21935
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21957
21936
|
className: COLOR_CLS2
|
|
@@ -22001,7 +21980,7 @@ function TextWarpGallery({
|
|
|
22001
21980
|
ts,
|
|
22002
21981
|
onUpdateTextStyle
|
|
22003
21982
|
}) {
|
|
22004
|
-
const { t } =
|
|
21983
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22005
21984
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
22006
21985
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
22007
21986
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -22082,7 +22061,7 @@ function ShapeTextPanels({
|
|
|
22082
22061
|
onUpdateElementStyle,
|
|
22083
22062
|
onUpdateTextStyle
|
|
22084
22063
|
}) {
|
|
22085
|
-
const { t } =
|
|
22064
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22086
22065
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22087
22066
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
22088
22067
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -22091,11 +22070,11 @@ function ShapeTextPanels({
|
|
|
22091
22070
|
{
|
|
22092
22071
|
value: selectedElement.shapeType || "rect",
|
|
22093
22072
|
disabled: !canEdit,
|
|
22094
|
-
className:
|
|
22073
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
|
|
22095
22074
|
onChange: (e) => onUpdateElement({
|
|
22096
22075
|
shapeType: e.target.value
|
|
22097
22076
|
}),
|
|
22098
|
-
children:
|
|
22077
|
+
children: chunkAIA7CY5U_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
22099
22078
|
}
|
|
22100
22079
|
)
|
|
22101
22080
|
] }),
|
|
@@ -22107,7 +22086,7 @@ function ShapeTextPanels({
|
|
|
22107
22086
|
selectedElement,
|
|
22108
22087
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
22109
22088
|
selectedShapeType: selectedElement.shapeType,
|
|
22110
|
-
selectedGradientStops:
|
|
22089
|
+
selectedGradientStops: chunkAIA7CY5U_js.sanitizeGradientStops(
|
|
22111
22090
|
selectedElement.shapeStyle?.fillGradientStops
|
|
22112
22091
|
),
|
|
22113
22092
|
canEdit,
|
|
@@ -22143,7 +22122,7 @@ function ShapeTextPanels({
|
|
|
22143
22122
|
{
|
|
22144
22123
|
disabled: !canEdit,
|
|
22145
22124
|
"aria-label": "Text Color",
|
|
22146
|
-
value:
|
|
22125
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22147
22126
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22148
22127
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
22149
22128
|
patch: textColorPatch
|
|
@@ -22234,7 +22213,7 @@ function TextFormatToggle({
|
|
|
22234
22213
|
{
|
|
22235
22214
|
type: "button",
|
|
22236
22215
|
disabled,
|
|
22237
|
-
className:
|
|
22216
|
+
className: chunkAIA7CY5U_js.cn(
|
|
22238
22217
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22239
22218
|
italic && "italic",
|
|
22240
22219
|
underline && "underline",
|
|
@@ -22403,7 +22382,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22403
22382
|
canEdit,
|
|
22404
22383
|
onUpdateSmartArt
|
|
22405
22384
|
}) {
|
|
22406
|
-
const { t } =
|
|
22385
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22407
22386
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22408
22387
|
const handleLayoutSwitch = (newLayout) => {
|
|
22409
22388
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22422,7 +22401,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22422
22401
|
type: "button",
|
|
22423
22402
|
"data-testid": `smartart-layout-${type}`,
|
|
22424
22403
|
disabled: !canEdit,
|
|
22425
|
-
className:
|
|
22404
|
+
className: chunkAIA7CY5U_js.cn(
|
|
22426
22405
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22427
22406
|
"text-[9px] leading-tight",
|
|
22428
22407
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22449,7 +22428,7 @@ function SmartArtStyleControls({
|
|
|
22449
22428
|
onChangeColorScheme,
|
|
22450
22429
|
onChangeStyle
|
|
22451
22430
|
}) {
|
|
22452
|
-
const { t } =
|
|
22431
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22453
22432
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22454
22433
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22455
22434
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22460,7 +22439,7 @@ function SmartArtStyleControls({
|
|
|
22460
22439
|
disabled: !canEdit,
|
|
22461
22440
|
"data-testid": "smartart-color-scheme",
|
|
22462
22441
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22463
|
-
className:
|
|
22442
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-full"),
|
|
22464
22443
|
value: colorScheme,
|
|
22465
22444
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22466
22445
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22475,7 +22454,7 @@ function SmartArtStyleControls({
|
|
|
22475
22454
|
type: "button",
|
|
22476
22455
|
disabled: !canEdit,
|
|
22477
22456
|
"aria-pressed": style === s,
|
|
22478
|
-
className:
|
|
22457
|
+
className: chunkAIA7CY5U_js.cn(
|
|
22479
22458
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22480
22459
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22481
22460
|
),
|
|
@@ -22501,14 +22480,14 @@ function SmartArtPropertiesPanel({
|
|
|
22501
22480
|
onUpdateElement,
|
|
22502
22481
|
box
|
|
22503
22482
|
}) {
|
|
22504
|
-
const { t } =
|
|
22483
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22505
22484
|
const { pushColor } = useRecentColors();
|
|
22506
22485
|
const paneRef = React108__default.default.useRef(null);
|
|
22507
22486
|
const applySmartArtData = (newData) => {
|
|
22508
22487
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22509
22488
|
newData,
|
|
22510
22489
|
newData.layout,
|
|
22511
|
-
|
|
22490
|
+
chunk5CJHRYFK_js.resolveSmartArtDataPalette(newData),
|
|
22512
22491
|
newData.style ?? "flat",
|
|
22513
22492
|
"inspector",
|
|
22514
22493
|
box
|
|
@@ -22579,9 +22558,9 @@ function TableDataGrid({
|
|
|
22579
22558
|
canEdit,
|
|
22580
22559
|
onUpdateElement
|
|
22581
22560
|
}) {
|
|
22582
|
-
const { t } =
|
|
22561
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22583
22562
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22584
|
-
const { viewportWidth } =
|
|
22563
|
+
const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
|
|
22585
22564
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22586
22565
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22587
22566
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22745,7 +22724,7 @@ function TableCellPatternFill({
|
|
|
22745
22724
|
canEdit,
|
|
22746
22725
|
onUpdateCellStyle
|
|
22747
22726
|
}) {
|
|
22748
|
-
const { t } =
|
|
22727
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22749
22728
|
const commitRecentColor = useRecentColorCommit();
|
|
22750
22729
|
const translate = (key) => t(key);
|
|
22751
22730
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22800,7 +22779,7 @@ function TableCellAdvancedFill({
|
|
|
22800
22779
|
canEdit,
|
|
22801
22780
|
onUpdateCellStyle
|
|
22802
22781
|
}) {
|
|
22803
|
-
const { t } =
|
|
22782
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22804
22783
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22805
22784
|
const handleFillModeChange = (mode) => {
|
|
22806
22785
|
const next = mode;
|
|
@@ -22888,7 +22867,7 @@ function GradientControls({
|
|
|
22888
22867
|
canEdit,
|
|
22889
22868
|
onUpdateCellStyle
|
|
22890
22869
|
}) {
|
|
22891
|
-
const { t } =
|
|
22870
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
22892
22871
|
const commitRecentColor = useRecentColorCommit();
|
|
22893
22872
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22894
22873
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22986,7 +22965,7 @@ function TableCellColorField({
|
|
|
22986
22965
|
disabled,
|
|
22987
22966
|
onCommit
|
|
22988
22967
|
}) {
|
|
22989
|
-
const hex =
|
|
22968
|
+
const hex = chunkAIA7CY5U_js.normalizeHexColor(value, fallback);
|
|
22990
22969
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22991
22970
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22992
22971
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23016,7 +22995,7 @@ function TableCellFormattingPanel({
|
|
|
23016
22995
|
onUpdateTableData,
|
|
23017
22996
|
onUpdateMergeRows
|
|
23018
22997
|
}) {
|
|
23019
|
-
const { t } =
|
|
22998
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23020
22999
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
23021
23000
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
23022
23001
|
if (!cell) {
|
|
@@ -23094,7 +23073,7 @@ function TableCellFormattingPanel({
|
|
|
23094
23073
|
{
|
|
23095
23074
|
type: "button",
|
|
23096
23075
|
disabled: !canEdit,
|
|
23097
|
-
className:
|
|
23076
|
+
className: chunkAIA7CY5U_js.cn(
|
|
23098
23077
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23099
23078
|
cls,
|
|
23100
23079
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -23113,7 +23092,7 @@ function TableCellFormattingPanel({
|
|
|
23113
23092
|
{
|
|
23114
23093
|
type: "button",
|
|
23115
23094
|
disabled: !canEdit,
|
|
23116
|
-
className:
|
|
23095
|
+
className: chunkAIA7CY5U_js.cn(
|
|
23117
23096
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23118
23097
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23119
23098
|
),
|
|
@@ -23131,7 +23110,7 @@ function TableCellFormattingPanel({
|
|
|
23131
23110
|
{
|
|
23132
23111
|
type: "button",
|
|
23133
23112
|
disabled: !canEdit,
|
|
23134
|
-
className:
|
|
23113
|
+
className: chunkAIA7CY5U_js.cn(
|
|
23135
23114
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23136
23115
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23137
23116
|
),
|
|
@@ -23154,7 +23133,7 @@ function TableCellFormattingPanel({
|
|
|
23154
23133
|
DebouncedColorInput,
|
|
23155
23134
|
{
|
|
23156
23135
|
disabled: !canEdit,
|
|
23157
|
-
value:
|
|
23136
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23158
23137
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23159
23138
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23160
23139
|
}
|
|
@@ -23164,7 +23143,7 @@ function TableCellFormattingPanel({
|
|
|
23164
23143
|
{
|
|
23165
23144
|
type: "number",
|
|
23166
23145
|
disabled: !canEdit,
|
|
23167
|
-
className:
|
|
23146
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-14"),
|
|
23168
23147
|
min: 0,
|
|
23169
23148
|
max: 10,
|
|
23170
23149
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -23180,7 +23159,7 @@ function TableCellFormattingPanel({
|
|
|
23180
23159
|
{
|
|
23181
23160
|
type: "button",
|
|
23182
23161
|
disabled: !canEdit,
|
|
23183
|
-
className:
|
|
23162
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "text-center"),
|
|
23184
23163
|
onClick: () => {
|
|
23185
23164
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23186
23165
|
if (newRows) {
|
|
@@ -23195,7 +23174,7 @@ function TableCellFormattingPanel({
|
|
|
23195
23174
|
{
|
|
23196
23175
|
type: "button",
|
|
23197
23176
|
disabled: !canEdit,
|
|
23198
|
-
className:
|
|
23177
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "text-center"),
|
|
23199
23178
|
onClick: () => {
|
|
23200
23179
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23201
23180
|
if (newRows) {
|
|
@@ -23210,7 +23189,7 @@ function TableCellFormattingPanel({
|
|
|
23210
23189
|
{
|
|
23211
23190
|
type: "button",
|
|
23212
23191
|
disabled: !canEdit,
|
|
23213
|
-
className:
|
|
23192
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "text-center"),
|
|
23214
23193
|
onClick: () => {
|
|
23215
23194
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23216
23195
|
if (newRows) {
|
|
@@ -23229,7 +23208,7 @@ function TableStyleEditorFields({
|
|
|
23229
23208
|
canEdit,
|
|
23230
23209
|
onEdit
|
|
23231
23210
|
}) {
|
|
23232
|
-
const { t } =
|
|
23211
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23233
23212
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23234
23213
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23235
23214
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23334,7 +23313,7 @@ function BorderSideRow({
|
|
|
23334
23313
|
canEdit,
|
|
23335
23314
|
onEdit
|
|
23336
23315
|
}) {
|
|
23337
|
-
const { t } =
|
|
23316
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23338
23317
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23339
23318
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23340
23319
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23391,7 +23370,7 @@ function TableStyleEditor({
|
|
|
23391
23370
|
onAssignStyle,
|
|
23392
23371
|
onClose
|
|
23393
23372
|
}) {
|
|
23394
|
-
const { t } =
|
|
23373
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23395
23374
|
const themeColorMap = useThemeColorMap();
|
|
23396
23375
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23397
23376
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23483,7 +23462,7 @@ function TablePropertiesPanel({
|
|
|
23483
23462
|
onTableStyleMapChange,
|
|
23484
23463
|
onDeleteTableStyle
|
|
23485
23464
|
}) {
|
|
23486
|
-
const { t } =
|
|
23465
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23487
23466
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23488
23467
|
const td = tableElement.tableData;
|
|
23489
23468
|
if (!td) {
|
|
@@ -23565,7 +23544,7 @@ function TablePropertiesPanel({
|
|
|
23565
23544
|
] }),
|
|
23566
23545
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23567
23546
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23568
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23547
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkAIA7CY5U_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23569
23548
|
"button",
|
|
23570
23549
|
{
|
|
23571
23550
|
type: "button",
|
|
@@ -23713,7 +23692,7 @@ function ElementInspectorBody({
|
|
|
23713
23692
|
onUpdateTextStyle,
|
|
23714
23693
|
onMoveLayer
|
|
23715
23694
|
}) {
|
|
23716
|
-
const { t } =
|
|
23695
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23717
23696
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23718
23697
|
const handleToggleLock = () => {
|
|
23719
23698
|
if (!canEdit) {
|
|
@@ -23863,7 +23842,7 @@ function CommentMentionTextarea({
|
|
|
23863
23842
|
className,
|
|
23864
23843
|
ariaLabel
|
|
23865
23844
|
}) {
|
|
23866
|
-
const { t } =
|
|
23845
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
23867
23846
|
const textareaRef = React108.useRef(null);
|
|
23868
23847
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23869
23848
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23952,7 +23931,7 @@ function CommentMentionTextarea({
|
|
|
23952
23931
|
"data-testid": "pptx-comment-mention-option",
|
|
23953
23932
|
role: "option",
|
|
23954
23933
|
"aria-selected": index === safeHighlighted,
|
|
23955
|
-
className:
|
|
23934
|
+
className: chunkAIA7CY5U_js.cn(
|
|
23956
23935
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23957
23936
|
index === safeHighlighted && "bg-accent"
|
|
23958
23937
|
),
|
|
@@ -23999,7 +23978,7 @@ function InspectorCommentReplyForm({
|
|
|
23999
23978
|
onSubmit,
|
|
24000
23979
|
onCancel
|
|
24001
23980
|
}) {
|
|
24002
|
-
const { t } =
|
|
23981
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24003
23982
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
24004
23983
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24005
23984
|
CommentMentionTextarea,
|
|
@@ -24065,7 +24044,7 @@ function InspectorCommentRow({
|
|
|
24065
24044
|
onSelectElement,
|
|
24066
24045
|
depth = 0
|
|
24067
24046
|
}) {
|
|
24068
|
-
const { t } =
|
|
24047
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24069
24048
|
const isEditing = editingCommentId === comment.id;
|
|
24070
24049
|
const isReplying = replyingToCommentId === comment.id;
|
|
24071
24050
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -24075,7 +24054,7 @@ function InspectorCommentRow({
|
|
|
24075
24054
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24076
24055
|
"div",
|
|
24077
24056
|
{
|
|
24078
|
-
className:
|
|
24057
|
+
className: chunkAIA7CY5U_js.cn(
|
|
24079
24058
|
"rounded border border-border bg-card p-2",
|
|
24080
24059
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
24081
24060
|
),
|
|
@@ -24089,7 +24068,7 @@ function InspectorCommentRow({
|
|
|
24089
24068
|
t("pptx.comments.resolved")
|
|
24090
24069
|
] })
|
|
24091
24070
|
] }),
|
|
24092
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
24071
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkAIA7CY5U_js.formatCommentTimestamp(comment.createdAt) })
|
|
24093
24072
|
] }),
|
|
24094
24073
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24095
24074
|
"button",
|
|
@@ -24097,12 +24076,12 @@ function InspectorCommentRow({
|
|
|
24097
24076
|
type: "button",
|
|
24098
24077
|
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",
|
|
24099
24078
|
title: t("pptx.comments.commentingOn", {
|
|
24100
|
-
element:
|
|
24079
|
+
element: chunkAIA7CY5U_js.getElementLabel(targetElement)
|
|
24101
24080
|
}),
|
|
24102
24081
|
onClick: () => onSelectElement(targetElement.id),
|
|
24103
24082
|
children: [
|
|
24104
24083
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24105
|
-
|
|
24084
|
+
chunkAIA7CY5U_js.getElementLabel(targetElement)
|
|
24106
24085
|
]
|
|
24107
24086
|
}
|
|
24108
24087
|
) : /* @__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") })),
|
|
@@ -24171,7 +24150,7 @@ function InspectorCommentRow({
|
|
|
24171
24150
|
"button",
|
|
24172
24151
|
{
|
|
24173
24152
|
type: "button",
|
|
24174
|
-
className:
|
|
24153
|
+
className: chunkAIA7CY5U_js.cn(
|
|
24175
24154
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24176
24155
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24177
24156
|
),
|
|
@@ -24277,7 +24256,7 @@ function InspectorCommentsSection({
|
|
|
24277
24256
|
onSubmitReply,
|
|
24278
24257
|
onSelectElement
|
|
24279
24258
|
}) {
|
|
24280
|
-
const { t } =
|
|
24259
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24281
24260
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24282
24261
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24283
24262
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24314,7 +24293,7 @@ function InspectorCommentsSection({
|
|
|
24314
24293
|
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: [
|
|
24315
24294
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24316
24295
|
t("pptx.comments.commentingOn", {
|
|
24317
|
-
element:
|
|
24296
|
+
element: chunkAIA7CY5U_js.getElementLabel(selectedElement)
|
|
24318
24297
|
})
|
|
24319
24298
|
] }),
|
|
24320
24299
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24325,7 +24304,7 @@ function InspectorCommentsSection({
|
|
|
24325
24304
|
authors: commentAuthors,
|
|
24326
24305
|
rows: 2,
|
|
24327
24306
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24328
|
-
element:
|
|
24307
|
+
element: chunkAIA7CY5U_js.getElementLabel(selectedElement)
|
|
24329
24308
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24330
24309
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24331
24310
|
onChange: onSetCommentDraft,
|
|
@@ -24338,7 +24317,7 @@ function InspectorCommentsSection({
|
|
|
24338
24317
|
type: "button",
|
|
24339
24318
|
onClick: onAddComment,
|
|
24340
24319
|
disabled: !commentDraft.trim(),
|
|
24341
|
-
className:
|
|
24320
|
+
className: chunkAIA7CY5U_js.cn(
|
|
24342
24321
|
"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]!",
|
|
24343
24322
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24344
24323
|
),
|
|
@@ -24363,7 +24342,7 @@ function InspectorElementsTab({
|
|
|
24363
24342
|
onSelectElement,
|
|
24364
24343
|
onUpdateSlide
|
|
24365
24344
|
}) {
|
|
24366
|
-
const { t } =
|
|
24345
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24367
24346
|
const toggleHidden = (elementId2) => {
|
|
24368
24347
|
const elements2 = activeSlide?.elements;
|
|
24369
24348
|
if (!canEdit || !elements2) {
|
|
@@ -24379,13 +24358,13 @@ function InspectorElementsTab({
|
|
|
24379
24358
|
};
|
|
24380
24359
|
if (!activeSlide) {
|
|
24381
24360
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24382
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24361
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkAIA7CY5U_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24383
24362
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24384
24363
|
] });
|
|
24385
24364
|
}
|
|
24386
24365
|
const elements = activeSlide.elements || [];
|
|
24387
24366
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24388
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24367
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkAIA7CY5U_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24389
24368
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24390
24369
|
const index = elements.length - 1 - reversedIndex;
|
|
24391
24370
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24393,7 +24372,7 @@ function InspectorElementsTab({
|
|
|
24393
24372
|
"div",
|
|
24394
24373
|
{
|
|
24395
24374
|
title: `${el.type} - ${el.id}`,
|
|
24396
|
-
className:
|
|
24375
|
+
className: chunkAIA7CY5U_js.cn(
|
|
24397
24376
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24398
24377
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24399
24378
|
),
|
|
@@ -24429,8 +24408,8 @@ function InspectorPaneHeader({
|
|
|
24429
24408
|
onSetActiveTab,
|
|
24430
24409
|
onClose
|
|
24431
24410
|
}) {
|
|
24432
|
-
const { t } =
|
|
24433
|
-
const { viewportWidth } =
|
|
24411
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24412
|
+
const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
|
|
24434
24413
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24435
24414
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24436
24415
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24453,7 +24432,7 @@ function InspectorPaneHeader({
|
|
|
24453
24432
|
type: "button",
|
|
24454
24433
|
title: t(labelKey),
|
|
24455
24434
|
style: touchBtnStyle,
|
|
24456
|
-
className:
|
|
24435
|
+
className: chunkAIA7CY5U_js.cn(
|
|
24457
24436
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24458
24437
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24459
24438
|
),
|
|
@@ -24513,7 +24492,7 @@ function CustomPropertiesBlock({
|
|
|
24513
24492
|
canEdit,
|
|
24514
24493
|
onUpdate
|
|
24515
24494
|
}) {
|
|
24516
|
-
const { t } =
|
|
24495
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24517
24496
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24518
24497
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24519
24498
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24567,7 +24546,7 @@ function CustomPropertiesBlock({
|
|
|
24567
24546
|
"button",
|
|
24568
24547
|
{
|
|
24569
24548
|
type: "button",
|
|
24570
|
-
className:
|
|
24549
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24571
24550
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24572
24551
|
children: "\xD7"
|
|
24573
24552
|
}
|
|
@@ -24580,7 +24559,7 @@ function NotesHandoutCard({
|
|
|
24580
24559
|
notesMaster,
|
|
24581
24560
|
handoutMaster
|
|
24582
24561
|
}) {
|
|
24583
|
-
const { t } =
|
|
24562
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24584
24563
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24585
24564
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24586
24565
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24617,7 +24596,7 @@ function DocumentPropertiesCard({
|
|
|
24617
24596
|
onUpdateAppProperties,
|
|
24618
24597
|
onUpdateCustomProperties
|
|
24619
24598
|
}) {
|
|
24620
|
-
const { t } =
|
|
24599
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24621
24600
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24622
24601
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24623
24602
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24671,7 +24650,7 @@ function DocumentPropertiesCard({
|
|
|
24671
24650
|
function SlideSizeRescalePrompt({
|
|
24672
24651
|
onChoose
|
|
24673
24652
|
}) {
|
|
24674
|
-
const { t } =
|
|
24653
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24675
24654
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24676
24655
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24677
24656
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24713,7 +24692,7 @@ function SlideSizeCard({
|
|
|
24713
24692
|
onUpdateSlideSize,
|
|
24714
24693
|
hasContent
|
|
24715
24694
|
}) {
|
|
24716
|
-
const { t } =
|
|
24695
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24717
24696
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24718
24697
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24719
24698
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24824,7 +24803,7 @@ function PresentationSettingsCard({
|
|
|
24824
24803
|
canEdit,
|
|
24825
24804
|
onUpdate
|
|
24826
24805
|
}) {
|
|
24827
|
-
const { t } =
|
|
24806
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24828
24807
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24829
24808
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24830
24809
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24895,7 +24874,7 @@ function PresentationSettingsCard({
|
|
|
24895
24874
|
min: 1,
|
|
24896
24875
|
max: 16,
|
|
24897
24876
|
disabled: !canEdit,
|
|
24898
|
-
className:
|
|
24877
|
+
className: chunkAIA7CY5U_js.cn(INPUT2, "w-20"),
|
|
24899
24878
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24900
24879
|
onChange: (e) => onUpdate({
|
|
24901
24880
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24916,7 +24895,7 @@ function ThemeSelectorCard({
|
|
|
24916
24895
|
canEdit,
|
|
24917
24896
|
onApplyTheme
|
|
24918
24897
|
}) {
|
|
24919
|
-
const { t } =
|
|
24898
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24920
24899
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24921
24900
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24922
24901
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24979,7 +24958,7 @@ function SlideThemeOverridePanel({
|
|
|
24979
24958
|
canEdit,
|
|
24980
24959
|
onUpdateSlide
|
|
24981
24960
|
}) {
|
|
24982
|
-
const { t } =
|
|
24961
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
24983
24962
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24984
24963
|
const override = activeSlide?.clrMapOverride;
|
|
24985
24964
|
const isOverrideActive = override !== void 0;
|
|
@@ -25086,7 +25065,7 @@ function DirectionPicker({
|
|
|
25086
25065
|
disabled,
|
|
25087
25066
|
onChange
|
|
25088
25067
|
}) {
|
|
25089
|
-
const { t } =
|
|
25068
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25090
25069
|
if (directions.length <= 3) {
|
|
25091
25070
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25092
25071
|
"button",
|
|
@@ -25128,10 +25107,10 @@ function TransitionPreview({
|
|
|
25128
25107
|
const previewRef = React108.useRef(null);
|
|
25129
25108
|
const [playing, setPlaying] = React108.useState(false);
|
|
25130
25109
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
25131
|
-
const { t } =
|
|
25110
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25132
25111
|
const durationMs = transition.durationMs ?? 500;
|
|
25133
25112
|
const animations = React108.useMemo(
|
|
25134
|
-
() =>
|
|
25113
|
+
() => chunk5CJHRYFK_js.getSlideTransitionAnimations(
|
|
25135
25114
|
transition.type,
|
|
25136
25115
|
durationMs,
|
|
25137
25116
|
transition.direction,
|
|
@@ -25200,7 +25179,7 @@ function TransitionPreview({
|
|
|
25200
25179
|
]
|
|
25201
25180
|
}
|
|
25202
25181
|
),
|
|
25203
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25182
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk5CJHRYFK_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25204
25183
|
] });
|
|
25205
25184
|
}
|
|
25206
25185
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25212,7 +25191,7 @@ function SlideTransitionSection({
|
|
|
25212
25191
|
canEdit = true,
|
|
25213
25192
|
onTransitionChange
|
|
25214
25193
|
}) {
|
|
25215
|
-
const { t } =
|
|
25194
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25216
25195
|
if (!activeSlide) {
|
|
25217
25196
|
return null;
|
|
25218
25197
|
}
|
|
@@ -25243,7 +25222,7 @@ function SlideTransitionSection({
|
|
|
25243
25222
|
type: e.target.value
|
|
25244
25223
|
}),
|
|
25245
25224
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25246
|
-
children:
|
|
25225
|
+
children: chunkAIA7CY5U_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25247
25226
|
}
|
|
25248
25227
|
)
|
|
25249
25228
|
] }),
|
|
@@ -25401,7 +25380,7 @@ function TagsSection({
|
|
|
25401
25380
|
onUpdateTagCollections,
|
|
25402
25381
|
canEdit
|
|
25403
25382
|
}) {
|
|
25404
|
-
const { t } =
|
|
25383
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25405
25384
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25406
25385
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25407
25386
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25459,7 +25438,7 @@ function TagsSection({
|
|
|
25459
25438
|
"button",
|
|
25460
25439
|
{
|
|
25461
25440
|
type: "button",
|
|
25462
|
-
className:
|
|
25441
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25463
25442
|
title: t("pptx.tags.deleteTag"),
|
|
25464
25443
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25465
25444
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25501,7 +25480,7 @@ function PresentationPropertiesPanel({
|
|
|
25501
25480
|
tagCollections,
|
|
25502
25481
|
onUpdateTagCollections
|
|
25503
25482
|
}) {
|
|
25504
|
-
const { t } =
|
|
25483
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25505
25484
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25506
25485
|
(updates) => {
|
|
25507
25486
|
onUpdateSlide({
|
|
@@ -25588,7 +25567,7 @@ function PresentationPropertiesPanel({
|
|
|
25588
25567
|
canEdit
|
|
25589
25568
|
}
|
|
25590
25569
|
) }),
|
|
25591
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25570
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunkAIA7CY5U_js.cn(CARD2, "space-y-1"), children: [
|
|
25592
25571
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25593
25572
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25594
25573
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25606,17 +25585,17 @@ function SlideBackgroundPanel({
|
|
|
25606
25585
|
onSetTemplateBackground,
|
|
25607
25586
|
onGetTemplateBackgroundColor
|
|
25608
25587
|
}) {
|
|
25609
|
-
const { t } =
|
|
25588
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25610
25589
|
const bgImageInputRef = React108.useRef(null);
|
|
25611
25590
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25612
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25591
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkAIA7CY5U_js.cn(CARD2, "space-y-2"), children: [
|
|
25613
25592
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25614
25593
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25615
25594
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25616
25595
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25617
25596
|
DebouncedColorInput,
|
|
25618
25597
|
{
|
|
25619
|
-
value:
|
|
25598
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25620
25599
|
disabled: !canEdit,
|
|
25621
25600
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25622
25601
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25655,7 +25634,7 @@ function SlideBackgroundPanel({
|
|
|
25655
25634
|
"button",
|
|
25656
25635
|
{
|
|
25657
25636
|
type: "button",
|
|
25658
|
-
className:
|
|
25637
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "flex-1 text-center"),
|
|
25659
25638
|
disabled: !canEdit,
|
|
25660
25639
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25661
25640
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25688,7 +25667,7 @@ function SlideBackgroundPanel({
|
|
|
25688
25667
|
"button",
|
|
25689
25668
|
{
|
|
25690
25669
|
type: "button",
|
|
25691
|
-
className:
|
|
25670
|
+
className: chunkAIA7CY5U_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25692
25671
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25693
25672
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25694
25673
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25725,21 +25704,21 @@ function TemplateBackgroundCard({
|
|
|
25725
25704
|
onSetTemplateBackground,
|
|
25726
25705
|
onGetTemplateBackgroundColor
|
|
25727
25706
|
}) {
|
|
25728
|
-
const { t } =
|
|
25707
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25729
25708
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25730
25709
|
activeSlide,
|
|
25731
25710
|
slideMasters,
|
|
25732
25711
|
t("pptx.master.layout"),
|
|
25733
25712
|
t("pptx.master.master")
|
|
25734
25713
|
);
|
|
25735
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25714
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkAIA7CY5U_js.cn(CARD2, "space-y-2"), children: [
|
|
25736
25715
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25737
25716
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25738
25717
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25739
25718
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25740
25719
|
DebouncedColorInput,
|
|
25741
25720
|
{
|
|
25742
|
-
value:
|
|
25721
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25743
25722
|
disabled: !canEdit,
|
|
25744
25723
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25745
25724
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25752,7 +25731,7 @@ function TemplateBackgroundCard({
|
|
|
25752
25731
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25753
25732
|
DebouncedColorInput,
|
|
25754
25733
|
{
|
|
25755
|
-
value:
|
|
25734
|
+
value: chunkAIA7CY5U_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25756
25735
|
disabled: !canEdit,
|
|
25757
25736
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25758
25737
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25862,8 +25841,8 @@ function InspectorPane(props) {
|
|
|
25862
25841
|
panelWidth
|
|
25863
25842
|
} = props;
|
|
25864
25843
|
const hasSelection = selectedElement !== null;
|
|
25865
|
-
const { t } =
|
|
25866
|
-
const { dragY, handlers: dragHandlers } =
|
|
25844
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
25845
|
+
const { dragY, handlers: dragHandlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onClose);
|
|
25867
25846
|
const {
|
|
25868
25847
|
animationPanelHeight,
|
|
25869
25848
|
effectiveThemeOptions,
|
|
@@ -25885,7 +25864,7 @@ function InspectorPane(props) {
|
|
|
25885
25864
|
"div",
|
|
25886
25865
|
{
|
|
25887
25866
|
"data-pptx-chrome": "inspector",
|
|
25888
|
-
className:
|
|
25867
|
+
className: chunkAIA7CY5U_js.cn(
|
|
25889
25868
|
// Shared styles
|
|
25890
25869
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25891
25870
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26216,7 +26195,7 @@ function PresentationAnnotationOverlay({
|
|
|
26216
26195
|
);
|
|
26217
26196
|
}
|
|
26218
26197
|
function PresentationToolbar(p) {
|
|
26219
|
-
const { t } =
|
|
26198
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26220
26199
|
const ref = useWebControl(
|
|
26221
26200
|
{
|
|
26222
26201
|
current: p.currentSlideIndex,
|
|
@@ -26275,8 +26254,8 @@ function PresentationTouchControls({
|
|
|
26275
26254
|
onEndPresentation,
|
|
26276
26255
|
hideNavigation = false
|
|
26277
26256
|
}) {
|
|
26278
|
-
const { t } =
|
|
26279
|
-
const { isTouchDevice } =
|
|
26257
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26258
|
+
const { isTouchDevice } = chunk5CJHRYFK_js.useIsMobile();
|
|
26280
26259
|
if (!isTouchDevice) {
|
|
26281
26260
|
return null;
|
|
26282
26261
|
}
|
|
@@ -26358,7 +26337,7 @@ function KeepAnnotationsDialog({
|
|
|
26358
26337
|
onKeep,
|
|
26359
26338
|
onDiscard
|
|
26360
26339
|
}) {
|
|
26361
|
-
const { t } =
|
|
26340
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26362
26341
|
if (!isOpen) {
|
|
26363
26342
|
return null;
|
|
26364
26343
|
}
|
|
@@ -26406,7 +26385,7 @@ function PasteSpecialDialog({
|
|
|
26406
26385
|
onCancel,
|
|
26407
26386
|
onConfirm
|
|
26408
26387
|
}) {
|
|
26409
|
-
const { t } =
|
|
26388
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26410
26389
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26411
26390
|
if (!isOpen) {
|
|
26412
26391
|
return null;
|
|
@@ -26464,7 +26443,7 @@ function PasteOptionsToolbar({
|
|
|
26464
26443
|
onChoose,
|
|
26465
26444
|
onDismiss
|
|
26466
26445
|
}) {
|
|
26467
|
-
const { t } =
|
|
26446
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26468
26447
|
const [rect, setRect] = React108.useState(null);
|
|
26469
26448
|
React108.useEffect(() => {
|
|
26470
26449
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26491,7 +26470,7 @@ function NotesPagePreview({
|
|
|
26491
26470
|
frameSlides,
|
|
26492
26471
|
maxPages = 3
|
|
26493
26472
|
}) {
|
|
26494
|
-
const { t } =
|
|
26473
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26495
26474
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26496
26475
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26497
26476
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26579,15 +26558,15 @@ function PrintPreview({
|
|
|
26579
26558
|
frameSlides,
|
|
26580
26559
|
maxPages = 3
|
|
26581
26560
|
}) {
|
|
26582
|
-
const { t } =
|
|
26561
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26583
26562
|
const pages = React108.useMemo(
|
|
26584
|
-
() =>
|
|
26563
|
+
() => chunkAIA7CY5U_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26585
26564
|
[slideIndices, slidesPerPage, orientation]
|
|
26586
26565
|
);
|
|
26587
|
-
const printable = React108.useMemo(() =>
|
|
26566
|
+
const printable = React108.useMemo(() => chunkAIA7CY5U_js.getPrintableArea(orientation), [orientation]);
|
|
26588
26567
|
const visiblePages = pages.slice(0, maxPages);
|
|
26589
26568
|
const isThreePerPage = slidesPerPage === 3;
|
|
26590
|
-
const noteLineCount =
|
|
26569
|
+
const noteLineCount = chunkAIA7CY5U_js.generateNoteLineCount();
|
|
26591
26570
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26592
26571
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26593
26572
|
const noteAreaFraction = 0.5;
|
|
@@ -26685,7 +26664,7 @@ function PrintSettingsPanel({
|
|
|
26685
26664
|
totalSlides,
|
|
26686
26665
|
activeSlideIndex
|
|
26687
26666
|
}) {
|
|
26688
|
-
const { t } =
|
|
26667
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26689
26668
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26690
26669
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26691
26670
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26921,13 +26900,13 @@ function PrintDialog({
|
|
|
26921
26900
|
defaultSlidesPerPage,
|
|
26922
26901
|
defaultFrameSlides
|
|
26923
26902
|
}) {
|
|
26924
|
-
const { t } =
|
|
26903
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
26925
26904
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26926
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26927
|
-
const { viewportWidth } =
|
|
26905
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
|
|
26906
|
+
const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
|
|
26928
26907
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26929
26908
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26930
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26909
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk5CJHRYFK_js.useViewerOptionsContext());
|
|
26931
26910
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26932
26911
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26933
26912
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -27111,7 +27090,7 @@ function ShowOptionsFieldset({
|
|
|
27111
27090
|
draft,
|
|
27112
27091
|
update
|
|
27113
27092
|
}) {
|
|
27114
|
-
const { t } =
|
|
27093
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27115
27094
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
27116
27095
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
27117
27096
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27169,7 +27148,7 @@ function ShowSlidesFieldset({
|
|
|
27169
27148
|
slideCount,
|
|
27170
27149
|
customShows
|
|
27171
27150
|
}) {
|
|
27172
|
-
const { t } =
|
|
27151
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27173
27152
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
27174
27153
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
27175
27154
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27272,7 +27251,7 @@ function SetUpSlideShowDialog({
|
|
|
27272
27251
|
customShows,
|
|
27273
27252
|
slideCount
|
|
27274
27253
|
}) {
|
|
27275
|
-
const { t } =
|
|
27254
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27276
27255
|
const [draft, setDraft] = React108.useState({
|
|
27277
27256
|
...properties
|
|
27278
27257
|
});
|
|
@@ -27408,16 +27387,16 @@ function BroadcastDialog({
|
|
|
27408
27387
|
defaultUserName,
|
|
27409
27388
|
defaultServerUrl
|
|
27410
27389
|
}) {
|
|
27411
|
-
const { t } =
|
|
27390
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27412
27391
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27413
|
-
const collab =
|
|
27392
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
27414
27393
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27415
27394
|
const [roomId, setRoomId] = React108.useState("");
|
|
27416
27395
|
const [userName, setUserName] = React108.useState("");
|
|
27417
27396
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27418
27397
|
const [copied, setCopied] = React108.useState(false);
|
|
27419
27398
|
const dialogRef = React108.useRef(null);
|
|
27420
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27399
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
|
|
27421
27400
|
useModalFocus(open, dialogRef, onClose);
|
|
27422
27401
|
React108.useEffect(() => {
|
|
27423
27402
|
if (open && !isBroadcasting) {
|
|
@@ -27576,7 +27555,7 @@ function StartBroadcastForm({
|
|
|
27576
27555
|
onUserNameChange,
|
|
27577
27556
|
onServerUrlChange
|
|
27578
27557
|
}) {
|
|
27579
|
-
const { t } =
|
|
27558
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27580
27559
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27581
27560
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27582
27561
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27652,7 +27631,7 @@ function ActiveBroadcastView({
|
|
|
27652
27631
|
onCopyUrl,
|
|
27653
27632
|
onStopBroadcast
|
|
27654
27633
|
}) {
|
|
27655
|
-
const { t } =
|
|
27634
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27656
27635
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27657
27636
|
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" });
|
|
27658
27637
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27733,7 +27712,7 @@ function ActiveSessionView({
|
|
|
27733
27712
|
onCopyRoomId,
|
|
27734
27713
|
onStopCollaboration
|
|
27735
27714
|
}) {
|
|
27736
|
-
const { t } =
|
|
27715
|
+
const { t } = chunkAIA7CY5U_js.useTranslation(), viewerOptions = chunk5CJHRYFK_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({
|
|
27737
27716
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27738
27717
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27739
27718
|
localUserColor: collab.config.userColor,
|
|
@@ -27831,8 +27810,8 @@ function StartSessionForm({
|
|
|
27831
27810
|
connectionFailed,
|
|
27832
27811
|
onRetry
|
|
27833
27812
|
}) {
|
|
27834
|
-
const { t } =
|
|
27835
|
-
const { viewportWidth } =
|
|
27813
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27814
|
+
const { viewportWidth } = chunk5CJHRYFK_js.useIsMobile();
|
|
27836
27815
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27837
27816
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27838
27817
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27966,9 +27945,9 @@ function ShareDialog({
|
|
|
27966
27945
|
defaultUserName,
|
|
27967
27946
|
defaultServerUrl
|
|
27968
27947
|
}) {
|
|
27969
|
-
const collab =
|
|
27948
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
27970
27949
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27971
|
-
const { t } =
|
|
27950
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
27972
27951
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27973
27952
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27974
27953
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27977,9 +27956,9 @@ function ShareDialog({
|
|
|
27977
27956
|
const [invitation, setInvitation] = React108.useState("");
|
|
27978
27957
|
const [copied, setCopied] = React108.useState(false);
|
|
27979
27958
|
const dialogRef = React108.useRef(null);
|
|
27980
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27959
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
|
|
27981
27960
|
useModalFocus(open, dialogRef, onClose);
|
|
27982
|
-
const { viewportWidth, viewportHeight } =
|
|
27961
|
+
const { viewportWidth, viewportHeight } = chunk5CJHRYFK_js.useIsMobile();
|
|
27983
27962
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27984
27963
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27985
27964
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28152,7 +28131,7 @@ function HyperlinkTabContent({
|
|
|
28152
28131
|
inputCls,
|
|
28153
28132
|
onEnterConfirm
|
|
28154
28133
|
}) {
|
|
28155
|
-
const { t } =
|
|
28134
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
28156
28135
|
const handleEnterKey = (e) => {
|
|
28157
28136
|
if (e.key === "Enter") {
|
|
28158
28137
|
onEnterConfirm();
|
|
@@ -28277,12 +28256,12 @@ function HyperlinkEditDialog({
|
|
|
28277
28256
|
onConfirm,
|
|
28278
28257
|
onCancel
|
|
28279
28258
|
}) {
|
|
28280
|
-
const { t } =
|
|
28281
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28259
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
28260
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onCancel);
|
|
28282
28261
|
const inputRef = React108.useRef(null);
|
|
28283
|
-
const detectedType =
|
|
28284
|
-
const emailParts =
|
|
28285
|
-
const detectedSlide =
|
|
28262
|
+
const detectedType = chunk5CJHRYFK_js.detectHyperlinkTargetType(initialUrl, initialAction);
|
|
28263
|
+
const emailParts = chunk5CJHRYFK_js.parseHyperlinkEmailUrl(initialUrl || "");
|
|
28264
|
+
const detectedSlide = chunk5CJHRYFK_js.parseHyperlinkSlideNumber(initialUrl, initialAction);
|
|
28286
28265
|
const detectedVerb = initialAction ? pptx.HYPERLINK_ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28287
28266
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
28288
28267
|
const [url, setUrl] = React108.useState(
|
|
@@ -28314,7 +28293,7 @@ function HyperlinkEditDialog({
|
|
|
28314
28293
|
actionVerb
|
|
28315
28294
|
});
|
|
28316
28295
|
};
|
|
28317
|
-
const tabCls = (active) =>
|
|
28296
|
+
const tabCls = (active) => chunkAIA7CY5U_js.cn(
|
|
28318
28297
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28319
28298
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28320
28299
|
);
|
|
@@ -28562,7 +28541,7 @@ function ViewerBottomPanels({
|
|
|
28562
28541
|
notesStyle,
|
|
28563
28542
|
onNotesHeightChange
|
|
28564
28543
|
}) {
|
|
28565
|
-
const { isHidden } =
|
|
28544
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(hiddenActions);
|
|
28566
28545
|
const customization = useViewerCustomizationContext();
|
|
28567
28546
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28568
28547
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28693,7 +28672,7 @@ function ViewerInspector({
|
|
|
28693
28672
|
onPreviewElement,
|
|
28694
28673
|
elementById
|
|
28695
28674
|
}) {
|
|
28696
|
-
const { t } =
|
|
28675
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
28697
28676
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28698
28677
|
const liveEdit = onPreviewElement ? {
|
|
28699
28678
|
element: selectedElement,
|
|
@@ -28909,10 +28888,10 @@ function ViewerToolbarSection(props) {
|
|
|
28909
28888
|
onSetShowGuides,
|
|
28910
28889
|
ribbonDisplay
|
|
28911
28890
|
} = props;
|
|
28912
|
-
const { t } =
|
|
28891
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
28913
28892
|
const customization = useViewerCustomizationContext();
|
|
28914
28893
|
const ribbon = useRibbonDisplayFallback(ribbonDisplay);
|
|
28915
|
-
const ribbonLayout =
|
|
28894
|
+
const ribbonLayout = chunk5CJHRYFK_js.useController(ribbon).layout;
|
|
28916
28895
|
const handleAddAnimation = React108.useCallback(
|
|
28917
28896
|
(preset, group) => {
|
|
28918
28897
|
if (!selectedElement || !activeSlide) {
|
|
@@ -28964,7 +28943,7 @@ function ViewerToolbarSection(props) {
|
|
|
28964
28943
|
[activeSlide, propertyHandlers]
|
|
28965
28944
|
);
|
|
28966
28945
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28967
|
-
() =>
|
|
28946
|
+
() => chunk5CJHRYFK_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28968
28947
|
[s.layoutOptions, activeSlide]
|
|
28969
28948
|
);
|
|
28970
28949
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29372,14 +29351,14 @@ function ViewerToolbarSection(props) {
|
|
|
29372
29351
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29373
29352
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29374
29353
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29375
|
-
reviewComments:
|
|
29354
|
+
reviewComments: chunk5CJHRYFK_js.createReviewCommentsHost({
|
|
29376
29355
|
state: s,
|
|
29377
29356
|
activeSlideIndex,
|
|
29378
29357
|
updateSlides: ops.updateSlides,
|
|
29379
29358
|
markDirty: history.markDirty
|
|
29380
29359
|
}),
|
|
29381
29360
|
formatPainterActive: s.formatPainterActive,
|
|
29382
|
-
canActivateFormatPainter:
|
|
29361
|
+
canActivateFormatPainter: chunkAIA7CY5U_js.hasCopyableFormat(selectedElement),
|
|
29383
29362
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29384
29363
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29385
29364
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29488,14 +29467,14 @@ function CustomShowsDialog({
|
|
|
29488
29467
|
onRun,
|
|
29489
29468
|
onClose
|
|
29490
29469
|
}) {
|
|
29491
|
-
const { t } =
|
|
29470
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
29492
29471
|
const controller = React108.useMemo(
|
|
29493
29472
|
() => pptx.createCustomShowsController(customShows, activeCustomShowId),
|
|
29494
29473
|
// A fresh draft per open: the host mounts this only while the dialog is open.
|
|
29495
29474
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29496
29475
|
[]
|
|
29497
29476
|
);
|
|
29498
|
-
|
|
29477
|
+
chunk5CJHRYFK_js.useController(controller);
|
|
29499
29478
|
const view = controller.view(slides);
|
|
29500
29479
|
const [active, setActive] = React108.useState(activeCustomShowId ?? "");
|
|
29501
29480
|
const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
|
|
@@ -29774,8 +29753,8 @@ function EquationEditorDialog({
|
|
|
29774
29753
|
onInsert,
|
|
29775
29754
|
existingOmml
|
|
29776
29755
|
}) {
|
|
29777
|
-
const { t } =
|
|
29778
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29756
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
29757
|
+
const { panelStyle, handlers: dragHandlers } = chunk5CJHRYFK_js.useModalDismissDrag(onClose);
|
|
29779
29758
|
const initialLatex = React108.useMemo(() => {
|
|
29780
29759
|
if (!existingOmml) {
|
|
29781
29760
|
return "";
|
|
@@ -29897,7 +29876,7 @@ function EquationEditorDialog({
|
|
|
29897
29876
|
{
|
|
29898
29877
|
type: "button",
|
|
29899
29878
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29900
|
-
className:
|
|
29879
|
+
className: chunkAIA7CY5U_js.cn(
|
|
29901
29880
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29902
29881
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29903
29882
|
),
|
|
@@ -29962,7 +29941,7 @@ function InsertSmartArtDialog({
|
|
|
29962
29941
|
onInsert
|
|
29963
29942
|
}) {
|
|
29964
29943
|
const ref = React108.useRef(null);
|
|
29965
|
-
const { t } =
|
|
29944
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
29966
29945
|
React108.useLayoutEffect(() => {
|
|
29967
29946
|
if (ref.current) {
|
|
29968
29947
|
ref.current.translateLabel = t;
|
|
@@ -29986,7 +29965,7 @@ function InsertChartDialog({
|
|
|
29986
29965
|
onInsert
|
|
29987
29966
|
}) {
|
|
29988
29967
|
const ref = React108.useRef(null);
|
|
29989
|
-
const { t } =
|
|
29968
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
29990
29969
|
React108.useLayoutEffect(() => {
|
|
29991
29970
|
if (ref.current) {
|
|
29992
29971
|
ref.current.translateLabel = t;
|
|
@@ -30384,10 +30363,10 @@ function useStageAnimationTriggers(root, slide, triggers, onStageClick) {
|
|
|
30384
30363
|
};
|
|
30385
30364
|
}
|
|
30386
30365
|
function PresentationStage(props) {
|
|
30387
|
-
const inherited = React108.useContext(
|
|
30366
|
+
const inherited = React108.useContext(chunk5CJHRYFK_js.ElementRenderErrorReportingContext);
|
|
30388
30367
|
const reporter = props.onElementRenderError ?? inherited?.onElementRenderError;
|
|
30389
30368
|
const errorReporting = React108.useMemo(() => ({ onElementRenderError: reporter }), [reporter]);
|
|
30390
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30369
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorReportingContext.Provider, { value: errorReporting, children: /* @__PURE__ */ jsxRuntime.jsx(PresentationStageContent, { ...props }) });
|
|
30391
30370
|
}
|
|
30392
30371
|
function PresentationStageContent({
|
|
30393
30372
|
activeSlide,
|
|
@@ -30499,11 +30478,11 @@ function PresentationStageContent({
|
|
|
30499
30478
|
})
|
|
30500
30479
|
},
|
|
30501
30480
|
children: [
|
|
30502
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30481
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30503
30482
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30504
30483
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30505
30484
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30506
|
-
|
|
30485
|
+
chunk5CJHRYFK_js.ElementRenderer,
|
|
30507
30486
|
{
|
|
30508
30487
|
element,
|
|
30509
30488
|
activeSlide,
|
|
@@ -30541,7 +30520,7 @@ function PresentationStageContent({
|
|
|
30541
30520
|
`tpl-${element.id}`
|
|
30542
30521
|
)),
|
|
30543
30522
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30544
|
-
|
|
30523
|
+
chunk5CJHRYFK_js.ElementRenderer,
|
|
30545
30524
|
{
|
|
30546
30525
|
element,
|
|
30547
30526
|
activeSlide,
|
|
@@ -30594,7 +30573,7 @@ function PresentationStageContent({
|
|
|
30594
30573
|
function noop() {
|
|
30595
30574
|
}
|
|
30596
30575
|
function PresentationContextMenu(p) {
|
|
30597
|
-
const { t } =
|
|
30576
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
30598
30577
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30599
30578
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30600
30579
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30653,7 +30632,7 @@ function PresentationTransitionMount({
|
|
|
30653
30632
|
templateElementsBySlideId
|
|
30654
30633
|
);
|
|
30655
30634
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30656
|
-
|
|
30635
|
+
chunk5CJHRYFK_js.PresentationTransitionOverlay,
|
|
30657
30636
|
{
|
|
30658
30637
|
outgoingSlide,
|
|
30659
30638
|
templateElements: templates.outgoing,
|
|
@@ -30698,9 +30677,9 @@ function ViewerCanvasArea(props) {
|
|
|
30698
30677
|
aiHighlightOverlay,
|
|
30699
30678
|
aiCanvasActive = false
|
|
30700
30679
|
} = props;
|
|
30701
|
-
const { t } =
|
|
30702
|
-
const { isHidden } =
|
|
30703
|
-
const viewerOptions =
|
|
30680
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
30681
|
+
const { isHidden } = chunk5CJHRYFK_js.useToolbarVisibility(hiddenActions);
|
|
30682
|
+
const viewerOptions = chunk5CJHRYFK_js.useViewerOptionsContext();
|
|
30704
30683
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30705
30684
|
state: s,
|
|
30706
30685
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30746,9 +30725,9 @@ function ViewerCanvasArea(props) {
|
|
|
30746
30725
|
);
|
|
30747
30726
|
const handleHyperlinkClick = React108.useCallback(
|
|
30748
30727
|
(url) => {
|
|
30749
|
-
if (
|
|
30728
|
+
if (chunkAIA7CY5U_js.isPpactionUrl(url)) {
|
|
30750
30729
|
if (mode === "present") {
|
|
30751
|
-
const parsed =
|
|
30730
|
+
const parsed = chunkAIA7CY5U_js.parsePpactionUrl(url);
|
|
30752
30731
|
if (parsed) {
|
|
30753
30732
|
const action = {
|
|
30754
30733
|
action: parsed.action,
|
|
@@ -30833,7 +30812,7 @@ function ViewerCanvasArea(props) {
|
|
|
30833
30812
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30834
30813
|
}
|
|
30835
30814
|
}, [mode, presentation, s]);
|
|
30836
|
-
const swipe =
|
|
30815
|
+
const swipe = chunk5CJHRYFK_js.useSwipeNavigation({
|
|
30837
30816
|
enabled: swipeEnabled,
|
|
30838
30817
|
onNext: handleSwipeNext,
|
|
30839
30818
|
onPrev: handleSwipePrev
|
|
@@ -31019,14 +30998,14 @@ function ViewerCanvasArea(props) {
|
|
|
31019
30998
|
outlineAuthoring,
|
|
31020
30999
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31021
31000
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31022
|
-
|
|
31001
|
+
chunk5CJHRYFK_js.RemoteSelectionOverlay,
|
|
31023
31002
|
{
|
|
31024
31003
|
elements: effectiveSlide?.elements ?? [],
|
|
31025
31004
|
activeSlideIndex
|
|
31026
31005
|
}
|
|
31027
31006
|
),
|
|
31028
31007
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31029
|
-
|
|
31008
|
+
chunk5CJHRYFK_js.CollaborationCursorOverlay,
|
|
31030
31009
|
{
|
|
31031
31010
|
activeSlideIndex,
|
|
31032
31011
|
canvasWidth: canvasSize.width,
|
|
@@ -31263,8 +31242,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31263
31242
|
] });
|
|
31264
31243
|
}
|
|
31265
31244
|
function ChartFormatPanel() {
|
|
31266
|
-
const { t } =
|
|
31267
|
-
const commands =
|
|
31245
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
31246
|
+
const commands = chunk5CJHRYFK_js.useChartFormatContext();
|
|
31268
31247
|
const ref = React108.useRef(null);
|
|
31269
31248
|
const chart = commands?.chart;
|
|
31270
31249
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31299,7 +31278,7 @@ function ChartFormatPanel() {
|
|
|
31299
31278
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
31300
31279
|
}
|
|
31301
31280
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
31302
|
-
const { t } =
|
|
31281
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
31303
31282
|
const ref = React108.useRef(null);
|
|
31304
31283
|
React108.useEffect(() => {
|
|
31305
31284
|
const node = ref.current;
|
|
@@ -31336,8 +31315,8 @@ function MobileDismissSheet({
|
|
|
31336
31315
|
className,
|
|
31337
31316
|
children
|
|
31338
31317
|
}) {
|
|
31339
|
-
const { t } =
|
|
31340
|
-
const { dragY, handlers } =
|
|
31318
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
31319
|
+
const { dragY, handlers } = chunk5CJHRYFK_js.useSheetDismissDrag(onClose);
|
|
31341
31320
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31342
31321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31343
31322
|
"button",
|
|
@@ -31606,7 +31585,7 @@ function ThemeThumbnail({
|
|
|
31606
31585
|
{
|
|
31607
31586
|
type: "button",
|
|
31608
31587
|
onClick,
|
|
31609
|
-
className:
|
|
31588
|
+
className: chunkAIA7CY5U_js.cn(
|
|
31610
31589
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31611
31590
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31612
31591
|
),
|
|
@@ -31637,7 +31616,7 @@ function ThemeGallery({
|
|
|
31637
31616
|
onApplyTheme,
|
|
31638
31617
|
onImportTheme
|
|
31639
31618
|
}) {
|
|
31640
|
-
const { t } =
|
|
31619
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
31641
31620
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31642
31621
|
const fileInputRef = React108.useRef(null);
|
|
31643
31622
|
React108.useEffect(() => {
|
|
@@ -31774,8 +31753,8 @@ function ViewerSidePanels(props) {
|
|
|
31774
31753
|
aiBridge,
|
|
31775
31754
|
aiPanel
|
|
31776
31755
|
} = props;
|
|
31777
|
-
const aiAssistant =
|
|
31778
|
-
const AiPanel = aiAssistant?.panel ??
|
|
31756
|
+
const aiAssistant = chunkVCNDY7HS_js.aiAssistants.resolve(aiConfig);
|
|
31757
|
+
const AiPanel = aiAssistant?.panel ?? chunkVCNDY7HS_js.AiChatPanelLazy;
|
|
31779
31758
|
const handleSetSlideSize = (size, rescaleMode) => {
|
|
31780
31759
|
if (rescaleMode && s.slideSizeEmu) {
|
|
31781
31760
|
s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
|
|
@@ -32081,7 +32060,7 @@ function ViewerMainContent(props) {
|
|
|
32081
32060
|
);
|
|
32082
32061
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
32083
32062
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
32084
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32063
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
32085
32064
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32086
32065
|
slidesPaneRenderer ? (
|
|
32087
32066
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -32291,7 +32270,7 @@ function AutosaveRecoveryDialog({
|
|
|
32291
32270
|
onDiscard,
|
|
32292
32271
|
busy = false
|
|
32293
32272
|
}) {
|
|
32294
|
-
const { t } =
|
|
32273
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32295
32274
|
if (!prompt) {
|
|
32296
32275
|
return null;
|
|
32297
32276
|
}
|
|
@@ -32347,7 +32326,7 @@ function CompatibilityToasts({
|
|
|
32347
32326
|
rightInset = 0,
|
|
32348
32327
|
bottomInset = 0
|
|
32349
32328
|
}) {
|
|
32350
|
-
const { t } =
|
|
32329
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32351
32330
|
const ref = useWebControl(
|
|
32352
32331
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
32353
32332
|
{
|
|
@@ -32392,7 +32371,7 @@ function HeaderFooterPanel({
|
|
|
32392
32371
|
onApplyToCurrent,
|
|
32393
32372
|
onClose
|
|
32394
32373
|
}) {
|
|
32395
|
-
const { t } =
|
|
32374
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32396
32375
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
32397
32376
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
32398
32377
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -32533,7 +32512,7 @@ function HeaderFooterPanel({
|
|
|
32533
32512
|
] }) });
|
|
32534
32513
|
}
|
|
32535
32514
|
function MobileBottomBar(p) {
|
|
32536
|
-
const { t } =
|
|
32515
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32537
32516
|
const handlers = {
|
|
32538
32517
|
slides: p.onOpenSlides,
|
|
32539
32518
|
insert: p.onOpenInsert,
|
|
@@ -32559,7 +32538,7 @@ function MobileSlidesSheet({
|
|
|
32559
32538
|
onClose,
|
|
32560
32539
|
...sidebar
|
|
32561
32540
|
}) {
|
|
32562
|
-
const { t } =
|
|
32541
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32563
32542
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32564
32543
|
MobileSheet,
|
|
32565
32544
|
{
|
|
@@ -32586,7 +32565,7 @@ function MobileChromeOverlay(props) {
|
|
|
32586
32565
|
slideSectionGroups,
|
|
32587
32566
|
canEdit,
|
|
32588
32567
|
commentCount
|
|
32589
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32568
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunk5CJHRYFK_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32590
32569
|
s.setIsSlidesPaneOpen(false);
|
|
32591
32570
|
s.setIsMobileInsertOpen(false);
|
|
32592
32571
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32686,7 +32665,7 @@ function MobileChromeOverlay(props) {
|
|
|
32686
32665
|
] });
|
|
32687
32666
|
}
|
|
32688
32667
|
function ReadOnlyBanner(p) {
|
|
32689
|
-
const { t } =
|
|
32668
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32690
32669
|
const ref = useWebControl(
|
|
32691
32670
|
pptx.readOnlyBannerState(
|
|
32692
32671
|
p.recommendation,
|
|
@@ -32720,7 +32699,7 @@ function RibbonCustomizationStyle({
|
|
|
32720
32699
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32721
32700
|
}
|
|
32722
32701
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32723
|
-
const { t } =
|
|
32702
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32724
32703
|
if (notices.length === 0) {
|
|
32725
32704
|
return null;
|
|
32726
32705
|
}
|
|
@@ -32778,14 +32757,14 @@ function AddinTable({
|
|
|
32778
32757
|
selectedId,
|
|
32779
32758
|
onSelect
|
|
32780
32759
|
}) {
|
|
32781
|
-
const { t } =
|
|
32760
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32782
32761
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32783
32762
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32784
32763
|
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(
|
|
32785
32764
|
"tr",
|
|
32786
32765
|
{
|
|
32787
32766
|
onClick: () => onSelect(row.id),
|
|
32788
|
-
className:
|
|
32767
|
+
className: chunkAIA7CY5U_js.cn(
|
|
32789
32768
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32790
32769
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32791
32770
|
),
|
|
@@ -32800,7 +32779,7 @@ function AddinTable({
|
|
|
32800
32779
|
] });
|
|
32801
32780
|
}
|
|
32802
32781
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32803
|
-
const { t } =
|
|
32782
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32804
32783
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32805
32784
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32806
32785
|
const active = rows.filter((row) => row.active);
|
|
@@ -32843,7 +32822,7 @@ function CommandList({
|
|
|
32843
32822
|
selectedId,
|
|
32844
32823
|
onSelect
|
|
32845
32824
|
}) {
|
|
32846
|
-
const { t } =
|
|
32825
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32847
32826
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32848
32827
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32849
32828
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32864,7 +32843,7 @@ function CommandList({
|
|
|
32864
32843
|
role: "option",
|
|
32865
32844
|
"aria-selected": selectedId === id,
|
|
32866
32845
|
onClick: () => onSelect(id),
|
|
32867
|
-
className:
|
|
32846
|
+
className: chunkAIA7CY5U_js.cn(
|
|
32868
32847
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32869
32848
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32870
32849
|
),
|
|
@@ -32882,7 +32861,7 @@ function OptionsQuickAccessPane({
|
|
|
32882
32861
|
onQuickAccessCommandsChange,
|
|
32883
32862
|
onResetQuickAccess
|
|
32884
32863
|
}) {
|
|
32885
|
-
const { t } =
|
|
32864
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
32886
32865
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32887
32866
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32888
32867
|
const current = options.quickAccess.commandIds;
|
|
@@ -32996,7 +32975,7 @@ function OptionsRibbonPane({
|
|
|
32996
32975
|
onRibbonTabHiddenChange,
|
|
32997
32976
|
onResetRibbon
|
|
32998
32977
|
}) {
|
|
32999
|
-
const { t } =
|
|
32978
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
33000
32979
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
33001
32980
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
33002
32981
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -33008,7 +32987,7 @@ function OptionsRibbonPane({
|
|
|
33008
32987
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33009
32988
|
"label",
|
|
33010
32989
|
{
|
|
33011
|
-
className:
|
|
32990
|
+
className: chunkAIA7CY5U_js.cn(
|
|
33012
32991
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
33013
32992
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
33014
32993
|
),
|
|
@@ -33042,7 +33021,7 @@ function OptionsRibbonPane({
|
|
|
33042
33021
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33043
33022
|
"div",
|
|
33044
33023
|
{
|
|
33045
|
-
className:
|
|
33024
|
+
className: chunkAIA7CY5U_js.cn(
|
|
33046
33025
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
33047
33026
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
33048
33027
|
),
|
|
@@ -33063,12 +33042,12 @@ async function exportAiChatLogs(options) {
|
|
|
33063
33042
|
chats,
|
|
33064
33043
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
33065
33044
|
(filename, content, mime) => {
|
|
33066
|
-
|
|
33045
|
+
chunk5CJHRYFK_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
33067
33046
|
}
|
|
33068
33047
|
);
|
|
33069
33048
|
}
|
|
33070
33049
|
function SettingsAiTab({ store }) {
|
|
33071
|
-
const { t } =
|
|
33050
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
33072
33051
|
const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
33073
33052
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
33074
33053
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -33160,7 +33139,7 @@ function SettingsAppearanceTab({
|
|
|
33160
33139
|
themes,
|
|
33161
33140
|
onSelectTheme
|
|
33162
33141
|
}) {
|
|
33163
|
-
const { t } =
|
|
33142
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
33164
33143
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
33165
33144
|
const isActive = entry.key === activeThemeKey;
|
|
33166
33145
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -33171,7 +33150,7 @@ function SettingsAppearanceTab({
|
|
|
33171
33150
|
type: "button",
|
|
33172
33151
|
onClick: () => onSelectTheme(entry.key),
|
|
33173
33152
|
"aria-pressed": isActive,
|
|
33174
|
-
className:
|
|
33153
|
+
className: chunkAIA7CY5U_js.cn(
|
|
33175
33154
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33176
33155
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33177
33156
|
),
|
|
@@ -33188,7 +33167,7 @@ function SettingsAppearanceTab({
|
|
|
33188
33167
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33189
33168
|
"span",
|
|
33190
33169
|
{
|
|
33191
|
-
className:
|
|
33170
|
+
className: chunkAIA7CY5U_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33192
33171
|
children: t(entry.labelKey)
|
|
33193
33172
|
}
|
|
33194
33173
|
)
|
|
@@ -33203,7 +33182,7 @@ function SettingsCustomFontsSection({
|
|
|
33203
33182
|
families,
|
|
33204
33183
|
onRegistered
|
|
33205
33184
|
}) {
|
|
33206
|
-
const { t } =
|
|
33185
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
33207
33186
|
const inputRef = React108.useRef(null);
|
|
33208
33187
|
const [error, setError] = React108.useState(false);
|
|
33209
33188
|
const handleFile = async (file) => {
|
|
@@ -33268,7 +33247,7 @@ function SettingsLanguageTab({
|
|
|
33268
33247
|
type: "button",
|
|
33269
33248
|
onClick: () => onSelectLocale(locale.code),
|
|
33270
33249
|
"aria-pressed": isActive,
|
|
33271
|
-
className:
|
|
33250
|
+
className: chunkAIA7CY5U_js.cn(
|
|
33272
33251
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33273
33252
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33274
33253
|
),
|
|
@@ -33307,7 +33286,7 @@ function OpenSettingsDialog({
|
|
|
33307
33286
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
33308
33287
|
onCustomFontRegistered
|
|
33309
33288
|
}) {
|
|
33310
|
-
const { t } =
|
|
33289
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
33311
33290
|
const viewerCustomization = useViewerCustomizationContext();
|
|
33312
33291
|
const customization = React108.useMemo(
|
|
33313
33292
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -33416,7 +33395,7 @@ function ViewerOptionsProvider({
|
|
|
33416
33395
|
store,
|
|
33417
33396
|
children
|
|
33418
33397
|
}) {
|
|
33419
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33398
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33420
33399
|
}
|
|
33421
33400
|
function useAiBridge(input) {
|
|
33422
33401
|
const ref = React108.useRef(input);
|
|
@@ -33499,7 +33478,7 @@ function useAiPanelController(input) {
|
|
|
33499
33478
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
33500
33479
|
})
|
|
33501
33480
|
);
|
|
33502
|
-
const state =
|
|
33481
|
+
const state = chunk5CJHRYFK_js.useController(controller);
|
|
33503
33482
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
33504
33483
|
const liveFocusTargets = React108.useMemo(
|
|
33505
33484
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33732,7 +33711,7 @@ function useMasterViewCrud(input) {
|
|
|
33732
33711
|
forgetHistory,
|
|
33733
33712
|
pushToast
|
|
33734
33713
|
} = input;
|
|
33735
|
-
const { t } =
|
|
33714
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
33736
33715
|
const data = React108.useMemo(
|
|
33737
33716
|
() => ({ slides, slideMasters }),
|
|
33738
33717
|
[slides, slideMasters]
|
|
@@ -34132,7 +34111,7 @@ function useHostLanguage({
|
|
|
34132
34111
|
availableLocales,
|
|
34133
34112
|
onLocaleChange
|
|
34134
34113
|
}) {
|
|
34135
|
-
const host =
|
|
34114
|
+
const host = chunkAIA7CY5U_js.useRegisteredHostI18next();
|
|
34136
34115
|
const t = host?.t;
|
|
34137
34116
|
const i18n = host?.i18n;
|
|
34138
34117
|
const readsInstance = i18n !== void 0;
|
|
@@ -34166,9 +34145,9 @@ function useHostLanguage({
|
|
|
34166
34145
|
},
|
|
34167
34146
|
[onLocaleChange, i18n]
|
|
34168
34147
|
);
|
|
34169
|
-
const language = i18n ?
|
|
34148
|
+
const language = i18n ? chunkAIA7CY5U_js.hostInstanceLanguage(i18n) ?? localeCode : "en";
|
|
34170
34149
|
const state = React108.useMemo(
|
|
34171
|
-
() => t ? { t, locale: language } :
|
|
34150
|
+
() => t ? { t, locale: language } : chunkAIA7CY5U_js.BUILT_IN_ENGLISH,
|
|
34172
34151
|
[t, language]
|
|
34173
34152
|
);
|
|
34174
34153
|
const controls = React108.useMemo(
|
|
@@ -34181,7 +34160,7 @@ function useProvidedLanguage({
|
|
|
34181
34160
|
availableLocales,
|
|
34182
34161
|
onLocaleChange
|
|
34183
34162
|
}) {
|
|
34184
|
-
const state = React108.useContext(
|
|
34163
|
+
const state = React108.useContext(chunkAIA7CY5U_js.PptxI18nContext);
|
|
34185
34164
|
const { locale } = state;
|
|
34186
34165
|
const locales = availableLocales ?? NO_LOCALES;
|
|
34187
34166
|
const controls = React108.useMemo(
|
|
@@ -34201,25 +34180,25 @@ function useProvidedLanguage({
|
|
|
34201
34180
|
return { state, controls };
|
|
34202
34181
|
}
|
|
34203
34182
|
function provideLanguage({ state, controls }, children) {
|
|
34204
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34183
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkAIA7CY5U_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunkAIA7CY5U_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
34205
34184
|
}
|
|
34206
34185
|
function HostLanguageRoot({ children, ...props }) {
|
|
34207
34186
|
return provideLanguage(useHostLanguage(props), children);
|
|
34208
34187
|
}
|
|
34209
34188
|
function BuiltInLanguageRoot({ children }) {
|
|
34210
|
-
return provideLanguage({ state:
|
|
34189
|
+
return provideLanguage({ state: chunkAIA7CY5U_js.BUILT_IN_ENGLISH, controls: BUILT_IN_CONTROLS }, children);
|
|
34211
34190
|
}
|
|
34212
34191
|
function ProvidedLanguageRoot({ children, ...props }) {
|
|
34213
34192
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
34214
34193
|
}
|
|
34215
34194
|
function ViewerI18nRoot(props) {
|
|
34216
|
-
const [readsHost] = React108.useState(() =>
|
|
34195
|
+
const [readsHost] = React108.useState(() => chunkAIA7CY5U_js.registeredHostI18next() !== null);
|
|
34217
34196
|
const FromHost = readsHost ? HostLanguageRoot : BuiltInLanguageRoot;
|
|
34218
|
-
const Root = React108.useContext(
|
|
34197
|
+
const Root = React108.useContext(chunkAIA7CY5U_js.PptxI18nContext) ? ProvidedLanguageRoot : FromHost;
|
|
34219
34198
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
34220
34199
|
}
|
|
34221
34200
|
function useViewerLocaleControls() {
|
|
34222
|
-
return React108.useContext(
|
|
34201
|
+
return React108.useContext(chunkAIA7CY5U_js.ViewerLocaleControlsContext);
|
|
34223
34202
|
}
|
|
34224
34203
|
var NO_RIBBON_ADD_INS = [];
|
|
34225
34204
|
var NO_FILE_PROVIDERS = [];
|
|
@@ -34232,7 +34211,7 @@ var PowerPointViewerComponent = /* @__PURE__ */ React108.forwardRef(
|
|
|
34232
34211
|
defaultLocale: props.defaultLocale,
|
|
34233
34212
|
availableLocales: props.availableLocales,
|
|
34234
34213
|
onLocaleChange: props.onLocaleChange,
|
|
34235
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(PowerPointViewerBody, { ...props, ref })
|
|
34214
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ElementRenderErrorScope, { onElementRenderError: props.onElementRenderError, children: /* @__PURE__ */ jsxRuntime.jsx(PowerPointViewerBody, { ...props, ref }) })
|
|
34236
34215
|
}
|
|
34237
34216
|
);
|
|
34238
34217
|
}
|
|
@@ -34300,7 +34279,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34300
34279
|
limits
|
|
34301
34280
|
} = props;
|
|
34302
34281
|
const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
|
|
34303
|
-
const cloudFile =
|
|
34282
|
+
const cloudFile = chunk5CJHRYFK_js.useController(cloudDocument).file;
|
|
34304
34283
|
const {
|
|
34305
34284
|
storage: viewerStorage,
|
|
34306
34285
|
fileName,
|
|
@@ -34314,7 +34293,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34314
34293
|
filePath: hostFilePath
|
|
34315
34294
|
});
|
|
34316
34295
|
const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
|
|
34317
|
-
const saveProgressState =
|
|
34296
|
+
const saveProgressState = chunk5CJHRYFK_js.useController(saveProgress);
|
|
34318
34297
|
const storage = React108.useMemo(
|
|
34319
34298
|
() => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
|
|
34320
34299
|
[viewerStorage, saveProgress]
|
|
@@ -34356,7 +34335,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34356
34335
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34357
34336
|
);
|
|
34358
34337
|
}, []);
|
|
34359
|
-
const { t } =
|
|
34338
|
+
const { t } = chunkAIA7CY5U_js.useTranslation();
|
|
34360
34339
|
const {
|
|
34361
34340
|
localeCode,
|
|
34362
34341
|
locales: resolvedLocales,
|
|
@@ -34413,7 +34392,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34413
34392
|
},
|
|
34414
34393
|
[hostStorage, cloudDocument]
|
|
34415
34394
|
);
|
|
34416
|
-
const { optionsStore, options: viewerOptions } =
|
|
34395
|
+
const { optionsStore, options: viewerOptions } = chunk5CJHRYFK_js.useViewerOptions();
|
|
34417
34396
|
const custom = useViewerCustomization(
|
|
34418
34397
|
customization,
|
|
34419
34398
|
legacyHiddenActions,
|
|
@@ -34433,8 +34412,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34433
34412
|
const handleEnableEditing = React108.useCallback(() => {
|
|
34434
34413
|
setProtectedViewOverridden(true);
|
|
34435
34414
|
}, []);
|
|
34436
|
-
const readOnlyRec =
|
|
34437
|
-
const compatToastsState =
|
|
34415
|
+
const readOnlyRec = chunk5CJHRYFK_js.useReadOnlyRecommendationState(content);
|
|
34416
|
+
const compatToastsState = chunk5CJHRYFK_js.useCompatibilityToastsState();
|
|
34438
34417
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
34439
34418
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34440
34419
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -34457,8 +34436,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34457
34436
|
filePath
|
|
34458
34437
|
});
|
|
34459
34438
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
34460
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34461
|
-
const state =
|
|
34439
|
+
const { reducedMotion, toggleReducedMotion } = chunk5CJHRYFK_js.useReducedMotion();
|
|
34440
|
+
const state = chunk5CJHRYFK_js.useViewerState({
|
|
34462
34441
|
content,
|
|
34463
34442
|
canEdit,
|
|
34464
34443
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -34591,16 +34570,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34591
34570
|
}
|
|
34592
34571
|
}, [settings, optionsStore]);
|
|
34593
34572
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
34594
|
-
const mobile =
|
|
34573
|
+
const mobile = chunk5CJHRYFK_js.useIsMobile();
|
|
34595
34574
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34596
|
-
const resizablePanels =
|
|
34575
|
+
const resizablePanels = chunk5CJHRYFK_js.useResizablePanels();
|
|
34597
34576
|
const {
|
|
34598
34577
|
gridSpacingPx,
|
|
34599
34578
|
visibleSlideIndexes,
|
|
34600
34579
|
slideSectionGroups,
|
|
34601
34580
|
masterPseudoSlide,
|
|
34602
34581
|
authoredRange
|
|
34603
|
-
} =
|
|
34582
|
+
} = chunk5CJHRYFK_js.useDerivedSlideState({
|
|
34604
34583
|
slides,
|
|
34605
34584
|
sections: state.sections,
|
|
34606
34585
|
customShows: state.customShows,
|
|
@@ -34625,7 +34604,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34625
34604
|
state.cropSessionRef
|
|
34626
34605
|
]
|
|
34627
34606
|
);
|
|
34628
|
-
const zoom =
|
|
34607
|
+
const zoom = chunk5CJHRYFK_js.useZoomViewport({
|
|
34629
34608
|
canvasSize,
|
|
34630
34609
|
selectedElements: state.selectedElements,
|
|
34631
34610
|
fitPadding: props.fitPadding,
|
|
@@ -34644,7 +34623,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34644
34623
|
onChangeCallback.current?.();
|
|
34645
34624
|
}, [setIsDirty]);
|
|
34646
34625
|
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
34647
|
-
const history =
|
|
34626
|
+
const history = chunk5CJHRYFK_js.useEditorHistory({
|
|
34648
34627
|
slides,
|
|
34649
34628
|
canvasSize,
|
|
34650
34629
|
activeSlideIndex,
|
|
@@ -34673,7 +34652,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34673
34652
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34674
34653
|
setHeaderFooter: state.setHeaderFooter
|
|
34675
34654
|
});
|
|
34676
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34655
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk5CJHRYFK_js.usePresentationSetup({
|
|
34677
34656
|
mode,
|
|
34678
34657
|
slides,
|
|
34679
34658
|
visibleSlideIndexes,
|
|
@@ -34752,7 +34731,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34752
34731
|
loading,
|
|
34753
34732
|
error
|
|
34754
34733
|
]);
|
|
34755
|
-
|
|
34734
|
+
chunk5CJHRYFK_js.useTouchGestures({
|
|
34756
34735
|
targetRef: zoom.canvasViewportRef,
|
|
34757
34736
|
currentScale: zoom.scale,
|
|
34758
34737
|
callbacks: {
|
|
@@ -34774,7 +34753,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34774
34753
|
},
|
|
34775
34754
|
enabled: isTouchDevice
|
|
34776
34755
|
});
|
|
34777
|
-
const dialogs =
|
|
34756
|
+
const dialogs = chunk5CJHRYFK_js.useViewerDialogs({
|
|
34778
34757
|
mode,
|
|
34779
34758
|
slides,
|
|
34780
34759
|
activeSlide,
|
|
@@ -34802,7 +34781,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34802
34781
|
history,
|
|
34803
34782
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34804
34783
|
});
|
|
34805
|
-
|
|
34784
|
+
chunk5CJHRYFK_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34806
34785
|
const zoomBeforePresentRef = React108.useRef(null);
|
|
34807
34786
|
React108.useEffect(() => {
|
|
34808
34787
|
if (mode !== "present") {
|
|
@@ -34820,7 +34799,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34820
34799
|
zoom.handleZoomToFit();
|
|
34821
34800
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34822
34801
|
}, [mode]);
|
|
34823
|
-
const editorOps =
|
|
34802
|
+
const editorOps = chunk5CJHRYFK_js.useEditorOperations({
|
|
34824
34803
|
state,
|
|
34825
34804
|
history,
|
|
34826
34805
|
zoom,
|
|
@@ -34865,7 +34844,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34865
34844
|
handlerRef,
|
|
34866
34845
|
viewerApi,
|
|
34867
34846
|
loadVersion
|
|
34868
|
-
} =
|
|
34847
|
+
} = chunk5CJHRYFK_js.useViewerIntegration({
|
|
34869
34848
|
transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
|
|
34870
34849
|
state,
|
|
34871
34850
|
zoom,
|
|
@@ -35018,7 +34997,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35018
34997
|
updateElementById: editorOps.ops.updateElementById
|
|
35019
34998
|
});
|
|
35020
34999
|
const ribbonScope = useRibbonScopeToken();
|
|
35021
|
-
const viewPreferencesSync =
|
|
35000
|
+
const viewPreferencesSync = chunk5CJHRYFK_js.useViewPreferencesSync({
|
|
35022
35001
|
loadVersion,
|
|
35023
35002
|
viewProperties: state.viewProperties,
|
|
35024
35003
|
setViewProperties: state.setViewProperties,
|
|
@@ -35069,7 +35048,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35069
35048
|
},
|
|
35070
35049
|
[state]
|
|
35071
35050
|
);
|
|
35072
|
-
const layoutSwitching =
|
|
35051
|
+
const layoutSwitching = chunk5CJHRYFK_js.useLayoutSwitching({
|
|
35073
35052
|
handler: handlerRef.current,
|
|
35074
35053
|
slides,
|
|
35075
35054
|
activeSlideIndex,
|
|
@@ -35188,7 +35167,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35188
35167
|
"data-pptx-editor-chrome": "",
|
|
35189
35168
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35190
35169
|
"aria-busy": loading,
|
|
35191
|
-
className:
|
|
35170
|
+
className: chunkAIA7CY5U_js.cn(
|
|
35192
35171
|
"h-full w-full bg-background text-foreground relative",
|
|
35193
35172
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35194
35173
|
),
|
|
@@ -35591,8 +35570,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35591
35570
|
// Nothing previously provided it, so every one of those consumers was
|
|
35592
35571
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35593
35572
|
// the user changed in the Options dialog.
|
|
35594
|
-
/* @__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(
|
|
35595
|
-
|
|
35573
|
+
/* @__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(chunk5CJHRYFK_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35574
|
+
chunk5CJHRYFK_js.CollaborationProvider,
|
|
35596
35575
|
{
|
|
35597
35576
|
config: collaboration,
|
|
35598
35577
|
canvasWidth: canvasSize.width,
|
|
@@ -35649,19 +35628,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35649
35628
|
slideCount: slides.length
|
|
35650
35629
|
}
|
|
35651
35630
|
),
|
|
35652
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35631
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5CJHRYFK_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
35653
35632
|
]
|
|
35654
35633
|
}
|
|
35655
35634
|
) }) }) }) }) }) }) }) }) })
|
|
35656
35635
|
);
|
|
35657
35636
|
}
|
|
35658
35637
|
);
|
|
35659
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
35638
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunk5CJHRYFK_js.withDisplayName(
|
|
35660
35639
|
PowerPointViewerComponent,
|
|
35661
35640
|
"PowerPointViewer"
|
|
35662
35641
|
);
|
|
35663
35642
|
function CollaborationStatusStrip() {
|
|
35664
|
-
const collab =
|
|
35643
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
35665
35644
|
if (!collab) {
|
|
35666
35645
|
return null;
|
|
35667
35646
|
}
|
|
@@ -35678,9 +35657,9 @@ function CollaborationStateReporter({
|
|
|
35678
35657
|
onChange,
|
|
35679
35658
|
onStatus
|
|
35680
35659
|
}) {
|
|
35681
|
-
const collab =
|
|
35660
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
35682
35661
|
useCollaborationStateReport(collab, onChange);
|
|
35683
|
-
|
|
35662
|
+
chunk5CJHRYFK_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35684
35663
|
return null;
|
|
35685
35664
|
}
|
|
35686
35665
|
function CollaborationDocumentSync({
|
|
@@ -35695,8 +35674,8 @@ function CollaborationDocumentSync({
|
|
|
35695
35674
|
onReadOnlyChange,
|
|
35696
35675
|
history
|
|
35697
35676
|
}) {
|
|
35698
|
-
const collab =
|
|
35699
|
-
|
|
35677
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
35678
|
+
chunk5CJHRYFK_js.useCollaborationDocumentSync({
|
|
35700
35679
|
collaboration: collab,
|
|
35701
35680
|
history,
|
|
35702
35681
|
slides,
|
|
@@ -35716,14 +35695,14 @@ function CollaborationFollowLayer({
|
|
|
35716
35695
|
setActiveSlideIndex,
|
|
35717
35696
|
slideCount
|
|
35718
35697
|
}) {
|
|
35719
|
-
const collab =
|
|
35720
|
-
const { followedClientId, followUser } =
|
|
35698
|
+
const collab = chunk5CJHRYFK_js.useCollaboration();
|
|
35699
|
+
const { followedClientId, followUser } = chunk5CJHRYFK_js.useFollowMode({
|
|
35721
35700
|
collab,
|
|
35722
35701
|
activeSlideIndex,
|
|
35723
35702
|
setActiveSlideIndex,
|
|
35724
35703
|
slideCount
|
|
35725
35704
|
});
|
|
35726
|
-
|
|
35705
|
+
chunk5CJHRYFK_js.useBroadcastFollower({
|
|
35727
35706
|
collab,
|
|
35728
35707
|
activeSlideIndex,
|
|
35729
35708
|
setActiveSlideIndex,
|