pptx-react-viewer 4.74.0 → 4.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/{AiChatPanel-PLQ3NBTK.js → AiChatPanel-4V7QB5Z3.js} +19 -19
- package/dist/AiChatPanel-4V7QB5Z3.js.br +0 -0
- package/dist/AiChatPanel-4V7QB5Z3.js.gz +0 -0
- package/dist/{AiChatPanel-E7CJSTW7.mjs → AiChatPanel-6ML3VLIX.mjs} +1 -1
- package/dist/AiChatPanel-6ML3VLIX.mjs.br +0 -0
- package/dist/AiChatPanel-6ML3VLIX.mjs.gz +0 -0
- package/dist/ai.js +2 -2
- package/dist/ai.js.br +0 -0
- package/dist/ai.js.gz +0 -0
- package/dist/ai.mjs +1 -1
- package/dist/ai.mjs.br +0 -0
- package/dist/ai.mjs.gz +0 -0
- package/dist/{chunk-XG4WSJ4O.js → chunk-3AZ6ESJU.js} +203 -203
- package/dist/chunk-3AZ6ESJU.js.br +0 -0
- package/dist/chunk-3AZ6ESJU.js.gz +0 -0
- package/dist/{chunk-P2COO2QO.js → chunk-6GFSF2ML.js} +65 -13
- package/dist/chunk-6GFSF2ML.js.br +0 -0
- package/dist/chunk-6GFSF2ML.js.gz +0 -0
- package/dist/{chunk-CRC3V4UG.mjs → chunk-AZLOOFU2.mjs} +1 -1
- package/dist/chunk-AZLOOFU2.mjs.br +0 -0
- package/dist/chunk-AZLOOFU2.mjs.gz +0 -0
- package/dist/{chunk-SQ7OASDY.mjs → chunk-DE4Y5F4T.mjs} +40 -44
- package/dist/chunk-DE4Y5F4T.mjs.br +0 -0
- package/dist/chunk-DE4Y5F4T.mjs.gz +0 -0
- package/dist/chunk-FFTZYNL4.mjs +2 -0
- package/dist/chunk-FFTZYNL4.mjs.br +6 -0
- package/dist/chunk-FFTZYNL4.mjs.gz +0 -0
- package/dist/chunk-LWGPHJHC.js +151 -0
- package/dist/chunk-LWGPHJHC.js.br +0 -0
- package/dist/chunk-LWGPHJHC.js.gz +0 -0
- package/dist/{chunk-LVEFHZ76.js → chunk-MU3BIZ2U.js} +1 -1
- package/dist/chunk-MU3BIZ2U.js.br +0 -0
- package/dist/chunk-MU3BIZ2U.js.gz +0 -0
- package/dist/{chunk-FBSPQYRE.mjs → chunk-N3YK2BCA.mjs} +61 -14
- package/dist/chunk-N3YK2BCA.mjs.br +0 -0
- package/dist/chunk-N3YK2BCA.mjs.gz +0 -0
- package/dist/chunk-P2IEKYVG.js +29 -0
- package/dist/chunk-P2IEKYVG.js.br +0 -0
- package/dist/chunk-P2IEKYVG.js.gz +0 -0
- package/dist/{chunk-D4WC35PL.js → chunk-RJRDE3C2.js} +594 -599
- package/dist/chunk-RJRDE3C2.js.br +0 -0
- package/dist/chunk-RJRDE3C2.js.gz +0 -0
- package/dist/{chunk-JZE6BORE.mjs → chunk-RMEWSJZU.mjs} +1 -1
- package/dist/chunk-RMEWSJZU.mjs.br +0 -0
- package/dist/chunk-RMEWSJZU.mjs.gz +0 -0
- package/dist/chunk-Y53EC3JU.mjs +27 -0
- package/dist/chunk-Y53EC3JU.mjs.br +0 -0
- package/dist/chunk-Y53EC3JU.mjs.gz +0 -0
- package/dist/index.d.ts +24 -18
- package/dist/index.js +126 -126
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +82 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/no-i18next.d.ts +1299 -0
- package/dist/no-i18next.js +251 -0
- package/dist/no-i18next.js.br +0 -0
- package/dist/no-i18next.js.gz +0 -0
- package/dist/no-i18next.mjs +6 -0
- package/dist/no-i18next.mjs.br +0 -0
- package/dist/no-i18next.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +24 -18
- package/dist/viewer/index.js +25 -24
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +5 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +9 -4
- package/dist/AiChatPanel-E7CJSTW7.mjs.br +0 -0
- package/dist/AiChatPanel-E7CJSTW7.mjs.gz +0 -0
- package/dist/AiChatPanel-PLQ3NBTK.js.br +0 -0
- package/dist/AiChatPanel-PLQ3NBTK.js.gz +0 -0
- package/dist/chunk-CRC3V4UG.mjs.br +0 -0
- package/dist/chunk-CRC3V4UG.mjs.gz +0 -0
- package/dist/chunk-D4WC35PL.js.br +0 -0
- package/dist/chunk-D4WC35PL.js.gz +0 -0
- package/dist/chunk-FBSPQYRE.mjs.br +0 -0
- package/dist/chunk-FBSPQYRE.mjs.gz +0 -0
- package/dist/chunk-JZE6BORE.mjs.br +0 -0
- package/dist/chunk-JZE6BORE.mjs.gz +0 -0
- package/dist/chunk-LVEFHZ76.js.br +0 -0
- package/dist/chunk-LVEFHZ76.js.gz +0 -0
- package/dist/chunk-P2COO2QO.js.br +0 -0
- package/dist/chunk-P2COO2QO.js.gz +0 -0
- package/dist/chunk-SQ7OASDY.mjs.br +0 -0
- package/dist/chunk-SQ7OASDY.mjs.gz +0 -0
- package/dist/chunk-XG4WSJ4O.js.br +0 -0
- package/dist/chunk-XG4WSJ4O.js.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkMU3BIZ2U_js = require('./chunk-MU3BIZ2U.js');
|
|
4
|
+
var chunk3AZ6ESJU_js = require('./chunk-3AZ6ESJU.js');
|
|
5
|
+
var chunk6GFSF2ML_js = require('./chunk-6GFSF2ML.js');
|
|
6
6
|
var pptx = require('ooxml-ui/pptx');
|
|
7
7
|
var React108 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -10,8 +10,8 @@ var lu = require('react-icons/lu');
|
|
|
10
10
|
var reactDom = require('react-dom');
|
|
11
11
|
var pptx$1 = require('ooxml-core/pptx');
|
|
12
12
|
var host = require('ooxml-ui/pptx/ai/host');
|
|
13
|
-
var i18n
|
|
14
|
-
var i18n = require('ooxml-ui/pptx/i18n');
|
|
13
|
+
var i18n = require('ooxml-core/i18n');
|
|
14
|
+
var i18n$1 = require('ooxml-ui/pptx/i18n');
|
|
15
15
|
|
|
16
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
|
|
@@ -58,12 +58,12 @@ function SlideThumbnailImpl({
|
|
|
58
58
|
const layout = pptx.slideThumbnailLayout(
|
|
59
59
|
safeCanvasWidth,
|
|
60
60
|
safeCanvasHeight,
|
|
61
|
-
previewWidth ??
|
|
61
|
+
previewWidth ?? chunk6GFSF2ML_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
62
62
|
);
|
|
63
63
|
const { height: previewHeight, scale } = layout;
|
|
64
64
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
65
65
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
66
|
-
const { t } =
|
|
66
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
67
67
|
const transitionBadge = pptx.slideThumbnailTransitionBadge(slide, t);
|
|
68
68
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
69
69
|
"div",
|
|
@@ -89,9 +89,9 @@ function SlideThumbnailImpl({
|
|
|
89
89
|
...pptx.deviceStrokeStageStyle(scale)
|
|
90
90
|
},
|
|
91
91
|
children: [
|
|
92
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
92
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide }),
|
|
93
93
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
-
|
|
94
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
95
95
|
{
|
|
96
96
|
element,
|
|
97
97
|
activeSlide: slide,
|
|
@@ -156,7 +156,7 @@ function AvatarCircle({
|
|
|
156
156
|
avatar,
|
|
157
157
|
isLocal
|
|
158
158
|
}) {
|
|
159
|
-
const { t } =
|
|
159
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
160
160
|
const initials = getInitials(name);
|
|
161
161
|
const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
|
|
162
162
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -191,7 +191,7 @@ function UserAvatarBar({
|
|
|
191
191
|
status,
|
|
192
192
|
maxVisible = 5
|
|
193
193
|
}) {
|
|
194
|
-
const { t } =
|
|
194
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
195
195
|
if (status === "disconnected" || status === "error") {
|
|
196
196
|
return null;
|
|
197
197
|
}
|
|
@@ -265,7 +265,7 @@ function CollaborationStatusIndicator({
|
|
|
265
265
|
connectedCount,
|
|
266
266
|
onRetry
|
|
267
267
|
}) {
|
|
268
|
-
const { t } =
|
|
268
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
269
269
|
const style = STATUS_STYLES[status];
|
|
270
270
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
271
271
|
"div",
|
|
@@ -306,7 +306,7 @@ function FollowModeBar({
|
|
|
306
306
|
followedClientId,
|
|
307
307
|
onFollow
|
|
308
308
|
}) {
|
|
309
|
-
const { t } =
|
|
309
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
310
310
|
if (presences.length === 0) {
|
|
311
311
|
return null;
|
|
312
312
|
}
|
|
@@ -411,7 +411,7 @@ function SectionContextMenu({
|
|
|
411
411
|
onAddSection,
|
|
412
412
|
onClose
|
|
413
413
|
}) {
|
|
414
|
-
const { t } =
|
|
414
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
415
415
|
React108.useEffect(() => {
|
|
416
416
|
const onKeyDown = (event) => {
|
|
417
417
|
if (event.key === "Escape") {
|
|
@@ -512,7 +512,7 @@ function SectionHeader({
|
|
|
512
512
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
513
513
|
lu.LuChevronDown,
|
|
514
514
|
{
|
|
515
|
-
className:
|
|
515
|
+
className: chunk6GFSF2ML_js.cn(
|
|
516
516
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
517
517
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
518
518
|
)
|
|
@@ -587,7 +587,7 @@ function SlideContextMenu({
|
|
|
587
587
|
onAddSection,
|
|
588
588
|
onClose
|
|
589
589
|
}) {
|
|
590
|
-
const { t } =
|
|
590
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
591
591
|
const selected = state.selectedIndexes;
|
|
592
592
|
const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
|
|
593
593
|
const entries = pptx.buildSlidePaneContextMenuEntries({
|
|
@@ -692,7 +692,7 @@ function LazyThumbnailInner({
|
|
|
692
692
|
}
|
|
693
693
|
var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
|
|
694
694
|
function declaredSectionFacts(groups, sectionId) {
|
|
695
|
-
const declared = groups.filter((group) => group.id !==
|
|
695
|
+
const declared = groups.filter((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk6GFSF2ML_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
696
696
|
return {
|
|
697
697
|
isDeclared: declared.includes(sectionId),
|
|
698
698
|
index: declared.indexOf(sectionId),
|
|
@@ -749,7 +749,7 @@ function SlideItemInner({
|
|
|
749
749
|
onDrop,
|
|
750
750
|
slideRef
|
|
751
751
|
}) {
|
|
752
|
-
const { t } =
|
|
752
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
753
753
|
const isHidden = Boolean(slide.hidden);
|
|
754
754
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
755
755
|
const handleContextMenu = React108.useCallback(
|
|
@@ -777,7 +777,7 @@ function SlideItemInner({
|
|
|
777
777
|
"data-pptx-chrome": "slide-row",
|
|
778
778
|
"aria-describedby": cue.labelId,
|
|
779
779
|
"data-pptx-slide-hidden": cue.marker,
|
|
780
|
-
className:
|
|
780
|
+
className: chunk6GFSF2ML_js.cn(
|
|
781
781
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
782
782
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
783
783
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -799,7 +799,7 @@ function SlideItemInner({
|
|
|
799
799
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
800
800
|
"span",
|
|
801
801
|
{
|
|
802
|
-
className:
|
|
802
|
+
className: chunk6GFSF2ML_js.cn(
|
|
803
803
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
804
804
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
805
805
|
),
|
|
@@ -822,7 +822,7 @@ function SlideItemInner({
|
|
|
822
822
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
823
823
|
"div",
|
|
824
824
|
{
|
|
825
|
-
className:
|
|
825
|
+
className: chunk6GFSF2ML_js.cn(
|
|
826
826
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
827
827
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
828
828
|
),
|
|
@@ -1020,8 +1020,8 @@ function SlidesPaneSidebar({
|
|
|
1020
1020
|
fieldContext,
|
|
1021
1021
|
tableStyleContext
|
|
1022
1022
|
}) {
|
|
1023
|
-
const { t } =
|
|
1024
|
-
const collab =
|
|
1023
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1024
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
1025
1025
|
const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
|
|
1026
1026
|
const renameInputRef = React108.useRef(null);
|
|
1027
1027
|
const slidePresenceMap = React108.useMemo(() => {
|
|
@@ -1046,7 +1046,7 @@ function SlidesPaneSidebar({
|
|
|
1046
1046
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
1047
1047
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
1048
1048
|
);
|
|
1049
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
1049
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk6GFSF2ML_js.DEFAULT_SECTION_GROUP_ID);
|
|
1050
1050
|
const {
|
|
1051
1051
|
collapsedSections,
|
|
1052
1052
|
renamingSectionId,
|
|
@@ -1116,7 +1116,7 @@ function SlidesPaneSidebar({
|
|
|
1116
1116
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
1117
1117
|
);
|
|
1118
1118
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
1119
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
1119
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunk3AZ6ESJU_js.useVirtualizedSlides({
|
|
1120
1120
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
1121
1121
|
itemHeight: estimatedItemHeight
|
|
1122
1122
|
});
|
|
@@ -1400,7 +1400,7 @@ function SlideTemplatePreview({
|
|
|
1400
1400
|
transformOrigin: "top left"
|
|
1401
1401
|
},
|
|
1402
1402
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1403
|
-
|
|
1403
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
1404
1404
|
{
|
|
1405
1405
|
element,
|
|
1406
1406
|
activeSlide: previewSlide,
|
|
@@ -1468,8 +1468,8 @@ function SlideTemplateGalleryDialog({
|
|
|
1468
1468
|
onInsert,
|
|
1469
1469
|
scheme
|
|
1470
1470
|
}) {
|
|
1471
|
-
const { t } =
|
|
1472
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
1471
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1472
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
1473
1473
|
const [selected, setSelected] = React108.useState(null);
|
|
1474
1474
|
const dialogRef = React108.useRef(null);
|
|
1475
1475
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -1554,7 +1554,7 @@ function SlideTemplateGalleryDialog({
|
|
|
1554
1554
|
onInsert(spec.id);
|
|
1555
1555
|
onClose();
|
|
1556
1556
|
},
|
|
1557
|
-
className:
|
|
1557
|
+
className: chunk6GFSF2ML_js.cn(
|
|
1558
1558
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
1559
1559
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
1560
1560
|
),
|
|
@@ -1764,7 +1764,7 @@ function nowLocalInputValue() {
|
|
|
1764
1764
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
1765
1765
|
}
|
|
1766
1766
|
function DateTimeFieldDialog(p) {
|
|
1767
|
-
const { t } =
|
|
1767
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1768
1768
|
const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
|
|
1769
1769
|
const [dateFormat, setDateFormat] = React108.useState("locale");
|
|
1770
1770
|
const confirmDatePicker = React108.useCallback(() => {
|
|
@@ -1870,7 +1870,7 @@ function useViewerCustomizationContext() {
|
|
|
1870
1870
|
return React108.useContext(ViewerCustomizationContext);
|
|
1871
1871
|
}
|
|
1872
1872
|
function InsertSection(p) {
|
|
1873
|
-
const { t } =
|
|
1873
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
1874
1874
|
const customization = useViewerCustomizationContext();
|
|
1875
1875
|
const ref = React108.useRef(null);
|
|
1876
1876
|
const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
|
|
@@ -2019,8 +2019,8 @@ function MobileSheet({
|
|
|
2019
2019
|
headerRight
|
|
2020
2020
|
}) {
|
|
2021
2021
|
const sheetRef = React108.useRef(null);
|
|
2022
|
-
const { t } =
|
|
2023
|
-
const { dragY, dragging, handlers } =
|
|
2022
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2023
|
+
const { dragY, dragging, handlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
|
|
2024
2024
|
useModalFocus(open, sheetRef, onClose);
|
|
2025
2025
|
if (!open) {
|
|
2026
2026
|
return null;
|
|
@@ -2044,7 +2044,7 @@ function MobileSheet({
|
|
|
2044
2044
|
"aria-modal": "true",
|
|
2045
2045
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
2046
2046
|
tabIndex: -1,
|
|
2047
|
-
className:
|
|
2047
|
+
className: chunk6GFSF2ML_js.cn(
|
|
2048
2048
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
2049
2049
|
"animate-in slide-in-from-bottom duration-200",
|
|
2050
2050
|
className
|
|
@@ -2091,7 +2091,7 @@ function MobileSheet({
|
|
|
2091
2091
|
] });
|
|
2092
2092
|
}
|
|
2093
2093
|
function MobileInsertSheet(p) {
|
|
2094
|
-
const { t } =
|
|
2094
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2095
2095
|
const close = () => p.onCloseMobileInsert?.();
|
|
2096
2096
|
const customization = useViewerCustomizationContext();
|
|
2097
2097
|
const [dateOpen, setDateOpen] = React108.useState(false);
|
|
@@ -2167,7 +2167,7 @@ function MobileInsertSheet(p) {
|
|
|
2167
2167
|
] });
|
|
2168
2168
|
}
|
|
2169
2169
|
function AnimationsSection(p) {
|
|
2170
|
-
const { t } =
|
|
2170
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2171
2171
|
const ref = React108.useRef(null);
|
|
2172
2172
|
const [previewActive, setPreviewActive] = React108.useState(false);
|
|
2173
2173
|
const timer = React108.useRef(void 0);
|
|
@@ -2248,7 +2248,7 @@ function WebHomeControls({
|
|
|
2248
2248
|
onPopup,
|
|
2249
2249
|
layoutArtwork
|
|
2250
2250
|
}) {
|
|
2251
|
-
const { t } =
|
|
2251
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2252
2252
|
const ref = React108.useRef(null);
|
|
2253
2253
|
React108.useEffect(() => {
|
|
2254
2254
|
if (ref.current) {
|
|
@@ -2289,7 +2289,7 @@ function WebHomeControls({
|
|
|
2289
2289
|
function ShapeArrangeExtras(p) {
|
|
2290
2290
|
const commands = useShapeFormatContext();
|
|
2291
2291
|
const crop = commands?.crop;
|
|
2292
|
-
const { isHidden } =
|
|
2292
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
2293
2293
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
2294
2294
|
const controls = React108.useMemo(
|
|
2295
2295
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -2340,7 +2340,7 @@ function ShapeArrangeExtras(p) {
|
|
|
2340
2340
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
|
|
2341
2341
|
}
|
|
2342
2342
|
function ArrangeSection(p) {
|
|
2343
|
-
const { t } =
|
|
2343
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2344
2344
|
const {
|
|
2345
2345
|
onAlignElements,
|
|
2346
2346
|
onDistributeElements,
|
|
@@ -2447,7 +2447,7 @@ function RibbonGallery({
|
|
|
2447
2447
|
tagControl = true,
|
|
2448
2448
|
onCommand
|
|
2449
2449
|
}) {
|
|
2450
|
-
const { t } =
|
|
2450
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2451
2451
|
const ref = React108.useRef(null);
|
|
2452
2452
|
const commands = useRibbonGalleryCommands();
|
|
2453
2453
|
const context = commands?.context;
|
|
@@ -2582,7 +2582,7 @@ function WebRibbonToggle({
|
|
|
2582
2582
|
);
|
|
2583
2583
|
}
|
|
2584
2584
|
function TransitionsSection(p) {
|
|
2585
|
-
const { t } =
|
|
2585
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2586
2586
|
const ref = React108.useRef(null);
|
|
2587
2587
|
const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
2588
2588
|
const transition = p.activeSlide?.transition;
|
|
@@ -2624,7 +2624,7 @@ function TransitionsSection(p) {
|
|
|
2624
2624
|
case "soundPreview": {
|
|
2625
2625
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
2626
2626
|
if (url) {
|
|
2627
|
-
|
|
2627
|
+
chunk3AZ6ESJU_js.playAnimationSound(url);
|
|
2628
2628
|
}
|
|
2629
2629
|
break;
|
|
2630
2630
|
}
|
|
@@ -2643,7 +2643,7 @@ function TransitionsSection(p) {
|
|
|
2643
2643
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
|
|
2644
2644
|
}
|
|
2645
2645
|
function DesignSection(p) {
|
|
2646
|
-
const { t } =
|
|
2646
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2647
2647
|
const actions = {
|
|
2648
2648
|
"design.themes.browseThemes": p.onToggleThemeGallery,
|
|
2649
2649
|
"design.themes.editTheme": p.onToggleThemeEditor,
|
|
@@ -2706,7 +2706,7 @@ function useRecentColors() {
|
|
|
2706
2706
|
return React108.useContext(RecentColorsContext);
|
|
2707
2707
|
}
|
|
2708
2708
|
function DrawSection(p) {
|
|
2709
|
-
const { t } =
|
|
2709
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2710
2710
|
const { pushColor, recentColors } = useRecentColors();
|
|
2711
2711
|
const ref = React108.useRef(null);
|
|
2712
2712
|
React108.useEffect(() => {
|
|
@@ -2804,7 +2804,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
|
|
|
2804
2804
|
);
|
|
2805
2805
|
var cardClass = "border border-border bg-card p-6 text-card-foreground";
|
|
2806
2806
|
function AccountPage() {
|
|
2807
|
-
const { t } =
|
|
2807
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2808
2808
|
const accountAuth = React108.useContext(AccountAuthContext);
|
|
2809
2809
|
const storage = useViewerStorage();
|
|
2810
2810
|
const cloud = useViewerCloudFiles();
|
|
@@ -2832,7 +2832,7 @@ function AccountPage() {
|
|
|
2832
2832
|
refreshUsage();
|
|
2833
2833
|
setTimeout(() => setCleared(false), 4e3);
|
|
2834
2834
|
};
|
|
2835
|
-
const version = "4.
|
|
2835
|
+
const version = "4.75.0" ;
|
|
2836
2836
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2837
2837
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
2838
2838
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -2872,7 +2872,7 @@ function AccountPage() {
|
|
|
2872
2872
|
"aria-label": color,
|
|
2873
2873
|
"aria-pressed": profile.avatarColor === color,
|
|
2874
2874
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
2875
|
-
className:
|
|
2875
|
+
className: chunk6GFSF2ML_js.cn(
|
|
2876
2876
|
"size-7 rounded-full border-2 transition-transform",
|
|
2877
2877
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
2878
2878
|
),
|
|
@@ -2947,7 +2947,7 @@ function BackstageAction(props) {
|
|
|
2947
2947
|
] });
|
|
2948
2948
|
}
|
|
2949
2949
|
function BackstageNewGallery(props) {
|
|
2950
|
-
const { t } =
|
|
2950
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2951
2951
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2952
2952
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
|
|
2953
2953
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: pptx.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2973,7 +2973,7 @@ function BackstageNewGallery(props) {
|
|
|
2973
2973
|
] });
|
|
2974
2974
|
}
|
|
2975
2975
|
function BackstageRecentList(props) {
|
|
2976
|
-
const { t } =
|
|
2976
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
2977
2977
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
|
|
2978
2978
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
|
|
2979
2979
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
|
|
@@ -3027,7 +3027,7 @@ function BackstageCards({
|
|
|
3027
3027
|
props,
|
|
3028
3028
|
run
|
|
3029
3029
|
}) {
|
|
3030
|
-
const { t } =
|
|
3030
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3031
3031
|
const handlers = {
|
|
3032
3032
|
protect: props.onOpenPasswordProtection,
|
|
3033
3033
|
inspect: props.onOpenDocumentProperties,
|
|
@@ -3089,7 +3089,7 @@ function BackstageNavIcon({ page }) {
|
|
|
3089
3089
|
return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
|
|
3090
3090
|
}
|
|
3091
3091
|
function FileSection(p) {
|
|
3092
|
-
const { t, locale } =
|
|
3092
|
+
const { t, locale } = chunk6GFSF2ML_js.useTranslation();
|
|
3093
3093
|
const [requestedPage, setRequestedPage] = React108.useState("home");
|
|
3094
3094
|
const customization = useViewerCustomizationContext();
|
|
3095
3095
|
const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
|
|
@@ -3097,7 +3097,7 @@ function FileSection(p) {
|
|
|
3097
3097
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
3098
3098
|
const [query, setQuery] = React108.useState("");
|
|
3099
3099
|
const [recent, setRecent] = React108.useState([]);
|
|
3100
|
-
const { isHidden } =
|
|
3100
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
3101
3101
|
const exportHidden = isHidden("export");
|
|
3102
3102
|
const storage = useViewerStorage();
|
|
3103
3103
|
const cloud = useViewerCloudFiles();
|
|
@@ -3366,7 +3366,7 @@ function RibbonMenu({
|
|
|
3366
3366
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3367
3367
|
"div",
|
|
3368
3368
|
{
|
|
3369
|
-
className:
|
|
3369
|
+
className: chunk6GFSF2ML_js.cn("fixed z-50", className),
|
|
3370
3370
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
3371
3371
|
children
|
|
3372
3372
|
}
|
|
@@ -3376,7 +3376,7 @@ var THUMB_WIDTH = 128;
|
|
|
3376
3376
|
var THUMB_HEIGHT = 72;
|
|
3377
3377
|
var MAX_PREVIEW_ELEMENTS = 100;
|
|
3378
3378
|
function LayoutGalleryMenu(p) {
|
|
3379
|
-
const { t } =
|
|
3379
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3380
3380
|
return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3381
3381
|
"div",
|
|
3382
3382
|
{
|
|
@@ -3392,7 +3392,7 @@ function LayoutGalleryMenu(p) {
|
|
|
3392
3392
|
type: "button",
|
|
3393
3393
|
"aria-current": isCurrent ? "true" : void 0,
|
|
3394
3394
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
3395
|
-
className:
|
|
3395
|
+
className: chunk6GFSF2ML_js.cn(
|
|
3396
3396
|
"relative flex min-w-0 flex-col items-center gap-1 rounded border-2 p-1 text-xs text-foreground transition-colors hover:bg-muted",
|
|
3397
3397
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
3398
3398
|
),
|
|
@@ -3466,7 +3466,7 @@ function LayoutArtwork({
|
|
|
3466
3466
|
backgroundColor
|
|
3467
3467
|
};
|
|
3468
3468
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3469
|
-
|
|
3469
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
3470
3470
|
{
|
|
3471
3471
|
element,
|
|
3472
3472
|
activeSlide: slide,
|
|
@@ -3741,7 +3741,7 @@ function WebRibbonSection({
|
|
|
3741
3741
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
|
|
3742
3742
|
}
|
|
3743
3743
|
function ReviewSection(p) {
|
|
3744
|
-
const { t } =
|
|
3744
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3745
3745
|
const [activeCommentId, setActiveCommentId] = React108.useState(null);
|
|
3746
3746
|
React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
|
|
3747
3747
|
const host = p.commentsHost;
|
|
@@ -3801,7 +3801,7 @@ function SlideShowOptions({
|
|
|
3801
3801
|
children
|
|
3802
3802
|
}) {
|
|
3803
3803
|
const ref = React108.useRef(null);
|
|
3804
|
-
const { t } =
|
|
3804
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3805
3805
|
React108.useLayoutEffect(() => {
|
|
3806
3806
|
if (!ref.current) {
|
|
3807
3807
|
return;
|
|
@@ -3820,8 +3820,8 @@ function SlideShowOptions({
|
|
|
3820
3820
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
|
|
3821
3821
|
}
|
|
3822
3822
|
function SubtitleSettingsControl() {
|
|
3823
|
-
const { t } =
|
|
3824
|
-
const supplied = React108.useContext(
|
|
3823
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3824
|
+
const supplied = React108.useContext(chunk3AZ6ESJU_js.ViewerOptionsStoreContext);
|
|
3825
3825
|
const fallback = React108.useRef(null);
|
|
3826
3826
|
if (!supplied) {
|
|
3827
3827
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -3854,8 +3854,8 @@ function SubtitleSettingsControl() {
|
|
|
3854
3854
|
);
|
|
3855
3855
|
}
|
|
3856
3856
|
function SlideShowSection(p) {
|
|
3857
|
-
const { t } =
|
|
3858
|
-
const { isHidden } =
|
|
3857
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
3858
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
3859
3859
|
const actions = {
|
|
3860
3860
|
"slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
|
|
3861
3861
|
"slideShow.startSlideShow.fromCurrent": p.onPresent,
|
|
@@ -4099,7 +4099,7 @@ function FontFormatGroup(p) {
|
|
|
4099
4099
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
|
|
4100
4100
|
}
|
|
4101
4101
|
function FontPickerGroup(p) {
|
|
4102
|
-
const { t } =
|
|
4102
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4103
4103
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
4104
4104
|
const { onFamily, onSize } = p;
|
|
4105
4105
|
const controls = React108.useMemo(
|
|
@@ -4122,7 +4122,7 @@ function FontPickerGroup(p) {
|
|
|
4122
4122
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
|
|
4123
4123
|
}
|
|
4124
4124
|
function ParagraphGroup(p) {
|
|
4125
|
-
const { t } =
|
|
4125
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4126
4126
|
const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
|
|
4127
4127
|
const commands = useRibbonGalleryCommands();
|
|
4128
4128
|
const align = pptx.paragraphHomeAlign(effectiveTs?.align);
|
|
@@ -4223,7 +4223,7 @@ function useParagraphListKind(element) {
|
|
|
4223
4223
|
return React108.useSyncExternalStore(subscribe, read, readServer);
|
|
4224
4224
|
}
|
|
4225
4225
|
function TextSection(p) {
|
|
4226
|
-
const { t } =
|
|
4226
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4227
4227
|
const hasSel = Boolean(p.selectedElement);
|
|
4228
4228
|
const canMut = hasSel && p.canEdit;
|
|
4229
4229
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
@@ -4299,7 +4299,7 @@ function TextSection(p) {
|
|
|
4299
4299
|
] });
|
|
4300
4300
|
}
|
|
4301
4301
|
function ViewSection(p) {
|
|
4302
|
-
const { t } =
|
|
4302
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4303
4303
|
const ref = React108.useRef(null);
|
|
4304
4304
|
React108.useEffect(() => {
|
|
4305
4305
|
const host = ref.current;
|
|
@@ -4372,10 +4372,10 @@ var MENU_ITEMS = [
|
|
|
4372
4372
|
{ key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
|
|
4373
4373
|
];
|
|
4374
4374
|
function MobileMenuSheet(props) {
|
|
4375
|
-
const { t } =
|
|
4375
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4376
4376
|
const { open, onClose } = props;
|
|
4377
4377
|
const [active, setActive] = React108.useState("home");
|
|
4378
|
-
const { isTabVisible } =
|
|
4378
|
+
const { isTabVisible } = chunk3AZ6ESJU_js.useToolbarVisibility(props.hiddenActions);
|
|
4379
4379
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4380
4380
|
MobileSheet,
|
|
4381
4381
|
{
|
|
@@ -4389,7 +4389,7 @@ function MobileMenuSheet(props) {
|
|
|
4389
4389
|
{
|
|
4390
4390
|
type: "button",
|
|
4391
4391
|
onClick: () => setActive(active === key ? null : key),
|
|
4392
|
-
className:
|
|
4392
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4393
4393
|
"inline-flex items-center gap-1.5 shrink-0 px-3 py-2 rounded-full text-[12px] font-medium border transition-colors min-h-[36px]",
|
|
4394
4394
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
4395
4395
|
),
|
|
@@ -4664,10 +4664,10 @@ function MobileSectionBody({
|
|
|
4664
4664
|
}
|
|
4665
4665
|
}
|
|
4666
4666
|
function MobileToolbar(props) {
|
|
4667
|
-
const { t } =
|
|
4667
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4668
4668
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
4669
4669
|
const [menuOpen, setMenuOpen] = React108.useState(false);
|
|
4670
|
-
const { isHidden } =
|
|
4670
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(props.hiddenActions);
|
|
4671
4671
|
const showEdit = mode === "edit" || mode === "master";
|
|
4672
4672
|
const hidden = [];
|
|
4673
4673
|
if (isHidden("undo")) {
|
|
@@ -4713,8 +4713,8 @@ function MobileToolbar(props) {
|
|
|
4713
4713
|
] });
|
|
4714
4714
|
}
|
|
4715
4715
|
function ChartSelectionStrip() {
|
|
4716
|
-
const { t } =
|
|
4717
|
-
const commands =
|
|
4716
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4717
|
+
const commands = chunk3AZ6ESJU_js.useChartFormatContext();
|
|
4718
4718
|
const chart = commands?.chart;
|
|
4719
4719
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
4720
4720
|
const controls = React108.useMemo(
|
|
@@ -4745,7 +4745,7 @@ function PictureSizeStrip({
|
|
|
4745
4745
|
hiddenActions
|
|
4746
4746
|
}) {
|
|
4747
4747
|
const crop = useShapeFormatContext()?.crop;
|
|
4748
|
-
const { isHidden } =
|
|
4748
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
|
|
4749
4749
|
const controls = React108.useMemo(
|
|
4750
4750
|
() => pptx.pictureSizeHomeControls({
|
|
4751
4751
|
editable: Boolean(crop),
|
|
@@ -4762,7 +4762,7 @@ function PictureSizeStrip({
|
|
|
4762
4762
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
|
|
4763
4763
|
}
|
|
4764
4764
|
function useTranslateOr() {
|
|
4765
|
-
const { t } =
|
|
4765
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4766
4766
|
return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
|
|
4767
4767
|
}
|
|
4768
4768
|
function ContextualTabSection({
|
|
@@ -4785,7 +4785,7 @@ function ContextualTabSection({
|
|
|
4785
4785
|
)) });
|
|
4786
4786
|
}
|
|
4787
4787
|
function DrawingGroup(p) {
|
|
4788
|
-
const { t } =
|
|
4788
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4789
4789
|
const { recentColors, pushColor } = useRecentColors();
|
|
4790
4790
|
const themeColors = useThemeColorMap();
|
|
4791
4791
|
const commands = useRibbonGalleryCommands();
|
|
@@ -4871,7 +4871,7 @@ function DrawingGroup(p) {
|
|
|
4871
4871
|
] });
|
|
4872
4872
|
}
|
|
4873
4873
|
function EditingSection(p) {
|
|
4874
|
-
const { t } =
|
|
4874
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4875
4875
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
4876
4876
|
const controls = React108.useMemo(
|
|
4877
4877
|
() => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
|
|
@@ -4917,8 +4917,8 @@ function RibbonAddInSection({ tab }) {
|
|
|
4917
4917
|
var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3";
|
|
4918
4918
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
4919
4919
|
function RibbonTabBar(p) {
|
|
4920
|
-
const { t } =
|
|
4921
|
-
const viewerOptions =
|
|
4920
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4921
|
+
const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
4922
4922
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4923
4923
|
"div",
|
|
4924
4924
|
{
|
|
@@ -4926,7 +4926,7 @@ function RibbonTabBar(p) {
|
|
|
4926
4926
|
"data-pptx-chrome": "ribbon-tabs",
|
|
4927
4927
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
4928
4928
|
children: [
|
|
4929
|
-
|
|
4929
|
+
chunk6GFSF2ML_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
4930
4930
|
const selected = p.activeSection === s.id;
|
|
4931
4931
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4932
4932
|
"button",
|
|
@@ -4936,7 +4936,7 @@ function RibbonTabBar(p) {
|
|
|
4936
4936
|
"aria-selected": selected,
|
|
4937
4937
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
4938
4938
|
onClick: () => p.onSelectSection(s.id),
|
|
4939
|
-
className:
|
|
4939
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4940
4940
|
TAB_BASE,
|
|
4941
4941
|
selected ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : `text-foreground ${TAB_UNDERLINE}` : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
4942
4942
|
),
|
|
@@ -4956,7 +4956,7 @@ function RibbonTabBar(p) {
|
|
|
4956
4956
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
4957
4957
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
4958
4958
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
4959
|
-
className:
|
|
4959
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4960
4960
|
TAB_BASE,
|
|
4961
4961
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
4962
4962
|
),
|
|
@@ -4977,7 +4977,7 @@ function RibbonTabBar(p) {
|
|
|
4977
4977
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
4978
4978
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
4979
4979
|
onClick: () => p.onSelectContextual(id),
|
|
4980
|
-
className:
|
|
4980
|
+
className: chunk6GFSF2ML_js.cn(
|
|
4981
4981
|
TAB_BASE,
|
|
4982
4982
|
"text-primary",
|
|
4983
4983
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -4994,10 +4994,10 @@ function RibbonTabBar(p) {
|
|
|
4994
4994
|
);
|
|
4995
4995
|
}
|
|
4996
4996
|
function TabRowActions(p) {
|
|
4997
|
-
const { t } =
|
|
4998
|
-
const collab =
|
|
4997
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
4998
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
4999
4999
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
5000
|
-
const { isHidden } =
|
|
5000
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
5001
5001
|
const customization = useViewerCustomizationContext();
|
|
5002
5002
|
const ref = React108.useRef(null);
|
|
5003
5003
|
const handlers = React108.useRef(p);
|
|
@@ -5051,8 +5051,8 @@ function TabRowActions(p) {
|
|
|
5051
5051
|
] });
|
|
5052
5052
|
}
|
|
5053
5053
|
function TitleBarElement(p) {
|
|
5054
|
-
const { t } =
|
|
5055
|
-
const options =
|
|
5054
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5055
|
+
const options = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
5056
5056
|
const customization = useViewerCustomizationContext();
|
|
5057
5057
|
const ref = React108.useRef(null);
|
|
5058
5058
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -5117,7 +5117,7 @@ function CustomShowsControls({
|
|
|
5117
5117
|
onDeleteActiveCustomShow,
|
|
5118
5118
|
onToggleCurrentSlideInActiveShow
|
|
5119
5119
|
}) {
|
|
5120
|
-
const { t } =
|
|
5120
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5121
5121
|
if (customShows.length > 0) {
|
|
5122
5122
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5123
5123
|
sep,
|
|
@@ -5172,7 +5172,7 @@ function CustomShowsControls({
|
|
|
5172
5172
|
{
|
|
5173
5173
|
type: "button",
|
|
5174
5174
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
5175
|
-
className:
|
|
5175
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5176
5176
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
5177
5177
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
5178
5178
|
),
|
|
@@ -5211,7 +5211,7 @@ function PresentDropdown({
|
|
|
5211
5211
|
onToggleSubtitles,
|
|
5212
5212
|
showSubtitles
|
|
5213
5213
|
}) {
|
|
5214
|
-
const { t } =
|
|
5214
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5215
5215
|
const [open, setOpen] = React108.useState(false);
|
|
5216
5216
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
5217
5217
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
|
|
@@ -5220,7 +5220,7 @@ function PresentDropdown({
|
|
|
5220
5220
|
{
|
|
5221
5221
|
type: "button",
|
|
5222
5222
|
onClick: onPresent,
|
|
5223
|
-
className:
|
|
5223
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5224
5224
|
"px-2 py-1 transition-colors",
|
|
5225
5225
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5226
5226
|
),
|
|
@@ -5233,7 +5233,7 @@ function PresentDropdown({
|
|
|
5233
5233
|
{
|
|
5234
5234
|
type: "button",
|
|
5235
5235
|
onClick: () => setOpen((prev) => !prev),
|
|
5236
|
-
className:
|
|
5236
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5237
5237
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
5238
5238
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5239
5239
|
),
|
|
@@ -5361,7 +5361,7 @@ function ModeSwitcher({
|
|
|
5361
5361
|
onToggleSubtitles,
|
|
5362
5362
|
showSubtitles
|
|
5363
5363
|
}) {
|
|
5364
|
-
const { t } =
|
|
5364
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5365
5365
|
if (mode === "master") {
|
|
5366
5366
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
|
|
5367
5367
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50", children: t("pptx.mode.masterView") }),
|
|
@@ -5399,7 +5399,7 @@ var EXPORT_CARD_OF = {
|
|
|
5399
5399
|
copyImg: "copyImage"
|
|
5400
5400
|
};
|
|
5401
5401
|
function OverflowMenu(p) {
|
|
5402
|
-
const { t } =
|
|
5402
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5403
5403
|
const customization = useViewerCustomizationContext();
|
|
5404
5404
|
const offered = (k) => {
|
|
5405
5405
|
const card = EXPORT_CARD_OF[k];
|
|
@@ -5436,7 +5436,7 @@ function OverflowMenu(p) {
|
|
|
5436
5436
|
{
|
|
5437
5437
|
type: "button",
|
|
5438
5438
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
5439
|
-
className:
|
|
5439
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5440
5440
|
"p-1.5 rounded transition-colors",
|
|
5441
5441
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
5442
5442
|
),
|
|
@@ -5474,7 +5474,7 @@ function OverflowMenu(p) {
|
|
|
5474
5474
|
] });
|
|
5475
5475
|
}
|
|
5476
5476
|
function ToolbarPrimaryRow(p) {
|
|
5477
|
-
const { t } =
|
|
5477
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5478
5478
|
const {
|
|
5479
5479
|
mode,
|
|
5480
5480
|
canEdit,
|
|
@@ -5483,7 +5483,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5483
5483
|
onToggleSidebar,
|
|
5484
5484
|
onToggleInspector
|
|
5485
5485
|
} = p;
|
|
5486
|
-
const collab =
|
|
5486
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
5487
5487
|
const customization = useViewerCustomizationContext();
|
|
5488
5488
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
5489
5489
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -5503,7 +5503,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5503
5503
|
{
|
|
5504
5504
|
type: "button",
|
|
5505
5505
|
onClick: onToggleSidebar,
|
|
5506
|
-
className:
|
|
5506
|
+
className: chunk6GFSF2ML_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
5507
5507
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
5508
5508
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
5509
5509
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -5564,7 +5564,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5564
5564
|
{
|
|
5565
5565
|
type: "button",
|
|
5566
5566
|
onClick: onToggleInspector,
|
|
5567
|
-
className:
|
|
5567
|
+
className: chunk6GFSF2ML_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
5568
5568
|
title: t("pptx.toolbar.toggleInspector"),
|
|
5569
5569
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
5570
5570
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -5575,7 +5575,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5575
5575
|
{
|
|
5576
5576
|
type: "button",
|
|
5577
5577
|
onClick: p.onToggleAiPanel,
|
|
5578
|
-
className:
|
|
5578
|
+
className: chunk6GFSF2ML_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
5579
5579
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
5580
5580
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
5581
5581
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -5586,7 +5586,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5586
5586
|
{
|
|
5587
5587
|
type: "button",
|
|
5588
5588
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
5589
|
-
className:
|
|
5589
|
+
className: chunk6GFSF2ML_js.cn(qab, "text-muted-foreground"),
|
|
5590
5590
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
5591
5591
|
"aria-label": t("pptx.toolbar.settings"),
|
|
5592
5592
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -5630,7 +5630,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
|
|
|
5630
5630
|
return { visible, active, fellBack, select: setChosen };
|
|
5631
5631
|
}
|
|
5632
5632
|
function HelpSection(p) {
|
|
5633
|
-
const { t } =
|
|
5633
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5634
5634
|
const groups = pptx.buildHelpRibbon(t, {
|
|
5635
5635
|
options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
|
|
5636
5636
|
});
|
|
@@ -5650,7 +5650,7 @@ function HelpSection(p) {
|
|
|
5650
5650
|
return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
|
|
5651
5651
|
}
|
|
5652
5652
|
function RecordSection(props) {
|
|
5653
|
-
const { t } =
|
|
5653
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5654
5654
|
const request = (id) => {
|
|
5655
5655
|
if (id === "record.record.fromBeginning") {
|
|
5656
5656
|
props.onRecordFromBeginning();
|
|
@@ -5783,9 +5783,9 @@ function ToolbarLateTabs({
|
|
|
5783
5783
|
}
|
|
5784
5784
|
function Toolbar(p) {
|
|
5785
5785
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
5786
|
-
const { t } =
|
|
5787
|
-
const { isTabVisible } =
|
|
5788
|
-
const viewerOptions =
|
|
5786
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
5787
|
+
const { isTabVisible } = chunk3AZ6ESJU_js.useToolbarVisibility(p.hiddenActions);
|
|
5788
|
+
const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
5789
5789
|
const customization = useViewerCustomizationContext();
|
|
5790
5790
|
const belowInput = React108.useMemo(
|
|
5791
5791
|
() => ({
|
|
@@ -5883,7 +5883,7 @@ function Toolbar(p) {
|
|
|
5883
5883
|
{
|
|
5884
5884
|
type: "button",
|
|
5885
5885
|
onClick: p.onToggleCompactToolbar,
|
|
5886
|
-
className:
|
|
5886
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5887
5887
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
5888
5888
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
5889
5889
|
),
|
|
@@ -5909,7 +5909,7 @@ function Toolbar(p) {
|
|
|
5909
5909
|
{
|
|
5910
5910
|
ref: attachOverflow,
|
|
5911
5911
|
"data-pptx-chrome": "ribbon-content",
|
|
5912
|
-
className:
|
|
5912
|
+
className: chunk6GFSF2ML_js.cn(
|
|
5913
5913
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
5914
5914
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
5915
5915
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -6099,7 +6099,7 @@ function Toolbar(p) {
|
|
|
6099
6099
|
);
|
|
6100
6100
|
}
|
|
6101
6101
|
function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
|
|
6102
|
-
const { t } =
|
|
6102
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6103
6103
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6104
6104
|
"div",
|
|
6105
6105
|
{
|
|
@@ -6311,7 +6311,7 @@ function ChartQuickActionsOverlay({
|
|
|
6311
6311
|
scale: stageScale = 1,
|
|
6312
6312
|
onUpdateElement
|
|
6313
6313
|
}) {
|
|
6314
|
-
const { t } =
|
|
6314
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6315
6315
|
const [open, setOpen] = React108.useState(null);
|
|
6316
6316
|
const hostRef = React108.useRef(null);
|
|
6317
6317
|
React108.useEffect(() => {
|
|
@@ -6482,7 +6482,7 @@ function CommentMarkersOverlay({
|
|
|
6482
6482
|
canvasSize,
|
|
6483
6483
|
onCommentMarkerClick
|
|
6484
6484
|
}) {
|
|
6485
|
-
const { t } =
|
|
6485
|
+
const { t } = chunk6GFSF2ML_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
|
|
6486
6486
|
comments,
|
|
6487
6487
|
canvasSize.width,
|
|
6488
6488
|
canvasSize.height,
|
|
@@ -6526,7 +6526,7 @@ function ConnectorEndpointOverlay({
|
|
|
6526
6526
|
canvasStageRef,
|
|
6527
6527
|
onUpdateElement
|
|
6528
6528
|
}) {
|
|
6529
|
-
const { t } =
|
|
6529
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6530
6530
|
const [drag, setDrag] = React108.useState(null);
|
|
6531
6531
|
const candidates = React108.useMemo(
|
|
6532
6532
|
() => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
@@ -6762,7 +6762,7 @@ function DrawingOverlaySvg({
|
|
|
6762
6762
|
onPointerDown,
|
|
6763
6763
|
onPointerMove,
|
|
6764
6764
|
onPointerUp,
|
|
6765
|
-
children: isStrokeActive && liveStrokeView ?
|
|
6765
|
+
children: isStrokeActive && liveStrokeView ? chunk3AZ6ESJU_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6766
6766
|
"path",
|
|
6767
6767
|
{
|
|
6768
6768
|
d: liveStrokeD,
|
|
@@ -6777,7 +6777,7 @@ function DrawingOverlaySvg({
|
|
|
6777
6777
|
}
|
|
6778
6778
|
);
|
|
6779
6779
|
}
|
|
6780
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
6780
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk6GFSF2ML_js.GRID_SIZE, visible }) {
|
|
6781
6781
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
6782
6782
|
const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
6783
6783
|
if (!visible) {
|
|
@@ -6805,7 +6805,7 @@ function MotionPathOverlay({
|
|
|
6805
6805
|
canEdit,
|
|
6806
6806
|
onChangePath
|
|
6807
6807
|
}) {
|
|
6808
|
-
const { t } =
|
|
6808
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6809
6809
|
const dragRef = React108.useRef(null);
|
|
6810
6810
|
const frame = {
|
|
6811
6811
|
originX: element.x + element.width / 2,
|
|
@@ -6919,7 +6919,7 @@ function MotionPathOverlay({
|
|
|
6919
6919
|
);
|
|
6920
6920
|
}
|
|
6921
6921
|
function EditPointsMenu({ menu, onRun }) {
|
|
6922
|
-
const { t } =
|
|
6922
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6923
6923
|
const stop2 = (event) => event.stopPropagation();
|
|
6924
6924
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6925
6925
|
"div",
|
|
@@ -6965,7 +6965,7 @@ function EditPointsOverlay({
|
|
|
6965
6965
|
onCommit,
|
|
6966
6966
|
onExit
|
|
6967
6967
|
}) {
|
|
6968
|
-
const { t } =
|
|
6968
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
6969
6969
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
6970
6970
|
const svgRef = React108.useRef(null);
|
|
6971
6971
|
const latest = React108.useRef({ onCommit, onExit });
|
|
@@ -7121,7 +7121,7 @@ function FreeformToolOverlay({
|
|
|
7121
7121
|
onCommit,
|
|
7122
7122
|
onCancel
|
|
7123
7123
|
}) {
|
|
7124
|
-
const { t } =
|
|
7124
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
7125
7125
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
7126
7126
|
const svgRef = React108.useRef(null);
|
|
7127
7127
|
const latest = React108.useRef({ onCommit, onCancel });
|
|
@@ -7264,7 +7264,7 @@ function PictureCropOverlay({
|
|
|
7264
7264
|
onUpdate,
|
|
7265
7265
|
onContextMenu
|
|
7266
7266
|
}) {
|
|
7267
|
-
const { t } =
|
|
7267
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
7268
7268
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
7269
7269
|
const dragRef = React108.useRef(null);
|
|
7270
7270
|
const latest = React108.useRef({ scale, onUpdate });
|
|
@@ -7312,7 +7312,7 @@ function PictureCropOverlay({
|
|
|
7312
7312
|
};
|
|
7313
7313
|
};
|
|
7314
7314
|
const { ghost, frame, handles } = overlay;
|
|
7315
|
-
const src =
|
|
7315
|
+
const src = chunk3AZ6ESJU_js.imgSrc(element);
|
|
7316
7316
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7317
7317
|
"div",
|
|
7318
7318
|
{
|
|
@@ -7488,7 +7488,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
7488
7488
|
}
|
|
7489
7489
|
);
|
|
7490
7490
|
}
|
|
7491
|
-
var HorizontalRuler = /* @__PURE__ */
|
|
7491
|
+
var HorizontalRuler = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
|
|
7492
7492
|
/* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
|
|
7493
7493
|
"HorizontalRuler"
|
|
7494
7494
|
);
|
|
@@ -7562,7 +7562,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
7562
7562
|
}
|
|
7563
7563
|
);
|
|
7564
7564
|
}
|
|
7565
|
-
var VerticalRuler = /* @__PURE__ */
|
|
7565
|
+
var VerticalRuler = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
|
|
7566
7566
|
/* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
|
|
7567
7567
|
"VerticalRuler"
|
|
7568
7568
|
);
|
|
@@ -7729,10 +7729,10 @@ function SelectionHandleOverlay({
|
|
|
7729
7729
|
position: "absolute",
|
|
7730
7730
|
left: element.x,
|
|
7731
7731
|
top: element.y,
|
|
7732
|
-
width: Math.max(element.width,
|
|
7733
|
-
height: Math.max(element.height,
|
|
7734
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
7735
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
7732
|
+
width: Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
|
|
7733
|
+
height: Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE),
|
|
7734
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
|
|
7735
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk6GFSF2ML_js.MIN_ELEMENT_SIZE)}px`,
|
|
7736
7736
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
7737
7737
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
7738
7738
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -7744,7 +7744,7 @@ function SelectionHandleOverlay({
|
|
|
7744
7744
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
7745
7745
|
// any realistic per-slide element count.
|
|
7746
7746
|
zIndex: 58,
|
|
7747
|
-
transform:
|
|
7747
|
+
transform: chunk6GFSF2ML_js.getElementTransform(element),
|
|
7748
7748
|
transformOrigin: "center",
|
|
7749
7749
|
// Transparent everywhere a handle button is not, so a click that
|
|
7750
7750
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -7756,14 +7756,14 @@ function SelectionHandleOverlay({
|
|
|
7756
7756
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
7757
7757
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
7758
7758
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7759
|
-
|
|
7759
|
+
chunk3AZ6ESJU_js.ResizeHandles,
|
|
7760
7760
|
{
|
|
7761
7761
|
elementId: element.id,
|
|
7762
7762
|
adjustmentHandles,
|
|
7763
7763
|
onResizePointerDown,
|
|
7764
7764
|
onAdjustmentPointerDown,
|
|
7765
7765
|
rotation: element.rotation,
|
|
7766
|
-
nonRotationTransform:
|
|
7766
|
+
nonRotationTransform: chunk6GFSF2ML_js.getElementTransformWithoutRotation(element),
|
|
7767
7767
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
7768
7768
|
forcePointerEvents: true
|
|
7769
7769
|
}
|
|
@@ -8467,7 +8467,7 @@ function SlideCanvas(props) {
|
|
|
8467
8467
|
props.registerInlineEditReader
|
|
8468
8468
|
]
|
|
8469
8469
|
);
|
|
8470
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8470
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
8471
8471
|
}
|
|
8472
8472
|
function SlideCanvasContent({
|
|
8473
8473
|
imagePaste,
|
|
@@ -8740,7 +8740,7 @@ function SlideCanvasContent({
|
|
|
8740
8740
|
onPointerMove: handleStagePointerMove,
|
|
8741
8741
|
onPointerUp: handleStagePointerUp,
|
|
8742
8742
|
children: [
|
|
8743
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8743
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
8744
8744
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
8745
8745
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
8746
8746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8752,7 +8752,7 @@ function SlideCanvasContent({
|
|
|
8752
8752
|
}
|
|
8753
8753
|
),
|
|
8754
8754
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8755
|
-
|
|
8755
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
8756
8756
|
{
|
|
8757
8757
|
element,
|
|
8758
8758
|
activeSlide,
|
|
@@ -8775,7 +8775,7 @@ function SlideCanvasContent({
|
|
|
8775
8775
|
),
|
|
8776
8776
|
renderInk: false,
|
|
8777
8777
|
renderGroups: true,
|
|
8778
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8778
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8779
8779
|
onResizePointerDown: stableResizePointerDown,
|
|
8780
8780
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8781
8781
|
onRotate: stableRotate,
|
|
@@ -8797,7 +8797,7 @@ function SlideCanvasContent({
|
|
|
8797
8797
|
`tpl-${element.id}`
|
|
8798
8798
|
)),
|
|
8799
8799
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8800
|
-
|
|
8800
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
8801
8801
|
{
|
|
8802
8802
|
element,
|
|
8803
8803
|
activeSlide,
|
|
@@ -8820,7 +8820,7 @@ function SlideCanvasContent({
|
|
|
8820
8820
|
),
|
|
8821
8821
|
renderInk: true,
|
|
8822
8822
|
renderGroups: true,
|
|
8823
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8823
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8824
8824
|
onResizePointerDown: stableResizePointerDown,
|
|
8825
8825
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8826
8826
|
onRotate: stableRotate,
|
|
@@ -8864,7 +8864,7 @@ function SlideCanvasContent({
|
|
|
8864
8864
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
8865
8865
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
8866
8866
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8867
|
-
|
|
8867
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
8868
8868
|
{
|
|
8869
8869
|
element: editingMember.member,
|
|
8870
8870
|
activeSlide,
|
|
@@ -8899,11 +8899,11 @@ function SlideCanvasContent({
|
|
|
8899
8899
|
`group-member-edit-${editingMember.member.id}`
|
|
8900
8900
|
)
|
|
8901
8901
|
] }),
|
|
8902
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
8902
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk6GFSF2ML_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8903
8903
|
SelectionHandleOverlay,
|
|
8904
8904
|
{
|
|
8905
8905
|
element: selectedElement,
|
|
8906
|
-
adjustmentHandles:
|
|
8906
|
+
adjustmentHandles: chunk6GFSF2ML_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
8907
8907
|
onResizePointerDown: stableResizePointerDown,
|
|
8908
8908
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8909
8909
|
onRotate: stableRotate,
|
|
@@ -9010,14 +9010,14 @@ function SlideCanvasContent({
|
|
|
9010
9010
|
);
|
|
9011
9011
|
}
|
|
9012
9012
|
function LoadingState({ className, fontProgress }) {
|
|
9013
|
-
const { t } =
|
|
9013
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9014
9014
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9015
9015
|
"div",
|
|
9016
9016
|
{
|
|
9017
9017
|
role: "status",
|
|
9018
9018
|
"aria-live": "polite",
|
|
9019
9019
|
"aria-atomic": "true",
|
|
9020
|
-
className:
|
|
9020
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9021
9021
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
9022
9022
|
className
|
|
9023
9023
|
),
|
|
@@ -9043,7 +9043,7 @@ function ErrorState({ className, error }) {
|
|
|
9043
9043
|
{
|
|
9044
9044
|
role: "alert",
|
|
9045
9045
|
"aria-live": "assertive",
|
|
9046
|
-
className:
|
|
9046
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9047
9047
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
9048
9048
|
className
|
|
9049
9049
|
),
|
|
@@ -9052,7 +9052,7 @@ function ErrorState({ className, error }) {
|
|
|
9052
9052
|
);
|
|
9053
9053
|
}
|
|
9054
9054
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
9055
|
-
const { t } =
|
|
9055
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9056
9056
|
if (!isOpen) {
|
|
9057
9057
|
return null;
|
|
9058
9058
|
}
|
|
@@ -9074,7 +9074,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
9074
9074
|
}
|
|
9075
9075
|
)
|
|
9076
9076
|
] }),
|
|
9077
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
9077
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk6GFSF2ML_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9078
9078
|
"div",
|
|
9079
9079
|
{
|
|
9080
9080
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -9096,7 +9096,7 @@ function AccessibilityPanel({
|
|
|
9096
9096
|
reducedMotion,
|
|
9097
9097
|
onToggleReducedMotion
|
|
9098
9098
|
}) {
|
|
9099
|
-
const { t } =
|
|
9099
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9100
9100
|
if (!isOpen) {
|
|
9101
9101
|
return null;
|
|
9102
9102
|
}
|
|
@@ -9134,14 +9134,14 @@ function AccessibilityPanel({
|
|
|
9134
9134
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
9135
9135
|
"aria-checked": reducedMotion ?? false,
|
|
9136
9136
|
onClick: onToggleReducedMotion,
|
|
9137
|
-
className:
|
|
9137
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9138
9138
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
9139
9139
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
9140
9140
|
),
|
|
9141
9141
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9142
9142
|
"span",
|
|
9143
9143
|
{
|
|
9144
|
-
className:
|
|
9144
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9145
9145
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
9146
9146
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
9147
9147
|
)
|
|
@@ -9160,7 +9160,7 @@ function AccessibilityPanel({
|
|
|
9160
9160
|
"div",
|
|
9161
9161
|
{
|
|
9162
9162
|
role: "listitem",
|
|
9163
|
-
className:
|
|
9163
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9164
9164
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
9165
9165
|
/* Severity-based background and text colouring */
|
|
9166
9166
|
issue.severity === "error" ? "bg-red-900/30 text-red-300" : issue.severity === "warning" ? "bg-amber-900/30 text-amber-300" : "bg-muted/50 text-muted-foreground"
|
|
@@ -9188,7 +9188,7 @@ function ExportProgressModal({
|
|
|
9188
9188
|
statusMessage,
|
|
9189
9189
|
onCancel
|
|
9190
9190
|
}) {
|
|
9191
|
-
const { t } =
|
|
9191
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9192
9192
|
const ref = useWebControl(
|
|
9193
9193
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
9194
9194
|
{ "export-cancel": () => onCancel() }
|
|
@@ -9196,7 +9196,7 @@ function ExportProgressModal({
|
|
|
9196
9196
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
9197
9197
|
}
|
|
9198
9198
|
function StatusBar(p) {
|
|
9199
|
-
const { t } =
|
|
9199
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9200
9200
|
const ref = React108.useRef(null);
|
|
9201
9201
|
React108.useEffect(() => {
|
|
9202
9202
|
const host = ref.current;
|
|
@@ -9278,7 +9278,7 @@ function ResizeHandle({
|
|
|
9278
9278
|
{
|
|
9279
9279
|
role: "separator",
|
|
9280
9280
|
"aria-orientation": direction,
|
|
9281
|
-
className:
|
|
9281
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9282
9282
|
// Outer container: generous hit area for easy clicking.
|
|
9283
9283
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
9284
9284
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -9289,7 +9289,7 @@ function ResizeHandle({
|
|
|
9289
9289
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9290
9290
|
"div",
|
|
9291
9291
|
{
|
|
9292
|
-
className:
|
|
9292
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9293
9293
|
"absolute transition-colors",
|
|
9294
9294
|
direction === "horizontal" ? "top-0 bottom-0 left-1/2 -translate-x-1/2 w-0.5 group-hover:w-1 group-hover:bg-primary/40 group-active:w-1 group-active:bg-primary/60" : "left-0 right-0 top-1/2 -translate-y-1/2 h-0.5 group-hover:h-1 group-hover:bg-primary/40 group-active:h-1 group-active:bg-primary/60"
|
|
9295
9295
|
)
|
|
@@ -9378,10 +9378,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
|
|
|
9378
9378
|
}
|
|
9379
9379
|
function ContextMenu(props) {
|
|
9380
9380
|
const { contextMenuState, mode, onClose } = props;
|
|
9381
|
-
const { t } =
|
|
9381
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9382
9382
|
const customization = useViewerCustomizationContext();
|
|
9383
9383
|
const shapeFormat = useShapeFormatContext();
|
|
9384
|
-
const chartFormat =
|
|
9384
|
+
const chartFormat = chunk3AZ6ESJU_js.useChartFormatContext();
|
|
9385
9385
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
9386
9386
|
const handlers = {
|
|
9387
9387
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -9457,7 +9457,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
9457
9457
|
}
|
|
9458
9458
|
function CanvasContextMenu(props) {
|
|
9459
9459
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
9460
|
-
const { t } =
|
|
9460
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9461
9461
|
const customization = useViewerCustomizationContext();
|
|
9462
9462
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
9463
9463
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -9520,7 +9520,7 @@ function FindReplacePanel({
|
|
|
9520
9520
|
onReplaceAll,
|
|
9521
9521
|
onClose
|
|
9522
9522
|
}) {
|
|
9523
|
-
const { t } =
|
|
9523
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9524
9524
|
const searchInputRef = React108.useRef(null);
|
|
9525
9525
|
React108.useEffect(() => {
|
|
9526
9526
|
searchInputRef.current?.focus();
|
|
@@ -9711,7 +9711,7 @@ function HandoutMasterPanel({
|
|
|
9711
9711
|
onSlidesPerPageChange,
|
|
9712
9712
|
onBackgroundChange
|
|
9713
9713
|
}) {
|
|
9714
|
-
const { t } =
|
|
9714
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9715
9715
|
if (!handoutMaster) {
|
|
9716
9716
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9717
9717
|
}
|
|
@@ -9723,7 +9723,7 @@ function HandoutMasterPanel({
|
|
|
9723
9723
|
{
|
|
9724
9724
|
type: "button",
|
|
9725
9725
|
"aria-pressed": slidesPerPage === count,
|
|
9726
|
-
className:
|
|
9726
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9727
9727
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9728
9728
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9729
9729
|
),
|
|
@@ -9766,7 +9766,7 @@ function NotesMasterPanel({
|
|
|
9766
9766
|
notesMaster,
|
|
9767
9767
|
onBackgroundChange
|
|
9768
9768
|
}) {
|
|
9769
|
-
const { t } =
|
|
9769
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9770
9770
|
const placeholderLabels = React108.useMemo(() => {
|
|
9771
9771
|
if (!notesMaster?.placeholders) {
|
|
9772
9772
|
return [];
|
|
@@ -9828,7 +9828,7 @@ function SlideMastersList({
|
|
|
9828
9828
|
React108.useEffect(() => {
|
|
9829
9829
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9830
9830
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9831
|
-
const { t } =
|
|
9831
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9832
9832
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9833
9833
|
slideMasters.map((master, masterIdx) => {
|
|
9834
9834
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -9841,7 +9841,7 @@ function SlideMastersList({
|
|
|
9841
9841
|
ref: isMasterActive ? activeRef : void 0,
|
|
9842
9842
|
"aria-pressed": isMasterActive,
|
|
9843
9843
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9844
|
-
className:
|
|
9844
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9845
9845
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9846
9846
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9847
9847
|
),
|
|
@@ -9858,7 +9858,7 @@ function SlideMastersList({
|
|
|
9858
9858
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9859
9859
|
"span",
|
|
9860
9860
|
{
|
|
9861
|
-
className:
|
|
9861
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9862
9862
|
"text-[10px] font-medium",
|
|
9863
9863
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9864
9864
|
),
|
|
@@ -9877,7 +9877,7 @@ function SlideMastersList({
|
|
|
9877
9877
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9878
9878
|
"aria-pressed": isLayoutActive,
|
|
9879
9879
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9880
|
-
className:
|
|
9880
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9881
9881
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9882
9882
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9883
9883
|
),
|
|
@@ -9894,7 +9894,7 @@ function SlideMastersList({
|
|
|
9894
9894
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9895
9895
|
"span",
|
|
9896
9896
|
{
|
|
9897
|
-
className:
|
|
9897
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9898
9898
|
"text-[9px]",
|
|
9899
9899
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9900
9900
|
),
|
|
@@ -9938,7 +9938,7 @@ function MasterViewSidebar({
|
|
|
9938
9938
|
onSlidesBackgroundChange
|
|
9939
9939
|
}) {
|
|
9940
9940
|
const scrollRef = React108.useRef(null);
|
|
9941
|
-
const { t } =
|
|
9941
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
9942
9942
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
9943
9943
|
{ slideMasters },
|
|
9944
9944
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -9986,7 +9986,7 @@ function MasterViewSidebar({
|
|
|
9986
9986
|
type: "button",
|
|
9987
9987
|
role: "tab",
|
|
9988
9988
|
"aria-selected": masterViewTab === tab.key,
|
|
9989
|
-
className:
|
|
9989
|
+
className: chunk6GFSF2ML_js.cn(
|
|
9990
9990
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
9991
9991
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9992
9992
|
),
|
|
@@ -10088,7 +10088,7 @@ function NotesMasterCanvas({
|
|
|
10088
10088
|
notesText,
|
|
10089
10089
|
slideNumber
|
|
10090
10090
|
}) {
|
|
10091
|
-
const { t } =
|
|
10091
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10092
10092
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10093
10093
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10094
10094
|
const scale = React108.useMemo(() => {
|
|
@@ -10348,7 +10348,7 @@ function HandoutMasterCanvas({
|
|
|
10348
10348
|
slideThumbnails,
|
|
10349
10349
|
pageNumber
|
|
10350
10350
|
}) {
|
|
10351
|
-
const { t } =
|
|
10351
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10352
10352
|
const slideAspect = 4 / 3;
|
|
10353
10353
|
const scale = React108.useMemo(() => {
|
|
10354
10354
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10489,7 +10489,7 @@ function SectionBlock({
|
|
|
10489
10489
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10490
10490
|
lu.LuChevronDown,
|
|
10491
10491
|
{
|
|
10492
|
-
className:
|
|
10492
|
+
className: chunk6GFSF2ML_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10493
10493
|
}
|
|
10494
10494
|
),
|
|
10495
10495
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10533,12 +10533,12 @@ function SlideCardImpl({
|
|
|
10533
10533
|
onDragLeave,
|
|
10534
10534
|
onDrop
|
|
10535
10535
|
}) {
|
|
10536
|
-
const { t } =
|
|
10536
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10537
10537
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10538
10538
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10539
10539
|
"div",
|
|
10540
10540
|
{
|
|
10541
|
-
className:
|
|
10541
|
+
className: chunk6GFSF2ML_js.cn(
|
|
10542
10542
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10543
10543
|
isDragTarget ? "border-primary bg-primary/20" : isSelected ? "border-primary bg-primary/10 ring-1 ring-primary/50" : isActive ? "border-primary/50 bg-primary/5" : "border-border bg-background/50 hover:border-border",
|
|
10544
10544
|
slide.hidden && "opacity-40"
|
|
@@ -10561,7 +10561,7 @@ function SlideCardImpl({
|
|
|
10561
10561
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10562
10562
|
"span",
|
|
10563
10563
|
{
|
|
10564
|
-
className:
|
|
10564
|
+
className: chunk6GFSF2ML_js.cn(
|
|
10565
10565
|
"text-[11px] font-medium px-0.5",
|
|
10566
10566
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10567
10567
|
),
|
|
@@ -10630,7 +10630,7 @@ function SorterContextMenu({
|
|
|
10630
10630
|
onToggleHide,
|
|
10631
10631
|
onClose
|
|
10632
10632
|
}) {
|
|
10633
|
-
const { t } =
|
|
10633
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10634
10634
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10635
10635
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10636
10636
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -10985,7 +10985,7 @@ function SlideSorterOverlay({
|
|
|
10985
10985
|
onToggleHideSlides,
|
|
10986
10986
|
onClose
|
|
10987
10987
|
}) {
|
|
10988
|
-
const { t } =
|
|
10988
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
10989
10989
|
const state = useSlideSorterState({
|
|
10990
10990
|
slides,
|
|
10991
10991
|
templateElementsBySlideId,
|
|
@@ -11231,7 +11231,7 @@ function OutlineViewOverlay({
|
|
|
11231
11231
|
bumpHistory,
|
|
11232
11232
|
onClose
|
|
11233
11233
|
}) {
|
|
11234
|
-
const { t } =
|
|
11234
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11235
11235
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11236
11236
|
slides,
|
|
11237
11237
|
canvasSize,
|
|
@@ -11322,7 +11322,7 @@ function ReadingViewStage({
|
|
|
11322
11322
|
"div",
|
|
11323
11323
|
{
|
|
11324
11324
|
className: "absolute inset-0",
|
|
11325
|
-
style: { backgroundColor:
|
|
11325
|
+
style: { backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11326
11326
|
}
|
|
11327
11327
|
),
|
|
11328
11328
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11341,7 +11341,7 @@ function ReadingViewStage({
|
|
|
11341
11341
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11342
11342
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11343
11343
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11344
|
-
|
|
11344
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
11345
11345
|
{
|
|
11346
11346
|
element,
|
|
11347
11347
|
activeSlide: slide,
|
|
@@ -11422,7 +11422,7 @@ function ReadingViewOverlay({
|
|
|
11422
11422
|
activeSlideIndex,
|
|
11423
11423
|
onExit
|
|
11424
11424
|
}) {
|
|
11425
|
-
const { t } =
|
|
11425
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11426
11426
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11427
11427
|
slideCount: slides.length,
|
|
11428
11428
|
canvasSize,
|
|
@@ -11553,7 +11553,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11553
11553
|
if (segment.style.fontFamily) {
|
|
11554
11554
|
style.fontFamily = segment.style.fontFamily;
|
|
11555
11555
|
}
|
|
11556
|
-
if (segment.style.hyperlink &&
|
|
11556
|
+
if (segment.style.hyperlink && chunk6GFSF2ML_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11557
11557
|
const safeHref = segment.style.hyperlink;
|
|
11558
11558
|
style.color = "#4a9eff";
|
|
11559
11559
|
style.textDecoration = "underline";
|
|
@@ -11566,7 +11566,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11566
11566
|
style,
|
|
11567
11567
|
onClick: (e) => {
|
|
11568
11568
|
e.preventDefault();
|
|
11569
|
-
|
|
11569
|
+
chunk6GFSF2ML_js.safeOpenUrl(safeHref);
|
|
11570
11570
|
},
|
|
11571
11571
|
children: segment.text
|
|
11572
11572
|
},
|
|
@@ -11590,7 +11590,7 @@ function NotesPrintDialog({
|
|
|
11590
11590
|
onClose,
|
|
11591
11591
|
notesStyle
|
|
11592
11592
|
}) {
|
|
11593
|
-
const { t } =
|
|
11593
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11594
11594
|
const printFrameRef = React108.useRef(null);
|
|
11595
11595
|
const handlePrint = React108.useCallback(() => {
|
|
11596
11596
|
const iframe = printFrameRef.current;
|
|
@@ -11648,7 +11648,7 @@ function NotesPrintDialog({
|
|
|
11648
11648
|
] }) });
|
|
11649
11649
|
}
|
|
11650
11650
|
function NotesToolbar(p) {
|
|
11651
|
-
const { t } =
|
|
11651
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11652
11652
|
const ref = React108.useRef(null);
|
|
11653
11653
|
React108.useEffect(() => {
|
|
11654
11654
|
const host = ref.current;
|
|
@@ -11915,7 +11915,7 @@ function useSlideNotes({
|
|
|
11915
11915
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11916
11916
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11917
11917
|
e.preventDefault();
|
|
11918
|
-
|
|
11918
|
+
chunk6GFSF2ML_js.safeOpenUrl(href);
|
|
11919
11919
|
}
|
|
11920
11920
|
}, []);
|
|
11921
11921
|
return {
|
|
@@ -11952,7 +11952,7 @@ function SlideNotesPanel({
|
|
|
11952
11952
|
notesStyle,
|
|
11953
11953
|
onHeightChange
|
|
11954
11954
|
}) {
|
|
11955
|
-
const { t } =
|
|
11955
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
11956
11956
|
const rootRef = React108__default.default.useRef(null);
|
|
11957
11957
|
React108__default.default.useEffect(() => {
|
|
11958
11958
|
const el = rootRef.current;
|
|
@@ -11996,7 +11996,7 @@ function SlideNotesPanel({
|
|
|
11996
11996
|
});
|
|
11997
11997
|
const hasNotes = draft.trim().length > 0;
|
|
11998
11998
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
11999
|
-
const { dragY, handlers: dragHandlers } =
|
|
11999
|
+
const { dragY, handlers: dragHandlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onToggle);
|
|
12000
12000
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12001
12001
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12002
12002
|
"button",
|
|
@@ -12012,7 +12012,7 @@ function SlideNotesPanel({
|
|
|
12012
12012
|
{
|
|
12013
12013
|
ref: rootRef,
|
|
12014
12014
|
"data-pptx-chrome": "notes",
|
|
12015
|
-
className:
|
|
12015
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12016
12016
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
12017
12017
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
12018
12018
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12196,7 +12196,7 @@ function VersionHistoryPanel({
|
|
|
12196
12196
|
onClose,
|
|
12197
12197
|
onRestore
|
|
12198
12198
|
}) {
|
|
12199
|
-
const { t } =
|
|
12199
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12200
12200
|
const [versions, setVersions] = React108.useState([]);
|
|
12201
12201
|
const [loading, setLoading] = React108.useState(false);
|
|
12202
12202
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12342,7 +12342,7 @@ function SlideDiffRow({
|
|
|
12342
12342
|
onAccept,
|
|
12343
12343
|
onReject
|
|
12344
12344
|
}) {
|
|
12345
|
-
const { t } =
|
|
12345
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12346
12346
|
const [expanded, setExpanded] = React108.useState(diff.status === "changed");
|
|
12347
12347
|
const statusLabel = (() => {
|
|
12348
12348
|
switch (diff.status) {
|
|
@@ -12376,7 +12376,7 @@ function SlideDiffRow({
|
|
|
12376
12376
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12377
12377
|
"div",
|
|
12378
12378
|
{
|
|
12379
|
-
className:
|
|
12379
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12380
12380
|
"rounded-lg border transition-colors",
|
|
12381
12381
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12382
12382
|
),
|
|
@@ -12390,7 +12390,7 @@ function SlideDiffRow({
|
|
|
12390
12390
|
children: [
|
|
12391
12391
|
expanded ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronRight, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }),
|
|
12392
12392
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12393
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12393
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk6GFSF2ML_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12394
12394
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12395
12395
|
diff.changes.length,
|
|
12396
12396
|
" ",
|
|
@@ -12400,7 +12400,7 @@ function SlideDiffRow({
|
|
|
12400
12400
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12401
12401
|
"span",
|
|
12402
12402
|
{
|
|
12403
|
-
className:
|
|
12403
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12404
12404
|
"text-[10px] font-medium",
|
|
12405
12405
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12406
12406
|
),
|
|
@@ -12428,7 +12428,7 @@ function SlideDiffRow({
|
|
|
12428
12428
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12429
12429
|
"div",
|
|
12430
12430
|
{
|
|
12431
|
-
className:
|
|
12431
|
+
className: chunk6GFSF2ML_js.cn(
|
|
12432
12432
|
"rounded border overflow-hidden",
|
|
12433
12433
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12434
12434
|
),
|
|
@@ -12495,7 +12495,7 @@ function ComparePanel({
|
|
|
12495
12495
|
onRejectSlide,
|
|
12496
12496
|
onAcceptAll
|
|
12497
12497
|
}) {
|
|
12498
|
-
const { t } =
|
|
12498
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12499
12499
|
const [accepted, setAccepted] = React108.useState({});
|
|
12500
12500
|
const [rejected, setRejected] = React108.useState({});
|
|
12501
12501
|
const handleAccept = React108.useCallback(
|
|
@@ -12624,7 +12624,7 @@ function PasswordProtectionDialog({
|
|
|
12624
12624
|
onSetPassword,
|
|
12625
12625
|
onRemovePassword
|
|
12626
12626
|
}) {
|
|
12627
|
-
const { t } =
|
|
12627
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12628
12628
|
const [password, setPassword] = React108.useState("");
|
|
12629
12629
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12630
12630
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -12840,7 +12840,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12840
12840
|
customProperties,
|
|
12841
12841
|
onUpdate
|
|
12842
12842
|
}) {
|
|
12843
|
-
const { t } =
|
|
12843
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
12844
12844
|
const handleAdd = React108.useCallback(() => {
|
|
12845
12845
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
12846
12846
|
}, [customProperties, onUpdate]);
|
|
@@ -13042,7 +13042,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
13042
13042
|
onUpdateAppProperties,
|
|
13043
13043
|
canEdit
|
|
13044
13044
|
}) {
|
|
13045
|
-
const { t } =
|
|
13045
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13046
13046
|
const handleEditableChange = React108.useCallback(
|
|
13047
13047
|
(key, value) => {
|
|
13048
13048
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13082,7 +13082,7 @@ function DocumentPropertiesDialog({
|
|
|
13082
13082
|
onClose,
|
|
13083
13083
|
onSave
|
|
13084
13084
|
}) {
|
|
13085
|
-
const { t } =
|
|
13085
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13086
13086
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13087
13087
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13088
13088
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13133,7 +13133,7 @@ function DocumentPropertiesDialog({
|
|
|
13133
13133
|
const handleClose = React108.useCallback(() => {
|
|
13134
13134
|
onClose();
|
|
13135
13135
|
}, [onClose]);
|
|
13136
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13136
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(handleClose);
|
|
13137
13137
|
if (!isOpen) {
|
|
13138
13138
|
return null;
|
|
13139
13139
|
}
|
|
@@ -13270,7 +13270,7 @@ function FontEmbeddingPanel({
|
|
|
13270
13270
|
onClose,
|
|
13271
13271
|
onToggleEmbedFonts
|
|
13272
13272
|
}) {
|
|
13273
|
-
const { t } =
|
|
13273
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13274
13274
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13275
13275
|
const [scanning, setScanning] = React108.useState(false);
|
|
13276
13276
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13398,7 +13398,7 @@ function DigitalSignaturesDialog({
|
|
|
13398
13398
|
hasSignatures,
|
|
13399
13399
|
signatureCount
|
|
13400
13400
|
}) {
|
|
13401
|
-
const { t } =
|
|
13401
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13402
13402
|
if (!isOpen) {
|
|
13403
13403
|
return null;
|
|
13404
13404
|
}
|
|
@@ -13470,7 +13470,7 @@ function SignatureStatusBadge({
|
|
|
13470
13470
|
signatureCount,
|
|
13471
13471
|
onClick
|
|
13472
13472
|
}) {
|
|
13473
|
-
const { t } =
|
|
13473
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13474
13474
|
if (!hasSignatures || signatureCount === 0) {
|
|
13475
13475
|
return null;
|
|
13476
13476
|
}
|
|
@@ -13496,7 +13496,7 @@ function SignatureStrippedDialog({
|
|
|
13496
13496
|
onConfirm,
|
|
13497
13497
|
onCancel
|
|
13498
13498
|
}) {
|
|
13499
|
-
const { t } =
|
|
13499
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13500
13500
|
if (!isOpen) {
|
|
13501
13501
|
return null;
|
|
13502
13502
|
}
|
|
@@ -13565,7 +13565,7 @@ function EncryptedFileDialog({
|
|
|
13565
13565
|
isOpen,
|
|
13566
13566
|
onClose
|
|
13567
13567
|
}) {
|
|
13568
|
-
const { t } =
|
|
13568
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13569
13569
|
if (!isOpen) {
|
|
13570
13570
|
return null;
|
|
13571
13571
|
}
|
|
@@ -13712,7 +13712,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13712
13712
|
] });
|
|
13713
13713
|
}
|
|
13714
13714
|
function PresentationEndOverlay({ onExit }) {
|
|
13715
|
-
const { t } =
|
|
13715
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13716
13716
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13717
13717
|
"button",
|
|
13718
13718
|
{
|
|
@@ -13728,9 +13728,9 @@ function PresentationSubtitleBar({
|
|
|
13728
13728
|
visible,
|
|
13729
13729
|
onCaptionChange
|
|
13730
13730
|
}) {
|
|
13731
|
-
const { t } =
|
|
13731
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13732
13732
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13733
|
-
pptx.subtitleSettingsFromOptions(
|
|
13733
|
+
pptx.subtitleSettingsFromOptions(chunk3AZ6ESJU_js.useViewerOptionsContext()),
|
|
13734
13734
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13735
13735
|
);
|
|
13736
13736
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13807,7 +13807,7 @@ function renderNotesSegments(segments) {
|
|
|
13807
13807
|
});
|
|
13808
13808
|
}
|
|
13809
13809
|
function PresenterConsoleToolbar(p) {
|
|
13810
|
-
const { t } =
|
|
13810
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13811
13811
|
const ref = useWebControl(
|
|
13812
13812
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13813
13813
|
{
|
|
@@ -13898,7 +13898,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13898
13898
|
{
|
|
13899
13899
|
className: "absolute inset-0",
|
|
13900
13900
|
style: {
|
|
13901
|
-
backgroundColor:
|
|
13901
|
+
backgroundColor: chunk6GFSF2ML_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13902
13902
|
}
|
|
13903
13903
|
}
|
|
13904
13904
|
),
|
|
@@ -13924,7 +13924,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13924
13924
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13925
13925
|
},
|
|
13926
13926
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13927
|
-
|
|
13927
|
+
chunk3AZ6ESJU_js.StaticElementRenderer,
|
|
13928
13928
|
{
|
|
13929
13929
|
element,
|
|
13930
13930
|
activeSlide: slide,
|
|
@@ -13970,7 +13970,7 @@ function PresenterNotesRail({
|
|
|
13970
13970
|
onMove,
|
|
13971
13971
|
onUpdateNotes
|
|
13972
13972
|
}) {
|
|
13973
|
-
const { t } =
|
|
13973
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
13974
13974
|
const slide = slides[current];
|
|
13975
13975
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
13976
13976
|
const notesText = slide?.notes ?? "";
|
|
@@ -14095,7 +14095,7 @@ function PresenterNotesRail({
|
|
|
14095
14095
|
] });
|
|
14096
14096
|
}
|
|
14097
14097
|
function PresenterSlideNavigator(props) {
|
|
14098
|
-
const { t } =
|
|
14098
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14099
14099
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14100
14100
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14101
14101
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14237,7 +14237,7 @@ function PresenterView({
|
|
|
14237
14237
|
onSwapDisplays,
|
|
14238
14238
|
onUpdateNotes
|
|
14239
14239
|
}) {
|
|
14240
|
-
const { t } =
|
|
14240
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14241
14241
|
const [now, setNow] = React108.useState(Date.now());
|
|
14242
14242
|
React108.useEffect(() => {
|
|
14243
14243
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14394,7 +14394,7 @@ function MobilePresenterView({
|
|
|
14394
14394
|
onMovePresentationSlide,
|
|
14395
14395
|
onExit
|
|
14396
14396
|
}) {
|
|
14397
|
-
const { t } =
|
|
14397
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14398
14398
|
const [now, setNow] = React108.useState(Date.now());
|
|
14399
14399
|
React108.useEffect(() => {
|
|
14400
14400
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14507,7 +14507,7 @@ function RehearseTimingsHud({
|
|
|
14507
14507
|
paused,
|
|
14508
14508
|
onTogglePause
|
|
14509
14509
|
}) {
|
|
14510
|
-
const { t } =
|
|
14510
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14511
14511
|
const [tick, setTick] = React108.useState(0);
|
|
14512
14512
|
React108.useEffect(() => {
|
|
14513
14513
|
if (paused) {
|
|
@@ -14555,7 +14555,7 @@ function RehearseTimingsSummary({
|
|
|
14555
14555
|
onSave,
|
|
14556
14556
|
onDiscard
|
|
14557
14557
|
}) {
|
|
14558
|
-
const { t } =
|
|
14558
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14559
14559
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14560
14560
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14561
14561
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-lg rounded-xl border border-border bg-background shadow-2xl", children: [
|
|
@@ -14639,7 +14639,7 @@ function SelectionPane({
|
|
|
14639
14639
|
markDirty,
|
|
14640
14640
|
onClose
|
|
14641
14641
|
}) {
|
|
14642
|
-
const { t } =
|
|
14642
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14643
14643
|
const activeSlide = slides[activeSlideIndex];
|
|
14644
14644
|
const elements = activeSlide?.elements ?? [];
|
|
14645
14645
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14794,7 +14794,7 @@ function SelectionPane({
|
|
|
14794
14794
|
setDragIndex(null);
|
|
14795
14795
|
setDragOverIndex(null);
|
|
14796
14796
|
},
|
|
14797
|
-
className:
|
|
14797
|
+
className: chunk6GFSF2ML_js.cn(
|
|
14798
14798
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14799
14799
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14800
14800
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14848,13 +14848,13 @@ function SelectionPane({
|
|
|
14848
14848
|
}
|
|
14849
14849
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14850
14850
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14851
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
14851
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14852
14852
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14853
14853
|
);
|
|
14854
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
14854
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14855
14855
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14856
14856
|
);
|
|
14857
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
14857
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunk6GFSF2ML_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14858
14858
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14859
14859
|
);
|
|
14860
14860
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -14955,7 +14955,7 @@ function AfterAnimationRow({
|
|
|
14955
14955
|
onActionChange,
|
|
14956
14956
|
onColorChange
|
|
14957
14957
|
}) {
|
|
14958
|
-
const { t } =
|
|
14958
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
14959
14959
|
const commitRecentColor = useRecentColorCommit();
|
|
14960
14960
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
14961
14961
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15006,7 +15006,7 @@ function AnimationTimelineSection({
|
|
|
15006
15006
|
canEdit,
|
|
15007
15007
|
handlers
|
|
15008
15008
|
}) {
|
|
15009
|
-
const { t } =
|
|
15009
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15010
15010
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
15011
15011
|
const {
|
|
15012
15012
|
sortedAnimations,
|
|
@@ -15037,7 +15037,7 @@ function AnimationTimelineSection({
|
|
|
15037
15037
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15038
15038
|
"div",
|
|
15039
15039
|
{
|
|
15040
|
-
className:
|
|
15040
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15041
15041
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15042
15042
|
animationTypeColor(bar.anim),
|
|
15043
15043
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15066,7 +15066,7 @@ function AnimationTimelineSection({
|
|
|
15066
15066
|
onDragLeave: handleDragLeave,
|
|
15067
15067
|
onDrop: (e) => handleDrop(index, e),
|
|
15068
15068
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15069
|
-
className:
|
|
15069
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15070
15070
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15071
15071
|
"bg-muted/20 text-muted-foreground/70",
|
|
15072
15072
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15105,7 +15105,7 @@ function AnimationTimelineSection({
|
|
|
15105
15105
|
onDragEnd: handleDragEnd,
|
|
15106
15106
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15107
15107
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15108
|
-
className:
|
|
15108
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15109
15109
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15110
15110
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15111
15111
|
isDragging && "opacity-40",
|
|
@@ -15166,7 +15166,7 @@ function BookmarkTriggerRow({
|
|
|
15166
15166
|
style,
|
|
15167
15167
|
onChange
|
|
15168
15168
|
}) {
|
|
15169
|
-
const { t } =
|
|
15169
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15170
15170
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15171
15171
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15172
15172
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15199,7 +15199,7 @@ function EffectSoundRow({
|
|
|
15199
15199
|
onPick,
|
|
15200
15200
|
onPickStock
|
|
15201
15201
|
}) {
|
|
15202
|
-
const { t } =
|
|
15202
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15203
15203
|
const fileInputRef = React108__default.default.useRef(null);
|
|
15204
15204
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15205
15205
|
const handleSelectChange = (event) => {
|
|
@@ -15237,7 +15237,7 @@ function EffectSoundRow({
|
|
|
15237
15237
|
}
|
|
15238
15238
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15239
15239
|
if (asset) {
|
|
15240
|
-
|
|
15240
|
+
chunk3AZ6ESJU_js.playAnimationSound(asset.dataUrl);
|
|
15241
15241
|
}
|
|
15242
15242
|
};
|
|
15243
15243
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15290,7 +15290,7 @@ function MotionPathRow({
|
|
|
15290
15290
|
canEdit,
|
|
15291
15291
|
onChange
|
|
15292
15292
|
}) {
|
|
15293
|
-
const { t } =
|
|
15293
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15294
15294
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15295
15295
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15296
15296
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15412,7 +15412,7 @@ function useAnimationPreview({
|
|
|
15412
15412
|
}) {
|
|
15413
15413
|
const handleAnimationHover = React108.useCallback((anim) => {
|
|
15414
15414
|
if (anim.motionPath) {
|
|
15415
|
-
|
|
15415
|
+
chunk6GFSF2ML_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15416
15416
|
durationMs: anim.durationMs,
|
|
15417
15417
|
delayMs: anim.delayMs,
|
|
15418
15418
|
timingCurve: anim.timingCurve
|
|
@@ -15423,19 +15423,19 @@ function useAnimationPreview({
|
|
|
15423
15423
|
if (!preset || preset === "none") {
|
|
15424
15424
|
return;
|
|
15425
15425
|
}
|
|
15426
|
-
|
|
15426
|
+
chunk6GFSF2ML_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15427
15427
|
direction: anim.direction,
|
|
15428
15428
|
durationMs: anim.durationMs ?? 500,
|
|
15429
15429
|
timingCurve: anim.timingCurve
|
|
15430
15430
|
});
|
|
15431
15431
|
}, []);
|
|
15432
|
-
const handleAnimationHoverEnd = React108.useCallback(() =>
|
|
15432
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunk6GFSF2ML_js.stopPreviewAnimation(), []);
|
|
15433
15433
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15434
15434
|
if (!selectedElementAnimation) {
|
|
15435
15435
|
return;
|
|
15436
15436
|
}
|
|
15437
15437
|
if (selectedElementAnimation.motionPath) {
|
|
15438
|
-
|
|
15438
|
+
chunk6GFSF2ML_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15439
15439
|
durationMs: selectedElementAnimation.durationMs,
|
|
15440
15440
|
delayMs: selectedElementAnimation.delayMs,
|
|
15441
15441
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15446,7 +15446,7 @@ function useAnimationPreview({
|
|
|
15446
15446
|
if (!preset || preset === "none") {
|
|
15447
15447
|
return;
|
|
15448
15448
|
}
|
|
15449
|
-
|
|
15449
|
+
chunk6GFSF2ML_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15450
15450
|
direction: selectedElementAnimation.direction,
|
|
15451
15451
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15452
15452
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15681,7 +15681,7 @@ function useAnimationHandlers({
|
|
|
15681
15681
|
return anim.elementId.slice(0, 8);
|
|
15682
15682
|
}
|
|
15683
15683
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15684
|
-
return text ||
|
|
15684
|
+
return text || chunk6GFSF2ML_js.getElementLabel(el);
|
|
15685
15685
|
},
|
|
15686
15686
|
[activeSlide.elements]
|
|
15687
15687
|
);
|
|
@@ -15692,7 +15692,7 @@ function useAnimationHandlers({
|
|
|
15692
15692
|
return id.slice(0, 8);
|
|
15693
15693
|
}
|
|
15694
15694
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15695
|
-
return text ||
|
|
15695
|
+
return text || chunk6GFSF2ML_js.getElementLabel(el);
|
|
15696
15696
|
}).join(", "),
|
|
15697
15697
|
[activeSlide.elements]
|
|
15698
15698
|
);
|
|
@@ -15748,8 +15748,8 @@ function AnimationPanel({
|
|
|
15748
15748
|
canEdit,
|
|
15749
15749
|
onUpdateSlide
|
|
15750
15750
|
}) {
|
|
15751
|
-
const { t } =
|
|
15752
|
-
const { viewportWidth } =
|
|
15751
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
15752
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
15753
15753
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15754
15754
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15755
15755
|
const handlers = useAnimationHandlers({
|
|
@@ -15877,7 +15877,7 @@ function AnimationPanel({
|
|
|
15877
15877
|
type: "button",
|
|
15878
15878
|
disabled: !canEdit,
|
|
15879
15879
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15880
|
-
className:
|
|
15880
|
+
className: chunk6GFSF2ML_js.cn(
|
|
15881
15881
|
"flex items-center justify-center rounded border transition-colors",
|
|
15882
15882
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15883
15883
|
),
|
|
@@ -15943,7 +15943,7 @@ function AnimationPanel({
|
|
|
15943
15943
|
style: fieldStyle,
|
|
15944
15944
|
children: [
|
|
15945
15945
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15946
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15946
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk6GFSF2ML_js.getElementLabel(el) }, el.id))
|
|
15947
15947
|
]
|
|
15948
15948
|
}
|
|
15949
15949
|
)
|
|
@@ -16087,7 +16087,7 @@ function ActionTargetFields({
|
|
|
16087
16087
|
returnAfter,
|
|
16088
16088
|
onChange
|
|
16089
16089
|
}) {
|
|
16090
|
-
const { t } =
|
|
16090
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16091
16091
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16092
16092
|
if (urlLabelKey) {
|
|
16093
16093
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16096,7 +16096,7 @@ function ActionTargetFields({
|
|
|
16096
16096
|
type: "text",
|
|
16097
16097
|
disabled: !canEdit,
|
|
16098
16098
|
"aria-label": t(urlLabelKey),
|
|
16099
|
-
className:
|
|
16099
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16100
16100
|
placeholder: "https://...",
|
|
16101
16101
|
value: url ?? "",
|
|
16102
16102
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16110,7 +16110,7 @@ function ActionTargetFields({
|
|
|
16110
16110
|
type: "number",
|
|
16111
16111
|
disabled: !canEdit,
|
|
16112
16112
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16113
|
-
className:
|
|
16113
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16114
16114
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16115
16115
|
min: 1,
|
|
16116
16116
|
max: slideCount,
|
|
@@ -16132,7 +16132,7 @@ function ActionTargetFields({
|
|
|
16132
16132
|
"data-testid": "pptx-action-custom-show",
|
|
16133
16133
|
disabled: !canEdit,
|
|
16134
16134
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16135
|
-
className:
|
|
16135
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16136
16136
|
value: customShowId ?? "",
|
|
16137
16137
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16138
16138
|
children: [
|
|
@@ -16164,7 +16164,7 @@ function ActionSettingsPanel({
|
|
|
16164
16164
|
customShows,
|
|
16165
16165
|
onUpdateElement
|
|
16166
16166
|
}) {
|
|
16167
|
-
const { t } =
|
|
16167
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16168
16168
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16169
16169
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16170
16170
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16240,7 +16240,7 @@ function ActionTriggerSection({
|
|
|
16240
16240
|
onChangeType,
|
|
16241
16241
|
onChangeTarget
|
|
16242
16242
|
}) {
|
|
16243
|
-
const { t } =
|
|
16243
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16244
16244
|
const [pendingType, setPendingType] = React108.useState(void 0);
|
|
16245
16245
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16246
16246
|
const changeType = (type) => {
|
|
@@ -16254,7 +16254,7 @@ function ActionTriggerSection({
|
|
|
16254
16254
|
{
|
|
16255
16255
|
disabled: !canEdit,
|
|
16256
16256
|
"aria-label": label,
|
|
16257
|
-
className:
|
|
16257
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
16258
16258
|
value: effectiveType,
|
|
16259
16259
|
onChange: (e) => changeType(e.target.value),
|
|
16260
16260
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16282,7 +16282,7 @@ var AXIS_ROWS = [
|
|
|
16282
16282
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16283
16283
|
];
|
|
16284
16284
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16285
|
-
const { t } =
|
|
16285
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16286
16286
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16287
16287
|
...row,
|
|
16288
16288
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16427,7 +16427,7 @@ function ChartAxisStyleOptions({
|
|
|
16427
16427
|
onSetTitleStyle,
|
|
16428
16428
|
onSetGridlineStyle
|
|
16429
16429
|
}) {
|
|
16430
|
-
const { t } =
|
|
16430
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16431
16431
|
const commitRecentColor = useRecentColorCommit();
|
|
16432
16432
|
const rows = SCALE_AXES.map((row) => ({
|
|
16433
16433
|
...row,
|
|
@@ -16599,7 +16599,7 @@ function ChartComboTypeOptions({
|
|
|
16599
16599
|
canEdit,
|
|
16600
16600
|
onSetSeriesType
|
|
16601
16601
|
}) {
|
|
16602
|
-
const { t } =
|
|
16602
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16603
16603
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16604
16604
|
return null;
|
|
16605
16605
|
}
|
|
@@ -16628,7 +16628,7 @@ function ChartDataLabelOptions({
|
|
|
16628
16628
|
canEdit,
|
|
16629
16629
|
onUpdateStyle
|
|
16630
16630
|
}) {
|
|
16631
|
-
const { t } =
|
|
16631
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16632
16632
|
if (!style?.hasDataLabels) {
|
|
16633
16633
|
return null;
|
|
16634
16634
|
}
|
|
@@ -16676,7 +16676,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16676
16676
|
canEdit,
|
|
16677
16677
|
onSetPointMarker
|
|
16678
16678
|
}) {
|
|
16679
|
-
const { t } =
|
|
16679
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16680
16680
|
const commitRecentColor = useRecentColorCommit();
|
|
16681
16681
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16682
16682
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16782,7 +16782,7 @@ function ChartDataPointOptions({
|
|
|
16782
16782
|
onSetPointExplosion,
|
|
16783
16783
|
onSetPointLabel
|
|
16784
16784
|
}) {
|
|
16785
|
-
const { t } =
|
|
16785
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16786
16786
|
const commitRecentColor = useRecentColorCommit();
|
|
16787
16787
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16788
16788
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -16884,7 +16884,7 @@ function ChartDataSheet({
|
|
|
16884
16884
|
highlightCell,
|
|
16885
16885
|
onChange
|
|
16886
16886
|
}) {
|
|
16887
|
-
const { t } =
|
|
16887
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16888
16888
|
const ref = React108.useRef(null);
|
|
16889
16889
|
React108.useLayoutEffect(() => {
|
|
16890
16890
|
if (ref.current) {
|
|
@@ -16915,7 +16915,7 @@ function ChartDisplayOptions({
|
|
|
16915
16915
|
hasGridlines,
|
|
16916
16916
|
onToggleGridlines
|
|
16917
16917
|
}) {
|
|
16918
|
-
const { t } =
|
|
16918
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16919
16919
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
16920
16920
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
16921
16921
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -16992,7 +16992,7 @@ function ChartErrorBarOptions({
|
|
|
16992
16992
|
canEdit,
|
|
16993
16993
|
onSetErrorBars
|
|
16994
16994
|
}) {
|
|
16995
|
-
const { t } =
|
|
16995
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
16996
16996
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
16997
16997
|
return null;
|
|
16998
16998
|
}
|
|
@@ -17072,7 +17072,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17072
17072
|
onRestoreSeries,
|
|
17073
17073
|
onSetDataLabelsRangeCache
|
|
17074
17074
|
}) {
|
|
17075
|
-
const { t } =
|
|
17075
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17076
17076
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17077
17077
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17078
17078
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17152,7 +17152,7 @@ function ChartMarkerOptions({
|
|
|
17152
17152
|
canEdit,
|
|
17153
17153
|
onSetMarker
|
|
17154
17154
|
}) {
|
|
17155
|
-
const { t } =
|
|
17155
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17156
17156
|
const commitRecentColor = useRecentColorCommit();
|
|
17157
17157
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17158
17158
|
return null;
|
|
@@ -17261,7 +17261,7 @@ function ChartSeriesColorOptions({
|
|
|
17261
17261
|
onSetColor,
|
|
17262
17262
|
onToggleSecondaryAxis
|
|
17263
17263
|
}) {
|
|
17264
|
-
const { t } =
|
|
17264
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17265
17265
|
const series = chartData.series;
|
|
17266
17266
|
if (series.length === 0) {
|
|
17267
17267
|
return null;
|
|
@@ -17311,7 +17311,7 @@ function ChartSubtypeOptions({
|
|
|
17311
17311
|
canEdit,
|
|
17312
17312
|
onUpdateChartData
|
|
17313
17313
|
}) {
|
|
17314
|
-
const { t } =
|
|
17314
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17315
17315
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17316
17316
|
return null;
|
|
17317
17317
|
}
|
|
@@ -17377,7 +17377,7 @@ function ChartTrendlineOptions({
|
|
|
17377
17377
|
canEdit,
|
|
17378
17378
|
onSetTrendline
|
|
17379
17379
|
}) {
|
|
17380
|
-
const { t } =
|
|
17380
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17381
17381
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17382
17382
|
return null;
|
|
17383
17383
|
}
|
|
@@ -17450,7 +17450,7 @@ function ChartTypeSelector({
|
|
|
17450
17450
|
onUpdateChartData,
|
|
17451
17451
|
onTitleChange
|
|
17452
17452
|
}) {
|
|
17453
|
-
const { t } =
|
|
17453
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17454
17454
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17455
17455
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17456
17456
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17531,7 +17531,7 @@ function RotationField({
|
|
|
17531
17531
|
canEdit,
|
|
17532
17532
|
onRotationPatch
|
|
17533
17533
|
}) {
|
|
17534
|
-
const { t } =
|
|
17534
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17535
17535
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17536
17536
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17537
17537
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17553,7 +17553,7 @@ function FlipFields({
|
|
|
17553
17553
|
canEdit,
|
|
17554
17554
|
onFlipPatch
|
|
17555
17555
|
}) {
|
|
17556
|
-
const { t } =
|
|
17556
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17557
17557
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17558
17558
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17559
17559
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17592,7 +17592,7 @@ function ChartUserShapePositionFields({
|
|
|
17592
17592
|
onRotationPatch,
|
|
17593
17593
|
onFlipPatch
|
|
17594
17594
|
}) {
|
|
17595
|
-
const { t } =
|
|
17595
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17596
17596
|
const update = (patch) => onPatch(row.path, patch);
|
|
17597
17597
|
if (row.depth === 0) {
|
|
17598
17598
|
const from = row.from;
|
|
@@ -17716,7 +17716,7 @@ function ChartUserShapeOptions({
|
|
|
17716
17716
|
canEdit,
|
|
17717
17717
|
onUpdateChartData
|
|
17718
17718
|
}) {
|
|
17719
|
-
const { t } =
|
|
17719
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
17720
17720
|
const shapes = chartData.userShapes;
|
|
17721
17721
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17722
17722
|
const kindLabel = (kind) => {
|
|
@@ -17874,8 +17874,8 @@ function ChartUserShapeOptions({
|
|
|
17874
17874
|
}
|
|
17875
17875
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17876
17876
|
const chartData = selectedElement.chartData;
|
|
17877
|
-
const followDataPoint =
|
|
17878
|
-
const { selection: partSelection } =
|
|
17877
|
+
const followDataPoint = chunk3AZ6ESJU_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17878
|
+
const { selection: partSelection } = chunk3AZ6ESJU_js.useChartPartSelection();
|
|
17879
17879
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17880
17880
|
const title = chartData?.title;
|
|
17881
17881
|
const chartType = chartData?.chartType;
|
|
@@ -18313,7 +18313,7 @@ function OleEditorDialog({
|
|
|
18313
18313
|
element,
|
|
18314
18314
|
onUpdateElement
|
|
18315
18315
|
}) {
|
|
18316
|
-
const { t } =
|
|
18316
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18317
18317
|
const dialogRef = React108.useRef(null);
|
|
18318
18318
|
const fileInputRef = React108.useRef(null);
|
|
18319
18319
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18561,7 +18561,7 @@ function ConnectorArrowsSection({
|
|
|
18561
18561
|
onUpdateShapeStyle,
|
|
18562
18562
|
markDirty
|
|
18563
18563
|
}) {
|
|
18564
|
-
const { t } =
|
|
18564
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18565
18565
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18566
18566
|
["Start", "End"].map((end) => {
|
|
18567
18567
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18580,7 +18580,7 @@ function ConnectorArrowsSection({
|
|
|
18580
18580
|
},
|
|
18581
18581
|
disabled: !canEdit,
|
|
18582
18582
|
className: SELECT_CLS2,
|
|
18583
|
-
children:
|
|
18583
|
+
children: chunk6GFSF2ML_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18584
18584
|
}
|
|
18585
18585
|
)
|
|
18586
18586
|
] }, end);
|
|
@@ -18604,7 +18604,7 @@ function ConnectorArrowsSection({
|
|
|
18604
18604
|
},
|
|
18605
18605
|
disabled: !canEdit,
|
|
18606
18606
|
className: SELECT_CLS2,
|
|
18607
|
-
children:
|
|
18607
|
+
children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18608
18608
|
}
|
|
18609
18609
|
)
|
|
18610
18610
|
] }),
|
|
@@ -18623,7 +18623,7 @@ function ConnectorArrowsSection({
|
|
|
18623
18623
|
},
|
|
18624
18624
|
disabled: !canEdit,
|
|
18625
18625
|
className: SELECT_CLS2,
|
|
18626
|
-
children:
|
|
18626
|
+
children: chunk6GFSF2ML_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18627
18627
|
}
|
|
18628
18628
|
)
|
|
18629
18629
|
] })
|
|
@@ -18654,7 +18654,7 @@ function ConnectorPanel({
|
|
|
18654
18654
|
function GroupInfoPanel({
|
|
18655
18655
|
selectedElement
|
|
18656
18656
|
}) {
|
|
18657
|
-
const { t } =
|
|
18657
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18658
18658
|
if (selectedElement.type !== "group") {
|
|
18659
18659
|
return null;
|
|
18660
18660
|
}
|
|
@@ -18669,7 +18669,7 @@ function OlePropertiesPanel({
|
|
|
18669
18669
|
canEdit,
|
|
18670
18670
|
onUpdateElement
|
|
18671
18671
|
}) {
|
|
18672
|
-
const { t } =
|
|
18672
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18673
18673
|
const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
|
|
18674
18674
|
if (selectedElement.type !== "ole") {
|
|
18675
18675
|
return null;
|
|
@@ -18714,7 +18714,7 @@ function OlePropertiesPanel({
|
|
|
18714
18714
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18715
18715
|
"span",
|
|
18716
18716
|
{
|
|
18717
|
-
className:
|
|
18717
|
+
className: chunk6GFSF2ML_js.cn(
|
|
18718
18718
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18719
18719
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18720
18720
|
),
|
|
@@ -18767,7 +18767,7 @@ function LayerOrderButtons({
|
|
|
18767
18767
|
"button",
|
|
18768
18768
|
{
|
|
18769
18769
|
type: "button",
|
|
18770
|
-
className:
|
|
18770
|
+
className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
|
|
18771
18771
|
disabled: !canEdit,
|
|
18772
18772
|
onClick: () => onMoveLayer("forward"),
|
|
18773
18773
|
children: "\u2191 Forward"
|
|
@@ -18777,7 +18777,7 @@ function LayerOrderButtons({
|
|
|
18777
18777
|
"button",
|
|
18778
18778
|
{
|
|
18779
18779
|
type: "button",
|
|
18780
|
-
className:
|
|
18780
|
+
className: chunk6GFSF2ML_js.cn("flex-1", BTN2),
|
|
18781
18781
|
disabled: !canEdit,
|
|
18782
18782
|
onClick: () => onMoveLayer("backward"),
|
|
18783
18783
|
children: "\u2193 Backward"
|
|
@@ -18791,7 +18791,7 @@ function ArtisticEffectsGallery({
|
|
|
18791
18791
|
canEdit,
|
|
18792
18792
|
updateEffects
|
|
18793
18793
|
}) {
|
|
18794
|
-
const { t } =
|
|
18794
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18795
18795
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18796
18796
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18797
18797
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18801,7 +18801,7 @@ function ArtisticEffectsGallery({
|
|
|
18801
18801
|
{
|
|
18802
18802
|
type: "button",
|
|
18803
18803
|
disabled: !canEdit,
|
|
18804
|
-
className:
|
|
18804
|
+
className: chunk6GFSF2ML_js.cn(
|
|
18805
18805
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18806
18806
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18807
18807
|
),
|
|
@@ -18836,7 +18836,7 @@ function ColorChangeSection({
|
|
|
18836
18836
|
canEdit,
|
|
18837
18837
|
updateEffects
|
|
18838
18838
|
}) {
|
|
18839
|
-
const { t } =
|
|
18839
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18840
18840
|
const cc = fx?.clrChange;
|
|
18841
18841
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18842
18842
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18863,7 +18863,7 @@ function ColorChangeSection({
|
|
|
18863
18863
|
DebouncedColorInput,
|
|
18864
18864
|
{
|
|
18865
18865
|
disabled: !canEdit,
|
|
18866
|
-
value:
|
|
18866
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18867
18867
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18868
18868
|
onCommit: (hex) => updateEffects({
|
|
18869
18869
|
clrChange: {
|
|
@@ -18881,7 +18881,7 @@ function ColorChangeSection({
|
|
|
18881
18881
|
DebouncedColorInput,
|
|
18882
18882
|
{
|
|
18883
18883
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18884
|
-
value:
|
|
18884
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18885
18885
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18886
18886
|
onCommit: (hex) => updateEffects({
|
|
18887
18887
|
clrChange: {
|
|
@@ -18918,7 +18918,7 @@ function ColorWashSection({
|
|
|
18918
18918
|
canEdit,
|
|
18919
18919
|
updateEffects
|
|
18920
18920
|
}) {
|
|
18921
|
-
const { t } =
|
|
18921
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
18922
18922
|
const wash = fx?.colorWash;
|
|
18923
18923
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18924
18924
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18941,7 +18941,7 @@ function ColorWashSection({
|
|
|
18941
18941
|
DebouncedColorInput,
|
|
18942
18942
|
{
|
|
18943
18943
|
disabled: !canEdit,
|
|
18944
|
-
value:
|
|
18944
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18945
18945
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18946
18946
|
onCommit: (hex) => updateEffects({
|
|
18947
18947
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19018,7 +19018,7 @@ function DuotonePanel({
|
|
|
19018
19018
|
canEdit,
|
|
19019
19019
|
onUpdateElement
|
|
19020
19020
|
}) {
|
|
19021
|
-
const { t } =
|
|
19021
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19022
19022
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
19023
19023
|
const commitDuotone = React108.useCallback(
|
|
19024
19024
|
(color1, color2) => {
|
|
@@ -19039,8 +19039,8 @@ function DuotonePanel({
|
|
|
19039
19039
|
}
|
|
19040
19040
|
});
|
|
19041
19041
|
}, [effects, onUpdateElement]);
|
|
19042
|
-
const shadowColor =
|
|
19043
|
-
const highlightColor =
|
|
19042
|
+
const shadowColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19043
|
+
const highlightColor = chunk6GFSF2ML_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19044
19044
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19045
19045
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19046
19046
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19071,7 +19071,7 @@ function DuotonePanel({
|
|
|
19071
19071
|
] }),
|
|
19072
19072
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19073
19073
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19074
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19074
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunk3AZ6ESJU_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19075
19075
|
"button",
|
|
19076
19076
|
{
|
|
19077
19077
|
type: "button",
|
|
@@ -19107,7 +19107,7 @@ function ImageAdjustmentsPanel({
|
|
|
19107
19107
|
canEdit,
|
|
19108
19108
|
onUpdateElement
|
|
19109
19109
|
}) {
|
|
19110
|
-
const { t } =
|
|
19110
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19111
19111
|
const effects = React108.useMemo(
|
|
19112
19112
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19113
19113
|
[selectedElement]
|
|
@@ -19208,7 +19208,7 @@ function ImageCropSection({
|
|
|
19208
19208
|
canEdit,
|
|
19209
19209
|
onUpdateElement
|
|
19210
19210
|
}) {
|
|
19211
|
-
const { t } =
|
|
19211
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19212
19212
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19213
19213
|
return null;
|
|
19214
19214
|
}
|
|
@@ -19226,7 +19226,7 @@ function ImageCropSection({
|
|
|
19226
19226
|
max: MAX_CROP_PERCENT,
|
|
19227
19227
|
disabled: !croppable,
|
|
19228
19228
|
className: "accent-primary",
|
|
19229
|
-
value: Math.round(
|
|
19229
|
+
value: Math.round(chunk6GFSF2ML_js.clampCropValue(selectedElement[key]) * 100),
|
|
19230
19230
|
onChange: (e) => onUpdateElement({
|
|
19231
19231
|
[key]: Number(e.target.value) / 100
|
|
19232
19232
|
})
|
|
@@ -19273,7 +19273,7 @@ function ImagePropertiesPanel({
|
|
|
19273
19273
|
canEdit,
|
|
19274
19274
|
onUpdateElement
|
|
19275
19275
|
}) {
|
|
19276
|
-
const { t } =
|
|
19276
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19277
19277
|
const fx = selectedElement.imageEffects;
|
|
19278
19278
|
const updateEffects = (patch) => {
|
|
19279
19279
|
onUpdateElement({
|
|
@@ -19290,7 +19290,7 @@ function ImagePropertiesPanel({
|
|
|
19290
19290
|
{
|
|
19291
19291
|
rows: 2,
|
|
19292
19292
|
disabled: !canEdit,
|
|
19293
|
-
className:
|
|
19293
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19294
19294
|
value: selectedElement.altText ?? "",
|
|
19295
19295
|
onChange: (e) => onUpdateElement({
|
|
19296
19296
|
altText: e.target.value
|
|
@@ -19478,7 +19478,7 @@ function InspectorFields({
|
|
|
19478
19478
|
liveTarget,
|
|
19479
19479
|
livePatch
|
|
19480
19480
|
}) {
|
|
19481
|
-
const { t } =
|
|
19481
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19482
19482
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19483
19483
|
const change = (sectionId, fieldId, raw) => {
|
|
19484
19484
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19706,7 +19706,7 @@ function MediaInspector({
|
|
|
19706
19706
|
durationSeconds,
|
|
19707
19707
|
onUpdateElement
|
|
19708
19708
|
}) {
|
|
19709
|
-
const { t } =
|
|
19709
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19710
19710
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19711
19711
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19712
19712
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19936,7 +19936,7 @@ function MediaPlaybackBookmarks({
|
|
|
19936
19936
|
onUpdateElement,
|
|
19937
19937
|
onSeekTo
|
|
19938
19938
|
}) {
|
|
19939
|
-
const { t } =
|
|
19939
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
19940
19940
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
19941
19941
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19942
19942
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20186,7 +20186,7 @@ function MediaPropertiesPanel({
|
|
|
20186
20186
|
canEdit,
|
|
20187
20187
|
onUpdateElement
|
|
20188
20188
|
}) {
|
|
20189
|
-
const { t } =
|
|
20189
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20190
20190
|
const mediaRef = React108.useRef(null);
|
|
20191
20191
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20192
20192
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20420,7 +20420,7 @@ function AccessibilityTextSection({
|
|
|
20420
20420
|
canEdit,
|
|
20421
20421
|
onUpdateElement
|
|
20422
20422
|
}) {
|
|
20423
|
-
const { t } =
|
|
20423
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20424
20424
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20425
20425
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20426
20426
|
return null;
|
|
@@ -20435,7 +20435,7 @@ function AccessibilityTextSection({
|
|
|
20435
20435
|
rows: 2,
|
|
20436
20436
|
disabled: !canEdit,
|
|
20437
20437
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20438
|
-
className:
|
|
20438
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20439
20439
|
value: fields.altText,
|
|
20440
20440
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20441
20441
|
}
|
|
@@ -20449,7 +20449,7 @@ function AccessibilityTextSection({
|
|
|
20449
20449
|
type: "text",
|
|
20450
20450
|
disabled: !canEdit,
|
|
20451
20451
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20452
|
-
className:
|
|
20452
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "text-[11px]"),
|
|
20453
20453
|
value: fields.title,
|
|
20454
20454
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20455
20455
|
}
|
|
@@ -20477,7 +20477,7 @@ function RecentColorsRow({
|
|
|
20477
20477
|
disabled,
|
|
20478
20478
|
onCommit
|
|
20479
20479
|
}) {
|
|
20480
|
-
const { t } =
|
|
20480
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20481
20481
|
const { recentColors, pushColor } = useRecentColors();
|
|
20482
20482
|
const shown = recentColors.length > 0;
|
|
20483
20483
|
const ref = React108.useRef(null);
|
|
@@ -20519,7 +20519,7 @@ function ThemeColorSwatchGrid({
|
|
|
20519
20519
|
selectedHex,
|
|
20520
20520
|
onPick
|
|
20521
20521
|
}) {
|
|
20522
|
-
const { t } =
|
|
20522
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20523
20523
|
const themeColorMap = useThemeColorMap();
|
|
20524
20524
|
const columns = React108.useMemo(
|
|
20525
20525
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20566,7 +20566,7 @@ function SelectRow({
|
|
|
20566
20566
|
options,
|
|
20567
20567
|
onChange
|
|
20568
20568
|
}) {
|
|
20569
|
-
const { t } =
|
|
20569
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20570
20570
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20571
20571
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20572
20572
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20590,14 +20590,14 @@ function ColorPickerRow({
|
|
|
20590
20590
|
onChange,
|
|
20591
20591
|
styleChange
|
|
20592
20592
|
}) {
|
|
20593
|
-
const { t } =
|
|
20593
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20594
20594
|
const { pushColor } = useRecentColors();
|
|
20595
20595
|
const commit = (color, ref) => {
|
|
20596
20596
|
onChange(color, ref);
|
|
20597
20597
|
pushColor(color);
|
|
20598
20598
|
};
|
|
20599
20599
|
const handleEyedropper = async () => {
|
|
20600
|
-
const color = await
|
|
20600
|
+
const color = await chunk6GFSF2ML_js.openNativeEyeDropper();
|
|
20601
20601
|
if (color) {
|
|
20602
20602
|
commit(color);
|
|
20603
20603
|
}
|
|
@@ -20670,7 +20670,7 @@ function GradientStopRow({
|
|
|
20670
20670
|
onUpdate,
|
|
20671
20671
|
allStops
|
|
20672
20672
|
}) {
|
|
20673
|
-
const { t } =
|
|
20673
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20674
20674
|
const { pushColor } = useRecentColors();
|
|
20675
20675
|
const commitRecentColor = useRecentColorCommit();
|
|
20676
20676
|
const patchStop = (patch) => {
|
|
@@ -20683,9 +20683,9 @@ function GradientStopRow({
|
|
|
20683
20683
|
"input",
|
|
20684
20684
|
{
|
|
20685
20685
|
type: "color",
|
|
20686
|
-
value:
|
|
20686
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20687
20687
|
ref: commitRecentColor,
|
|
20688
|
-
onChange: (e) => patchStop({ color:
|
|
20688
|
+
onChange: (e) => patchStop({ color: chunk6GFSF2ML_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20689
20689
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20690
20690
|
}
|
|
20691
20691
|
),
|
|
@@ -20760,7 +20760,7 @@ function FillAdvancedControls({
|
|
|
20760
20760
|
onUpdateGradientStops,
|
|
20761
20761
|
onSetFillColor: _onSetFillColor
|
|
20762
20762
|
}) {
|
|
20763
|
-
const { t } =
|
|
20763
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20764
20764
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20765
20765
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20766
20766
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20814,7 +20814,7 @@ function FillAdvancedControls({
|
|
|
20814
20814
|
onClick: () => onUpdateGradientStops([
|
|
20815
20815
|
...gradientStops,
|
|
20816
20816
|
{
|
|
20817
|
-
color:
|
|
20817
|
+
color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
20818
20818
|
position: 50,
|
|
20819
20819
|
opacity: 1
|
|
20820
20820
|
}
|
|
@@ -20828,9 +20828,9 @@ function FillAdvancedControls({
|
|
|
20828
20828
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20829
20829
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20830
20830
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS.map((opt) => {
|
|
20831
|
-
const fgColor =
|
|
20832
|
-
const bgColor =
|
|
20833
|
-
const svgPattern =
|
|
20831
|
+
const fgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR);
|
|
20832
|
+
const bgColor = chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20833
|
+
const svgPattern = chunk6GFSF2ML_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20834
20834
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20835
20835
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20836
20836
|
"button",
|
|
@@ -20863,7 +20863,7 @@ function FillAdvancedControls({
|
|
|
20863
20863
|
{
|
|
20864
20864
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20865
20865
|
prefix: "pattern-fg",
|
|
20866
|
-
value:
|
|
20866
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
20867
20867
|
disabled: isLine,
|
|
20868
20868
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
20869
20869
|
styleChange: patternForeground
|
|
@@ -20874,7 +20874,7 @@ function FillAdvancedControls({
|
|
|
20874
20874
|
{
|
|
20875
20875
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20876
20876
|
prefix: "pattern-bg",
|
|
20877
|
-
value:
|
|
20877
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20878
20878
|
disabled: isLine,
|
|
20879
20879
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
20880
20880
|
styleChange: patternBackground
|
|
@@ -20939,7 +20939,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20939
20939
|
function QuickStylesGallery({
|
|
20940
20940
|
onUpdateShapeStyle
|
|
20941
20941
|
}) {
|
|
20942
|
-
const { t } =
|
|
20942
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20943
20943
|
const ref = React108.useRef(null);
|
|
20944
20944
|
React108.useLayoutEffect(() => {
|
|
20945
20945
|
const gallery = ref.current;
|
|
@@ -20976,14 +20976,14 @@ function StrokeEffectsSection({
|
|
|
20976
20976
|
onUpdateShapeStyle,
|
|
20977
20977
|
onSetStrokeColor
|
|
20978
20978
|
}) {
|
|
20979
|
-
const { t } =
|
|
20979
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
20980
20980
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20981
20981
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20982
20982
|
ColorPickerRow,
|
|
20983
20983
|
{
|
|
20984
20984
|
label: t("pptx.inspector.stroke"),
|
|
20985
20985
|
prefix: "stroke",
|
|
20986
|
-
value:
|
|
20986
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.strokeColor, chunk6GFSF2ML_js.DEFAULT_STROKE_COLOR),
|
|
20987
20987
|
selectedRef: style?.strokeColorRef,
|
|
20988
20988
|
onChange: onSetStrokeColor,
|
|
20989
20989
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -21026,7 +21026,7 @@ function FillStrokeProperties({
|
|
|
21026
21026
|
onSetFillColor,
|
|
21027
21027
|
onSetStrokeColor
|
|
21028
21028
|
}) {
|
|
21029
|
-
const { t } =
|
|
21029
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21030
21030
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
21031
21031
|
const style = selectedShapeStyle;
|
|
21032
21032
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21042,10 +21042,10 @@ function FillStrokeProperties({
|
|
|
21042
21042
|
return;
|
|
21043
21043
|
}
|
|
21044
21044
|
if (nextMode === "gradient") {
|
|
21045
|
-
const existing =
|
|
21045
|
+
const existing = chunk6GFSF2ML_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21046
21046
|
const stops = existing.length >= 2 ? existing : [
|
|
21047
21047
|
{
|
|
21048
|
-
color:
|
|
21048
|
+
color: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
21049
21049
|
position: 0,
|
|
21050
21050
|
opacity: 1
|
|
21051
21051
|
},
|
|
@@ -21070,7 +21070,7 @@ function FillStrokeProperties({
|
|
|
21070
21070
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21071
21071
|
};
|
|
21072
21072
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21073
|
-
{ color:
|
|
21073
|
+
{ color: chunk6GFSF2ML_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21074
21074
|
{ color: "#ffffff", position: 100 }
|
|
21075
21075
|
];
|
|
21076
21076
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21097,7 +21097,7 @@ function FillStrokeProperties({
|
|
|
21097
21097
|
{
|
|
21098
21098
|
label: t("pptx.fill.fill"),
|
|
21099
21099
|
prefix: "fill",
|
|
21100
|
-
value:
|
|
21100
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(style?.fillColor, chunk6GFSF2ML_js.DEFAULT_FILL_COLOR),
|
|
21101
21101
|
selectedRef: style?.fillColorRef,
|
|
21102
21102
|
disabled: line,
|
|
21103
21103
|
onChange: onSetFillColor,
|
|
@@ -21135,7 +21135,7 @@ function Text3DProperties({
|
|
|
21135
21135
|
ts,
|
|
21136
21136
|
onUpdateTextStyle
|
|
21137
21137
|
}) {
|
|
21138
|
-
const { t } =
|
|
21138
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21139
21139
|
const commitRecentColor = useRecentColorCommit();
|
|
21140
21140
|
const t3d = ts?.text3d;
|
|
21141
21141
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21182,7 +21182,7 @@ function Text3DProperties({
|
|
|
21182
21182
|
"input",
|
|
21183
21183
|
{
|
|
21184
21184
|
type: "color",
|
|
21185
|
-
value:
|
|
21185
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21186
21186
|
ref: commitRecentColor,
|
|
21187
21187
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21188
21188
|
className: COLOR_CLS
|
|
@@ -21349,7 +21349,7 @@ function AdvancedTextFormatting({
|
|
|
21349
21349
|
onUpdateTextStyle,
|
|
21350
21350
|
numChange
|
|
21351
21351
|
}) {
|
|
21352
|
-
const { t } =
|
|
21352
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21353
21353
|
const commitRecentColor = useRecentColorCommit();
|
|
21354
21354
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21355
21355
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21371,7 +21371,7 @@ function AdvancedTextFormatting({
|
|
|
21371
21371
|
"input",
|
|
21372
21372
|
{
|
|
21373
21373
|
type: "color",
|
|
21374
|
-
value:
|
|
21374
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21375
21375
|
ref: commitRecentColor,
|
|
21376
21376
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21377
21377
|
disabled: !canEdit,
|
|
@@ -21513,7 +21513,7 @@ function TextReflectionSection({
|
|
|
21513
21513
|
onUpdateTextStyle,
|
|
21514
21514
|
numChange
|
|
21515
21515
|
}) {
|
|
21516
|
-
const { t } =
|
|
21516
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21517
21517
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21518
21518
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21519
21519
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21621,7 +21621,7 @@ function TextEffectsPanel({
|
|
|
21621
21621
|
onUpdateTextStyle,
|
|
21622
21622
|
numChange
|
|
21623
21623
|
}) {
|
|
21624
|
-
const { t } =
|
|
21624
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21625
21625
|
const commitRecentColor = useRecentColorCommit();
|
|
21626
21626
|
const hasShadow = Boolean(
|
|
21627
21627
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21667,7 +21667,7 @@ function TextEffectsPanel({
|
|
|
21667
21667
|
"input",
|
|
21668
21668
|
{
|
|
21669
21669
|
type: "color",
|
|
21670
|
-
value:
|
|
21670
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21671
21671
|
ref: commitRecentColor,
|
|
21672
21672
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21673
21673
|
className: COLOR_CLS2
|
|
@@ -21772,7 +21772,7 @@ function TextEffectsPanel({
|
|
|
21772
21772
|
"input",
|
|
21773
21773
|
{
|
|
21774
21774
|
type: "color",
|
|
21775
|
-
value:
|
|
21775
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21776
21776
|
ref: commitRecentColor,
|
|
21777
21777
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21778
21778
|
className: COLOR_CLS2
|
|
@@ -21822,7 +21822,7 @@ function TextWarpGallery({
|
|
|
21822
21822
|
ts,
|
|
21823
21823
|
onUpdateTextStyle
|
|
21824
21824
|
}) {
|
|
21825
|
-
const { t } =
|
|
21825
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21826
21826
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
21827
21827
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21828
21828
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21903,7 +21903,7 @@ function ShapeTextPanels({
|
|
|
21903
21903
|
onUpdateElementStyle,
|
|
21904
21904
|
onUpdateTextStyle
|
|
21905
21905
|
}) {
|
|
21906
|
-
const { t } =
|
|
21906
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
21907
21907
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21908
21908
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21909
21909
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21912,11 +21912,11 @@ function ShapeTextPanels({
|
|
|
21912
21912
|
{
|
|
21913
21913
|
value: selectedElement.shapeType || "rect",
|
|
21914
21914
|
disabled: !canEdit,
|
|
21915
|
-
className:
|
|
21915
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
21916
21916
|
onChange: (e) => onUpdateElement({
|
|
21917
21917
|
shapeType: e.target.value
|
|
21918
21918
|
}),
|
|
21919
|
-
children:
|
|
21919
|
+
children: chunk6GFSF2ML_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21920
21920
|
}
|
|
21921
21921
|
)
|
|
21922
21922
|
] }),
|
|
@@ -21928,7 +21928,7 @@ function ShapeTextPanels({
|
|
|
21928
21928
|
selectedElement,
|
|
21929
21929
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21930
21930
|
selectedShapeType: selectedElement.shapeType,
|
|
21931
|
-
selectedGradientStops:
|
|
21931
|
+
selectedGradientStops: chunk6GFSF2ML_js.sanitizeGradientStops(
|
|
21932
21932
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21933
21933
|
),
|
|
21934
21934
|
canEdit,
|
|
@@ -21964,7 +21964,7 @@ function ShapeTextPanels({
|
|
|
21964
21964
|
{
|
|
21965
21965
|
disabled: !canEdit,
|
|
21966
21966
|
"aria-label": "Text Color",
|
|
21967
|
-
value:
|
|
21967
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
21968
21968
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
21969
21969
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
21970
21970
|
patch: textColorPatch
|
|
@@ -22055,7 +22055,7 @@ function TextFormatToggle({
|
|
|
22055
22055
|
{
|
|
22056
22056
|
type: "button",
|
|
22057
22057
|
disabled,
|
|
22058
|
-
className:
|
|
22058
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22059
22059
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22060
22060
|
italic && "italic",
|
|
22061
22061
|
underline && "underline",
|
|
@@ -22224,7 +22224,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22224
22224
|
canEdit,
|
|
22225
22225
|
onUpdateSmartArt
|
|
22226
22226
|
}) {
|
|
22227
|
-
const { t } =
|
|
22227
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22228
22228
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22229
22229
|
const handleLayoutSwitch = (newLayout) => {
|
|
22230
22230
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22243,7 +22243,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22243
22243
|
type: "button",
|
|
22244
22244
|
"data-testid": `smartart-layout-${type}`,
|
|
22245
22245
|
disabled: !canEdit,
|
|
22246
|
-
className:
|
|
22246
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22247
22247
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22248
22248
|
"text-[9px] leading-tight",
|
|
22249
22249
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22270,7 +22270,7 @@ function SmartArtStyleControls({
|
|
|
22270
22270
|
onChangeColorScheme,
|
|
22271
22271
|
onChangeStyle
|
|
22272
22272
|
}) {
|
|
22273
|
-
const { t } =
|
|
22273
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22274
22274
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22275
22275
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22276
22276
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22281,7 +22281,7 @@ function SmartArtStyleControls({
|
|
|
22281
22281
|
disabled: !canEdit,
|
|
22282
22282
|
"data-testid": "smartart-color-scheme",
|
|
22283
22283
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22284
|
-
className:
|
|
22284
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-full"),
|
|
22285
22285
|
value: colorScheme,
|
|
22286
22286
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22287
22287
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22296,7 +22296,7 @@ function SmartArtStyleControls({
|
|
|
22296
22296
|
type: "button",
|
|
22297
22297
|
disabled: !canEdit,
|
|
22298
22298
|
"aria-pressed": style === s,
|
|
22299
|
-
className:
|
|
22299
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22300
22300
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22301
22301
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22302
22302
|
),
|
|
@@ -22322,14 +22322,14 @@ function SmartArtPropertiesPanel({
|
|
|
22322
22322
|
onUpdateElement,
|
|
22323
22323
|
box
|
|
22324
22324
|
}) {
|
|
22325
|
-
const { t } =
|
|
22325
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22326
22326
|
const { pushColor } = useRecentColors();
|
|
22327
22327
|
const paneRef = React108__default.default.useRef(null);
|
|
22328
22328
|
const applySmartArtData = (newData) => {
|
|
22329
22329
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22330
22330
|
newData,
|
|
22331
22331
|
newData.layout,
|
|
22332
|
-
|
|
22332
|
+
chunk3AZ6ESJU_js.resolveSmartArtDataPalette(newData),
|
|
22333
22333
|
newData.style ?? "flat",
|
|
22334
22334
|
"inspector",
|
|
22335
22335
|
box
|
|
@@ -22400,9 +22400,9 @@ function TableDataGrid({
|
|
|
22400
22400
|
canEdit,
|
|
22401
22401
|
onUpdateElement
|
|
22402
22402
|
}) {
|
|
22403
|
-
const { t } =
|
|
22403
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22404
22404
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22405
|
-
const { viewportWidth } =
|
|
22405
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
22406
22406
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22407
22407
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22408
22408
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22566,7 +22566,7 @@ function TableCellPatternFill({
|
|
|
22566
22566
|
canEdit,
|
|
22567
22567
|
onUpdateCellStyle
|
|
22568
22568
|
}) {
|
|
22569
|
-
const { t } =
|
|
22569
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22570
22570
|
const commitRecentColor = useRecentColorCommit();
|
|
22571
22571
|
const translate = (key) => t(key);
|
|
22572
22572
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22621,7 +22621,7 @@ function TableCellAdvancedFill({
|
|
|
22621
22621
|
canEdit,
|
|
22622
22622
|
onUpdateCellStyle
|
|
22623
22623
|
}) {
|
|
22624
|
-
const { t } =
|
|
22624
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22625
22625
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22626
22626
|
const handleFillModeChange = (mode) => {
|
|
22627
22627
|
const next = mode;
|
|
@@ -22709,7 +22709,7 @@ function GradientControls({
|
|
|
22709
22709
|
canEdit,
|
|
22710
22710
|
onUpdateCellStyle
|
|
22711
22711
|
}) {
|
|
22712
|
-
const { t } =
|
|
22712
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22713
22713
|
const commitRecentColor = useRecentColorCommit();
|
|
22714
22714
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22715
22715
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22807,7 +22807,7 @@ function TableCellColorField({
|
|
|
22807
22807
|
disabled,
|
|
22808
22808
|
onCommit
|
|
22809
22809
|
}) {
|
|
22810
|
-
const hex =
|
|
22810
|
+
const hex = chunk6GFSF2ML_js.normalizeHexColor(value, fallback);
|
|
22811
22811
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22812
22812
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22813
22813
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22837,7 +22837,7 @@ function TableCellFormattingPanel({
|
|
|
22837
22837
|
onUpdateTableData,
|
|
22838
22838
|
onUpdateMergeRows
|
|
22839
22839
|
}) {
|
|
22840
|
-
const { t } =
|
|
22840
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
22841
22841
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22842
22842
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22843
22843
|
if (!cell) {
|
|
@@ -22915,7 +22915,7 @@ function TableCellFormattingPanel({
|
|
|
22915
22915
|
{
|
|
22916
22916
|
type: "button",
|
|
22917
22917
|
disabled: !canEdit,
|
|
22918
|
-
className:
|
|
22918
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22919
22919
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22920
22920
|
cls,
|
|
22921
22921
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22934,7 +22934,7 @@ function TableCellFormattingPanel({
|
|
|
22934
22934
|
{
|
|
22935
22935
|
type: "button",
|
|
22936
22936
|
disabled: !canEdit,
|
|
22937
|
-
className:
|
|
22937
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22938
22938
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22939
22939
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22940
22940
|
),
|
|
@@ -22952,7 +22952,7 @@ function TableCellFormattingPanel({
|
|
|
22952
22952
|
{
|
|
22953
22953
|
type: "button",
|
|
22954
22954
|
disabled: !canEdit,
|
|
22955
|
-
className:
|
|
22955
|
+
className: chunk6GFSF2ML_js.cn(
|
|
22956
22956
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22957
22957
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22958
22958
|
),
|
|
@@ -22975,7 +22975,7 @@ function TableCellFormattingPanel({
|
|
|
22975
22975
|
DebouncedColorInput,
|
|
22976
22976
|
{
|
|
22977
22977
|
disabled: !canEdit,
|
|
22978
|
-
value:
|
|
22978
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
22979
22979
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
22980
22980
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
22981
22981
|
}
|
|
@@ -22985,7 +22985,7 @@ function TableCellFormattingPanel({
|
|
|
22985
22985
|
{
|
|
22986
22986
|
type: "number",
|
|
22987
22987
|
disabled: !canEdit,
|
|
22988
|
-
className:
|
|
22988
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-14"),
|
|
22989
22989
|
min: 0,
|
|
22990
22990
|
max: 10,
|
|
22991
22991
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -23001,7 +23001,7 @@ function TableCellFormattingPanel({
|
|
|
23001
23001
|
{
|
|
23002
23002
|
type: "button",
|
|
23003
23003
|
disabled: !canEdit,
|
|
23004
|
-
className:
|
|
23004
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
|
|
23005
23005
|
onClick: () => {
|
|
23006
23006
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23007
23007
|
if (newRows) {
|
|
@@ -23016,7 +23016,7 @@ function TableCellFormattingPanel({
|
|
|
23016
23016
|
{
|
|
23017
23017
|
type: "button",
|
|
23018
23018
|
disabled: !canEdit,
|
|
23019
|
-
className:
|
|
23019
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
|
|
23020
23020
|
onClick: () => {
|
|
23021
23021
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23022
23022
|
if (newRows) {
|
|
@@ -23031,7 +23031,7 @@ function TableCellFormattingPanel({
|
|
|
23031
23031
|
{
|
|
23032
23032
|
type: "button",
|
|
23033
23033
|
disabled: !canEdit,
|
|
23034
|
-
className:
|
|
23034
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "text-center"),
|
|
23035
23035
|
onClick: () => {
|
|
23036
23036
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23037
23037
|
if (newRows) {
|
|
@@ -23050,7 +23050,7 @@ function TableStyleEditorFields({
|
|
|
23050
23050
|
canEdit,
|
|
23051
23051
|
onEdit
|
|
23052
23052
|
}) {
|
|
23053
|
-
const { t } =
|
|
23053
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23054
23054
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23055
23055
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23056
23056
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23155,7 +23155,7 @@ function BorderSideRow({
|
|
|
23155
23155
|
canEdit,
|
|
23156
23156
|
onEdit
|
|
23157
23157
|
}) {
|
|
23158
|
-
const { t } =
|
|
23158
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23159
23159
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23160
23160
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23161
23161
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23212,7 +23212,7 @@ function TableStyleEditor({
|
|
|
23212
23212
|
onAssignStyle,
|
|
23213
23213
|
onClose
|
|
23214
23214
|
}) {
|
|
23215
|
-
const { t } =
|
|
23215
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23216
23216
|
const themeColorMap = useThemeColorMap();
|
|
23217
23217
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23218
23218
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23304,7 +23304,7 @@ function TablePropertiesPanel({
|
|
|
23304
23304
|
onTableStyleMapChange,
|
|
23305
23305
|
onDeleteTableStyle
|
|
23306
23306
|
}) {
|
|
23307
|
-
const { t } =
|
|
23307
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23308
23308
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23309
23309
|
const td = tableElement.tableData;
|
|
23310
23310
|
if (!td) {
|
|
@@ -23386,7 +23386,7 @@ function TablePropertiesPanel({
|
|
|
23386
23386
|
] }),
|
|
23387
23387
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23388
23388
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23389
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23389
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk6GFSF2ML_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23390
23390
|
"button",
|
|
23391
23391
|
{
|
|
23392
23392
|
type: "button",
|
|
@@ -23534,7 +23534,7 @@ function ElementInspectorBody({
|
|
|
23534
23534
|
onUpdateTextStyle,
|
|
23535
23535
|
onMoveLayer
|
|
23536
23536
|
}) {
|
|
23537
|
-
const { t } =
|
|
23537
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23538
23538
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23539
23539
|
const handleToggleLock = () => {
|
|
23540
23540
|
if (!canEdit) {
|
|
@@ -23684,7 +23684,7 @@ function CommentMentionTextarea({
|
|
|
23684
23684
|
className,
|
|
23685
23685
|
ariaLabel
|
|
23686
23686
|
}) {
|
|
23687
|
-
const { t } =
|
|
23687
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23688
23688
|
const textareaRef = React108.useRef(null);
|
|
23689
23689
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23690
23690
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23773,7 +23773,7 @@ function CommentMentionTextarea({
|
|
|
23773
23773
|
"data-testid": "pptx-comment-mention-option",
|
|
23774
23774
|
role: "option",
|
|
23775
23775
|
"aria-selected": index === safeHighlighted,
|
|
23776
|
-
className:
|
|
23776
|
+
className: chunk6GFSF2ML_js.cn(
|
|
23777
23777
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23778
23778
|
index === safeHighlighted && "bg-accent"
|
|
23779
23779
|
),
|
|
@@ -23820,7 +23820,7 @@ function InspectorCommentReplyForm({
|
|
|
23820
23820
|
onSubmit,
|
|
23821
23821
|
onCancel
|
|
23822
23822
|
}) {
|
|
23823
|
-
const { t } =
|
|
23823
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23824
23824
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23825
23825
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23826
23826
|
CommentMentionTextarea,
|
|
@@ -23886,7 +23886,7 @@ function InspectorCommentRow({
|
|
|
23886
23886
|
onSelectElement,
|
|
23887
23887
|
depth = 0
|
|
23888
23888
|
}) {
|
|
23889
|
-
const { t } =
|
|
23889
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
23890
23890
|
const isEditing = editingCommentId === comment.id;
|
|
23891
23891
|
const isReplying = replyingToCommentId === comment.id;
|
|
23892
23892
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23896,7 +23896,7 @@ function InspectorCommentRow({
|
|
|
23896
23896
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23897
23897
|
"div",
|
|
23898
23898
|
{
|
|
23899
|
-
className:
|
|
23899
|
+
className: chunk6GFSF2ML_js.cn(
|
|
23900
23900
|
"rounded border border-border bg-card p-2",
|
|
23901
23901
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23902
23902
|
),
|
|
@@ -23910,7 +23910,7 @@ function InspectorCommentRow({
|
|
|
23910
23910
|
t("pptx.comments.resolved")
|
|
23911
23911
|
] })
|
|
23912
23912
|
] }),
|
|
23913
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23913
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk6GFSF2ML_js.formatCommentTimestamp(comment.createdAt) })
|
|
23914
23914
|
] }),
|
|
23915
23915
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23916
23916
|
"button",
|
|
@@ -23918,12 +23918,12 @@ function InspectorCommentRow({
|
|
|
23918
23918
|
type: "button",
|
|
23919
23919
|
className: "mt-1 inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary hover:bg-primary/30 transition-colors",
|
|
23920
23920
|
title: t("pptx.comments.commentingOn", {
|
|
23921
|
-
element:
|
|
23921
|
+
element: chunk6GFSF2ML_js.getElementLabel(targetElement)
|
|
23922
23922
|
}),
|
|
23923
23923
|
onClick: () => onSelectElement(targetElement.id),
|
|
23924
23924
|
children: [
|
|
23925
23925
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23926
|
-
|
|
23926
|
+
chunk6GFSF2ML_js.getElementLabel(targetElement)
|
|
23927
23927
|
]
|
|
23928
23928
|
}
|
|
23929
23929
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1 inline-flex items-center gap-1 rounded bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground", children: t("pptx.comments.deletedElement") })),
|
|
@@ -23992,7 +23992,7 @@ function InspectorCommentRow({
|
|
|
23992
23992
|
"button",
|
|
23993
23993
|
{
|
|
23994
23994
|
type: "button",
|
|
23995
|
-
className:
|
|
23995
|
+
className: chunk6GFSF2ML_js.cn(
|
|
23996
23996
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
23997
23997
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
23998
23998
|
),
|
|
@@ -24098,7 +24098,7 @@ function InspectorCommentsSection({
|
|
|
24098
24098
|
onSubmitReply,
|
|
24099
24099
|
onSelectElement
|
|
24100
24100
|
}) {
|
|
24101
|
-
const { t } =
|
|
24101
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24102
24102
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24103
24103
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24104
24104
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24135,7 +24135,7 @@ function InspectorCommentsSection({
|
|
|
24135
24135
|
selectedElement && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary", children: [
|
|
24136
24136
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24137
24137
|
t("pptx.comments.commentingOn", {
|
|
24138
|
-
element:
|
|
24138
|
+
element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
|
|
24139
24139
|
})
|
|
24140
24140
|
] }),
|
|
24141
24141
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24146,7 +24146,7 @@ function InspectorCommentsSection({
|
|
|
24146
24146
|
authors: commentAuthors,
|
|
24147
24147
|
rows: 2,
|
|
24148
24148
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24149
|
-
element:
|
|
24149
|
+
element: chunk6GFSF2ML_js.getElementLabel(selectedElement)
|
|
24150
24150
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24151
24151
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24152
24152
|
onChange: onSetCommentDraft,
|
|
@@ -24159,7 +24159,7 @@ function InspectorCommentsSection({
|
|
|
24159
24159
|
type: "button",
|
|
24160
24160
|
onClick: onAddComment,
|
|
24161
24161
|
disabled: !commentDraft.trim(),
|
|
24162
|
-
className:
|
|
24162
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24163
24163
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors max-md:min-h-[44px]!",
|
|
24164
24164
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24165
24165
|
),
|
|
@@ -24184,7 +24184,7 @@ function InspectorElementsTab({
|
|
|
24184
24184
|
onSelectElement,
|
|
24185
24185
|
onUpdateSlide
|
|
24186
24186
|
}) {
|
|
24187
|
-
const { t } =
|
|
24187
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24188
24188
|
const toggleHidden = (elementId2) => {
|
|
24189
24189
|
const elements2 = activeSlide?.elements;
|
|
24190
24190
|
if (!canEdit || !elements2) {
|
|
@@ -24200,13 +24200,13 @@ function InspectorElementsTab({
|
|
|
24200
24200
|
};
|
|
24201
24201
|
if (!activeSlide) {
|
|
24202
24202
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24203
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24203
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24204
24204
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24205
24205
|
] });
|
|
24206
24206
|
}
|
|
24207
24207
|
const elements = activeSlide.elements || [];
|
|
24208
24208
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24209
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24209
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk6GFSF2ML_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24210
24210
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24211
24211
|
const index = elements.length - 1 - reversedIndex;
|
|
24212
24212
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24214,7 +24214,7 @@ function InspectorElementsTab({
|
|
|
24214
24214
|
"div",
|
|
24215
24215
|
{
|
|
24216
24216
|
title: `${el.type} - ${el.id}`,
|
|
24217
|
-
className:
|
|
24217
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24218
24218
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24219
24219
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24220
24220
|
),
|
|
@@ -24250,8 +24250,8 @@ function InspectorPaneHeader({
|
|
|
24250
24250
|
onSetActiveTab,
|
|
24251
24251
|
onClose
|
|
24252
24252
|
}) {
|
|
24253
|
-
const { t } =
|
|
24254
|
-
const { viewportWidth } =
|
|
24253
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24254
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
24255
24255
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24256
24256
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24257
24257
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24274,7 +24274,7 @@ function InspectorPaneHeader({
|
|
|
24274
24274
|
type: "button",
|
|
24275
24275
|
title: t(labelKey),
|
|
24276
24276
|
style: touchBtnStyle,
|
|
24277
|
-
className:
|
|
24277
|
+
className: chunk6GFSF2ML_js.cn(
|
|
24278
24278
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24279
24279
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24280
24280
|
),
|
|
@@ -24334,7 +24334,7 @@ function CustomPropertiesBlock({
|
|
|
24334
24334
|
canEdit,
|
|
24335
24335
|
onUpdate
|
|
24336
24336
|
}) {
|
|
24337
|
-
const { t } =
|
|
24337
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24338
24338
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24339
24339
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24340
24340
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24388,7 +24388,7 @@ function CustomPropertiesBlock({
|
|
|
24388
24388
|
"button",
|
|
24389
24389
|
{
|
|
24390
24390
|
type: "button",
|
|
24391
|
-
className:
|
|
24391
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24392
24392
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24393
24393
|
children: "\xD7"
|
|
24394
24394
|
}
|
|
@@ -24401,7 +24401,7 @@ function NotesHandoutCard({
|
|
|
24401
24401
|
notesMaster,
|
|
24402
24402
|
handoutMaster
|
|
24403
24403
|
}) {
|
|
24404
|
-
const { t } =
|
|
24404
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24405
24405
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24406
24406
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24407
24407
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24438,7 +24438,7 @@ function DocumentPropertiesCard({
|
|
|
24438
24438
|
onUpdateAppProperties,
|
|
24439
24439
|
onUpdateCustomProperties
|
|
24440
24440
|
}) {
|
|
24441
|
-
const { t } =
|
|
24441
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24442
24442
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24443
24443
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24444
24444
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24492,7 +24492,7 @@ function DocumentPropertiesCard({
|
|
|
24492
24492
|
function SlideSizeRescalePrompt({
|
|
24493
24493
|
onChoose
|
|
24494
24494
|
}) {
|
|
24495
|
-
const { t } =
|
|
24495
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24496
24496
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24497
24497
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24498
24498
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24534,7 +24534,7 @@ function SlideSizeCard({
|
|
|
24534
24534
|
onUpdateSlideSize,
|
|
24535
24535
|
hasContent
|
|
24536
24536
|
}) {
|
|
24537
|
-
const { t } =
|
|
24537
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24538
24538
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24539
24539
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24540
24540
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24645,7 +24645,7 @@ function PresentationSettingsCard({
|
|
|
24645
24645
|
canEdit,
|
|
24646
24646
|
onUpdate
|
|
24647
24647
|
}) {
|
|
24648
|
-
const { t } =
|
|
24648
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24649
24649
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24650
24650
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24651
24651
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24716,7 +24716,7 @@ function PresentationSettingsCard({
|
|
|
24716
24716
|
min: 1,
|
|
24717
24717
|
max: 16,
|
|
24718
24718
|
disabled: !canEdit,
|
|
24719
|
-
className:
|
|
24719
|
+
className: chunk6GFSF2ML_js.cn(INPUT2, "w-20"),
|
|
24720
24720
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24721
24721
|
onChange: (e) => onUpdate({
|
|
24722
24722
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24737,7 +24737,7 @@ function ThemeSelectorCard({
|
|
|
24737
24737
|
canEdit,
|
|
24738
24738
|
onApplyTheme
|
|
24739
24739
|
}) {
|
|
24740
|
-
const { t } =
|
|
24740
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24741
24741
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24742
24742
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24743
24743
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24800,7 +24800,7 @@ function SlideThemeOverridePanel({
|
|
|
24800
24800
|
canEdit,
|
|
24801
24801
|
onUpdateSlide
|
|
24802
24802
|
}) {
|
|
24803
|
-
const { t } =
|
|
24803
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24804
24804
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24805
24805
|
const override = activeSlide?.clrMapOverride;
|
|
24806
24806
|
const isOverrideActive = override !== void 0;
|
|
@@ -24907,7 +24907,7 @@ function DirectionPicker({
|
|
|
24907
24907
|
disabled,
|
|
24908
24908
|
onChange
|
|
24909
24909
|
}) {
|
|
24910
|
-
const { t } =
|
|
24910
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24911
24911
|
if (directions.length <= 3) {
|
|
24912
24912
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24913
24913
|
"button",
|
|
@@ -24949,10 +24949,10 @@ function TransitionPreview({
|
|
|
24949
24949
|
const previewRef = React108.useRef(null);
|
|
24950
24950
|
const [playing, setPlaying] = React108.useState(false);
|
|
24951
24951
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
24952
|
-
const { t } =
|
|
24952
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
24953
24953
|
const durationMs = transition.durationMs ?? 500;
|
|
24954
24954
|
const animations = React108.useMemo(
|
|
24955
|
-
() =>
|
|
24955
|
+
() => chunk3AZ6ESJU_js.getSlideTransitionAnimations(
|
|
24956
24956
|
transition.type,
|
|
24957
24957
|
durationMs,
|
|
24958
24958
|
transition.direction,
|
|
@@ -25021,7 +25021,7 @@ function TransitionPreview({
|
|
|
25021
25021
|
]
|
|
25022
25022
|
}
|
|
25023
25023
|
),
|
|
25024
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25024
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3AZ6ESJU_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25025
25025
|
] });
|
|
25026
25026
|
}
|
|
25027
25027
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25033,7 +25033,7 @@ function SlideTransitionSection({
|
|
|
25033
25033
|
canEdit = true,
|
|
25034
25034
|
onTransitionChange
|
|
25035
25035
|
}) {
|
|
25036
|
-
const { t } =
|
|
25036
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25037
25037
|
if (!activeSlide) {
|
|
25038
25038
|
return null;
|
|
25039
25039
|
}
|
|
@@ -25064,7 +25064,7 @@ function SlideTransitionSection({
|
|
|
25064
25064
|
type: e.target.value
|
|
25065
25065
|
}),
|
|
25066
25066
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25067
|
-
children:
|
|
25067
|
+
children: chunk6GFSF2ML_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25068
25068
|
}
|
|
25069
25069
|
)
|
|
25070
25070
|
] }),
|
|
@@ -25222,7 +25222,7 @@ function TagsSection({
|
|
|
25222
25222
|
onUpdateTagCollections,
|
|
25223
25223
|
canEdit
|
|
25224
25224
|
}) {
|
|
25225
|
-
const { t } =
|
|
25225
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25226
25226
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25227
25227
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25228
25228
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25280,7 +25280,7 @@ function TagsSection({
|
|
|
25280
25280
|
"button",
|
|
25281
25281
|
{
|
|
25282
25282
|
type: "button",
|
|
25283
|
-
className:
|
|
25283
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25284
25284
|
title: t("pptx.tags.deleteTag"),
|
|
25285
25285
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25286
25286
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25322,7 +25322,7 @@ function PresentationPropertiesPanel({
|
|
|
25322
25322
|
tagCollections,
|
|
25323
25323
|
onUpdateTagCollections
|
|
25324
25324
|
}) {
|
|
25325
|
-
const { t } =
|
|
25325
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25326
25326
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25327
25327
|
(updates) => {
|
|
25328
25328
|
onUpdateSlide({
|
|
@@ -25409,7 +25409,7 @@ function PresentationPropertiesPanel({
|
|
|
25409
25409
|
canEdit
|
|
25410
25410
|
}
|
|
25411
25411
|
) }),
|
|
25412
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25412
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk6GFSF2ML_js.cn(CARD2, "space-y-1"), children: [
|
|
25413
25413
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25414
25414
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25415
25415
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25427,17 +25427,17 @@ function SlideBackgroundPanel({
|
|
|
25427
25427
|
onSetTemplateBackground,
|
|
25428
25428
|
onGetTemplateBackgroundColor
|
|
25429
25429
|
}) {
|
|
25430
|
-
const { t } =
|
|
25430
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25431
25431
|
const bgImageInputRef = React108.useRef(null);
|
|
25432
25432
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25433
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25433
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
|
|
25434
25434
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25435
25435
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25436
25436
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25437
25437
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25438
25438
|
DebouncedColorInput,
|
|
25439
25439
|
{
|
|
25440
|
-
value:
|
|
25440
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25441
25441
|
disabled: !canEdit,
|
|
25442
25442
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25443
25443
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25476,7 +25476,7 @@ function SlideBackgroundPanel({
|
|
|
25476
25476
|
"button",
|
|
25477
25477
|
{
|
|
25478
25478
|
type: "button",
|
|
25479
|
-
className:
|
|
25479
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "flex-1 text-center"),
|
|
25480
25480
|
disabled: !canEdit,
|
|
25481
25481
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25482
25482
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25509,7 +25509,7 @@ function SlideBackgroundPanel({
|
|
|
25509
25509
|
"button",
|
|
25510
25510
|
{
|
|
25511
25511
|
type: "button",
|
|
25512
|
-
className:
|
|
25512
|
+
className: chunk6GFSF2ML_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25513
25513
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25514
25514
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25515
25515
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25546,21 +25546,21 @@ function TemplateBackgroundCard({
|
|
|
25546
25546
|
onSetTemplateBackground,
|
|
25547
25547
|
onGetTemplateBackgroundColor
|
|
25548
25548
|
}) {
|
|
25549
|
-
const { t } =
|
|
25549
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25550
25550
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25551
25551
|
activeSlide,
|
|
25552
25552
|
slideMasters,
|
|
25553
25553
|
t("pptx.master.layout"),
|
|
25554
25554
|
t("pptx.master.master")
|
|
25555
25555
|
);
|
|
25556
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25556
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk6GFSF2ML_js.cn(CARD2, "space-y-2"), children: [
|
|
25557
25557
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25558
25558
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25559
25559
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25560
25560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25561
25561
|
DebouncedColorInput,
|
|
25562
25562
|
{
|
|
25563
|
-
value:
|
|
25563
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25564
25564
|
disabled: !canEdit,
|
|
25565
25565
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25566
25566
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25573,7 +25573,7 @@ function TemplateBackgroundCard({
|
|
|
25573
25573
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25574
25574
|
DebouncedColorInput,
|
|
25575
25575
|
{
|
|
25576
|
-
value:
|
|
25576
|
+
value: chunk6GFSF2ML_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25577
25577
|
disabled: !canEdit,
|
|
25578
25578
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25579
25579
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25683,8 +25683,8 @@ function InspectorPane(props) {
|
|
|
25683
25683
|
panelWidth
|
|
25684
25684
|
} = props;
|
|
25685
25685
|
const hasSelection = selectedElement !== null;
|
|
25686
|
-
const { t } =
|
|
25687
|
-
const { dragY, handlers: dragHandlers } =
|
|
25686
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
25687
|
+
const { dragY, handlers: dragHandlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
|
|
25688
25688
|
const {
|
|
25689
25689
|
animationPanelHeight,
|
|
25690
25690
|
effectiveThemeOptions,
|
|
@@ -25706,7 +25706,7 @@ function InspectorPane(props) {
|
|
|
25706
25706
|
"div",
|
|
25707
25707
|
{
|
|
25708
25708
|
"data-pptx-chrome": "inspector",
|
|
25709
|
-
className:
|
|
25709
|
+
className: chunk6GFSF2ML_js.cn(
|
|
25710
25710
|
// Shared styles
|
|
25711
25711
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25712
25712
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26037,7 +26037,7 @@ function PresentationAnnotationOverlay({
|
|
|
26037
26037
|
);
|
|
26038
26038
|
}
|
|
26039
26039
|
function PresentationToolbar(p) {
|
|
26040
|
-
const { t } =
|
|
26040
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26041
26041
|
const ref = useWebControl(
|
|
26042
26042
|
{
|
|
26043
26043
|
current: p.currentSlideIndex,
|
|
@@ -26096,8 +26096,8 @@ function PresentationTouchControls({
|
|
|
26096
26096
|
onEndPresentation,
|
|
26097
26097
|
hideNavigation = false
|
|
26098
26098
|
}) {
|
|
26099
|
-
const { t } =
|
|
26100
|
-
const { isTouchDevice } =
|
|
26099
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26100
|
+
const { isTouchDevice } = chunk3AZ6ESJU_js.useIsMobile();
|
|
26101
26101
|
if (!isTouchDevice) {
|
|
26102
26102
|
return null;
|
|
26103
26103
|
}
|
|
@@ -26179,7 +26179,7 @@ function KeepAnnotationsDialog({
|
|
|
26179
26179
|
onKeep,
|
|
26180
26180
|
onDiscard
|
|
26181
26181
|
}) {
|
|
26182
|
-
const { t } =
|
|
26182
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26183
26183
|
if (!isOpen) {
|
|
26184
26184
|
return null;
|
|
26185
26185
|
}
|
|
@@ -26227,7 +26227,7 @@ function PasteSpecialDialog({
|
|
|
26227
26227
|
onCancel,
|
|
26228
26228
|
onConfirm
|
|
26229
26229
|
}) {
|
|
26230
|
-
const { t } =
|
|
26230
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26231
26231
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26232
26232
|
if (!isOpen) {
|
|
26233
26233
|
return null;
|
|
@@ -26285,7 +26285,7 @@ function PasteOptionsToolbar({
|
|
|
26285
26285
|
onChoose,
|
|
26286
26286
|
onDismiss
|
|
26287
26287
|
}) {
|
|
26288
|
-
const { t } =
|
|
26288
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26289
26289
|
const [rect, setRect] = React108.useState(null);
|
|
26290
26290
|
React108.useEffect(() => {
|
|
26291
26291
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26312,7 +26312,7 @@ function NotesPagePreview({
|
|
|
26312
26312
|
frameSlides,
|
|
26313
26313
|
maxPages = 3
|
|
26314
26314
|
}) {
|
|
26315
|
-
const { t } =
|
|
26315
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26316
26316
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26317
26317
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26318
26318
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26400,15 +26400,15 @@ function PrintPreview({
|
|
|
26400
26400
|
frameSlides,
|
|
26401
26401
|
maxPages = 3
|
|
26402
26402
|
}) {
|
|
26403
|
-
const { t } =
|
|
26403
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26404
26404
|
const pages = React108.useMemo(
|
|
26405
|
-
() =>
|
|
26405
|
+
() => chunk6GFSF2ML_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26406
26406
|
[slideIndices, slidesPerPage, orientation]
|
|
26407
26407
|
);
|
|
26408
|
-
const printable = React108.useMemo(() =>
|
|
26408
|
+
const printable = React108.useMemo(() => chunk6GFSF2ML_js.getPrintableArea(orientation), [orientation]);
|
|
26409
26409
|
const visiblePages = pages.slice(0, maxPages);
|
|
26410
26410
|
const isThreePerPage = slidesPerPage === 3;
|
|
26411
|
-
const noteLineCount =
|
|
26411
|
+
const noteLineCount = chunk6GFSF2ML_js.generateNoteLineCount();
|
|
26412
26412
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26413
26413
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26414
26414
|
const noteAreaFraction = 0.5;
|
|
@@ -26506,7 +26506,7 @@ function PrintSettingsPanel({
|
|
|
26506
26506
|
totalSlides,
|
|
26507
26507
|
activeSlideIndex
|
|
26508
26508
|
}) {
|
|
26509
|
-
const { t } =
|
|
26509
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26510
26510
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26511
26511
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26512
26512
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26742,13 +26742,13 @@ function PrintDialog({
|
|
|
26742
26742
|
defaultSlidesPerPage,
|
|
26743
26743
|
defaultFrameSlides
|
|
26744
26744
|
}) {
|
|
26745
|
-
const { t } =
|
|
26745
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26746
26746
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26747
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26748
|
-
const { viewportWidth } =
|
|
26747
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
26748
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
26749
26749
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26750
26750
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26751
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26751
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk3AZ6ESJU_js.useViewerOptionsContext());
|
|
26752
26752
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26753
26753
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26754
26754
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -26932,7 +26932,7 @@ function ShowOptionsFieldset({
|
|
|
26932
26932
|
draft,
|
|
26933
26933
|
update
|
|
26934
26934
|
}) {
|
|
26935
|
-
const { t } =
|
|
26935
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26936
26936
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26937
26937
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26938
26938
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -26990,7 +26990,7 @@ function ShowSlidesFieldset({
|
|
|
26990
26990
|
slideCount,
|
|
26991
26991
|
customShows
|
|
26992
26992
|
}) {
|
|
26993
|
-
const { t } =
|
|
26993
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
26994
26994
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26995
26995
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
26996
26996
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27100,7 +27100,7 @@ function SetUpSlideShowDialog({
|
|
|
27100
27100
|
customShows,
|
|
27101
27101
|
slideCount
|
|
27102
27102
|
}) {
|
|
27103
|
-
const { t } =
|
|
27103
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27104
27104
|
const [draft, setDraft] = React108.useState({
|
|
27105
27105
|
...properties
|
|
27106
27106
|
});
|
|
@@ -27236,16 +27236,16 @@ function BroadcastDialog({
|
|
|
27236
27236
|
defaultUserName,
|
|
27237
27237
|
defaultServerUrl
|
|
27238
27238
|
}) {
|
|
27239
|
-
const { t } =
|
|
27239
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27240
27240
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27241
|
-
const collab =
|
|
27241
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
27242
27242
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27243
27243
|
const [roomId, setRoomId] = React108.useState("");
|
|
27244
27244
|
const [userName, setUserName] = React108.useState("");
|
|
27245
27245
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27246
27246
|
const [copied, setCopied] = React108.useState(false);
|
|
27247
27247
|
const dialogRef = React108.useRef(null);
|
|
27248
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27248
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
27249
27249
|
useModalFocus(open, dialogRef, onClose);
|
|
27250
27250
|
React108.useEffect(() => {
|
|
27251
27251
|
if (open && !isBroadcasting) {
|
|
@@ -27404,7 +27404,7 @@ function StartBroadcastForm({
|
|
|
27404
27404
|
onUserNameChange,
|
|
27405
27405
|
onServerUrlChange
|
|
27406
27406
|
}) {
|
|
27407
|
-
const { t } =
|
|
27407
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27408
27408
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27409
27409
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27410
27410
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27480,7 +27480,7 @@ function ActiveBroadcastView({
|
|
|
27480
27480
|
onCopyUrl,
|
|
27481
27481
|
onStopBroadcast
|
|
27482
27482
|
}) {
|
|
27483
|
-
const { t } =
|
|
27483
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27484
27484
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27485
27485
|
const statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" });
|
|
27486
27486
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27561,7 +27561,7 @@ function ActiveSessionView({
|
|
|
27561
27561
|
onCopyRoomId,
|
|
27562
27562
|
onStopCollaboration
|
|
27563
27563
|
}) {
|
|
27564
|
-
const { t } =
|
|
27564
|
+
const { t } = chunk6GFSF2ML_js.useTranslation(), viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" }), sessionUsers = pptx.buildActiveSessionUsers({
|
|
27565
27565
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27566
27566
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27567
27567
|
localUserColor: collab.config.userColor,
|
|
@@ -27659,8 +27659,8 @@ function StartSessionForm({
|
|
|
27659
27659
|
connectionFailed,
|
|
27660
27660
|
onRetry
|
|
27661
27661
|
}) {
|
|
27662
|
-
const { t } =
|
|
27663
|
-
const { viewportWidth } =
|
|
27662
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27663
|
+
const { viewportWidth } = chunk3AZ6ESJU_js.useIsMobile();
|
|
27664
27664
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27665
27665
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27666
27666
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27794,9 +27794,9 @@ function ShareDialog({
|
|
|
27794
27794
|
defaultUserName,
|
|
27795
27795
|
defaultServerUrl
|
|
27796
27796
|
}) {
|
|
27797
|
-
const collab =
|
|
27797
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
27798
27798
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27799
|
-
const { t } =
|
|
27799
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27800
27800
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27801
27801
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27802
27802
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27805,9 +27805,9 @@ function ShareDialog({
|
|
|
27805
27805
|
const [invitation, setInvitation] = React108.useState("");
|
|
27806
27806
|
const [copied, setCopied] = React108.useState(false);
|
|
27807
27807
|
const dialogRef = React108.useRef(null);
|
|
27808
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27808
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
27809
27809
|
useModalFocus(open, dialogRef, onClose);
|
|
27810
|
-
const { viewportWidth, viewportHeight } =
|
|
27810
|
+
const { viewportWidth, viewportHeight } = chunk3AZ6ESJU_js.useIsMobile();
|
|
27811
27811
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27812
27812
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27813
27813
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -27980,7 +27980,7 @@ function HyperlinkTabContent({
|
|
|
27980
27980
|
inputCls,
|
|
27981
27981
|
onEnterConfirm
|
|
27982
27982
|
}) {
|
|
27983
|
-
const { t } =
|
|
27983
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
27984
27984
|
const handleEnterKey = (e) => {
|
|
27985
27985
|
if (e.key === "Enter") {
|
|
27986
27986
|
onEnterConfirm();
|
|
@@ -28105,13 +28105,13 @@ function HyperlinkEditDialog({
|
|
|
28105
28105
|
onConfirm,
|
|
28106
28106
|
onCancel
|
|
28107
28107
|
}) {
|
|
28108
|
-
const { t } =
|
|
28109
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28108
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28109
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onCancel);
|
|
28110
28110
|
const inputRef = React108.useRef(null);
|
|
28111
|
-
const detectedType =
|
|
28112
|
-
const emailParts =
|
|
28113
|
-
const detectedSlide =
|
|
28114
|
-
const detectedVerb = initialAction ?
|
|
28111
|
+
const detectedType = chunk3AZ6ESJU_js.detectTargetType(initialUrl, initialAction);
|
|
28112
|
+
const emailParts = chunk3AZ6ESJU_js.parseEmailUrl(initialUrl || "");
|
|
28113
|
+
const detectedSlide = chunk3AZ6ESJU_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28114
|
+
const detectedVerb = initialAction ? chunk3AZ6ESJU_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28115
28115
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
28116
28116
|
const [url, setUrl] = React108.useState(
|
|
28117
28117
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28142,7 +28142,7 @@ function HyperlinkEditDialog({
|
|
|
28142
28142
|
actionVerb
|
|
28143
28143
|
});
|
|
28144
28144
|
};
|
|
28145
|
-
const tabCls = (active) =>
|
|
28145
|
+
const tabCls = (active) => chunk6GFSF2ML_js.cn(
|
|
28146
28146
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28147
28147
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28148
28148
|
);
|
|
@@ -28390,7 +28390,7 @@ function ViewerBottomPanels({
|
|
|
28390
28390
|
notesStyle,
|
|
28391
28391
|
onNotesHeightChange
|
|
28392
28392
|
}) {
|
|
28393
|
-
const { isHidden } =
|
|
28393
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
|
|
28394
28394
|
const customization = useViewerCustomizationContext();
|
|
28395
28395
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28396
28396
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28521,7 +28521,7 @@ function ViewerInspector({
|
|
|
28521
28521
|
onPreviewElement,
|
|
28522
28522
|
elementById
|
|
28523
28523
|
}) {
|
|
28524
|
-
const { t } =
|
|
28524
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28525
28525
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28526
28526
|
const liveEdit = onPreviewElement ? {
|
|
28527
28527
|
element: selectedElement,
|
|
@@ -28736,7 +28736,7 @@ function ViewerToolbarSection(props) {
|
|
|
28736
28736
|
onSetSnapToShape,
|
|
28737
28737
|
onSetShowGuides
|
|
28738
28738
|
} = props;
|
|
28739
|
-
const { t } =
|
|
28739
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
28740
28740
|
const customization = useViewerCustomizationContext();
|
|
28741
28741
|
const handleAddAnimation = React108.useCallback(
|
|
28742
28742
|
(preset, group) => {
|
|
@@ -28789,7 +28789,7 @@ function ViewerToolbarSection(props) {
|
|
|
28789
28789
|
[activeSlide, propertyHandlers]
|
|
28790
28790
|
);
|
|
28791
28791
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28792
|
-
() =>
|
|
28792
|
+
() => chunk3AZ6ESJU_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28793
28793
|
[s.layoutOptions, activeSlide]
|
|
28794
28794
|
);
|
|
28795
28795
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29196,14 +29196,14 @@ function ViewerToolbarSection(props) {
|
|
|
29196
29196
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29197
29197
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29198
29198
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29199
|
-
reviewComments:
|
|
29199
|
+
reviewComments: chunk3AZ6ESJU_js.createReviewCommentsHost({
|
|
29200
29200
|
state: s,
|
|
29201
29201
|
activeSlideIndex,
|
|
29202
29202
|
updateSlides: ops.updateSlides,
|
|
29203
29203
|
markDirty: history.markDirty
|
|
29204
29204
|
}),
|
|
29205
29205
|
formatPainterActive: s.formatPainterActive,
|
|
29206
|
-
canActivateFormatPainter:
|
|
29206
|
+
canActivateFormatPainter: chunk6GFSF2ML_js.hasCopyableFormat(selectedElement),
|
|
29207
29207
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29208
29208
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29209
29209
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29312,14 +29312,14 @@ function CustomShowsDialog({
|
|
|
29312
29312
|
onRun,
|
|
29313
29313
|
onClose
|
|
29314
29314
|
}) {
|
|
29315
|
-
const { t } =
|
|
29315
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29316
29316
|
const controller = React108.useMemo(
|
|
29317
29317
|
() => pptx.createCustomShowsController(customShows, activeCustomShowId),
|
|
29318
29318
|
// A fresh draft per open: the host mounts this only while the dialog is open.
|
|
29319
29319
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29320
29320
|
[]
|
|
29321
29321
|
);
|
|
29322
|
-
|
|
29322
|
+
chunk3AZ6ESJU_js.useController(controller);
|
|
29323
29323
|
const view = controller.view(slides);
|
|
29324
29324
|
const [active, setActive] = React108.useState(activeCustomShowId ?? "");
|
|
29325
29325
|
const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
|
|
@@ -29598,8 +29598,8 @@ function EquationEditorDialog({
|
|
|
29598
29598
|
onInsert,
|
|
29599
29599
|
existingOmml
|
|
29600
29600
|
}) {
|
|
29601
|
-
const { t } =
|
|
29602
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29601
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29602
|
+
const { panelStyle, handlers: dragHandlers } = chunk3AZ6ESJU_js.useModalDismissDrag(onClose);
|
|
29603
29603
|
const initialLatex = React108.useMemo(() => {
|
|
29604
29604
|
if (!existingOmml) {
|
|
29605
29605
|
return "";
|
|
@@ -29721,7 +29721,7 @@ function EquationEditorDialog({
|
|
|
29721
29721
|
{
|
|
29722
29722
|
type: "button",
|
|
29723
29723
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29724
|
-
className:
|
|
29724
|
+
className: chunk6GFSF2ML_js.cn(
|
|
29725
29725
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29726
29726
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29727
29727
|
),
|
|
@@ -29786,7 +29786,7 @@ function InsertSmartArtDialog({
|
|
|
29786
29786
|
onInsert
|
|
29787
29787
|
}) {
|
|
29788
29788
|
const ref = React108.useRef(null);
|
|
29789
|
-
const { t } =
|
|
29789
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29790
29790
|
React108.useLayoutEffect(() => {
|
|
29791
29791
|
if (ref.current) {
|
|
29792
29792
|
ref.current.translateLabel = t;
|
|
@@ -29810,7 +29810,7 @@ function InsertChartDialog({
|
|
|
29810
29810
|
onInsert
|
|
29811
29811
|
}) {
|
|
29812
29812
|
const ref = React108.useRef(null);
|
|
29813
|
-
const { t } =
|
|
29813
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
29814
29814
|
React108.useLayoutEffect(() => {
|
|
29815
29815
|
if (ref.current) {
|
|
29816
29816
|
ref.current.translateLabel = t;
|
|
@@ -30317,11 +30317,11 @@ function PresentationStage({
|
|
|
30317
30317
|
})
|
|
30318
30318
|
},
|
|
30319
30319
|
children: [
|
|
30320
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30320
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30321
30321
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30322
30322
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30323
30323
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30324
|
-
|
|
30324
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
30325
30325
|
{
|
|
30326
30326
|
element,
|
|
30327
30327
|
activeSlide,
|
|
@@ -30359,7 +30359,7 @@ function PresentationStage({
|
|
|
30359
30359
|
`tpl-${element.id}`
|
|
30360
30360
|
)),
|
|
30361
30361
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30362
|
-
|
|
30362
|
+
chunk3AZ6ESJU_js.ElementRenderer,
|
|
30363
30363
|
{
|
|
30364
30364
|
element,
|
|
30365
30365
|
activeSlide,
|
|
@@ -30412,7 +30412,7 @@ function PresentationStage({
|
|
|
30412
30412
|
function noop() {
|
|
30413
30413
|
}
|
|
30414
30414
|
function PresentationContextMenu(p) {
|
|
30415
|
-
const { t } =
|
|
30415
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
30416
30416
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30417
30417
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30418
30418
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30471,7 +30471,7 @@ function PresentationTransitionMount({
|
|
|
30471
30471
|
templateElementsBySlideId
|
|
30472
30472
|
);
|
|
30473
30473
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30474
|
-
|
|
30474
|
+
chunk3AZ6ESJU_js.PresentationTransitionOverlay,
|
|
30475
30475
|
{
|
|
30476
30476
|
outgoingSlide,
|
|
30477
30477
|
templateElements: templates.outgoing,
|
|
@@ -30516,9 +30516,9 @@ function ViewerCanvasArea(props) {
|
|
|
30516
30516
|
aiHighlightOverlay,
|
|
30517
30517
|
aiCanvasActive = false
|
|
30518
30518
|
} = props;
|
|
30519
|
-
const { t } =
|
|
30520
|
-
const { isHidden } =
|
|
30521
|
-
const viewerOptions =
|
|
30519
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
30520
|
+
const { isHidden } = chunk3AZ6ESJU_js.useToolbarVisibility(hiddenActions);
|
|
30521
|
+
const viewerOptions = chunk3AZ6ESJU_js.useViewerOptionsContext();
|
|
30522
30522
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30523
30523
|
state: s,
|
|
30524
30524
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30564,9 +30564,9 @@ function ViewerCanvasArea(props) {
|
|
|
30564
30564
|
);
|
|
30565
30565
|
const handleHyperlinkClick = React108.useCallback(
|
|
30566
30566
|
(url) => {
|
|
30567
|
-
if (
|
|
30567
|
+
if (chunk6GFSF2ML_js.isPpactionUrl(url)) {
|
|
30568
30568
|
if (mode === "present") {
|
|
30569
|
-
const parsed =
|
|
30569
|
+
const parsed = chunk6GFSF2ML_js.parsePpactionUrl(url);
|
|
30570
30570
|
if (parsed) {
|
|
30571
30571
|
const action = {
|
|
30572
30572
|
action: parsed.action,
|
|
@@ -30651,7 +30651,7 @@ function ViewerCanvasArea(props) {
|
|
|
30651
30651
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30652
30652
|
}
|
|
30653
30653
|
}, [mode, presentation, s]);
|
|
30654
|
-
const swipe =
|
|
30654
|
+
const swipe = chunk3AZ6ESJU_js.useSwipeNavigation({
|
|
30655
30655
|
enabled: swipeEnabled,
|
|
30656
30656
|
onNext: handleSwipeNext,
|
|
30657
30657
|
onPrev: handleSwipePrev
|
|
@@ -30837,14 +30837,14 @@ function ViewerCanvasArea(props) {
|
|
|
30837
30837
|
outlineAuthoring,
|
|
30838
30838
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30839
30839
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30840
|
-
|
|
30840
|
+
chunk3AZ6ESJU_js.RemoteSelectionOverlay,
|
|
30841
30841
|
{
|
|
30842
30842
|
elements: effectiveSlide?.elements ?? [],
|
|
30843
30843
|
activeSlideIndex
|
|
30844
30844
|
}
|
|
30845
30845
|
),
|
|
30846
30846
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30847
|
-
|
|
30847
|
+
chunk3AZ6ESJU_js.CollaborationCursorOverlay,
|
|
30848
30848
|
{
|
|
30849
30849
|
activeSlideIndex,
|
|
30850
30850
|
canvasWidth: canvasSize.width,
|
|
@@ -31081,8 +31081,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31081
31081
|
] });
|
|
31082
31082
|
}
|
|
31083
31083
|
function ChartFormatPanel() {
|
|
31084
|
-
const { t } =
|
|
31085
|
-
const commands =
|
|
31084
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31085
|
+
const commands = chunk3AZ6ESJU_js.useChartFormatContext();
|
|
31086
31086
|
const ref = React108.useRef(null);
|
|
31087
31087
|
const chart = commands?.chart;
|
|
31088
31088
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31117,7 +31117,7 @@ function ChartFormatPanel() {
|
|
|
31117
31117
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
31118
31118
|
}
|
|
31119
31119
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
31120
|
-
const { t } =
|
|
31120
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31121
31121
|
const ref = React108.useRef(null);
|
|
31122
31122
|
React108.useEffect(() => {
|
|
31123
31123
|
const node = ref.current;
|
|
@@ -31154,8 +31154,8 @@ function MobileDismissSheet({
|
|
|
31154
31154
|
className,
|
|
31155
31155
|
children
|
|
31156
31156
|
}) {
|
|
31157
|
-
const { t } =
|
|
31158
|
-
const { dragY, handlers } =
|
|
31157
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31158
|
+
const { dragY, handlers } = chunk3AZ6ESJU_js.useSheetDismissDrag(onClose);
|
|
31159
31159
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31160
31160
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31161
31161
|
"button",
|
|
@@ -31424,7 +31424,7 @@ function ThemeThumbnail({
|
|
|
31424
31424
|
{
|
|
31425
31425
|
type: "button",
|
|
31426
31426
|
onClick,
|
|
31427
|
-
className:
|
|
31427
|
+
className: chunk6GFSF2ML_js.cn(
|
|
31428
31428
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31429
31429
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31430
31430
|
),
|
|
@@ -31455,7 +31455,7 @@ function ThemeGallery({
|
|
|
31455
31455
|
onApplyTheme,
|
|
31456
31456
|
onImportTheme
|
|
31457
31457
|
}) {
|
|
31458
|
-
const { t } =
|
|
31458
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
31459
31459
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31460
31460
|
const fileInputRef = React108.useRef(null);
|
|
31461
31461
|
React108.useEffect(() => {
|
|
@@ -31592,8 +31592,8 @@ function ViewerSidePanels(props) {
|
|
|
31592
31592
|
aiBridge,
|
|
31593
31593
|
aiPanel
|
|
31594
31594
|
} = props;
|
|
31595
|
-
const aiAssistant =
|
|
31596
|
-
const AiPanel = aiAssistant?.panel ??
|
|
31595
|
+
const aiAssistant = chunkMU3BIZ2U_js.aiAssistants.resolve(aiConfig);
|
|
31596
|
+
const AiPanel = aiAssistant?.panel ?? chunkMU3BIZ2U_js.AiChatPanelLazy;
|
|
31597
31597
|
const handleSetSlideSize = (size, rescaleMode) => {
|
|
31598
31598
|
if (rescaleMode && s.slideSizeEmu) {
|
|
31599
31599
|
s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
|
|
@@ -31899,7 +31899,7 @@ function ViewerMainContent(props) {
|
|
|
31899
31899
|
);
|
|
31900
31900
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
31901
31901
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31902
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31902
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31903
31903
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31904
31904
|
slidesPaneRenderer ? (
|
|
31905
31905
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -32109,7 +32109,7 @@ function AutosaveRecoveryDialog({
|
|
|
32109
32109
|
onDiscard,
|
|
32110
32110
|
busy = false
|
|
32111
32111
|
}) {
|
|
32112
|
-
const { t } =
|
|
32112
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32113
32113
|
if (!prompt) {
|
|
32114
32114
|
return null;
|
|
32115
32115
|
}
|
|
@@ -32165,7 +32165,7 @@ function CompatibilityToasts({
|
|
|
32165
32165
|
rightInset = 0,
|
|
32166
32166
|
bottomInset = 0
|
|
32167
32167
|
}) {
|
|
32168
|
-
const { t } =
|
|
32168
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32169
32169
|
const ref = useWebControl(
|
|
32170
32170
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
32171
32171
|
{
|
|
@@ -32210,7 +32210,7 @@ function HeaderFooterPanel({
|
|
|
32210
32210
|
onApplyToCurrent,
|
|
32211
32211
|
onClose
|
|
32212
32212
|
}) {
|
|
32213
|
-
const { t } =
|
|
32213
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32214
32214
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
32215
32215
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
32216
32216
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -32351,7 +32351,7 @@ function HeaderFooterPanel({
|
|
|
32351
32351
|
] }) });
|
|
32352
32352
|
}
|
|
32353
32353
|
function MobileBottomBar(p) {
|
|
32354
|
-
const { t } =
|
|
32354
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32355
32355
|
const handlers = {
|
|
32356
32356
|
slides: p.onOpenSlides,
|
|
32357
32357
|
insert: p.onOpenInsert,
|
|
@@ -32377,7 +32377,7 @@ function MobileSlidesSheet({
|
|
|
32377
32377
|
onClose,
|
|
32378
32378
|
...sidebar
|
|
32379
32379
|
}) {
|
|
32380
|
-
const { t } =
|
|
32380
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32381
32381
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32382
32382
|
MobileSheet,
|
|
32383
32383
|
{
|
|
@@ -32404,7 +32404,7 @@ function MobileChromeOverlay(props) {
|
|
|
32404
32404
|
slideSectionGroups,
|
|
32405
32405
|
canEdit,
|
|
32406
32406
|
commentCount
|
|
32407
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32407
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunk3AZ6ESJU_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32408
32408
|
s.setIsSlidesPaneOpen(false);
|
|
32409
32409
|
s.setIsMobileInsertOpen(false);
|
|
32410
32410
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32504,7 +32504,7 @@ function MobileChromeOverlay(props) {
|
|
|
32504
32504
|
] });
|
|
32505
32505
|
}
|
|
32506
32506
|
function ReadOnlyBanner(p) {
|
|
32507
|
-
const { t } =
|
|
32507
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32508
32508
|
const ref = useWebControl(
|
|
32509
32509
|
pptx.readOnlyBannerState(
|
|
32510
32510
|
p.recommendation,
|
|
@@ -32538,7 +32538,7 @@ function RibbonCustomizationStyle({
|
|
|
32538
32538
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32539
32539
|
}
|
|
32540
32540
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32541
|
-
const { t } =
|
|
32541
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32542
32542
|
if (notices.length === 0) {
|
|
32543
32543
|
return null;
|
|
32544
32544
|
}
|
|
@@ -32596,14 +32596,14 @@ function AddinTable({
|
|
|
32596
32596
|
selectedId,
|
|
32597
32597
|
onSelect
|
|
32598
32598
|
}) {
|
|
32599
|
-
const { t } =
|
|
32599
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32600
32600
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32601
32601
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32602
32602
|
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 py-1 text-xs italic text-muted-foreground", children: t("pptx.options.addIns.description") }) : /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full border-collapse text-left", children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32603
32603
|
"tr",
|
|
32604
32604
|
{
|
|
32605
32605
|
onClick: () => onSelect(row.id),
|
|
32606
|
-
className:
|
|
32606
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32607
32607
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32608
32608
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32609
32609
|
),
|
|
@@ -32618,7 +32618,7 @@ function AddinTable({
|
|
|
32618
32618
|
] });
|
|
32619
32619
|
}
|
|
32620
32620
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32621
|
-
const { t } =
|
|
32621
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32622
32622
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32623
32623
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32624
32624
|
const active = rows.filter((row) => row.active);
|
|
@@ -32661,7 +32661,7 @@ function CommandList({
|
|
|
32661
32661
|
selectedId,
|
|
32662
32662
|
onSelect
|
|
32663
32663
|
}) {
|
|
32664
|
-
const { t } =
|
|
32664
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32665
32665
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32666
32666
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32667
32667
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32682,7 +32682,7 @@ function CommandList({
|
|
|
32682
32682
|
role: "option",
|
|
32683
32683
|
"aria-selected": selectedId === id,
|
|
32684
32684
|
onClick: () => onSelect(id),
|
|
32685
|
-
className:
|
|
32685
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32686
32686
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32687
32687
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32688
32688
|
),
|
|
@@ -32700,7 +32700,7 @@ function OptionsQuickAccessPane({
|
|
|
32700
32700
|
onQuickAccessCommandsChange,
|
|
32701
32701
|
onResetQuickAccess
|
|
32702
32702
|
}) {
|
|
32703
|
-
const { t } =
|
|
32703
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32704
32704
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32705
32705
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32706
32706
|
const current = options.quickAccess.commandIds;
|
|
@@ -32814,7 +32814,7 @@ function OptionsRibbonPane({
|
|
|
32814
32814
|
onRibbonTabHiddenChange,
|
|
32815
32815
|
onResetRibbon
|
|
32816
32816
|
}) {
|
|
32817
|
-
const { t } =
|
|
32817
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32818
32818
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32819
32819
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32820
32820
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32826,7 +32826,7 @@ function OptionsRibbonPane({
|
|
|
32826
32826
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32827
32827
|
"label",
|
|
32828
32828
|
{
|
|
32829
|
-
className:
|
|
32829
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32830
32830
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32831
32831
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32832
32832
|
),
|
|
@@ -32860,7 +32860,7 @@ function OptionsRibbonPane({
|
|
|
32860
32860
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32861
32861
|
"div",
|
|
32862
32862
|
{
|
|
32863
|
-
className:
|
|
32863
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32864
32864
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32865
32865
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32866
32866
|
),
|
|
@@ -32881,12 +32881,12 @@ async function exportAiChatLogs(options) {
|
|
|
32881
32881
|
chats,
|
|
32882
32882
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32883
32883
|
(filename, content, mime) => {
|
|
32884
|
-
|
|
32884
|
+
chunk3AZ6ESJU_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32885
32885
|
}
|
|
32886
32886
|
);
|
|
32887
32887
|
}
|
|
32888
32888
|
function SettingsAiTab({ store }) {
|
|
32889
|
-
const { t } =
|
|
32889
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32890
32890
|
const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
32891
32891
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
32892
32892
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -32978,7 +32978,7 @@ function SettingsAppearanceTab({
|
|
|
32978
32978
|
themes,
|
|
32979
32979
|
onSelectTheme
|
|
32980
32980
|
}) {
|
|
32981
|
-
const { t } =
|
|
32981
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
32982
32982
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
32983
32983
|
const isActive = entry.key === activeThemeKey;
|
|
32984
32984
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -32989,7 +32989,7 @@ function SettingsAppearanceTab({
|
|
|
32989
32989
|
type: "button",
|
|
32990
32990
|
onClick: () => onSelectTheme(entry.key),
|
|
32991
32991
|
"aria-pressed": isActive,
|
|
32992
|
-
className:
|
|
32992
|
+
className: chunk6GFSF2ML_js.cn(
|
|
32993
32993
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
32994
32994
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
32995
32995
|
),
|
|
@@ -33006,7 +33006,7 @@ function SettingsAppearanceTab({
|
|
|
33006
33006
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33007
33007
|
"span",
|
|
33008
33008
|
{
|
|
33009
|
-
className:
|
|
33009
|
+
className: chunk6GFSF2ML_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33010
33010
|
children: t(entry.labelKey)
|
|
33011
33011
|
}
|
|
33012
33012
|
)
|
|
@@ -33021,7 +33021,7 @@ function SettingsCustomFontsSection({
|
|
|
33021
33021
|
families,
|
|
33022
33022
|
onRegistered
|
|
33023
33023
|
}) {
|
|
33024
|
-
const { t } =
|
|
33024
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33025
33025
|
const inputRef = React108.useRef(null);
|
|
33026
33026
|
const [error, setError] = React108.useState(false);
|
|
33027
33027
|
const handleFile = async (file) => {
|
|
@@ -33086,7 +33086,7 @@ function SettingsLanguageTab({
|
|
|
33086
33086
|
type: "button",
|
|
33087
33087
|
onClick: () => onSelectLocale(locale.code),
|
|
33088
33088
|
"aria-pressed": isActive,
|
|
33089
|
-
className:
|
|
33089
|
+
className: chunk6GFSF2ML_js.cn(
|
|
33090
33090
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33091
33091
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33092
33092
|
),
|
|
@@ -33125,7 +33125,7 @@ function OpenSettingsDialog({
|
|
|
33125
33125
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
33126
33126
|
onCustomFontRegistered
|
|
33127
33127
|
}) {
|
|
33128
|
-
const { t } =
|
|
33128
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33129
33129
|
const viewerCustomization = useViewerCustomizationContext();
|
|
33130
33130
|
const customization = React108.useMemo(
|
|
33131
33131
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -33234,7 +33234,7 @@ function ViewerOptionsProvider({
|
|
|
33234
33234
|
store,
|
|
33235
33235
|
children
|
|
33236
33236
|
}) {
|
|
33237
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33237
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33238
33238
|
}
|
|
33239
33239
|
function useAiBridge(input) {
|
|
33240
33240
|
const ref = React108.useRef(input);
|
|
@@ -33317,7 +33317,7 @@ function useAiPanelController(input) {
|
|
|
33317
33317
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
33318
33318
|
})
|
|
33319
33319
|
);
|
|
33320
|
-
const state =
|
|
33320
|
+
const state = chunk3AZ6ESJU_js.useController(controller);
|
|
33321
33321
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
33322
33322
|
const liveFocusTargets = React108.useMemo(
|
|
33323
33323
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33550,7 +33550,7 @@ function useMasterViewCrud(input) {
|
|
|
33550
33550
|
forgetHistory,
|
|
33551
33551
|
pushToast
|
|
33552
33552
|
} = input;
|
|
33553
|
-
const { t } =
|
|
33553
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
33554
33554
|
const data = React108.useMemo(
|
|
33555
33555
|
() => ({ slides, slideMasters }),
|
|
33556
33556
|
[slides, slideMasters]
|
|
@@ -33937,26 +33937,39 @@ function useViewerCustomization(customization, legacyHiddenActions, optionsStore
|
|
|
33937
33937
|
return { resolved, api: controller.api, hiddenActions };
|
|
33938
33938
|
}
|
|
33939
33939
|
var NO_LOCALES = [];
|
|
33940
|
-
var
|
|
33940
|
+
var BUILT_IN_CONTROLS = {
|
|
33941
|
+
localeCode: "en",
|
|
33942
|
+
locales: NO_LOCALES,
|
|
33943
|
+
selectLocale: () => {
|
|
33944
|
+
},
|
|
33945
|
+
languageSelectable: false
|
|
33946
|
+
};
|
|
33947
|
+
var toCatalogEntry = (code) => i18n$1.LOCALE_CATALOG.find((entry) => entry.code === code) ?? { code, label: code, nativeLabel: code };
|
|
33941
33948
|
function useHostLanguage({
|
|
33942
33949
|
defaultLocale,
|
|
33943
33950
|
availableLocales,
|
|
33944
33951
|
onLocaleChange
|
|
33945
33952
|
}) {
|
|
33946
|
-
const
|
|
33953
|
+
const host = chunk6GFSF2ML_js.useRegisteredHostI18next();
|
|
33954
|
+
const t = host?.t;
|
|
33955
|
+
const i18n = host?.i18n;
|
|
33956
|
+
const readsInstance = i18n !== void 0;
|
|
33947
33957
|
const [localeCode, setLocaleCode] = React108.useState(
|
|
33948
33958
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
33949
33959
|
);
|
|
33950
33960
|
React108.useEffect(() => {
|
|
33951
|
-
if (localeCode !== "en" && !onLocaleChange) {
|
|
33952
|
-
void i18n.changeLanguage(localeCode);
|
|
33961
|
+
if (i18n && localeCode !== "en" && !onLocaleChange) {
|
|
33962
|
+
void i18n.changeLanguage?.(localeCode);
|
|
33953
33963
|
}
|
|
33954
|
-
}, []);
|
|
33964
|
+
}, [readsInstance]);
|
|
33955
33965
|
const locales = React108.useMemo(() => {
|
|
33956
33966
|
if (availableLocales) {
|
|
33957
33967
|
return availableLocales;
|
|
33958
33968
|
}
|
|
33959
|
-
|
|
33969
|
+
if (!i18n) {
|
|
33970
|
+
return NO_LOCALES;
|
|
33971
|
+
}
|
|
33972
|
+
const registeredCodes = i18n.options?.resources ? Object.keys(i18n.options.resources) : Array.isArray(i18n.languages) ? i18n.languages : ["en"];
|
|
33960
33973
|
return registeredCodes.map(toCatalogEntry);
|
|
33961
33974
|
}, [availableLocales, i18n]);
|
|
33962
33975
|
const selectLocale = React108.useCallback(
|
|
@@ -33964,18 +33977,21 @@ function useHostLanguage({
|
|
|
33964
33977
|
setLocaleCode(code);
|
|
33965
33978
|
if (onLocaleChange) {
|
|
33966
33979
|
onLocaleChange(code);
|
|
33967
|
-
} else {
|
|
33968
|
-
void i18n.changeLanguage(code);
|
|
33980
|
+
} else if (i18n) {
|
|
33981
|
+
void i18n.changeLanguage?.(code);
|
|
33969
33982
|
pptx.writeStoredViewerPrefs({ localeCode: code });
|
|
33970
33983
|
}
|
|
33971
33984
|
},
|
|
33972
33985
|
[onLocaleChange, i18n]
|
|
33973
33986
|
);
|
|
33974
|
-
const language = i18n
|
|
33975
|
-
const state = React108.useMemo(
|
|
33987
|
+
const language = i18n ? chunk6GFSF2ML_js.hostInstanceLanguage(i18n) ?? localeCode : "en";
|
|
33988
|
+
const state = React108.useMemo(
|
|
33989
|
+
() => t ? { t, locale: language } : chunk6GFSF2ML_js.BUILT_IN_ENGLISH,
|
|
33990
|
+
[t, language]
|
|
33991
|
+
);
|
|
33976
33992
|
const controls = React108.useMemo(
|
|
33977
|
-
() =>
|
|
33978
|
-
[localeCode, locales, selectLocale]
|
|
33993
|
+
() => readsInstance ? { localeCode, locales, selectLocale, languageSelectable: true } : BUILT_IN_CONTROLS,
|
|
33994
|
+
[readsInstance, localeCode, locales, selectLocale]
|
|
33979
33995
|
);
|
|
33980
33996
|
return { state, controls };
|
|
33981
33997
|
}
|
|
@@ -33983,13 +33999,13 @@ function useProvidedLanguage({
|
|
|
33983
33999
|
availableLocales,
|
|
33984
34000
|
onLocaleChange
|
|
33985
34001
|
}) {
|
|
33986
|
-
const state = React108.useContext(
|
|
34002
|
+
const state = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext);
|
|
33987
34003
|
const { locale } = state;
|
|
33988
34004
|
const locales = availableLocales ?? NO_LOCALES;
|
|
33989
34005
|
const controls = React108.useMemo(
|
|
33990
34006
|
() => ({
|
|
33991
34007
|
// `fr-CA` selects an offered `fr`: the host's locale need not be one of the codes.
|
|
33992
|
-
localeCode: i18n
|
|
34008
|
+
localeCode: i18n.normalizeLocale(
|
|
33993
34009
|
locale,
|
|
33994
34010
|
locales.map((entry) => entry.code),
|
|
33995
34011
|
locale
|
|
@@ -34003,20 +34019,25 @@ function useProvidedLanguage({
|
|
|
34003
34019
|
return { state, controls };
|
|
34004
34020
|
}
|
|
34005
34021
|
function provideLanguage({ state, controls }, children) {
|
|
34006
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34022
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk6GFSF2ML_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
34007
34023
|
}
|
|
34008
34024
|
function HostLanguageRoot({ children, ...props }) {
|
|
34009
34025
|
return provideLanguage(useHostLanguage(props), children);
|
|
34010
34026
|
}
|
|
34027
|
+
function BuiltInLanguageRoot({ children }) {
|
|
34028
|
+
return provideLanguage({ state: chunk6GFSF2ML_js.BUILT_IN_ENGLISH, controls: BUILT_IN_CONTROLS }, children);
|
|
34029
|
+
}
|
|
34011
34030
|
function ProvidedLanguageRoot({ children, ...props }) {
|
|
34012
34031
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
34013
34032
|
}
|
|
34014
34033
|
function ViewerI18nRoot(props) {
|
|
34015
|
-
const
|
|
34034
|
+
const [readsHost] = React108.useState(() => chunk6GFSF2ML_js.registeredHostI18next() !== null);
|
|
34035
|
+
const FromHost = readsHost ? HostLanguageRoot : BuiltInLanguageRoot;
|
|
34036
|
+
const Root = React108.useContext(chunk6GFSF2ML_js.PptxI18nContext) ? ProvidedLanguageRoot : FromHost;
|
|
34016
34037
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
34017
34038
|
}
|
|
34018
34039
|
function useViewerLocaleControls() {
|
|
34019
|
-
return React108.useContext(
|
|
34040
|
+
return React108.useContext(chunk6GFSF2ML_js.ViewerLocaleControlsContext);
|
|
34020
34041
|
}
|
|
34021
34042
|
var NO_RIBBON_ADD_INS = [];
|
|
34022
34043
|
var NO_FILE_PROVIDERS = [];
|
|
@@ -34095,7 +34116,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34095
34116
|
limits
|
|
34096
34117
|
} = props;
|
|
34097
34118
|
const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
|
|
34098
|
-
const cloudFile =
|
|
34119
|
+
const cloudFile = chunk3AZ6ESJU_js.useController(cloudDocument).file;
|
|
34099
34120
|
const {
|
|
34100
34121
|
storage: viewerStorage,
|
|
34101
34122
|
fileName,
|
|
@@ -34109,7 +34130,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34109
34130
|
filePath: hostFilePath
|
|
34110
34131
|
});
|
|
34111
34132
|
const saveProgress = React108.useMemo(() => pptx.createSaveProgressController(), []);
|
|
34112
|
-
const saveProgressState =
|
|
34133
|
+
const saveProgressState = chunk3AZ6ESJU_js.useController(saveProgress);
|
|
34113
34134
|
const storage = React108.useMemo(
|
|
34114
34135
|
() => viewerStorage ? saveProgress.wrap(viewerStorage) : viewerStorage,
|
|
34115
34136
|
[viewerStorage, saveProgress]
|
|
@@ -34151,7 +34172,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34151
34172
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34152
34173
|
);
|
|
34153
34174
|
}, []);
|
|
34154
|
-
const { t } =
|
|
34175
|
+
const { t } = chunk6GFSF2ML_js.useTranslation();
|
|
34155
34176
|
const {
|
|
34156
34177
|
localeCode,
|
|
34157
34178
|
locales: resolvedLocales,
|
|
@@ -34208,7 +34229,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34208
34229
|
},
|
|
34209
34230
|
[hostStorage, cloudDocument]
|
|
34210
34231
|
);
|
|
34211
|
-
const { optionsStore, options: viewerOptions } =
|
|
34232
|
+
const { optionsStore, options: viewerOptions } = chunk3AZ6ESJU_js.useViewerOptions();
|
|
34212
34233
|
const custom = useViewerCustomization(
|
|
34213
34234
|
customization,
|
|
34214
34235
|
legacyHiddenActions,
|
|
@@ -34228,8 +34249,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34228
34249
|
const handleEnableEditing = React108.useCallback(() => {
|
|
34229
34250
|
setProtectedViewOverridden(true);
|
|
34230
34251
|
}, []);
|
|
34231
|
-
const readOnlyRec =
|
|
34232
|
-
const compatToastsState =
|
|
34252
|
+
const readOnlyRec = chunk3AZ6ESJU_js.useReadOnlyRecommendationState(content);
|
|
34253
|
+
const compatToastsState = chunk3AZ6ESJU_js.useCompatibilityToastsState();
|
|
34233
34254
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
34234
34255
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34235
34256
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -34252,8 +34273,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34252
34273
|
filePath
|
|
34253
34274
|
});
|
|
34254
34275
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
34255
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34256
|
-
const state =
|
|
34276
|
+
const { reducedMotion, toggleReducedMotion } = chunk3AZ6ESJU_js.useReducedMotion();
|
|
34277
|
+
const state = chunk3AZ6ESJU_js.useViewerState({
|
|
34257
34278
|
content,
|
|
34258
34279
|
canEdit,
|
|
34259
34280
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -34380,16 +34401,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34380
34401
|
}
|
|
34381
34402
|
}, [settings, optionsStore]);
|
|
34382
34403
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
34383
|
-
const mobile =
|
|
34404
|
+
const mobile = chunk3AZ6ESJU_js.useIsMobile();
|
|
34384
34405
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34385
|
-
const resizablePanels =
|
|
34406
|
+
const resizablePanels = chunk3AZ6ESJU_js.useResizablePanels();
|
|
34386
34407
|
const {
|
|
34387
34408
|
gridSpacingPx,
|
|
34388
34409
|
visibleSlideIndexes,
|
|
34389
34410
|
slideSectionGroups,
|
|
34390
34411
|
masterPseudoSlide,
|
|
34391
34412
|
authoredRange
|
|
34392
|
-
} =
|
|
34413
|
+
} = chunk3AZ6ESJU_js.useDerivedSlideState({
|
|
34393
34414
|
slides,
|
|
34394
34415
|
sections: state.sections,
|
|
34395
34416
|
customShows: state.customShows,
|
|
@@ -34414,7 +34435,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34414
34435
|
state.cropSessionRef
|
|
34415
34436
|
]
|
|
34416
34437
|
);
|
|
34417
|
-
const zoom =
|
|
34438
|
+
const zoom = chunk3AZ6ESJU_js.useZoomViewport({
|
|
34418
34439
|
canvasSize,
|
|
34419
34440
|
selectedElements: state.selectedElements,
|
|
34420
34441
|
fitPadding: props.fitPadding,
|
|
@@ -34430,7 +34451,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34430
34451
|
onChangeCallback.current?.();
|
|
34431
34452
|
}, [setIsDirty]);
|
|
34432
34453
|
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
34433
|
-
const history =
|
|
34454
|
+
const history = chunk3AZ6ESJU_js.useEditorHistory({
|
|
34434
34455
|
slides,
|
|
34435
34456
|
canvasSize,
|
|
34436
34457
|
activeSlideIndex,
|
|
@@ -34459,7 +34480,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34459
34480
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34460
34481
|
setHeaderFooter: state.setHeaderFooter
|
|
34461
34482
|
});
|
|
34462
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34483
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk3AZ6ESJU_js.usePresentationSetup({
|
|
34463
34484
|
mode,
|
|
34464
34485
|
slides,
|
|
34465
34486
|
visibleSlideIndexes,
|
|
@@ -34538,7 +34559,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34538
34559
|
loading,
|
|
34539
34560
|
error
|
|
34540
34561
|
]);
|
|
34541
|
-
|
|
34562
|
+
chunk3AZ6ESJU_js.useTouchGestures({
|
|
34542
34563
|
targetRef: zoom.canvasViewportRef,
|
|
34543
34564
|
currentScale: zoom.scale,
|
|
34544
34565
|
callbacks: {
|
|
@@ -34560,7 +34581,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34560
34581
|
},
|
|
34561
34582
|
enabled: isTouchDevice
|
|
34562
34583
|
});
|
|
34563
|
-
const dialogs =
|
|
34584
|
+
const dialogs = chunk3AZ6ESJU_js.useViewerDialogs({
|
|
34564
34585
|
mode,
|
|
34565
34586
|
slides,
|
|
34566
34587
|
activeSlide,
|
|
@@ -34588,7 +34609,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34588
34609
|
history,
|
|
34589
34610
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34590
34611
|
});
|
|
34591
|
-
|
|
34612
|
+
chunk3AZ6ESJU_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34592
34613
|
const zoomBeforePresentRef = React108.useRef(null);
|
|
34593
34614
|
React108.useEffect(() => {
|
|
34594
34615
|
if (mode !== "present") {
|
|
@@ -34606,7 +34627,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34606
34627
|
zoom.handleZoomToFit();
|
|
34607
34628
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34608
34629
|
}, [mode]);
|
|
34609
|
-
const editorOps =
|
|
34630
|
+
const editorOps = chunk3AZ6ESJU_js.useEditorOperations({
|
|
34610
34631
|
state,
|
|
34611
34632
|
history,
|
|
34612
34633
|
zoom,
|
|
@@ -34651,7 +34672,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34651
34672
|
handlerRef,
|
|
34652
34673
|
viewerApi,
|
|
34653
34674
|
loadVersion
|
|
34654
|
-
} =
|
|
34675
|
+
} = chunk3AZ6ESJU_js.useViewerIntegration({
|
|
34655
34676
|
transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
|
|
34656
34677
|
state,
|
|
34657
34678
|
zoom,
|
|
@@ -34796,7 +34817,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34796
34817
|
updateElementById: editorOps.ops.updateElementById
|
|
34797
34818
|
});
|
|
34798
34819
|
const ribbonScope = useRibbonScopeToken();
|
|
34799
|
-
const viewPreferencesSync =
|
|
34820
|
+
const viewPreferencesSync = chunk3AZ6ESJU_js.useViewPreferencesSync({
|
|
34800
34821
|
loadVersion,
|
|
34801
34822
|
viewProperties: state.viewProperties,
|
|
34802
34823
|
setViewProperties: state.setViewProperties,
|
|
@@ -34847,7 +34868,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34847
34868
|
},
|
|
34848
34869
|
[state]
|
|
34849
34870
|
);
|
|
34850
|
-
const layoutSwitching =
|
|
34871
|
+
const layoutSwitching = chunk3AZ6ESJU_js.useLayoutSwitching({
|
|
34851
34872
|
handler: handlerRef.current,
|
|
34852
34873
|
slides,
|
|
34853
34874
|
activeSlideIndex,
|
|
@@ -34966,7 +34987,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34966
34987
|
"data-pptx-editor-chrome": "",
|
|
34967
34988
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
34968
34989
|
"aria-busy": loading,
|
|
34969
|
-
className:
|
|
34990
|
+
className: chunk6GFSF2ML_js.cn(
|
|
34970
34991
|
"h-full w-full bg-background text-foreground relative",
|
|
34971
34992
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
34972
34993
|
),
|
|
@@ -35368,8 +35389,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35368
35389
|
// Nothing previously provided it, so every one of those consumers was
|
|
35369
35390
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35370
35391
|
// the user changed in the Options dialog.
|
|
35371
|
-
/* @__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(
|
|
35372
|
-
|
|
35392
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35393
|
+
chunk3AZ6ESJU_js.CollaborationProvider,
|
|
35373
35394
|
{
|
|
35374
35395
|
config: collaboration,
|
|
35375
35396
|
canvasWidth: canvasSize.width,
|
|
@@ -35426,19 +35447,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35426
35447
|
slideCount: slides.length
|
|
35427
35448
|
}
|
|
35428
35449
|
),
|
|
35429
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35450
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AZ6ESJU_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
35430
35451
|
]
|
|
35431
35452
|
}
|
|
35432
35453
|
) }) }) }) }) }) }) }) }) })
|
|
35433
35454
|
);
|
|
35434
35455
|
}
|
|
35435
35456
|
);
|
|
35436
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
35457
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunk3AZ6ESJU_js.withDisplayName(
|
|
35437
35458
|
PowerPointViewerComponent,
|
|
35438
35459
|
"PowerPointViewer"
|
|
35439
35460
|
);
|
|
35440
35461
|
function CollaborationStatusStrip() {
|
|
35441
|
-
const collab =
|
|
35462
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35442
35463
|
if (!collab) {
|
|
35443
35464
|
return null;
|
|
35444
35465
|
}
|
|
@@ -35455,9 +35476,9 @@ function CollaborationStateReporter({
|
|
|
35455
35476
|
onChange,
|
|
35456
35477
|
onStatus
|
|
35457
35478
|
}) {
|
|
35458
|
-
const collab =
|
|
35479
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35459
35480
|
useCollaborationStateReport(collab, onChange);
|
|
35460
|
-
|
|
35481
|
+
chunk3AZ6ESJU_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35461
35482
|
return null;
|
|
35462
35483
|
}
|
|
35463
35484
|
function CollaborationDocumentSync({
|
|
@@ -35472,8 +35493,8 @@ function CollaborationDocumentSync({
|
|
|
35472
35493
|
onReadOnlyChange,
|
|
35473
35494
|
history
|
|
35474
35495
|
}) {
|
|
35475
|
-
const collab =
|
|
35476
|
-
|
|
35496
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35497
|
+
chunk3AZ6ESJU_js.useCollaborationDocumentSync({
|
|
35477
35498
|
collaboration: collab,
|
|
35478
35499
|
history,
|
|
35479
35500
|
slides,
|
|
@@ -35493,14 +35514,14 @@ function CollaborationFollowLayer({
|
|
|
35493
35514
|
setActiveSlideIndex,
|
|
35494
35515
|
slideCount
|
|
35495
35516
|
}) {
|
|
35496
|
-
const collab =
|
|
35497
|
-
const { followedClientId, followUser } =
|
|
35517
|
+
const collab = chunk3AZ6ESJU_js.useCollaboration();
|
|
35518
|
+
const { followedClientId, followUser } = chunk3AZ6ESJU_js.useFollowMode({
|
|
35498
35519
|
collab,
|
|
35499
35520
|
activeSlideIndex,
|
|
35500
35521
|
setActiveSlideIndex,
|
|
35501
35522
|
slideCount
|
|
35502
35523
|
});
|
|
35503
|
-
|
|
35524
|
+
chunk3AZ6ESJU_js.useBroadcastFollower({
|
|
35504
35525
|
collab,
|
|
35505
35526
|
activeSlideIndex,
|
|
35506
35527
|
setActiveSlideIndex,
|
|
@@ -35519,31 +35540,6 @@ function CollaborationFollowLayer({
|
|
|
35519
35540
|
}
|
|
35520
35541
|
) }) });
|
|
35521
35542
|
}
|
|
35522
|
-
var asMessageParams = (params) => params;
|
|
35523
|
-
function withEnglishFallback(translate) {
|
|
35524
|
-
return (key, defaultOrParams) => {
|
|
35525
|
-
const params = typeof defaultOrParams === "string" ? { defaultValue: defaultOrParams } : defaultOrParams;
|
|
35526
|
-
let text;
|
|
35527
|
-
try {
|
|
35528
|
-
text = params === void 0 ? translate(key) : translate(key, params);
|
|
35529
|
-
} catch {
|
|
35530
|
-
text = void 0;
|
|
35531
|
-
}
|
|
35532
|
-
const found = text && text !== key ? text : i18n.translationsEn[key] ?? params?.defaultValue;
|
|
35533
|
-
return typeof found === "string" ? i18n$1.interpolate(found, asMessageParams(params), "double") : i18n.keyToLabel(key);
|
|
35534
|
-
};
|
|
35535
|
-
}
|
|
35536
|
-
function PptxI18nProvider({
|
|
35537
|
-
translate,
|
|
35538
|
-
locale,
|
|
35539
|
-
children
|
|
35540
|
-
}) {
|
|
35541
|
-
const state = React108.useMemo(
|
|
35542
|
-
() => ({ t: withEnglishFallback(translate), locale }),
|
|
35543
|
-
[translate, locale]
|
|
35544
|
-
);
|
|
35545
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkP2COO2QO_js.PptxI18nContext.Provider, { value: state, children });
|
|
35546
|
-
}
|
|
35547
35543
|
|
|
35548
35544
|
Object.defineProperty(exports, "THEME_CATALOG", {
|
|
35549
35545
|
enumerable: true,
|
|
@@ -35591,7 +35587,6 @@ Object.defineProperty(exports, "vermilionRadius", {
|
|
|
35591
35587
|
});
|
|
35592
35588
|
exports.CollaborationStatusIndicator = CollaborationStatusIndicator;
|
|
35593
35589
|
exports.PowerPointViewer = PowerPointViewer2;
|
|
35594
|
-
exports.PptxI18nProvider = PptxI18nProvider;
|
|
35595
35590
|
exports.SlideCanvas = SlideCanvas;
|
|
35596
35591
|
exports.SlideTemplateGalleryDialog = SlideTemplateGalleryDialog;
|
|
35597
35592
|
exports.SlideTemplatePreview = SlideTemplatePreview;
|