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