pptx-react-viewer 4.54.0 → 4.55.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 +66 -0
- package/dist/{AiChatPanel-7GJQ66GR.js → AiChatPanel-7DESUEAZ.js} +19 -19
- package/dist/AiChatPanel-7DESUEAZ.js.br +0 -0
- package/dist/AiChatPanel-7DESUEAZ.js.gz +0 -0
- package/dist/{AiChatPanel-AI75AT6C.mjs → AiChatPanel-GQ64SIYP.mjs} +1 -1
- package/dist/AiChatPanel-GQ64SIYP.mjs.br +0 -0
- package/dist/AiChatPanel-GQ64SIYP.mjs.gz +0 -0
- package/dist/{chunk-3TN5SUQR.js → chunk-5KFSMXI4.js} +6 -3
- package/dist/chunk-5KFSMXI4.js.br +0 -0
- package/dist/chunk-5KFSMXI4.js.gz +0 -0
- package/dist/{chunk-GJB3TWLP.mjs → chunk-64BFLDBT.mjs} +2 -7
- package/dist/chunk-64BFLDBT.mjs.br +0 -0
- package/dist/{chunk-GJB3TWLP.mjs.gz → chunk-64BFLDBT.mjs.gz} +0 -0
- package/dist/{chunk-6MMJBI4I.mjs → chunk-EXSGJHOH.mjs} +4 -4
- package/dist/chunk-EXSGJHOH.mjs.br +0 -0
- package/dist/{chunk-6MMJBI4I.mjs.gz → chunk-EXSGJHOH.mjs.gz} +0 -0
- package/dist/{chunk-ID37Y3HG.mjs → chunk-MR3ZSEHS.mjs} +7 -4
- package/dist/chunk-MR3ZSEHS.mjs.br +0 -0
- package/dist/chunk-MR3ZSEHS.mjs.gz +0 -0
- package/dist/{chunk-ISNT4VQN.js → chunk-OIQAJR57.js} +203 -208
- package/dist/chunk-OIQAJR57.js.br +0 -0
- package/dist/chunk-OIQAJR57.js.gz +0 -0
- package/dist/{chunk-RB6MRBJI.js → chunk-V7JICDSL.js} +557 -557
- package/dist/chunk-V7JICDSL.js.br +0 -0
- package/dist/chunk-V7JICDSL.js.gz +0 -0
- package/dist/i18n/de.cjs +421 -1
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +421 -1
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +421 -1
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +421 -1
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +421 -1
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +421 -1
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +421 -1
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +421 -1
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.js +25 -25
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.js +20 -20
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +3 -3
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +3 -3
- package/dist/AiChatPanel-7GJQ66GR.js.br +0 -0
- package/dist/AiChatPanel-7GJQ66GR.js.gz +0 -0
- package/dist/AiChatPanel-AI75AT6C.mjs.br +0 -0
- package/dist/AiChatPanel-AI75AT6C.mjs.gz +0 -0
- package/dist/chunk-3TN5SUQR.js.br +0 -0
- package/dist/chunk-3TN5SUQR.js.gz +0 -0
- package/dist/chunk-6MMJBI4I.mjs.br +0 -0
- package/dist/chunk-GJB3TWLP.mjs.br +0 -0
- package/dist/chunk-ID37Y3HG.mjs.br +0 -0
- package/dist/chunk-ID37Y3HG.mjs.gz +0 -0
- package/dist/chunk-ISNT4VQN.js.br +0 -0
- package/dist/chunk-ISNT4VQN.js.gz +0 -0
- package/dist/chunk-RB6MRBJI.js.br +0 -0
- package/dist/chunk-RB6MRBJI.js.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkOIQAJR57_js = require('./chunk-OIQAJR57.js');
|
|
4
|
+
var chunk5KFSMXI4_js = require('./chunk-5KFSMXI4.js');
|
|
5
5
|
var pptx = require('ooxml-ui/pptx');
|
|
6
6
|
var React109 = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -48,7 +48,7 @@ function AvatarCircle({
|
|
|
48
48
|
avatar,
|
|
49
49
|
isLocal
|
|
50
50
|
}) {
|
|
51
|
-
const { t } =
|
|
51
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
52
52
|
const initials = getInitials(name);
|
|
53
53
|
const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
|
|
54
54
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -83,7 +83,7 @@ function UserAvatarBar({
|
|
|
83
83
|
status,
|
|
84
84
|
maxVisible = 5
|
|
85
85
|
}) {
|
|
86
|
-
const { t } =
|
|
86
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
87
87
|
if (status === "disconnected" || status === "error") {
|
|
88
88
|
return null;
|
|
89
89
|
}
|
|
@@ -157,7 +157,7 @@ function CollaborationStatusIndicator({
|
|
|
157
157
|
connectedCount,
|
|
158
158
|
onRetry
|
|
159
159
|
}) {
|
|
160
|
-
const { t } =
|
|
160
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
161
161
|
const style = STATUS_STYLES[status];
|
|
162
162
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
163
163
|
"div",
|
|
@@ -198,7 +198,7 @@ function FollowModeBar({
|
|
|
198
198
|
followedClientId,
|
|
199
199
|
onFollow
|
|
200
200
|
}) {
|
|
201
|
-
const { t } =
|
|
201
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
202
202
|
if (presences.length === 0) {
|
|
203
203
|
return null;
|
|
204
204
|
}
|
|
@@ -309,7 +309,7 @@ function SlideTemplatePreview({
|
|
|
309
309
|
transformOrigin: "top left"
|
|
310
310
|
},
|
|
311
311
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
312
|
-
|
|
312
|
+
chunkOIQAJR57_js.StaticElementRenderer,
|
|
313
313
|
{
|
|
314
314
|
element,
|
|
315
315
|
activeSlide: previewSlide,
|
|
@@ -377,8 +377,8 @@ function SlideTemplateGalleryDialog({
|
|
|
377
377
|
onInsert,
|
|
378
378
|
scheme
|
|
379
379
|
}) {
|
|
380
|
-
const { t } =
|
|
381
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
380
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
381
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(onClose);
|
|
382
382
|
const [selected, setSelected] = React109.useState(null);
|
|
383
383
|
const dialogRef = React109.useRef(null);
|
|
384
384
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -463,7 +463,7 @@ function SlideTemplateGalleryDialog({
|
|
|
463
463
|
onInsert(spec.id);
|
|
464
464
|
onClose();
|
|
465
465
|
},
|
|
466
|
-
className:
|
|
466
|
+
className: chunk5KFSMXI4_js.cn(
|
|
467
467
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
468
468
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
469
469
|
),
|
|
@@ -620,7 +620,7 @@ function nowLocalInputValue() {
|
|
|
620
620
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
621
621
|
}
|
|
622
622
|
function DateTimeFieldDialog(p) {
|
|
623
|
-
const { t } =
|
|
623
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
624
624
|
const [datePickerValue, setDatePickerValue] = React109.useState(nowLocalInputValue);
|
|
625
625
|
const [dateFormat, setDateFormat] = React109.useState("locale");
|
|
626
626
|
const confirmDatePicker = React109.useCallback(() => {
|
|
@@ -726,7 +726,7 @@ function useViewerCustomizationContext() {
|
|
|
726
726
|
return React109.useContext(ViewerCustomizationContext);
|
|
727
727
|
}
|
|
728
728
|
function InsertSection(p) {
|
|
729
|
-
const { t } =
|
|
729
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
730
730
|
const customization = useViewerCustomizationContext();
|
|
731
731
|
const ref = React109.useRef(null);
|
|
732
732
|
const [datePickerOpen, setDatePickerOpen] = React109.useState(false);
|
|
@@ -875,8 +875,8 @@ function MobileSheet({
|
|
|
875
875
|
headerRight
|
|
876
876
|
}) {
|
|
877
877
|
const sheetRef = React109.useRef(null);
|
|
878
|
-
const { t } =
|
|
879
|
-
const { dragY, dragging, handlers } =
|
|
878
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
879
|
+
const { dragY, dragging, handlers } = chunkOIQAJR57_js.useSheetDismissDrag(onClose);
|
|
880
880
|
useModalFocus(open, sheetRef, onClose);
|
|
881
881
|
if (!open) {
|
|
882
882
|
return null;
|
|
@@ -900,7 +900,7 @@ function MobileSheet({
|
|
|
900
900
|
"aria-modal": "true",
|
|
901
901
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
902
902
|
tabIndex: -1,
|
|
903
|
-
className:
|
|
903
|
+
className: chunk5KFSMXI4_js.cn(
|
|
904
904
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
905
905
|
"animate-in slide-in-from-bottom duration-200",
|
|
906
906
|
className
|
|
@@ -947,7 +947,7 @@ function MobileSheet({
|
|
|
947
947
|
] });
|
|
948
948
|
}
|
|
949
949
|
function MobileInsertSheet(p) {
|
|
950
|
-
const { t } =
|
|
950
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
951
951
|
const close = () => p.onCloseMobileInsert?.();
|
|
952
952
|
const customization = useViewerCustomizationContext();
|
|
953
953
|
const [dateOpen, setDateOpen] = React109.useState(false);
|
|
@@ -1023,7 +1023,7 @@ function MobileInsertSheet(p) {
|
|
|
1023
1023
|
] });
|
|
1024
1024
|
}
|
|
1025
1025
|
function AnimationsSection(p) {
|
|
1026
|
-
const { t } =
|
|
1026
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1027
1027
|
const ref = React109.useRef(null);
|
|
1028
1028
|
const [previewActive, setPreviewActive] = React109.useState(false);
|
|
1029
1029
|
const timer = React109.useRef(void 0);
|
|
@@ -1104,7 +1104,7 @@ function WebHomeControls({
|
|
|
1104
1104
|
onPopup,
|
|
1105
1105
|
layoutArtwork
|
|
1106
1106
|
}) {
|
|
1107
|
-
const { t } =
|
|
1107
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1108
1108
|
const ref = React109.useRef(null);
|
|
1109
1109
|
React109.useEffect(() => {
|
|
1110
1110
|
if (ref.current) {
|
|
@@ -1145,7 +1145,7 @@ function WebHomeControls({
|
|
|
1145
1145
|
function ShapeArrangeExtras(p) {
|
|
1146
1146
|
const commands = useShapeFormatContext();
|
|
1147
1147
|
const crop = commands?.crop;
|
|
1148
|
-
const { isHidden } =
|
|
1148
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(p.hiddenActions);
|
|
1149
1149
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
1150
1150
|
const controls = React109.useMemo(
|
|
1151
1151
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -1196,7 +1196,7 @@ function ShapeArrangeExtras(p) {
|
|
|
1196
1196
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
|
|
1197
1197
|
}
|
|
1198
1198
|
function ArrangeSection(p) {
|
|
1199
|
-
const { t } =
|
|
1199
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1200
1200
|
const {
|
|
1201
1201
|
onAlignElements,
|
|
1202
1202
|
onDistributeElements,
|
|
@@ -1303,7 +1303,7 @@ function RibbonGallery({
|
|
|
1303
1303
|
tagControl = true,
|
|
1304
1304
|
onCommand
|
|
1305
1305
|
}) {
|
|
1306
|
-
const { t } =
|
|
1306
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1307
1307
|
const ref = React109.useRef(null);
|
|
1308
1308
|
const commands = useRibbonGalleryCommands();
|
|
1309
1309
|
const context = commands?.context;
|
|
@@ -1438,7 +1438,7 @@ function WebRibbonToggle({
|
|
|
1438
1438
|
);
|
|
1439
1439
|
}
|
|
1440
1440
|
function TransitionsSection(p) {
|
|
1441
|
-
const { t } =
|
|
1441
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1442
1442
|
const ref = React109.useRef(null);
|
|
1443
1443
|
const draft = React109.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
1444
1444
|
const transition = p.activeSlide?.transition;
|
|
@@ -1480,7 +1480,7 @@ function TransitionsSection(p) {
|
|
|
1480
1480
|
case "soundPreview": {
|
|
1481
1481
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
1482
1482
|
if (url) {
|
|
1483
|
-
|
|
1483
|
+
chunkOIQAJR57_js.playAnimationSound(url);
|
|
1484
1484
|
}
|
|
1485
1485
|
break;
|
|
1486
1486
|
}
|
|
@@ -1499,7 +1499,7 @@ function TransitionsSection(p) {
|
|
|
1499
1499
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
|
|
1500
1500
|
}
|
|
1501
1501
|
function DesignSection(p) {
|
|
1502
|
-
const { t } =
|
|
1502
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1503
1503
|
const actions = {
|
|
1504
1504
|
"design.themes.browseThemes": p.onToggleThemeGallery,
|
|
1505
1505
|
"design.themes.editTheme": p.onToggleThemeEditor,
|
|
@@ -1562,7 +1562,7 @@ function useRecentColors() {
|
|
|
1562
1562
|
return React109.useContext(RecentColorsContext);
|
|
1563
1563
|
}
|
|
1564
1564
|
function DrawSection(p) {
|
|
1565
|
-
const { t } =
|
|
1565
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1566
1566
|
const { pushColor, recentColors } = useRecentColors();
|
|
1567
1567
|
const ref = React109.useRef(null);
|
|
1568
1568
|
React109.useEffect(() => {
|
|
@@ -1655,7 +1655,7 @@ var AccountAuthContext = /* @__PURE__ */ React109.createContext(
|
|
|
1655
1655
|
);
|
|
1656
1656
|
var cardClass = "border border-border bg-card p-6 text-card-foreground";
|
|
1657
1657
|
function AccountPage() {
|
|
1658
|
-
const { t } =
|
|
1658
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1659
1659
|
const accountAuth = React109.useContext(AccountAuthContext);
|
|
1660
1660
|
const storage = useViewerStorage();
|
|
1661
1661
|
const [profile, setProfile] = React109.useState(
|
|
@@ -1683,7 +1683,7 @@ function AccountPage() {
|
|
|
1683
1683
|
return void 0;
|
|
1684
1684
|
});
|
|
1685
1685
|
};
|
|
1686
|
-
const version = "4.
|
|
1686
|
+
const version = "4.55.0" ;
|
|
1687
1687
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1688
1688
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
1689
1689
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -1723,7 +1723,7 @@ function AccountPage() {
|
|
|
1723
1723
|
"aria-label": color,
|
|
1724
1724
|
"aria-pressed": profile.avatarColor === color,
|
|
1725
1725
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
1726
|
-
className:
|
|
1726
|
+
className: chunk5KFSMXI4_js.cn(
|
|
1727
1727
|
"size-7 rounded-full border-2 transition-transform",
|
|
1728
1728
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
1729
1729
|
),
|
|
@@ -1797,7 +1797,7 @@ function BackstageAction(props) {
|
|
|
1797
1797
|
] });
|
|
1798
1798
|
}
|
|
1799
1799
|
function BackstageNewGallery(props) {
|
|
1800
|
-
const { t } =
|
|
1800
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1801
1801
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1802
1802
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
|
|
1803
1803
|
/* @__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(
|
|
@@ -1823,7 +1823,7 @@ function BackstageNewGallery(props) {
|
|
|
1823
1823
|
] });
|
|
1824
1824
|
}
|
|
1825
1825
|
function BackstageRecentList(props) {
|
|
1826
|
-
const { t } =
|
|
1826
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1827
1827
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
|
|
1828
1828
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
|
|
1829
1829
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
|
|
@@ -1877,7 +1877,7 @@ function BackstageCards({
|
|
|
1877
1877
|
props,
|
|
1878
1878
|
run
|
|
1879
1879
|
}) {
|
|
1880
|
-
const { t } =
|
|
1880
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1881
1881
|
const handlers = {
|
|
1882
1882
|
protect: props.onOpenPasswordProtection,
|
|
1883
1883
|
inspect: props.onOpenDocumentProperties,
|
|
@@ -1939,7 +1939,7 @@ function BackstageNavIcon({ page }) {
|
|
|
1939
1939
|
return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
|
|
1940
1940
|
}
|
|
1941
1941
|
function FileSection(p) {
|
|
1942
|
-
const { t } =
|
|
1942
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
1943
1943
|
const [requestedPage, setRequestedPage] = React109.useState("home");
|
|
1944
1944
|
const customization = useViewerCustomizationContext();
|
|
1945
1945
|
const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
|
|
@@ -1947,7 +1947,7 @@ function FileSection(p) {
|
|
|
1947
1947
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
1948
1948
|
const [query, setQuery] = React109.useState("");
|
|
1949
1949
|
const [recent, setRecent] = React109.useState([]);
|
|
1950
|
-
const { isHidden } =
|
|
1950
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(p.hiddenActions);
|
|
1951
1951
|
const exportHidden = isHidden("export");
|
|
1952
1952
|
const storage = useViewerStorage();
|
|
1953
1953
|
React109.useEffect(() => {
|
|
@@ -2196,7 +2196,7 @@ function RibbonMenu({
|
|
|
2196
2196
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2197
2197
|
"div",
|
|
2198
2198
|
{
|
|
2199
|
-
className:
|
|
2199
|
+
className: chunk5KFSMXI4_js.cn("fixed z-50", className),
|
|
2200
2200
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
2201
2201
|
children
|
|
2202
2202
|
}
|
|
@@ -2206,7 +2206,7 @@ var THUMB_WIDTH = 128;
|
|
|
2206
2206
|
var THUMB_HEIGHT = 72;
|
|
2207
2207
|
var MAX_PREVIEW_ELEMENTS = 100;
|
|
2208
2208
|
function LayoutGalleryMenu(p) {
|
|
2209
|
-
const { t } =
|
|
2209
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
2210
2210
|
return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2211
2211
|
"div",
|
|
2212
2212
|
{
|
|
@@ -2222,7 +2222,7 @@ function LayoutGalleryMenu(p) {
|
|
|
2222
2222
|
type: "button",
|
|
2223
2223
|
"aria-current": isCurrent ? "true" : void 0,
|
|
2224
2224
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
2225
|
-
className:
|
|
2225
|
+
className: chunk5KFSMXI4_js.cn(
|
|
2226
2226
|
"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",
|
|
2227
2227
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
2228
2228
|
),
|
|
@@ -2296,7 +2296,7 @@ function LayoutArtwork({
|
|
|
2296
2296
|
backgroundColor
|
|
2297
2297
|
};
|
|
2298
2298
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2299
|
-
|
|
2299
|
+
chunkOIQAJR57_js.StaticElementRenderer,
|
|
2300
2300
|
{
|
|
2301
2301
|
element,
|
|
2302
2302
|
activeSlide: slide,
|
|
@@ -2571,7 +2571,7 @@ function WebRibbonSection({
|
|
|
2571
2571
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
|
|
2572
2572
|
}
|
|
2573
2573
|
function ReviewSection(p) {
|
|
2574
|
-
const { t } =
|
|
2574
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
2575
2575
|
const [activeCommentId, setActiveCommentId] = React109.useState(null);
|
|
2576
2576
|
React109.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
|
|
2577
2577
|
const host = p.commentsHost;
|
|
@@ -2636,7 +2636,7 @@ function CustomShowsControls({
|
|
|
2636
2636
|
onDeleteActiveCustomShow,
|
|
2637
2637
|
onToggleCurrentSlideInActiveShow
|
|
2638
2638
|
}) {
|
|
2639
|
-
const { t } =
|
|
2639
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
2640
2640
|
if (customShows.length > 0) {
|
|
2641
2641
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2642
2642
|
sep,
|
|
@@ -2691,7 +2691,7 @@ function CustomShowsControls({
|
|
|
2691
2691
|
{
|
|
2692
2692
|
type: "button",
|
|
2693
2693
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
2694
|
-
className:
|
|
2694
|
+
className: chunk5KFSMXI4_js.cn(
|
|
2695
2695
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
2696
2696
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
2697
2697
|
),
|
|
@@ -2726,7 +2726,7 @@ function SlideShowOptions({
|
|
|
2726
2726
|
children
|
|
2727
2727
|
}) {
|
|
2728
2728
|
const ref = React109.useRef(null);
|
|
2729
|
-
const { t } =
|
|
2729
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
2730
2730
|
React109.useLayoutEffect(() => {
|
|
2731
2731
|
if (!ref.current) {
|
|
2732
2732
|
return;
|
|
@@ -2745,8 +2745,8 @@ function SlideShowOptions({
|
|
|
2745
2745
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
|
|
2746
2746
|
}
|
|
2747
2747
|
function SubtitleSettingsControl() {
|
|
2748
|
-
const { t } =
|
|
2749
|
-
const supplied = React109.useContext(
|
|
2748
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
2749
|
+
const supplied = React109.useContext(chunkOIQAJR57_js.ViewerOptionsStoreContext);
|
|
2750
2750
|
const fallback = React109.useRef(null);
|
|
2751
2751
|
if (!supplied) {
|
|
2752
2752
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -2779,8 +2779,8 @@ function SubtitleSettingsControl() {
|
|
|
2779
2779
|
);
|
|
2780
2780
|
}
|
|
2781
2781
|
function SlideShowSection(p) {
|
|
2782
|
-
const { t } =
|
|
2783
|
-
const { isHidden } =
|
|
2782
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
2783
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(p.hiddenActions);
|
|
2784
2784
|
const [showsOpen, setShowsOpen] = React109.useState(false);
|
|
2785
2785
|
const showsRef = React109.useRef(null);
|
|
2786
2786
|
React109.useEffect(() => {
|
|
@@ -3043,7 +3043,7 @@ function FontFormatGroup(p) {
|
|
|
3043
3043
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
|
|
3044
3044
|
}
|
|
3045
3045
|
function FontPickerGroup(p) {
|
|
3046
|
-
const { t } =
|
|
3046
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3047
3047
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
3048
3048
|
const { onFamily, onSize } = p;
|
|
3049
3049
|
const controls = React109.useMemo(
|
|
@@ -3066,7 +3066,7 @@ function FontPickerGroup(p) {
|
|
|
3066
3066
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
|
|
3067
3067
|
}
|
|
3068
3068
|
function ParagraphGroup(p) {
|
|
3069
|
-
const { t } =
|
|
3069
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3070
3070
|
const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
|
|
3071
3071
|
const commands = useRibbonGalleryCommands();
|
|
3072
3072
|
const align = pptx.paragraphHomeAlign(effectiveTs?.align);
|
|
@@ -3167,7 +3167,7 @@ function useParagraphListKind(element) {
|
|
|
3167
3167
|
return React109.useSyncExternalStore(subscribe, read, readServer);
|
|
3168
3168
|
}
|
|
3169
3169
|
function TextSection(p) {
|
|
3170
|
-
const { t } =
|
|
3170
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3171
3171
|
const hasSel = Boolean(p.selectedElement);
|
|
3172
3172
|
const canMut = hasSel && p.canEdit;
|
|
3173
3173
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
@@ -3243,7 +3243,7 @@ function TextSection(p) {
|
|
|
3243
3243
|
] });
|
|
3244
3244
|
}
|
|
3245
3245
|
function ViewSection(p) {
|
|
3246
|
-
const { t } =
|
|
3246
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3247
3247
|
const ref = React109.useRef(null);
|
|
3248
3248
|
React109.useEffect(() => {
|
|
3249
3249
|
const host = ref.current;
|
|
@@ -3316,10 +3316,10 @@ var MENU_ITEMS = [
|
|
|
3316
3316
|
{ key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
|
|
3317
3317
|
];
|
|
3318
3318
|
function MobileMenuSheet(props) {
|
|
3319
|
-
const { t } =
|
|
3319
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3320
3320
|
const { open, onClose } = props;
|
|
3321
3321
|
const [active, setActive] = React109.useState("home");
|
|
3322
|
-
const { isTabVisible } =
|
|
3322
|
+
const { isTabVisible } = chunkOIQAJR57_js.useToolbarVisibility(props.hiddenActions);
|
|
3323
3323
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3324
3324
|
MobileSheet,
|
|
3325
3325
|
{
|
|
@@ -3333,7 +3333,7 @@ function MobileMenuSheet(props) {
|
|
|
3333
3333
|
{
|
|
3334
3334
|
type: "button",
|
|
3335
3335
|
onClick: () => setActive(active === key ? null : key),
|
|
3336
|
-
className:
|
|
3336
|
+
className: chunk5KFSMXI4_js.cn(
|
|
3337
3337
|
"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]",
|
|
3338
3338
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
3339
3339
|
),
|
|
@@ -3607,10 +3607,10 @@ function MobileSectionBody({
|
|
|
3607
3607
|
}
|
|
3608
3608
|
}
|
|
3609
3609
|
function MobileToolbar(props) {
|
|
3610
|
-
const { t } =
|
|
3610
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3611
3611
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
3612
3612
|
const [menuOpen, setMenuOpen] = React109.useState(false);
|
|
3613
|
-
const { isHidden } =
|
|
3613
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(props.hiddenActions);
|
|
3614
3614
|
const showEdit = mode === "edit" || mode === "master";
|
|
3615
3615
|
const hidden = [];
|
|
3616
3616
|
if (isHidden("undo")) {
|
|
@@ -3656,8 +3656,8 @@ function MobileToolbar(props) {
|
|
|
3656
3656
|
] });
|
|
3657
3657
|
}
|
|
3658
3658
|
function ChartSelectionStrip() {
|
|
3659
|
-
const { t } =
|
|
3660
|
-
const commands =
|
|
3659
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3660
|
+
const commands = chunkOIQAJR57_js.useChartFormatContext();
|
|
3661
3661
|
const chart = commands?.chart;
|
|
3662
3662
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
3663
3663
|
const controls = React109.useMemo(
|
|
@@ -3688,7 +3688,7 @@ function PictureSizeStrip({
|
|
|
3688
3688
|
hiddenActions
|
|
3689
3689
|
}) {
|
|
3690
3690
|
const crop = useShapeFormatContext()?.crop;
|
|
3691
|
-
const { isHidden } =
|
|
3691
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(hiddenActions);
|
|
3692
3692
|
const controls = React109.useMemo(
|
|
3693
3693
|
() => pptx.pictureSizeHomeControls({
|
|
3694
3694
|
editable: Boolean(crop),
|
|
@@ -3705,7 +3705,7 @@ function PictureSizeStrip({
|
|
|
3705
3705
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
|
|
3706
3706
|
}
|
|
3707
3707
|
function useTranslateOr() {
|
|
3708
|
-
const { t } =
|
|
3708
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3709
3709
|
return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
|
|
3710
3710
|
}
|
|
3711
3711
|
function ContextualTabSection({
|
|
@@ -3728,7 +3728,7 @@ function ContextualTabSection({
|
|
|
3728
3728
|
)) });
|
|
3729
3729
|
}
|
|
3730
3730
|
function DrawingGroup(p) {
|
|
3731
|
-
const { t } =
|
|
3731
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3732
3732
|
const { recentColors, pushColor } = useRecentColors();
|
|
3733
3733
|
const themeColors = useThemeColorMap();
|
|
3734
3734
|
const commands = useRibbonGalleryCommands();
|
|
@@ -3814,7 +3814,7 @@ function DrawingGroup(p) {
|
|
|
3814
3814
|
] });
|
|
3815
3815
|
}
|
|
3816
3816
|
function EditingSection(p) {
|
|
3817
|
-
const { t } =
|
|
3817
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3818
3818
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
3819
3819
|
const controls = React109.useMemo(
|
|
3820
3820
|
() => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
|
|
@@ -3860,8 +3860,8 @@ function RibbonAddInSection({ tab }) {
|
|
|
3860
3860
|
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";
|
|
3861
3861
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
3862
3862
|
function RibbonTabBar(p) {
|
|
3863
|
-
const { t } =
|
|
3864
|
-
const viewerOptions =
|
|
3863
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3864
|
+
const viewerOptions = chunkOIQAJR57_js.useViewerOptionsContext();
|
|
3865
3865
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3866
3866
|
"div",
|
|
3867
3867
|
{
|
|
@@ -3869,7 +3869,7 @@ function RibbonTabBar(p) {
|
|
|
3869
3869
|
"data-pptx-chrome": "ribbon-tabs",
|
|
3870
3870
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
3871
3871
|
children: [
|
|
3872
|
-
|
|
3872
|
+
chunk5KFSMXI4_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
3873
3873
|
const selected = p.activeSection === s.id;
|
|
3874
3874
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3875
3875
|
"button",
|
|
@@ -3879,7 +3879,7 @@ function RibbonTabBar(p) {
|
|
|
3879
3879
|
"aria-selected": selected,
|
|
3880
3880
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
3881
3881
|
onClick: () => p.onSelectSection(s.id),
|
|
3882
|
-
className:
|
|
3882
|
+
className: chunk5KFSMXI4_js.cn(
|
|
3883
3883
|
TAB_BASE,
|
|
3884
3884
|
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"
|
|
3885
3885
|
),
|
|
@@ -3899,7 +3899,7 @@ function RibbonTabBar(p) {
|
|
|
3899
3899
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
3900
3900
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
3901
3901
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
3902
|
-
className:
|
|
3902
|
+
className: chunk5KFSMXI4_js.cn(
|
|
3903
3903
|
TAB_BASE,
|
|
3904
3904
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
3905
3905
|
),
|
|
@@ -3920,7 +3920,7 @@ function RibbonTabBar(p) {
|
|
|
3920
3920
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
3921
3921
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
3922
3922
|
onClick: () => p.onSelectContextual(id),
|
|
3923
|
-
className:
|
|
3923
|
+
className: chunk5KFSMXI4_js.cn(
|
|
3924
3924
|
TAB_BASE,
|
|
3925
3925
|
"text-primary",
|
|
3926
3926
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -3937,10 +3937,10 @@ function RibbonTabBar(p) {
|
|
|
3937
3937
|
);
|
|
3938
3938
|
}
|
|
3939
3939
|
function TabRowActions(p) {
|
|
3940
|
-
const { t } =
|
|
3941
|
-
const collab =
|
|
3940
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3941
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
3942
3942
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
3943
|
-
const { isHidden } =
|
|
3943
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(p.hiddenActions);
|
|
3944
3944
|
const customization = useViewerCustomizationContext();
|
|
3945
3945
|
const ref = React109.useRef(null);
|
|
3946
3946
|
const handlers = React109.useRef(p);
|
|
@@ -3994,8 +3994,8 @@ function TabRowActions(p) {
|
|
|
3994
3994
|
] });
|
|
3995
3995
|
}
|
|
3996
3996
|
function TitleBarElement(p) {
|
|
3997
|
-
const { t } =
|
|
3998
|
-
const options =
|
|
3997
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
3998
|
+
const options = chunkOIQAJR57_js.useViewerOptionsContext();
|
|
3999
3999
|
const customization = useViewerCustomizationContext();
|
|
4000
4000
|
const ref = React109.useRef(null);
|
|
4001
4001
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -4059,7 +4059,7 @@ function PresentDropdown({
|
|
|
4059
4059
|
onToggleSubtitles,
|
|
4060
4060
|
showSubtitles
|
|
4061
4061
|
}) {
|
|
4062
|
-
const { t } =
|
|
4062
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4063
4063
|
const [open, setOpen] = React109.useState(false);
|
|
4064
4064
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
4065
4065
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
|
|
@@ -4068,7 +4068,7 @@ function PresentDropdown({
|
|
|
4068
4068
|
{
|
|
4069
4069
|
type: "button",
|
|
4070
4070
|
onClick: onPresent,
|
|
4071
|
-
className:
|
|
4071
|
+
className: chunk5KFSMXI4_js.cn(
|
|
4072
4072
|
"px-2 py-1 transition-colors",
|
|
4073
4073
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
4074
4074
|
),
|
|
@@ -4081,7 +4081,7 @@ function PresentDropdown({
|
|
|
4081
4081
|
{
|
|
4082
4082
|
type: "button",
|
|
4083
4083
|
onClick: () => setOpen((prev) => !prev),
|
|
4084
|
-
className:
|
|
4084
|
+
className: chunk5KFSMXI4_js.cn(
|
|
4085
4085
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
4086
4086
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
4087
4087
|
),
|
|
@@ -4209,7 +4209,7 @@ function ModeSwitcher({
|
|
|
4209
4209
|
onToggleSubtitles,
|
|
4210
4210
|
showSubtitles
|
|
4211
4211
|
}) {
|
|
4212
|
-
const { t } =
|
|
4212
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4213
4213
|
if (mode === "master") {
|
|
4214
4214
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
|
|
4215
4215
|
/* @__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") }),
|
|
@@ -4247,7 +4247,7 @@ var EXPORT_CARD_OF = {
|
|
|
4247
4247
|
copyImg: "copyImage"
|
|
4248
4248
|
};
|
|
4249
4249
|
function OverflowMenu(p) {
|
|
4250
|
-
const { t } =
|
|
4250
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4251
4251
|
const customization = useViewerCustomizationContext();
|
|
4252
4252
|
const offered = (k) => {
|
|
4253
4253
|
const card = EXPORT_CARD_OF[k];
|
|
@@ -4284,7 +4284,7 @@ function OverflowMenu(p) {
|
|
|
4284
4284
|
{
|
|
4285
4285
|
type: "button",
|
|
4286
4286
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
4287
|
-
className:
|
|
4287
|
+
className: chunk5KFSMXI4_js.cn(
|
|
4288
4288
|
"p-1.5 rounded transition-colors",
|
|
4289
4289
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
4290
4290
|
),
|
|
@@ -4322,7 +4322,7 @@ function OverflowMenu(p) {
|
|
|
4322
4322
|
] });
|
|
4323
4323
|
}
|
|
4324
4324
|
function ToolbarPrimaryRow(p) {
|
|
4325
|
-
const { t } =
|
|
4325
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4326
4326
|
const {
|
|
4327
4327
|
mode,
|
|
4328
4328
|
canEdit,
|
|
@@ -4331,7 +4331,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4331
4331
|
onToggleSidebar,
|
|
4332
4332
|
onToggleInspector
|
|
4333
4333
|
} = p;
|
|
4334
|
-
const collab =
|
|
4334
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
4335
4335
|
const customization = useViewerCustomizationContext();
|
|
4336
4336
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
4337
4337
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -4349,7 +4349,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4349
4349
|
{
|
|
4350
4350
|
type: "button",
|
|
4351
4351
|
onClick: onToggleSidebar,
|
|
4352
|
-
className:
|
|
4352
|
+
className: chunk5KFSMXI4_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
4353
4353
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
4354
4354
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
4355
4355
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -4410,7 +4410,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4410
4410
|
{
|
|
4411
4411
|
type: "button",
|
|
4412
4412
|
onClick: onToggleInspector,
|
|
4413
|
-
className:
|
|
4413
|
+
className: chunk5KFSMXI4_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
4414
4414
|
title: t("pptx.toolbar.toggleInspector"),
|
|
4415
4415
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
4416
4416
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -4421,7 +4421,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4421
4421
|
{
|
|
4422
4422
|
type: "button",
|
|
4423
4423
|
onClick: p.onToggleAiPanel,
|
|
4424
|
-
className:
|
|
4424
|
+
className: chunk5KFSMXI4_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
4425
4425
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
4426
4426
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
4427
4427
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -4432,7 +4432,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4432
4432
|
{
|
|
4433
4433
|
type: "button",
|
|
4434
4434
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
4435
|
-
className:
|
|
4435
|
+
className: chunk5KFSMXI4_js.cn(qab, "text-muted-foreground"),
|
|
4436
4436
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
4437
4437
|
"aria-label": t("pptx.toolbar.settings"),
|
|
4438
4438
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -4468,7 +4468,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
|
|
|
4468
4468
|
return { visible, active, fellBack, select: setChosen };
|
|
4469
4469
|
}
|
|
4470
4470
|
function HelpSection(p) {
|
|
4471
|
-
const { t } =
|
|
4471
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4472
4472
|
const groups = pptx.buildHelpRibbon(t, {
|
|
4473
4473
|
options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
|
|
4474
4474
|
});
|
|
@@ -4488,7 +4488,7 @@ function HelpSection(p) {
|
|
|
4488
4488
|
return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
|
|
4489
4489
|
}
|
|
4490
4490
|
function RecordSection(props) {
|
|
4491
|
-
const { t } =
|
|
4491
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4492
4492
|
const request = (id) => {
|
|
4493
4493
|
if (id === "record.record.fromBeginning") {
|
|
4494
4494
|
props.onRecordFromBeginning();
|
|
@@ -4620,9 +4620,9 @@ function ToolbarLateTabs({
|
|
|
4620
4620
|
}
|
|
4621
4621
|
function Toolbar(p) {
|
|
4622
4622
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
4623
|
-
const { t } =
|
|
4624
|
-
const { isTabVisible } =
|
|
4625
|
-
const viewerOptions =
|
|
4623
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4624
|
+
const { isTabVisible } = chunkOIQAJR57_js.useToolbarVisibility(p.hiddenActions);
|
|
4625
|
+
const viewerOptions = chunkOIQAJR57_js.useViewerOptionsContext();
|
|
4626
4626
|
const customization = useViewerCustomizationContext();
|
|
4627
4627
|
const belowInput = React109.useMemo(
|
|
4628
4628
|
() => ({
|
|
@@ -4720,7 +4720,7 @@ function Toolbar(p) {
|
|
|
4720
4720
|
{
|
|
4721
4721
|
type: "button",
|
|
4722
4722
|
onClick: p.onToggleCompactToolbar,
|
|
4723
|
-
className:
|
|
4723
|
+
className: chunk5KFSMXI4_js.cn(
|
|
4724
4724
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
4725
4725
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
4726
4726
|
),
|
|
@@ -4746,7 +4746,7 @@ function Toolbar(p) {
|
|
|
4746
4746
|
{
|
|
4747
4747
|
ref: attachOverflow,
|
|
4748
4748
|
"data-pptx-chrome": "ribbon-content",
|
|
4749
|
-
className:
|
|
4749
|
+
className: chunk5KFSMXI4_js.cn(
|
|
4750
4750
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
4751
4751
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
4752
4752
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -4945,7 +4945,7 @@ function getReactSlideBackgroundStyle(slide, slideSize) {
|
|
|
4945
4945
|
};
|
|
4946
4946
|
}
|
|
4947
4947
|
function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
|
|
4948
|
-
const { t } =
|
|
4948
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
4949
4949
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4950
4950
|
"div",
|
|
4951
4951
|
{
|
|
@@ -5157,7 +5157,7 @@ function ChartQuickActionsOverlay({
|
|
|
5157
5157
|
scale: stageScale = 1,
|
|
5158
5158
|
onUpdateElement
|
|
5159
5159
|
}) {
|
|
5160
|
-
const { t } =
|
|
5160
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
5161
5161
|
const [open, setOpen] = React109.useState(null);
|
|
5162
5162
|
const hostRef = React109.useRef(null);
|
|
5163
5163
|
React109.useEffect(() => {
|
|
@@ -5328,7 +5328,7 @@ function CommentMarkersOverlay({
|
|
|
5328
5328
|
canvasSize,
|
|
5329
5329
|
onCommentMarkerClick
|
|
5330
5330
|
}) {
|
|
5331
|
-
const { t } =
|
|
5331
|
+
const { t } = chunk5KFSMXI4_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
|
|
5332
5332
|
comments,
|
|
5333
5333
|
canvasSize.width,
|
|
5334
5334
|
canvasSize.height,
|
|
@@ -5372,7 +5372,7 @@ function ConnectorEndpointOverlay({
|
|
|
5372
5372
|
canvasStageRef,
|
|
5373
5373
|
onUpdateElement
|
|
5374
5374
|
}) {
|
|
5375
|
-
const { t } =
|
|
5375
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
5376
5376
|
const [drag, setDrag] = React109.useState(null);
|
|
5377
5377
|
const candidates = React109.useMemo(
|
|
5378
5378
|
() => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
@@ -5608,7 +5608,7 @@ function DrawingOverlaySvg({
|
|
|
5608
5608
|
onPointerDown,
|
|
5609
5609
|
onPointerMove,
|
|
5610
5610
|
onPointerUp,
|
|
5611
|
-
children: isStrokeActive && liveStrokeView ?
|
|
5611
|
+
children: isStrokeActive && liveStrokeView ? chunkOIQAJR57_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5612
5612
|
"path",
|
|
5613
5613
|
{
|
|
5614
5614
|
d: liveStrokeD,
|
|
@@ -5623,7 +5623,7 @@ function DrawingOverlaySvg({
|
|
|
5623
5623
|
}
|
|
5624
5624
|
);
|
|
5625
5625
|
}
|
|
5626
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
5626
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk5KFSMXI4_js.GRID_SIZE, visible }) {
|
|
5627
5627
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
5628
5628
|
const patternId = React109.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
5629
5629
|
if (!visible) {
|
|
@@ -5651,7 +5651,7 @@ function MotionPathOverlay({
|
|
|
5651
5651
|
canEdit,
|
|
5652
5652
|
onChangePath
|
|
5653
5653
|
}) {
|
|
5654
|
-
const { t } =
|
|
5654
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
5655
5655
|
const dragRef = React109.useRef(null);
|
|
5656
5656
|
const frame = {
|
|
5657
5657
|
originX: element.x + element.width / 2,
|
|
@@ -5794,7 +5794,7 @@ function ContextMenuSeparator() {
|
|
|
5794
5794
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "separator", "aria-orientation": "horizontal", className: "my-1 border-t border-border" });
|
|
5795
5795
|
}
|
|
5796
5796
|
function EditPointsMenu({ menu, onRun }) {
|
|
5797
|
-
const { t } =
|
|
5797
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
5798
5798
|
const stop2 = (event) => event.stopPropagation();
|
|
5799
5799
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5800
5800
|
"div",
|
|
@@ -5840,7 +5840,7 @@ function EditPointsOverlay({
|
|
|
5840
5840
|
onCommit,
|
|
5841
5841
|
onExit
|
|
5842
5842
|
}) {
|
|
5843
|
-
const { t } =
|
|
5843
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
5844
5844
|
const [, rerender] = React109.useReducer((n) => n + 1, 0);
|
|
5845
5845
|
const svgRef = React109.useRef(null);
|
|
5846
5846
|
const latest = React109.useRef({ onCommit, onExit });
|
|
@@ -5996,7 +5996,7 @@ function FreeformToolOverlay({
|
|
|
5996
5996
|
onCommit,
|
|
5997
5997
|
onCancel
|
|
5998
5998
|
}) {
|
|
5999
|
-
const { t } =
|
|
5999
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
6000
6000
|
const [, rerender] = React109.useReducer((n) => n + 1, 0);
|
|
6001
6001
|
const svgRef = React109.useRef(null);
|
|
6002
6002
|
const latest = React109.useRef({ onCommit, onCancel });
|
|
@@ -6139,7 +6139,7 @@ function PictureCropOverlay({
|
|
|
6139
6139
|
onUpdate,
|
|
6140
6140
|
onContextMenu
|
|
6141
6141
|
}) {
|
|
6142
|
-
const { t } =
|
|
6142
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
6143
6143
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
6144
6144
|
const dragRef = React109.useRef(null);
|
|
6145
6145
|
const latest = React109.useRef({ scale, onUpdate });
|
|
@@ -6187,7 +6187,7 @@ function PictureCropOverlay({
|
|
|
6187
6187
|
};
|
|
6188
6188
|
};
|
|
6189
6189
|
const { ghost, frame, handles } = overlay;
|
|
6190
|
-
const src =
|
|
6190
|
+
const src = chunkOIQAJR57_js.imgSrc(element);
|
|
6191
6191
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6192
6192
|
"div",
|
|
6193
6193
|
{
|
|
@@ -6363,7 +6363,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
6363
6363
|
}
|
|
6364
6364
|
);
|
|
6365
6365
|
}
|
|
6366
|
-
var HorizontalRuler = /* @__PURE__ */
|
|
6366
|
+
var HorizontalRuler = /* @__PURE__ */ chunkOIQAJR57_js.withDisplayName(
|
|
6367
6367
|
/* @__PURE__ */ React109__default.default.memo(HorizontalRulerView),
|
|
6368
6368
|
"HorizontalRuler"
|
|
6369
6369
|
);
|
|
@@ -6437,7 +6437,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
6437
6437
|
}
|
|
6438
6438
|
);
|
|
6439
6439
|
}
|
|
6440
|
-
var VerticalRuler = /* @__PURE__ */
|
|
6440
|
+
var VerticalRuler = /* @__PURE__ */ chunkOIQAJR57_js.withDisplayName(
|
|
6441
6441
|
/* @__PURE__ */ React109__default.default.memo(VerticalRulerView),
|
|
6442
6442
|
"VerticalRuler"
|
|
6443
6443
|
);
|
|
@@ -6604,10 +6604,10 @@ function SelectionHandleOverlay({
|
|
|
6604
6604
|
position: "absolute",
|
|
6605
6605
|
left: element.x,
|
|
6606
6606
|
top: element.y,
|
|
6607
|
-
width: Math.max(element.width,
|
|
6608
|
-
height: Math.max(element.height,
|
|
6609
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
6610
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
6607
|
+
width: Math.max(element.width, chunk5KFSMXI4_js.MIN_ELEMENT_SIZE),
|
|
6608
|
+
height: Math.max(element.height, chunk5KFSMXI4_js.MIN_ELEMENT_SIZE),
|
|
6609
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk5KFSMXI4_js.MIN_ELEMENT_SIZE)}px`,
|
|
6610
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk5KFSMXI4_js.MIN_ELEMENT_SIZE)}px`,
|
|
6611
6611
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
6612
6612
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
6613
6613
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -6619,7 +6619,7 @@ function SelectionHandleOverlay({
|
|
|
6619
6619
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
6620
6620
|
// any realistic per-slide element count.
|
|
6621
6621
|
zIndex: 58,
|
|
6622
|
-
transform:
|
|
6622
|
+
transform: chunk5KFSMXI4_js.getElementTransform(element),
|
|
6623
6623
|
transformOrigin: "center",
|
|
6624
6624
|
// Transparent everywhere a handle button is not, so a click that
|
|
6625
6625
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -6631,14 +6631,14 @@ function SelectionHandleOverlay({
|
|
|
6631
6631
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
6632
6632
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
6633
6633
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6634
|
-
|
|
6634
|
+
chunkOIQAJR57_js.ResizeHandles,
|
|
6635
6635
|
{
|
|
6636
6636
|
elementId: element.id,
|
|
6637
6637
|
adjustmentHandles,
|
|
6638
6638
|
onResizePointerDown,
|
|
6639
6639
|
onAdjustmentPointerDown,
|
|
6640
6640
|
rotation: element.rotation,
|
|
6641
|
-
nonRotationTransform:
|
|
6641
|
+
nonRotationTransform: chunk5KFSMXI4_js.getElementTransformWithoutRotation(element),
|
|
6642
6642
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
6643
6643
|
forcePointerEvents: true
|
|
6644
6644
|
}
|
|
@@ -7342,7 +7342,7 @@ function SlideCanvas(props) {
|
|
|
7342
7342
|
props.registerInlineEditReader
|
|
7343
7343
|
]
|
|
7344
7344
|
);
|
|
7345
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7345
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
7346
7346
|
}
|
|
7347
7347
|
function SlideCanvasContent({
|
|
7348
7348
|
imagePaste,
|
|
@@ -7611,7 +7611,7 @@ function SlideCanvasContent({
|
|
|
7611
7611
|
onPointerMove: handleStagePointerMove,
|
|
7612
7612
|
onPointerUp: handleStagePointerUp,
|
|
7613
7613
|
children: [
|
|
7614
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7614
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
7615
7615
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
7616
7616
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
7617
7617
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7623,7 +7623,7 @@ function SlideCanvasContent({
|
|
|
7623
7623
|
}
|
|
7624
7624
|
),
|
|
7625
7625
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7626
|
-
|
|
7626
|
+
chunkOIQAJR57_js.ElementRenderer,
|
|
7627
7627
|
{
|
|
7628
7628
|
element,
|
|
7629
7629
|
activeSlide,
|
|
@@ -7645,7 +7645,7 @@ function SlideCanvasContent({
|
|
|
7645
7645
|
),
|
|
7646
7646
|
renderInk: false,
|
|
7647
7647
|
renderGroups: true,
|
|
7648
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7648
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk5KFSMXI4_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7649
7649
|
onResizePointerDown: stableResizePointerDown,
|
|
7650
7650
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7651
7651
|
onRotate: stableRotate,
|
|
@@ -7667,7 +7667,7 @@ function SlideCanvasContent({
|
|
|
7667
7667
|
`tpl-${element.id}`
|
|
7668
7668
|
)),
|
|
7669
7669
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7670
|
-
|
|
7670
|
+
chunkOIQAJR57_js.ElementRenderer,
|
|
7671
7671
|
{
|
|
7672
7672
|
element,
|
|
7673
7673
|
activeSlide,
|
|
@@ -7689,7 +7689,7 @@ function SlideCanvasContent({
|
|
|
7689
7689
|
),
|
|
7690
7690
|
renderInk: true,
|
|
7691
7691
|
renderGroups: true,
|
|
7692
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7692
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk5KFSMXI4_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7693
7693
|
onResizePointerDown: stableResizePointerDown,
|
|
7694
7694
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7695
7695
|
onRotate: stableRotate,
|
|
@@ -7733,7 +7733,7 @@ function SlideCanvasContent({
|
|
|
7733
7733
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7734
7734
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
7735
7735
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7736
|
-
|
|
7736
|
+
chunkOIQAJR57_js.ElementRenderer,
|
|
7737
7737
|
{
|
|
7738
7738
|
element: editingMember.member,
|
|
7739
7739
|
activeSlide,
|
|
@@ -7768,11 +7768,11 @@ function SlideCanvasContent({
|
|
|
7768
7768
|
`group-member-edit-${editingMember.member.id}`
|
|
7769
7769
|
)
|
|
7770
7770
|
] }),
|
|
7771
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
7771
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk5KFSMXI4_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7772
7772
|
SelectionHandleOverlay,
|
|
7773
7773
|
{
|
|
7774
7774
|
element: selectedElement,
|
|
7775
|
-
adjustmentHandles:
|
|
7775
|
+
adjustmentHandles: chunk5KFSMXI4_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
7776
7776
|
onResizePointerDown: stableResizePointerDown,
|
|
7777
7777
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7778
7778
|
onRotate: stableRotate,
|
|
@@ -7879,14 +7879,14 @@ function SlideCanvasContent({
|
|
|
7879
7879
|
);
|
|
7880
7880
|
}
|
|
7881
7881
|
function LoadingState({ className }) {
|
|
7882
|
-
const { t } =
|
|
7882
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
7883
7883
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7884
7884
|
"div",
|
|
7885
7885
|
{
|
|
7886
7886
|
role: "status",
|
|
7887
7887
|
"aria-live": "polite",
|
|
7888
7888
|
"aria-atomic": "true",
|
|
7889
|
-
className:
|
|
7889
|
+
className: chunk5KFSMXI4_js.cn(
|
|
7890
7890
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
7891
7891
|
className
|
|
7892
7892
|
),
|
|
@@ -7909,7 +7909,7 @@ function ErrorState({ className, error }) {
|
|
|
7909
7909
|
{
|
|
7910
7910
|
role: "alert",
|
|
7911
7911
|
"aria-live": "assertive",
|
|
7912
|
-
className:
|
|
7912
|
+
className: chunk5KFSMXI4_js.cn(
|
|
7913
7913
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
7914
7914
|
className
|
|
7915
7915
|
),
|
|
@@ -7918,7 +7918,7 @@ function ErrorState({ className, error }) {
|
|
|
7918
7918
|
);
|
|
7919
7919
|
}
|
|
7920
7920
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
7921
|
-
const { t } =
|
|
7921
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
7922
7922
|
if (!isOpen) {
|
|
7923
7923
|
return null;
|
|
7924
7924
|
}
|
|
@@ -7940,7 +7940,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
7940
7940
|
}
|
|
7941
7941
|
)
|
|
7942
7942
|
] }),
|
|
7943
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
7943
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk5KFSMXI4_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7944
7944
|
"div",
|
|
7945
7945
|
{
|
|
7946
7946
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -7962,7 +7962,7 @@ function AccessibilityPanel({
|
|
|
7962
7962
|
reducedMotion,
|
|
7963
7963
|
onToggleReducedMotion
|
|
7964
7964
|
}) {
|
|
7965
|
-
const { t } =
|
|
7965
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
7966
7966
|
if (!isOpen) {
|
|
7967
7967
|
return null;
|
|
7968
7968
|
}
|
|
@@ -8000,14 +8000,14 @@ function AccessibilityPanel({
|
|
|
8000
8000
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
8001
8001
|
"aria-checked": reducedMotion ?? false,
|
|
8002
8002
|
onClick: onToggleReducedMotion,
|
|
8003
|
-
className:
|
|
8003
|
+
className: chunk5KFSMXI4_js.cn(
|
|
8004
8004
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
8005
8005
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
8006
8006
|
),
|
|
8007
8007
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8008
8008
|
"span",
|
|
8009
8009
|
{
|
|
8010
|
-
className:
|
|
8010
|
+
className: chunk5KFSMXI4_js.cn(
|
|
8011
8011
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
8012
8012
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
8013
8013
|
)
|
|
@@ -8026,7 +8026,7 @@ function AccessibilityPanel({
|
|
|
8026
8026
|
"div",
|
|
8027
8027
|
{
|
|
8028
8028
|
role: "listitem",
|
|
8029
|
-
className:
|
|
8029
|
+
className: chunk5KFSMXI4_js.cn(
|
|
8030
8030
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
8031
8031
|
/* Severity-based background and text colouring */
|
|
8032
8032
|
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"
|
|
@@ -8054,7 +8054,7 @@ function ExportProgressModal({
|
|
|
8054
8054
|
statusMessage,
|
|
8055
8055
|
onCancel
|
|
8056
8056
|
}) {
|
|
8057
|
-
const { t } =
|
|
8057
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8058
8058
|
const ref = useWebControl(
|
|
8059
8059
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
8060
8060
|
{ "export-cancel": () => onCancel() }
|
|
@@ -8062,7 +8062,7 @@ function ExportProgressModal({
|
|
|
8062
8062
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
8063
8063
|
}
|
|
8064
8064
|
function StatusBar(p) {
|
|
8065
|
-
const { t } =
|
|
8065
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8066
8066
|
const ref = React109.useRef(null);
|
|
8067
8067
|
React109.useEffect(() => {
|
|
8068
8068
|
const host = ref.current;
|
|
@@ -8142,7 +8142,7 @@ function ResizeHandle({
|
|
|
8142
8142
|
{
|
|
8143
8143
|
role: "separator",
|
|
8144
8144
|
"aria-orientation": direction,
|
|
8145
|
-
className:
|
|
8145
|
+
className: chunk5KFSMXI4_js.cn(
|
|
8146
8146
|
// Outer container: generous hit area for easy clicking.
|
|
8147
8147
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
8148
8148
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -8153,7 +8153,7 @@ function ResizeHandle({
|
|
|
8153
8153
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8154
8154
|
"div",
|
|
8155
8155
|
{
|
|
8156
|
-
className:
|
|
8156
|
+
className: chunk5KFSMXI4_js.cn(
|
|
8157
8157
|
"absolute transition-colors",
|
|
8158
8158
|
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"
|
|
8159
8159
|
)
|
|
@@ -8172,14 +8172,14 @@ function SlideThumbnailImpl({
|
|
|
8172
8172
|
}) {
|
|
8173
8173
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
8174
8174
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
8175
|
-
const width = previewWidth ??
|
|
8175
|
+
const width = previewWidth ?? chunk5KFSMXI4_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
8176
8176
|
const scale = width / safeCanvasWidth;
|
|
8177
8177
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
8178
8178
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
8179
8179
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
8180
|
-
const { t } =
|
|
8180
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8181
8181
|
const transitionLabel = slide.transition ? (() => {
|
|
8182
|
-
const opt =
|
|
8182
|
+
const opt = chunk5KFSMXI4_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
8183
8183
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
8184
8184
|
})() : void 0;
|
|
8185
8185
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8205,7 +8205,7 @@ function SlideThumbnailImpl({
|
|
|
8205
8205
|
...pptx.deviceStrokeStageStyle(scale)
|
|
8206
8206
|
},
|
|
8207
8207
|
children: [
|
|
8208
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8208
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.SlideBackgroundImageLayer, { slide }),
|
|
8209
8209
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8210
8210
|
"div",
|
|
8211
8211
|
{
|
|
@@ -8215,7 +8215,7 @@ function SlideThumbnailImpl({
|
|
|
8215
8215
|
}
|
|
8216
8216
|
),
|
|
8217
8217
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8218
|
-
|
|
8218
|
+
chunkOIQAJR57_js.StaticElementRenderer,
|
|
8219
8219
|
{
|
|
8220
8220
|
element,
|
|
8221
8221
|
activeSlide: slide,
|
|
@@ -8390,10 +8390,10 @@ function ContextMenuSurface({
|
|
|
8390
8390
|
}
|
|
8391
8391
|
function ContextMenu(props) {
|
|
8392
8392
|
const { contextMenuState, mode, onClose } = props;
|
|
8393
|
-
const { t } =
|
|
8393
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8394
8394
|
const customization = useViewerCustomizationContext();
|
|
8395
8395
|
const shapeFormat = useShapeFormatContext();
|
|
8396
|
-
const chartFormat =
|
|
8396
|
+
const chartFormat = chunkOIQAJR57_js.useChartFormatContext();
|
|
8397
8397
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
8398
8398
|
const handlers = {
|
|
8399
8399
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -8469,7 +8469,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
8469
8469
|
}
|
|
8470
8470
|
function CanvasContextMenu(props) {
|
|
8471
8471
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
8472
|
-
const { t } =
|
|
8472
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8473
8473
|
const customization = useViewerCustomizationContext();
|
|
8474
8474
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
8475
8475
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -8532,7 +8532,7 @@ function FindReplacePanel({
|
|
|
8532
8532
|
onReplaceAll,
|
|
8533
8533
|
onClose
|
|
8534
8534
|
}) {
|
|
8535
|
-
const { t } =
|
|
8535
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8536
8536
|
const searchInputRef = React109.useRef(null);
|
|
8537
8537
|
React109.useEffect(() => {
|
|
8538
8538
|
searchInputRef.current?.focus();
|
|
@@ -8727,7 +8727,7 @@ function SectionContextMenu({
|
|
|
8727
8727
|
onAddSection,
|
|
8728
8728
|
onClose
|
|
8729
8729
|
}) {
|
|
8730
|
-
const { t } =
|
|
8730
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8731
8731
|
React109.useEffect(() => {
|
|
8732
8732
|
const onKeyDown = (event) => {
|
|
8733
8733
|
if (event.key === "Escape") {
|
|
@@ -8828,7 +8828,7 @@ function SectionHeader({
|
|
|
8828
8828
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8829
8829
|
lu.LuChevronDown,
|
|
8830
8830
|
{
|
|
8831
|
-
className:
|
|
8831
|
+
className: chunk5KFSMXI4_js.cn(
|
|
8832
8832
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
8833
8833
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
8834
8834
|
)
|
|
@@ -8874,7 +8874,7 @@ function SlideContextMenu({
|
|
|
8874
8874
|
onAddSection,
|
|
8875
8875
|
onClose
|
|
8876
8876
|
}) {
|
|
8877
|
-
const { t } =
|
|
8877
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
8878
8878
|
const selected = state.selectedIndexes;
|
|
8879
8879
|
const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
|
|
8880
8880
|
const entries = pptx.buildSlidePaneContextMenuEntries({
|
|
@@ -8979,7 +8979,7 @@ function LazyThumbnailInner({
|
|
|
8979
8979
|
}
|
|
8980
8980
|
var LazyThumbnail = /* @__PURE__ */ React109__default.default.memo(LazyThumbnailInner);
|
|
8981
8981
|
function declaredSectionFacts(groups, sectionId) {
|
|
8982
|
-
const declared = groups.filter((group) => group.id !==
|
|
8982
|
+
const declared = groups.filter((group) => group.id !== chunk5KFSMXI4_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk5KFSMXI4_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
8983
8983
|
return {
|
|
8984
8984
|
isDeclared: declared.includes(sectionId),
|
|
8985
8985
|
index: declared.indexOf(sectionId),
|
|
@@ -9036,7 +9036,7 @@ function SlideItemInner({
|
|
|
9036
9036
|
onDrop,
|
|
9037
9037
|
slideRef
|
|
9038
9038
|
}) {
|
|
9039
|
-
const { t } =
|
|
9039
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
9040
9040
|
const isHidden = Boolean(slide.hidden);
|
|
9041
9041
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
9042
9042
|
const handleContextMenu = React109.useCallback(
|
|
@@ -9064,7 +9064,7 @@ function SlideItemInner({
|
|
|
9064
9064
|
"data-pptx-chrome": "slide-row",
|
|
9065
9065
|
"aria-describedby": cue.labelId,
|
|
9066
9066
|
"data-pptx-slide-hidden": cue.marker,
|
|
9067
|
-
className:
|
|
9067
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9068
9068
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
9069
9069
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
9070
9070
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -9086,7 +9086,7 @@ function SlideItemInner({
|
|
|
9086
9086
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9087
9087
|
"span",
|
|
9088
9088
|
{
|
|
9089
|
-
className:
|
|
9089
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9090
9090
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
9091
9091
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
9092
9092
|
),
|
|
@@ -9109,7 +9109,7 @@ function SlideItemInner({
|
|
|
9109
9109
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9110
9110
|
"div",
|
|
9111
9111
|
{
|
|
9112
|
-
className:
|
|
9112
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9113
9113
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
9114
9114
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
9115
9115
|
),
|
|
@@ -9307,8 +9307,8 @@ function SlidesPaneSidebar({
|
|
|
9307
9307
|
fieldContext,
|
|
9308
9308
|
tableStyleContext
|
|
9309
9309
|
}) {
|
|
9310
|
-
const { t } =
|
|
9311
|
-
const collab =
|
|
9310
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
9311
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
9312
9312
|
const slideRefs = React109.useRef(/* @__PURE__ */ new Map());
|
|
9313
9313
|
const renameInputRef = React109.useRef(null);
|
|
9314
9314
|
const slidePresenceMap = React109.useMemo(() => {
|
|
@@ -9333,7 +9333,7 @@ function SlidesPaneSidebar({
|
|
|
9333
9333
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
9334
9334
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
9335
9335
|
);
|
|
9336
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
9336
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk5KFSMXI4_js.DEFAULT_SECTION_GROUP_ID);
|
|
9337
9337
|
const {
|
|
9338
9338
|
collapsedSections,
|
|
9339
9339
|
renamingSectionId,
|
|
@@ -9403,7 +9403,7 @@ function SlidesPaneSidebar({
|
|
|
9403
9403
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
9404
9404
|
);
|
|
9405
9405
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
9406
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
9406
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkOIQAJR57_js.useVirtualizedSlides({
|
|
9407
9407
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
9408
9408
|
itemHeight: estimatedItemHeight
|
|
9409
9409
|
});
|
|
@@ -9648,7 +9648,7 @@ function HandoutMasterPanel({
|
|
|
9648
9648
|
onSlidesPerPageChange,
|
|
9649
9649
|
onBackgroundChange
|
|
9650
9650
|
}) {
|
|
9651
|
-
const { t } =
|
|
9651
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
9652
9652
|
if (!handoutMaster) {
|
|
9653
9653
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9654
9654
|
}
|
|
@@ -9660,7 +9660,7 @@ function HandoutMasterPanel({
|
|
|
9660
9660
|
{
|
|
9661
9661
|
type: "button",
|
|
9662
9662
|
"aria-pressed": slidesPerPage === count,
|
|
9663
|
-
className:
|
|
9663
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9664
9664
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9665
9665
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9666
9666
|
),
|
|
@@ -9703,7 +9703,7 @@ function NotesMasterPanel({
|
|
|
9703
9703
|
notesMaster,
|
|
9704
9704
|
onBackgroundChange
|
|
9705
9705
|
}) {
|
|
9706
|
-
const { t } =
|
|
9706
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
9707
9707
|
const placeholderLabels = React109.useMemo(() => {
|
|
9708
9708
|
if (!notesMaster?.placeholders) {
|
|
9709
9709
|
return [];
|
|
@@ -9765,7 +9765,7 @@ function SlideMastersList({
|
|
|
9765
9765
|
React109.useEffect(() => {
|
|
9766
9766
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9767
9767
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9768
|
-
const { t } =
|
|
9768
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
9769
9769
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9770
9770
|
slideMasters.map((master, masterIdx) => {
|
|
9771
9771
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -9778,7 +9778,7 @@ function SlideMastersList({
|
|
|
9778
9778
|
ref: isMasterActive ? activeRef : void 0,
|
|
9779
9779
|
"aria-pressed": isMasterActive,
|
|
9780
9780
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9781
|
-
className:
|
|
9781
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9782
9782
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9783
9783
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9784
9784
|
),
|
|
@@ -9795,7 +9795,7 @@ function SlideMastersList({
|
|
|
9795
9795
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9796
9796
|
"span",
|
|
9797
9797
|
{
|
|
9798
|
-
className:
|
|
9798
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9799
9799
|
"text-[10px] font-medium",
|
|
9800
9800
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9801
9801
|
),
|
|
@@ -9814,7 +9814,7 @@ function SlideMastersList({
|
|
|
9814
9814
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9815
9815
|
"aria-pressed": isLayoutActive,
|
|
9816
9816
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9817
|
-
className:
|
|
9817
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9818
9818
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9819
9819
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9820
9820
|
),
|
|
@@ -9831,7 +9831,7 @@ function SlideMastersList({
|
|
|
9831
9831
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9832
9832
|
"span",
|
|
9833
9833
|
{
|
|
9834
|
-
className:
|
|
9834
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9835
9835
|
"text-[9px]",
|
|
9836
9836
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9837
9837
|
),
|
|
@@ -9875,7 +9875,7 @@ function MasterViewSidebar({
|
|
|
9875
9875
|
onSlidesBackgroundChange
|
|
9876
9876
|
}) {
|
|
9877
9877
|
const scrollRef = React109.useRef(null);
|
|
9878
|
-
const { t } =
|
|
9878
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
9879
9879
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
9880
9880
|
{ slideMasters },
|
|
9881
9881
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -9923,7 +9923,7 @@ function MasterViewSidebar({
|
|
|
9923
9923
|
type: "button",
|
|
9924
9924
|
role: "tab",
|
|
9925
9925
|
"aria-selected": masterViewTab === tab.key,
|
|
9926
|
-
className:
|
|
9926
|
+
className: chunk5KFSMXI4_js.cn(
|
|
9927
9927
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
9928
9928
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9929
9929
|
),
|
|
@@ -10025,7 +10025,7 @@ function NotesMasterCanvas({
|
|
|
10025
10025
|
notesText,
|
|
10026
10026
|
slideNumber
|
|
10027
10027
|
}) {
|
|
10028
|
-
const { t } =
|
|
10028
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
10029
10029
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10030
10030
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10031
10031
|
const scale = React109.useMemo(() => {
|
|
@@ -10285,7 +10285,7 @@ function HandoutMasterCanvas({
|
|
|
10285
10285
|
slideThumbnails,
|
|
10286
10286
|
pageNumber
|
|
10287
10287
|
}) {
|
|
10288
|
-
const { t } =
|
|
10288
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
10289
10289
|
const slideAspect = 4 / 3;
|
|
10290
10290
|
const scale = React109.useMemo(() => {
|
|
10291
10291
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10426,7 +10426,7 @@ function SectionBlock({
|
|
|
10426
10426
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10427
10427
|
lu.LuChevronDown,
|
|
10428
10428
|
{
|
|
10429
|
-
className:
|
|
10429
|
+
className: chunk5KFSMXI4_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10430
10430
|
}
|
|
10431
10431
|
),
|
|
10432
10432
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10470,12 +10470,12 @@ function SlideCardImpl({
|
|
|
10470
10470
|
onDragLeave,
|
|
10471
10471
|
onDrop
|
|
10472
10472
|
}) {
|
|
10473
|
-
const { t } =
|
|
10473
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
10474
10474
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10475
10475
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10476
10476
|
"div",
|
|
10477
10477
|
{
|
|
10478
|
-
className:
|
|
10478
|
+
className: chunk5KFSMXI4_js.cn(
|
|
10479
10479
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10480
10480
|
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",
|
|
10481
10481
|
slide.hidden && "opacity-40"
|
|
@@ -10498,7 +10498,7 @@ function SlideCardImpl({
|
|
|
10498
10498
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10499
10499
|
"span",
|
|
10500
10500
|
{
|
|
10501
|
-
className:
|
|
10501
|
+
className: chunk5KFSMXI4_js.cn(
|
|
10502
10502
|
"text-[11px] font-medium px-0.5",
|
|
10503
10503
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10504
10504
|
),
|
|
@@ -10576,7 +10576,7 @@ function SorterContextMenu({
|
|
|
10576
10576
|
onToggleHide,
|
|
10577
10577
|
onClose
|
|
10578
10578
|
}) {
|
|
10579
|
-
const { t } =
|
|
10579
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
10580
10580
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10581
10581
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10582
10582
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -10931,7 +10931,7 @@ function SlideSorterOverlay({
|
|
|
10931
10931
|
onToggleHideSlides,
|
|
10932
10932
|
onClose
|
|
10933
10933
|
}) {
|
|
10934
|
-
const { t } =
|
|
10934
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
10935
10935
|
const state = useSlideSorterState({
|
|
10936
10936
|
slides,
|
|
10937
10937
|
templateElementsBySlideId,
|
|
@@ -11177,7 +11177,7 @@ function OutlineViewOverlay({
|
|
|
11177
11177
|
bumpHistory,
|
|
11178
11178
|
onClose
|
|
11179
11179
|
}) {
|
|
11180
|
-
const { t } =
|
|
11180
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
11181
11181
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11182
11182
|
slides,
|
|
11183
11183
|
canvasSize,
|
|
@@ -11268,7 +11268,7 @@ function ReadingViewStage({
|
|
|
11268
11268
|
"div",
|
|
11269
11269
|
{
|
|
11270
11270
|
className: "absolute inset-0",
|
|
11271
|
-
style: { backgroundColor:
|
|
11271
|
+
style: { backgroundColor: chunk5KFSMXI4_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11272
11272
|
}
|
|
11273
11273
|
),
|
|
11274
11274
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11287,7 +11287,7 @@ function ReadingViewStage({
|
|
|
11287
11287
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11288
11288
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11289
11289
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11290
|
-
|
|
11290
|
+
chunkOIQAJR57_js.StaticElementRenderer,
|
|
11291
11291
|
{
|
|
11292
11292
|
element,
|
|
11293
11293
|
activeSlide: slide,
|
|
@@ -11368,7 +11368,7 @@ function ReadingViewOverlay({
|
|
|
11368
11368
|
activeSlideIndex,
|
|
11369
11369
|
onExit
|
|
11370
11370
|
}) {
|
|
11371
|
-
const { t } =
|
|
11371
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
11372
11372
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11373
11373
|
slideCount: slides.length,
|
|
11374
11374
|
canvasSize,
|
|
@@ -11499,7 +11499,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11499
11499
|
if (segment.style.fontFamily) {
|
|
11500
11500
|
style.fontFamily = segment.style.fontFamily;
|
|
11501
11501
|
}
|
|
11502
|
-
if (segment.style.hyperlink &&
|
|
11502
|
+
if (segment.style.hyperlink && chunk5KFSMXI4_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11503
11503
|
const safeHref = segment.style.hyperlink;
|
|
11504
11504
|
style.color = "#4a9eff";
|
|
11505
11505
|
style.textDecoration = "underline";
|
|
@@ -11512,7 +11512,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11512
11512
|
style,
|
|
11513
11513
|
onClick: (e) => {
|
|
11514
11514
|
e.preventDefault();
|
|
11515
|
-
|
|
11515
|
+
chunk5KFSMXI4_js.safeOpenUrl(safeHref);
|
|
11516
11516
|
},
|
|
11517
11517
|
children: segment.text
|
|
11518
11518
|
},
|
|
@@ -11536,7 +11536,7 @@ function NotesPrintDialog({
|
|
|
11536
11536
|
onClose,
|
|
11537
11537
|
notesStyle
|
|
11538
11538
|
}) {
|
|
11539
|
-
const { t } =
|
|
11539
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
11540
11540
|
const printFrameRef = React109.useRef(null);
|
|
11541
11541
|
const handlePrint = React109.useCallback(() => {
|
|
11542
11542
|
const iframe = printFrameRef.current;
|
|
@@ -11594,7 +11594,7 @@ function NotesPrintDialog({
|
|
|
11594
11594
|
] }) });
|
|
11595
11595
|
}
|
|
11596
11596
|
function NotesToolbar(p) {
|
|
11597
|
-
const { t } =
|
|
11597
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
11598
11598
|
const ref = React109.useRef(null);
|
|
11599
11599
|
React109.useEffect(() => {
|
|
11600
11600
|
const host = ref.current;
|
|
@@ -11861,7 +11861,7 @@ function useSlideNotes({
|
|
|
11861
11861
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11862
11862
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11863
11863
|
e.preventDefault();
|
|
11864
|
-
|
|
11864
|
+
chunk5KFSMXI4_js.safeOpenUrl(href);
|
|
11865
11865
|
}
|
|
11866
11866
|
}, []);
|
|
11867
11867
|
return {
|
|
@@ -11898,7 +11898,7 @@ function SlideNotesPanel({
|
|
|
11898
11898
|
notesStyle,
|
|
11899
11899
|
onHeightChange
|
|
11900
11900
|
}) {
|
|
11901
|
-
const { t } =
|
|
11901
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
11902
11902
|
const rootRef = React109__default.default.useRef(null);
|
|
11903
11903
|
React109__default.default.useEffect(() => {
|
|
11904
11904
|
const el = rootRef.current;
|
|
@@ -11942,7 +11942,7 @@ function SlideNotesPanel({
|
|
|
11942
11942
|
});
|
|
11943
11943
|
const hasNotes = draft.trim().length > 0;
|
|
11944
11944
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
11945
|
-
const { dragY, handlers: dragHandlers } =
|
|
11945
|
+
const { dragY, handlers: dragHandlers } = chunkOIQAJR57_js.useSheetDismissDrag(onToggle);
|
|
11946
11946
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11947
11947
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11948
11948
|
"button",
|
|
@@ -11958,7 +11958,7 @@ function SlideNotesPanel({
|
|
|
11958
11958
|
{
|
|
11959
11959
|
ref: rootRef,
|
|
11960
11960
|
"data-pptx-chrome": "notes",
|
|
11961
|
-
className:
|
|
11961
|
+
className: chunk5KFSMXI4_js.cn(
|
|
11962
11962
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
11963
11963
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
11964
11964
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12142,7 +12142,7 @@ function VersionHistoryPanel({
|
|
|
12142
12142
|
onClose,
|
|
12143
12143
|
onRestore
|
|
12144
12144
|
}) {
|
|
12145
|
-
const { t } =
|
|
12145
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
12146
12146
|
const [versions, setVersions] = React109.useState([]);
|
|
12147
12147
|
const [loading, setLoading] = React109.useState(false);
|
|
12148
12148
|
const [restoringKey, setRestoringKey] = React109.useState(null);
|
|
@@ -12288,7 +12288,7 @@ function SlideDiffRow({
|
|
|
12288
12288
|
onAccept,
|
|
12289
12289
|
onReject
|
|
12290
12290
|
}) {
|
|
12291
|
-
const { t } =
|
|
12291
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
12292
12292
|
const [expanded, setExpanded] = React109.useState(diff.status === "changed");
|
|
12293
12293
|
const statusLabel = (() => {
|
|
12294
12294
|
switch (diff.status) {
|
|
@@ -12322,7 +12322,7 @@ function SlideDiffRow({
|
|
|
12322
12322
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12323
12323
|
"div",
|
|
12324
12324
|
{
|
|
12325
|
-
className:
|
|
12325
|
+
className: chunk5KFSMXI4_js.cn(
|
|
12326
12326
|
"rounded-lg border transition-colors",
|
|
12327
12327
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12328
12328
|
),
|
|
@@ -12336,7 +12336,7 @@ function SlideDiffRow({
|
|
|
12336
12336
|
children: [
|
|
12337
12337
|
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" }),
|
|
12338
12338
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12339
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12339
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk5KFSMXI4_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12340
12340
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12341
12341
|
diff.changes.length,
|
|
12342
12342
|
" ",
|
|
@@ -12346,7 +12346,7 @@ function SlideDiffRow({
|
|
|
12346
12346
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12347
12347
|
"span",
|
|
12348
12348
|
{
|
|
12349
|
-
className:
|
|
12349
|
+
className: chunk5KFSMXI4_js.cn(
|
|
12350
12350
|
"text-[10px] font-medium",
|
|
12351
12351
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12352
12352
|
),
|
|
@@ -12374,7 +12374,7 @@ function SlideDiffRow({
|
|
|
12374
12374
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12375
12375
|
"div",
|
|
12376
12376
|
{
|
|
12377
|
-
className:
|
|
12377
|
+
className: chunk5KFSMXI4_js.cn(
|
|
12378
12378
|
"rounded border overflow-hidden",
|
|
12379
12379
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12380
12380
|
),
|
|
@@ -12441,7 +12441,7 @@ function ComparePanel({
|
|
|
12441
12441
|
onRejectSlide,
|
|
12442
12442
|
onAcceptAll
|
|
12443
12443
|
}) {
|
|
12444
|
-
const { t } =
|
|
12444
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
12445
12445
|
const [accepted, setAccepted] = React109.useState({});
|
|
12446
12446
|
const [rejected, setRejected] = React109.useState({});
|
|
12447
12447
|
const handleAccept = React109.useCallback(
|
|
@@ -12570,7 +12570,7 @@ function PasswordProtectionDialog({
|
|
|
12570
12570
|
onSetPassword,
|
|
12571
12571
|
onRemovePassword
|
|
12572
12572
|
}) {
|
|
12573
|
-
const { t } =
|
|
12573
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
12574
12574
|
const [password, setPassword] = React109.useState("");
|
|
12575
12575
|
const [confirmPassword, setConfirmPassword] = React109.useState("");
|
|
12576
12576
|
const [showPassword, setShowPassword] = React109.useState(false);
|
|
@@ -12786,7 +12786,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12786
12786
|
customProperties,
|
|
12787
12787
|
onUpdate
|
|
12788
12788
|
}) {
|
|
12789
|
-
const { t } =
|
|
12789
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
12790
12790
|
const handleAdd = React109.useCallback(() => {
|
|
12791
12791
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
12792
12792
|
}, [customProperties, onUpdate]);
|
|
@@ -12988,7 +12988,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
12988
12988
|
onUpdateAppProperties,
|
|
12989
12989
|
canEdit
|
|
12990
12990
|
}) {
|
|
12991
|
-
const { t } =
|
|
12991
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
12992
12992
|
const handleEditableChange = React109.useCallback(
|
|
12993
12993
|
(key, value) => {
|
|
12994
12994
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13028,7 +13028,7 @@ function DocumentPropertiesDialog({
|
|
|
13028
13028
|
onClose,
|
|
13029
13029
|
onSave
|
|
13030
13030
|
}) {
|
|
13031
|
-
const { t } =
|
|
13031
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13032
13032
|
const [activeTab, setActiveTab] = React109.useState("summary");
|
|
13033
13033
|
const [draftCore, setDraftCore] = React109.useState({});
|
|
13034
13034
|
const [draftCustom, setDraftCustom] = React109.useState([]);
|
|
@@ -13079,7 +13079,7 @@ function DocumentPropertiesDialog({
|
|
|
13079
13079
|
const handleClose = React109.useCallback(() => {
|
|
13080
13080
|
onClose();
|
|
13081
13081
|
}, [onClose]);
|
|
13082
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13082
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(handleClose);
|
|
13083
13083
|
if (!isOpen) {
|
|
13084
13084
|
return null;
|
|
13085
13085
|
}
|
|
@@ -13216,7 +13216,7 @@ function FontEmbeddingPanel({
|
|
|
13216
13216
|
onClose,
|
|
13217
13217
|
onToggleEmbedFonts
|
|
13218
13218
|
}) {
|
|
13219
|
-
const { t } =
|
|
13219
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13220
13220
|
const [availableFamilies, setAvailableFamilies] = React109.useState(/* @__PURE__ */ new Set());
|
|
13221
13221
|
const [scanning, setScanning] = React109.useState(false);
|
|
13222
13222
|
const [scanned, setScanned] = React109.useState(false);
|
|
@@ -13344,7 +13344,7 @@ function DigitalSignaturesDialog({
|
|
|
13344
13344
|
hasSignatures,
|
|
13345
13345
|
signatureCount
|
|
13346
13346
|
}) {
|
|
13347
|
-
const { t } =
|
|
13347
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13348
13348
|
if (!isOpen) {
|
|
13349
13349
|
return null;
|
|
13350
13350
|
}
|
|
@@ -13416,7 +13416,7 @@ function SignatureStatusBadge({
|
|
|
13416
13416
|
signatureCount,
|
|
13417
13417
|
onClick
|
|
13418
13418
|
}) {
|
|
13419
|
-
const { t } =
|
|
13419
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13420
13420
|
if (!hasSignatures || signatureCount === 0) {
|
|
13421
13421
|
return null;
|
|
13422
13422
|
}
|
|
@@ -13442,7 +13442,7 @@ function SignatureStrippedDialog({
|
|
|
13442
13442
|
onConfirm,
|
|
13443
13443
|
onCancel
|
|
13444
13444
|
}) {
|
|
13445
|
-
const { t } =
|
|
13445
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13446
13446
|
if (!isOpen) {
|
|
13447
13447
|
return null;
|
|
13448
13448
|
}
|
|
@@ -13511,7 +13511,7 @@ function EncryptedFileDialog({
|
|
|
13511
13511
|
isOpen,
|
|
13512
13512
|
onClose
|
|
13513
13513
|
}) {
|
|
13514
|
-
const { t } =
|
|
13514
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13515
13515
|
if (!isOpen) {
|
|
13516
13516
|
return null;
|
|
13517
13517
|
}
|
|
@@ -13658,7 +13658,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13658
13658
|
] });
|
|
13659
13659
|
}
|
|
13660
13660
|
function PresentationEndOverlay({ onExit }) {
|
|
13661
|
-
const { t } =
|
|
13661
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13662
13662
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13663
13663
|
"button",
|
|
13664
13664
|
{
|
|
@@ -13674,9 +13674,9 @@ function PresentationSubtitleBar({
|
|
|
13674
13674
|
visible,
|
|
13675
13675
|
onCaptionChange
|
|
13676
13676
|
}) {
|
|
13677
|
-
const { t } =
|
|
13677
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13678
13678
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13679
|
-
pptx.subtitleSettingsFromOptions(
|
|
13679
|
+
pptx.subtitleSettingsFromOptions(chunkOIQAJR57_js.useViewerOptionsContext()),
|
|
13680
13680
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13681
13681
|
);
|
|
13682
13682
|
const [captionText, setCaptionText] = React109.useState("");
|
|
@@ -13753,7 +13753,7 @@ function renderNotesSegments(segments) {
|
|
|
13753
13753
|
});
|
|
13754
13754
|
}
|
|
13755
13755
|
function PresenterConsoleToolbar(p) {
|
|
13756
|
-
const { t } =
|
|
13756
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13757
13757
|
const ref = useWebControl(
|
|
13758
13758
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13759
13759
|
{
|
|
@@ -13844,7 +13844,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13844
13844
|
{
|
|
13845
13845
|
className: "absolute inset-0",
|
|
13846
13846
|
style: {
|
|
13847
|
-
backgroundColor:
|
|
13847
|
+
backgroundColor: chunk5KFSMXI4_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13848
13848
|
}
|
|
13849
13849
|
}
|
|
13850
13850
|
),
|
|
@@ -13870,7 +13870,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13870
13870
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13871
13871
|
},
|
|
13872
13872
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13873
|
-
|
|
13873
|
+
chunkOIQAJR57_js.StaticElementRenderer,
|
|
13874
13874
|
{
|
|
13875
13875
|
element,
|
|
13876
13876
|
activeSlide: slide,
|
|
@@ -13937,7 +13937,7 @@ function PresenterNotesRail({
|
|
|
13937
13937
|
onMove,
|
|
13938
13938
|
onUpdateNotes
|
|
13939
13939
|
}) {
|
|
13940
|
-
const { t } =
|
|
13940
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
13941
13941
|
const slide = slides[current];
|
|
13942
13942
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
13943
13943
|
const notesText = slide?.notes ?? "";
|
|
@@ -14062,7 +14062,7 @@ function PresenterNotesRail({
|
|
|
14062
14062
|
] });
|
|
14063
14063
|
}
|
|
14064
14064
|
function PresenterSlideNavigator(props) {
|
|
14065
|
-
const { t } =
|
|
14065
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14066
14066
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14067
14067
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14068
14068
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14204,7 +14204,7 @@ function PresenterView({
|
|
|
14204
14204
|
onSwapDisplays,
|
|
14205
14205
|
onUpdateNotes
|
|
14206
14206
|
}) {
|
|
14207
|
-
const { t } =
|
|
14207
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14208
14208
|
const [now, setNow] = React109.useState(Date.now());
|
|
14209
14209
|
React109.useEffect(() => {
|
|
14210
14210
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14361,7 +14361,7 @@ function MobilePresenterView({
|
|
|
14361
14361
|
onMovePresentationSlide,
|
|
14362
14362
|
onExit
|
|
14363
14363
|
}) {
|
|
14364
|
-
const { t } =
|
|
14364
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14365
14365
|
const [now, setNow] = React109.useState(Date.now());
|
|
14366
14366
|
React109.useEffect(() => {
|
|
14367
14367
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14474,7 +14474,7 @@ function RehearseTimingsHud({
|
|
|
14474
14474
|
paused,
|
|
14475
14475
|
onTogglePause
|
|
14476
14476
|
}) {
|
|
14477
|
-
const { t } =
|
|
14477
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14478
14478
|
const [tick, setTick] = React109.useState(0);
|
|
14479
14479
|
React109.useEffect(() => {
|
|
14480
14480
|
if (paused) {
|
|
@@ -14522,7 +14522,7 @@ function RehearseTimingsSummary({
|
|
|
14522
14522
|
onSave,
|
|
14523
14523
|
onDiscard
|
|
14524
14524
|
}) {
|
|
14525
|
-
const { t } =
|
|
14525
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14526
14526
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14527
14527
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14528
14528
|
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: [
|
|
@@ -14606,7 +14606,7 @@ function SelectionPane({
|
|
|
14606
14606
|
markDirty,
|
|
14607
14607
|
onClose
|
|
14608
14608
|
}) {
|
|
14609
|
-
const { t } =
|
|
14609
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14610
14610
|
const activeSlide = slides[activeSlideIndex];
|
|
14611
14611
|
const elements = activeSlide?.elements ?? [];
|
|
14612
14612
|
const [editingId, setEditingId] = React109.useState(null);
|
|
@@ -14761,7 +14761,7 @@ function SelectionPane({
|
|
|
14761
14761
|
setDragIndex(null);
|
|
14762
14762
|
setDragOverIndex(null);
|
|
14763
14763
|
},
|
|
14764
|
-
className:
|
|
14764
|
+
className: chunk5KFSMXI4_js.cn(
|
|
14765
14765
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14766
14766
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14767
14767
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14815,13 +14815,13 @@ function SelectionPane({
|
|
|
14815
14815
|
}
|
|
14816
14816
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14817
14817
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14818
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
14818
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunk5KFSMXI4_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14819
14819
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14820
14820
|
);
|
|
14821
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
14821
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunk5KFSMXI4_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14822
14822
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14823
14823
|
);
|
|
14824
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
14824
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunk5KFSMXI4_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14825
14825
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14826
14826
|
);
|
|
14827
14827
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -14922,7 +14922,7 @@ function AfterAnimationRow({
|
|
|
14922
14922
|
onActionChange,
|
|
14923
14923
|
onColorChange
|
|
14924
14924
|
}) {
|
|
14925
|
-
const { t } =
|
|
14925
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14926
14926
|
const commitRecentColor = useRecentColorCommit();
|
|
14927
14927
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
14928
14928
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -14973,7 +14973,7 @@ function AnimationTimelineSection({
|
|
|
14973
14973
|
canEdit,
|
|
14974
14974
|
handlers
|
|
14975
14975
|
}) {
|
|
14976
|
-
const { t } =
|
|
14976
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
14977
14977
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
14978
14978
|
const {
|
|
14979
14979
|
sortedAnimations,
|
|
@@ -15004,7 +15004,7 @@ function AnimationTimelineSection({
|
|
|
15004
15004
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15005
15005
|
"div",
|
|
15006
15006
|
{
|
|
15007
|
-
className:
|
|
15007
|
+
className: chunk5KFSMXI4_js.cn(
|
|
15008
15008
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15009
15009
|
animationTypeColor(bar.anim),
|
|
15010
15010
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15033,7 +15033,7 @@ function AnimationTimelineSection({
|
|
|
15033
15033
|
onDragLeave: handleDragLeave,
|
|
15034
15034
|
onDrop: (e) => handleDrop(index, e),
|
|
15035
15035
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15036
|
-
className:
|
|
15036
|
+
className: chunk5KFSMXI4_js.cn(
|
|
15037
15037
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15038
15038
|
"bg-muted/20 text-muted-foreground/70",
|
|
15039
15039
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15072,7 +15072,7 @@ function AnimationTimelineSection({
|
|
|
15072
15072
|
onDragEnd: handleDragEnd,
|
|
15073
15073
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15074
15074
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15075
|
-
className:
|
|
15075
|
+
className: chunk5KFSMXI4_js.cn(
|
|
15076
15076
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15077
15077
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15078
15078
|
isDragging && "opacity-40",
|
|
@@ -15133,7 +15133,7 @@ function BookmarkTriggerRow({
|
|
|
15133
15133
|
style,
|
|
15134
15134
|
onChange
|
|
15135
15135
|
}) {
|
|
15136
|
-
const { t } =
|
|
15136
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
15137
15137
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15138
15138
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15139
15139
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15166,7 +15166,7 @@ function EffectSoundRow({
|
|
|
15166
15166
|
onPick,
|
|
15167
15167
|
onPickStock
|
|
15168
15168
|
}) {
|
|
15169
|
-
const { t } =
|
|
15169
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
15170
15170
|
const fileInputRef = React109__default.default.useRef(null);
|
|
15171
15171
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15172
15172
|
const handleSelectChange = (event) => {
|
|
@@ -15204,7 +15204,7 @@ function EffectSoundRow({
|
|
|
15204
15204
|
}
|
|
15205
15205
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15206
15206
|
if (asset) {
|
|
15207
|
-
|
|
15207
|
+
chunkOIQAJR57_js.playAnimationSound(asset.dataUrl);
|
|
15208
15208
|
}
|
|
15209
15209
|
};
|
|
15210
15210
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15257,7 +15257,7 @@ function MotionPathRow({
|
|
|
15257
15257
|
canEdit,
|
|
15258
15258
|
onChange
|
|
15259
15259
|
}) {
|
|
15260
|
-
const { t } =
|
|
15260
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
15261
15261
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15262
15262
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15263
15263
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15379,7 +15379,7 @@ function useAnimationPreview({
|
|
|
15379
15379
|
}) {
|
|
15380
15380
|
const handleAnimationHover = React109.useCallback((anim) => {
|
|
15381
15381
|
if (anim.motionPath) {
|
|
15382
|
-
|
|
15382
|
+
chunk5KFSMXI4_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15383
15383
|
durationMs: anim.durationMs,
|
|
15384
15384
|
delayMs: anim.delayMs,
|
|
15385
15385
|
timingCurve: anim.timingCurve
|
|
@@ -15390,19 +15390,19 @@ function useAnimationPreview({
|
|
|
15390
15390
|
if (!preset || preset === "none") {
|
|
15391
15391
|
return;
|
|
15392
15392
|
}
|
|
15393
|
-
|
|
15393
|
+
chunk5KFSMXI4_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15394
15394
|
direction: anim.direction,
|
|
15395
15395
|
durationMs: anim.durationMs ?? 500,
|
|
15396
15396
|
timingCurve: anim.timingCurve
|
|
15397
15397
|
});
|
|
15398
15398
|
}, []);
|
|
15399
|
-
const handleAnimationHoverEnd = React109.useCallback(() =>
|
|
15399
|
+
const handleAnimationHoverEnd = React109.useCallback(() => chunk5KFSMXI4_js.stopPreviewAnimation(), []);
|
|
15400
15400
|
const handlePreviewClick = React109.useCallback(() => {
|
|
15401
15401
|
if (!selectedElementAnimation) {
|
|
15402
15402
|
return;
|
|
15403
15403
|
}
|
|
15404
15404
|
if (selectedElementAnimation.motionPath) {
|
|
15405
|
-
|
|
15405
|
+
chunk5KFSMXI4_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15406
15406
|
durationMs: selectedElementAnimation.durationMs,
|
|
15407
15407
|
delayMs: selectedElementAnimation.delayMs,
|
|
15408
15408
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15413,7 +15413,7 @@ function useAnimationPreview({
|
|
|
15413
15413
|
if (!preset || preset === "none") {
|
|
15414
15414
|
return;
|
|
15415
15415
|
}
|
|
15416
|
-
|
|
15416
|
+
chunk5KFSMXI4_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15417
15417
|
direction: selectedElementAnimation.direction,
|
|
15418
15418
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15419
15419
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15648,7 +15648,7 @@ function useAnimationHandlers({
|
|
|
15648
15648
|
return anim.elementId.slice(0, 8);
|
|
15649
15649
|
}
|
|
15650
15650
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15651
|
-
return text ||
|
|
15651
|
+
return text || chunk5KFSMXI4_js.getElementLabel(el);
|
|
15652
15652
|
},
|
|
15653
15653
|
[activeSlide.elements]
|
|
15654
15654
|
);
|
|
@@ -15659,7 +15659,7 @@ function useAnimationHandlers({
|
|
|
15659
15659
|
return id.slice(0, 8);
|
|
15660
15660
|
}
|
|
15661
15661
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15662
|
-
return text ||
|
|
15662
|
+
return text || chunk5KFSMXI4_js.getElementLabel(el);
|
|
15663
15663
|
}).join(", "),
|
|
15664
15664
|
[activeSlide.elements]
|
|
15665
15665
|
);
|
|
@@ -15715,8 +15715,8 @@ function AnimationPanel({
|
|
|
15715
15715
|
canEdit,
|
|
15716
15716
|
onUpdateSlide
|
|
15717
15717
|
}) {
|
|
15718
|
-
const { t } =
|
|
15719
|
-
const { viewportWidth } =
|
|
15718
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
15719
|
+
const { viewportWidth } = chunkOIQAJR57_js.useIsMobile();
|
|
15720
15720
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15721
15721
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15722
15722
|
const handlers = useAnimationHandlers({
|
|
@@ -15844,7 +15844,7 @@ function AnimationPanel({
|
|
|
15844
15844
|
type: "button",
|
|
15845
15845
|
disabled: !canEdit,
|
|
15846
15846
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15847
|
-
className:
|
|
15847
|
+
className: chunk5KFSMXI4_js.cn(
|
|
15848
15848
|
"flex items-center justify-center rounded border transition-colors",
|
|
15849
15849
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15850
15850
|
),
|
|
@@ -15910,7 +15910,7 @@ function AnimationPanel({
|
|
|
15910
15910
|
style: fieldStyle,
|
|
15911
15911
|
children: [
|
|
15912
15912
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15913
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15913
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk5KFSMXI4_js.getElementLabel(el) }, el.id))
|
|
15914
15914
|
]
|
|
15915
15915
|
}
|
|
15916
15916
|
)
|
|
@@ -16054,7 +16054,7 @@ function ActionTargetFields({
|
|
|
16054
16054
|
returnAfter,
|
|
16055
16055
|
onChange
|
|
16056
16056
|
}) {
|
|
16057
|
-
const { t } =
|
|
16057
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16058
16058
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16059
16059
|
if (urlLabelKey) {
|
|
16060
16060
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16063,7 +16063,7 @@ function ActionTargetFields({
|
|
|
16063
16063
|
type: "text",
|
|
16064
16064
|
disabled: !canEdit,
|
|
16065
16065
|
"aria-label": t(urlLabelKey),
|
|
16066
|
-
className:
|
|
16066
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-full"),
|
|
16067
16067
|
placeholder: "https://...",
|
|
16068
16068
|
value: url ?? "",
|
|
16069
16069
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16077,7 +16077,7 @@ function ActionTargetFields({
|
|
|
16077
16077
|
type: "number",
|
|
16078
16078
|
disabled: !canEdit,
|
|
16079
16079
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16080
|
-
className:
|
|
16080
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-full"),
|
|
16081
16081
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16082
16082
|
min: 1,
|
|
16083
16083
|
max: slideCount,
|
|
@@ -16099,7 +16099,7 @@ function ActionTargetFields({
|
|
|
16099
16099
|
"data-testid": "pptx-action-custom-show",
|
|
16100
16100
|
disabled: !canEdit,
|
|
16101
16101
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16102
|
-
className:
|
|
16102
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-full"),
|
|
16103
16103
|
value: customShowId ?? "",
|
|
16104
16104
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16105
16105
|
children: [
|
|
@@ -16131,7 +16131,7 @@ function ActionSettingsPanel({
|
|
|
16131
16131
|
customShows,
|
|
16132
16132
|
onUpdateElement
|
|
16133
16133
|
}) {
|
|
16134
|
-
const { t } =
|
|
16134
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16135
16135
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16136
16136
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16137
16137
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16207,7 +16207,7 @@ function ActionTriggerSection({
|
|
|
16207
16207
|
onChangeType,
|
|
16208
16208
|
onChangeTarget
|
|
16209
16209
|
}) {
|
|
16210
|
-
const { t } =
|
|
16210
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16211
16211
|
const [pendingType, setPendingType] = React109.useState(void 0);
|
|
16212
16212
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16213
16213
|
const changeType = (type) => {
|
|
@@ -16221,7 +16221,7 @@ function ActionTriggerSection({
|
|
|
16221
16221
|
{
|
|
16222
16222
|
disabled: !canEdit,
|
|
16223
16223
|
"aria-label": label,
|
|
16224
|
-
className:
|
|
16224
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-full"),
|
|
16225
16225
|
value: effectiveType,
|
|
16226
16226
|
onChange: (e) => changeType(e.target.value),
|
|
16227
16227
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16249,7 +16249,7 @@ var AXIS_ROWS = [
|
|
|
16249
16249
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16250
16250
|
];
|
|
16251
16251
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16252
|
-
const { t } =
|
|
16252
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16253
16253
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16254
16254
|
...row,
|
|
16255
16255
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16394,7 +16394,7 @@ function ChartAxisStyleOptions({
|
|
|
16394
16394
|
onSetTitleStyle,
|
|
16395
16395
|
onSetGridlineStyle
|
|
16396
16396
|
}) {
|
|
16397
|
-
const { t } =
|
|
16397
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16398
16398
|
const commitRecentColor = useRecentColorCommit();
|
|
16399
16399
|
const rows = SCALE_AXES.map((row) => ({
|
|
16400
16400
|
...row,
|
|
@@ -16566,7 +16566,7 @@ function ChartComboTypeOptions({
|
|
|
16566
16566
|
canEdit,
|
|
16567
16567
|
onSetSeriesType
|
|
16568
16568
|
}) {
|
|
16569
|
-
const { t } =
|
|
16569
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16570
16570
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16571
16571
|
return null;
|
|
16572
16572
|
}
|
|
@@ -16595,7 +16595,7 @@ function ChartDataLabelOptions({
|
|
|
16595
16595
|
canEdit,
|
|
16596
16596
|
onUpdateStyle
|
|
16597
16597
|
}) {
|
|
16598
|
-
const { t } =
|
|
16598
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16599
16599
|
if (!style?.hasDataLabels) {
|
|
16600
16600
|
return null;
|
|
16601
16601
|
}
|
|
@@ -16643,7 +16643,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16643
16643
|
canEdit,
|
|
16644
16644
|
onSetPointMarker
|
|
16645
16645
|
}) {
|
|
16646
|
-
const { t } =
|
|
16646
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16647
16647
|
const commitRecentColor = useRecentColorCommit();
|
|
16648
16648
|
const [seriesIndex, setSeriesIndex] = React109.useState(0);
|
|
16649
16649
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16749,7 +16749,7 @@ function ChartDataPointOptions({
|
|
|
16749
16749
|
onSetPointExplosion,
|
|
16750
16750
|
onSetPointLabel
|
|
16751
16751
|
}) {
|
|
16752
|
-
const { t } =
|
|
16752
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16753
16753
|
const commitRecentColor = useRecentColorCommit();
|
|
16754
16754
|
const [seriesIndex, setSeriesIndex] = React109.useState(0);
|
|
16755
16755
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -16851,7 +16851,7 @@ function ChartDataSheet({
|
|
|
16851
16851
|
highlightCell,
|
|
16852
16852
|
onChange
|
|
16853
16853
|
}) {
|
|
16854
|
-
const { t } =
|
|
16854
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16855
16855
|
const ref = React109.useRef(null);
|
|
16856
16856
|
React109.useLayoutEffect(() => {
|
|
16857
16857
|
if (ref.current) {
|
|
@@ -16882,7 +16882,7 @@ function ChartDisplayOptions({
|
|
|
16882
16882
|
hasGridlines,
|
|
16883
16883
|
onToggleGridlines
|
|
16884
16884
|
}) {
|
|
16885
|
-
const { t } =
|
|
16885
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16886
16886
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
16887
16887
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
16888
16888
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -16959,7 +16959,7 @@ function ChartErrorBarOptions({
|
|
|
16959
16959
|
canEdit,
|
|
16960
16960
|
onSetErrorBars
|
|
16961
16961
|
}) {
|
|
16962
|
-
const { t } =
|
|
16962
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
16963
16963
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
16964
16964
|
return null;
|
|
16965
16965
|
}
|
|
@@ -17039,7 +17039,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17039
17039
|
onRestoreSeries,
|
|
17040
17040
|
onSetDataLabelsRangeCache
|
|
17041
17041
|
}) {
|
|
17042
|
-
const { t } =
|
|
17042
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17043
17043
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17044
17044
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17045
17045
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17119,7 +17119,7 @@ function ChartMarkerOptions({
|
|
|
17119
17119
|
canEdit,
|
|
17120
17120
|
onSetMarker
|
|
17121
17121
|
}) {
|
|
17122
|
-
const { t } =
|
|
17122
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17123
17123
|
const commitRecentColor = useRecentColorCommit();
|
|
17124
17124
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17125
17125
|
return null;
|
|
@@ -17228,7 +17228,7 @@ function ChartSeriesColorOptions({
|
|
|
17228
17228
|
onSetColor,
|
|
17229
17229
|
onToggleSecondaryAxis
|
|
17230
17230
|
}) {
|
|
17231
|
-
const { t } =
|
|
17231
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17232
17232
|
const series = chartData.series;
|
|
17233
17233
|
if (series.length === 0) {
|
|
17234
17234
|
return null;
|
|
@@ -17278,7 +17278,7 @@ function ChartSubtypeOptions({
|
|
|
17278
17278
|
canEdit,
|
|
17279
17279
|
onUpdateChartData
|
|
17280
17280
|
}) {
|
|
17281
|
-
const { t } =
|
|
17281
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17282
17282
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17283
17283
|
return null;
|
|
17284
17284
|
}
|
|
@@ -17344,7 +17344,7 @@ function ChartTrendlineOptions({
|
|
|
17344
17344
|
canEdit,
|
|
17345
17345
|
onSetTrendline
|
|
17346
17346
|
}) {
|
|
17347
|
-
const { t } =
|
|
17347
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17348
17348
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17349
17349
|
return null;
|
|
17350
17350
|
}
|
|
@@ -17417,7 +17417,7 @@ function ChartTypeSelector({
|
|
|
17417
17417
|
onUpdateChartData,
|
|
17418
17418
|
onTitleChange
|
|
17419
17419
|
}) {
|
|
17420
|
-
const { t } =
|
|
17420
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17421
17421
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17422
17422
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17423
17423
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17498,7 +17498,7 @@ function RotationField({
|
|
|
17498
17498
|
canEdit,
|
|
17499
17499
|
onRotationPatch
|
|
17500
17500
|
}) {
|
|
17501
|
-
const { t } =
|
|
17501
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17502
17502
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17503
17503
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17504
17504
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17520,7 +17520,7 @@ function FlipFields({
|
|
|
17520
17520
|
canEdit,
|
|
17521
17521
|
onFlipPatch
|
|
17522
17522
|
}) {
|
|
17523
|
-
const { t } =
|
|
17523
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17524
17524
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17525
17525
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17526
17526
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17559,7 +17559,7 @@ function ChartUserShapePositionFields({
|
|
|
17559
17559
|
onRotationPatch,
|
|
17560
17560
|
onFlipPatch
|
|
17561
17561
|
}) {
|
|
17562
|
-
const { t } =
|
|
17562
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17563
17563
|
const update = (patch) => onPatch(row.path, patch);
|
|
17564
17564
|
if (row.depth === 0) {
|
|
17565
17565
|
const from = row.from;
|
|
@@ -17683,7 +17683,7 @@ function ChartUserShapeOptions({
|
|
|
17683
17683
|
canEdit,
|
|
17684
17684
|
onUpdateChartData
|
|
17685
17685
|
}) {
|
|
17686
|
-
const { t } =
|
|
17686
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
17687
17687
|
const shapes = chartData.userShapes;
|
|
17688
17688
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17689
17689
|
const kindLabel = (kind) => {
|
|
@@ -17841,8 +17841,8 @@ function ChartUserShapeOptions({
|
|
|
17841
17841
|
}
|
|
17842
17842
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17843
17843
|
const chartData = selectedElement.chartData;
|
|
17844
|
-
const followDataPoint =
|
|
17845
|
-
const { selection: partSelection } =
|
|
17844
|
+
const followDataPoint = chunkOIQAJR57_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17845
|
+
const { selection: partSelection } = chunkOIQAJR57_js.useChartPartSelection();
|
|
17846
17846
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17847
17847
|
const title = chartData?.title;
|
|
17848
17848
|
const chartType = chartData?.chartType;
|
|
@@ -18280,7 +18280,7 @@ function OleEditorDialog({
|
|
|
18280
18280
|
element,
|
|
18281
18281
|
onUpdateElement
|
|
18282
18282
|
}) {
|
|
18283
|
-
const { t } =
|
|
18283
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18284
18284
|
const dialogRef = React109.useRef(null);
|
|
18285
18285
|
const fileInputRef = React109.useRef(null);
|
|
18286
18286
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18528,7 +18528,7 @@ function ConnectorArrowsSection({
|
|
|
18528
18528
|
onUpdateShapeStyle,
|
|
18529
18529
|
markDirty
|
|
18530
18530
|
}) {
|
|
18531
|
-
const { t } =
|
|
18531
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18532
18532
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18533
18533
|
["Start", "End"].map((end) => {
|
|
18534
18534
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18547,7 +18547,7 @@ function ConnectorArrowsSection({
|
|
|
18547
18547
|
},
|
|
18548
18548
|
disabled: !canEdit,
|
|
18549
18549
|
className: SELECT_CLS2,
|
|
18550
|
-
children:
|
|
18550
|
+
children: chunk5KFSMXI4_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18551
18551
|
}
|
|
18552
18552
|
)
|
|
18553
18553
|
] }, end);
|
|
@@ -18571,7 +18571,7 @@ function ConnectorArrowsSection({
|
|
|
18571
18571
|
},
|
|
18572
18572
|
disabled: !canEdit,
|
|
18573
18573
|
className: SELECT_CLS2,
|
|
18574
|
-
children:
|
|
18574
|
+
children: chunk5KFSMXI4_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18575
18575
|
}
|
|
18576
18576
|
)
|
|
18577
18577
|
] }),
|
|
@@ -18590,7 +18590,7 @@ function ConnectorArrowsSection({
|
|
|
18590
18590
|
},
|
|
18591
18591
|
disabled: !canEdit,
|
|
18592
18592
|
className: SELECT_CLS2,
|
|
18593
|
-
children:
|
|
18593
|
+
children: chunk5KFSMXI4_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18594
18594
|
}
|
|
18595
18595
|
)
|
|
18596
18596
|
] })
|
|
@@ -18621,7 +18621,7 @@ function ConnectorPanel({
|
|
|
18621
18621
|
function GroupInfoPanel({
|
|
18622
18622
|
selectedElement
|
|
18623
18623
|
}) {
|
|
18624
|
-
const { t } =
|
|
18624
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18625
18625
|
if (selectedElement.type !== "group") {
|
|
18626
18626
|
return null;
|
|
18627
18627
|
}
|
|
@@ -18636,7 +18636,7 @@ function OlePropertiesPanel({
|
|
|
18636
18636
|
canEdit,
|
|
18637
18637
|
onUpdateElement
|
|
18638
18638
|
}) {
|
|
18639
|
-
const { t } =
|
|
18639
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18640
18640
|
const [isEditorOpen, setIsEditorOpen] = React109.useState(false);
|
|
18641
18641
|
if (selectedElement.type !== "ole") {
|
|
18642
18642
|
return null;
|
|
@@ -18681,7 +18681,7 @@ function OlePropertiesPanel({
|
|
|
18681
18681
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18682
18682
|
"span",
|
|
18683
18683
|
{
|
|
18684
|
-
className:
|
|
18684
|
+
className: chunk5KFSMXI4_js.cn(
|
|
18685
18685
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18686
18686
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18687
18687
|
),
|
|
@@ -18734,7 +18734,7 @@ function LayerOrderButtons({
|
|
|
18734
18734
|
"button",
|
|
18735
18735
|
{
|
|
18736
18736
|
type: "button",
|
|
18737
|
-
className:
|
|
18737
|
+
className: chunk5KFSMXI4_js.cn("flex-1", BTN2),
|
|
18738
18738
|
disabled: !canEdit,
|
|
18739
18739
|
onClick: () => onMoveLayer("forward"),
|
|
18740
18740
|
children: "\u2191 Forward"
|
|
@@ -18744,7 +18744,7 @@ function LayerOrderButtons({
|
|
|
18744
18744
|
"button",
|
|
18745
18745
|
{
|
|
18746
18746
|
type: "button",
|
|
18747
|
-
className:
|
|
18747
|
+
className: chunk5KFSMXI4_js.cn("flex-1", BTN2),
|
|
18748
18748
|
disabled: !canEdit,
|
|
18749
18749
|
onClick: () => onMoveLayer("backward"),
|
|
18750
18750
|
children: "\u2193 Backward"
|
|
@@ -18758,7 +18758,7 @@ function ArtisticEffectsGallery({
|
|
|
18758
18758
|
canEdit,
|
|
18759
18759
|
updateEffects
|
|
18760
18760
|
}) {
|
|
18761
|
-
const { t } =
|
|
18761
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18762
18762
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18763
18763
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18764
18764
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18768,7 +18768,7 @@ function ArtisticEffectsGallery({
|
|
|
18768
18768
|
{
|
|
18769
18769
|
type: "button",
|
|
18770
18770
|
disabled: !canEdit,
|
|
18771
|
-
className:
|
|
18771
|
+
className: chunk5KFSMXI4_js.cn(
|
|
18772
18772
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18773
18773
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18774
18774
|
),
|
|
@@ -18803,7 +18803,7 @@ function ColorChangeSection({
|
|
|
18803
18803
|
canEdit,
|
|
18804
18804
|
updateEffects
|
|
18805
18805
|
}) {
|
|
18806
|
-
const { t } =
|
|
18806
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18807
18807
|
const cc = fx?.clrChange;
|
|
18808
18808
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18809
18809
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18830,7 +18830,7 @@ function ColorChangeSection({
|
|
|
18830
18830
|
DebouncedColorInput,
|
|
18831
18831
|
{
|
|
18832
18832
|
disabled: !canEdit,
|
|
18833
|
-
value:
|
|
18833
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18834
18834
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18835
18835
|
onCommit: (hex) => updateEffects({
|
|
18836
18836
|
clrChange: {
|
|
@@ -18848,7 +18848,7 @@ function ColorChangeSection({
|
|
|
18848
18848
|
DebouncedColorInput,
|
|
18849
18849
|
{
|
|
18850
18850
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18851
|
-
value:
|
|
18851
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18852
18852
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18853
18853
|
onCommit: (hex) => updateEffects({
|
|
18854
18854
|
clrChange: {
|
|
@@ -18885,7 +18885,7 @@ function ColorWashSection({
|
|
|
18885
18885
|
canEdit,
|
|
18886
18886
|
updateEffects
|
|
18887
18887
|
}) {
|
|
18888
|
-
const { t } =
|
|
18888
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18889
18889
|
const wash = fx?.colorWash;
|
|
18890
18890
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18891
18891
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18908,7 +18908,7 @@ function ColorWashSection({
|
|
|
18908
18908
|
DebouncedColorInput,
|
|
18909
18909
|
{
|
|
18910
18910
|
disabled: !canEdit,
|
|
18911
|
-
value:
|
|
18911
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18912
18912
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18913
18913
|
onCommit: (hex) => updateEffects({
|
|
18914
18914
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -18985,7 +18985,7 @@ function DuotonePanel({
|
|
|
18985
18985
|
canEdit,
|
|
18986
18986
|
onUpdateElement
|
|
18987
18987
|
}) {
|
|
18988
|
-
const { t } =
|
|
18988
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
18989
18989
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
18990
18990
|
const commitDuotone = React109.useCallback(
|
|
18991
18991
|
(color1, color2) => {
|
|
@@ -19006,8 +19006,8 @@ function DuotonePanel({
|
|
|
19006
19006
|
}
|
|
19007
19007
|
});
|
|
19008
19008
|
}, [effects, onUpdateElement]);
|
|
19009
|
-
const shadowColor =
|
|
19010
|
-
const highlightColor =
|
|
19009
|
+
const shadowColor = chunk5KFSMXI4_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19010
|
+
const highlightColor = chunk5KFSMXI4_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19011
19011
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19012
19012
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19013
19013
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19038,7 +19038,7 @@ function DuotonePanel({
|
|
|
19038
19038
|
] }),
|
|
19039
19039
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19040
19040
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19041
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19041
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkOIQAJR57_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19042
19042
|
"button",
|
|
19043
19043
|
{
|
|
19044
19044
|
type: "button",
|
|
@@ -19074,7 +19074,7 @@ function ImageAdjustmentsPanel({
|
|
|
19074
19074
|
canEdit,
|
|
19075
19075
|
onUpdateElement
|
|
19076
19076
|
}) {
|
|
19077
|
-
const { t } =
|
|
19077
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
19078
19078
|
const effects = React109.useMemo(
|
|
19079
19079
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19080
19080
|
[selectedElement]
|
|
@@ -19175,7 +19175,7 @@ function ImageCropSection({
|
|
|
19175
19175
|
canEdit,
|
|
19176
19176
|
onUpdateElement
|
|
19177
19177
|
}) {
|
|
19178
|
-
const { t } =
|
|
19178
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
19179
19179
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19180
19180
|
return null;
|
|
19181
19181
|
}
|
|
@@ -19193,7 +19193,7 @@ function ImageCropSection({
|
|
|
19193
19193
|
max: MAX_CROP_PERCENT,
|
|
19194
19194
|
disabled: !croppable,
|
|
19195
19195
|
className: "accent-primary",
|
|
19196
|
-
value: Math.round(
|
|
19196
|
+
value: Math.round(chunk5KFSMXI4_js.clampCropValue(selectedElement[key]) * 100),
|
|
19197
19197
|
onChange: (e) => onUpdateElement({
|
|
19198
19198
|
[key]: Number(e.target.value) / 100
|
|
19199
19199
|
})
|
|
@@ -19240,7 +19240,7 @@ function ImagePropertiesPanel({
|
|
|
19240
19240
|
canEdit,
|
|
19241
19241
|
onUpdateElement
|
|
19242
19242
|
}) {
|
|
19243
|
-
const { t } =
|
|
19243
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
19244
19244
|
const fx = selectedElement.imageEffects;
|
|
19245
19245
|
const updateEffects = (patch) => {
|
|
19246
19246
|
onUpdateElement({
|
|
@@ -19257,7 +19257,7 @@ function ImagePropertiesPanel({
|
|
|
19257
19257
|
{
|
|
19258
19258
|
rows: 2,
|
|
19259
19259
|
disabled: !canEdit,
|
|
19260
|
-
className:
|
|
19260
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19261
19261
|
value: selectedElement.altText ?? "",
|
|
19262
19262
|
onChange: (e) => onUpdateElement({
|
|
19263
19263
|
altText: e.target.value
|
|
@@ -19445,7 +19445,7 @@ function InspectorFields({
|
|
|
19445
19445
|
liveTarget,
|
|
19446
19446
|
livePatch
|
|
19447
19447
|
}) {
|
|
19448
|
-
const { t } =
|
|
19448
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
19449
19449
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19450
19450
|
const change = (sectionId, fieldId, raw) => {
|
|
19451
19451
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19673,7 +19673,7 @@ function MediaInspector({
|
|
|
19673
19673
|
durationSeconds,
|
|
19674
19674
|
onUpdateElement
|
|
19675
19675
|
}) {
|
|
19676
|
-
const { t } =
|
|
19676
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
19677
19677
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19678
19678
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19679
19679
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19903,7 +19903,7 @@ function MediaPlaybackBookmarks({
|
|
|
19903
19903
|
onUpdateElement,
|
|
19904
19904
|
onSeekTo
|
|
19905
19905
|
}) {
|
|
19906
|
-
const { t } =
|
|
19906
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
19907
19907
|
const [newBookmarkLabel, setNewBookmarkLabel] = React109.useState("");
|
|
19908
19908
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19909
19909
|
const handleAddBookmark = React109.useCallback(() => {
|
|
@@ -20153,7 +20153,7 @@ function MediaPropertiesPanel({
|
|
|
20153
20153
|
canEdit,
|
|
20154
20154
|
onUpdateElement
|
|
20155
20155
|
}) {
|
|
20156
|
-
const { t } =
|
|
20156
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20157
20157
|
const mediaRef = React109.useRef(null);
|
|
20158
20158
|
const [isPlaying, setIsPlaying] = React109.useState(false);
|
|
20159
20159
|
const [currentTime, setCurrentTime] = React109.useState(0);
|
|
@@ -20387,7 +20387,7 @@ function AccessibilityTextSection({
|
|
|
20387
20387
|
canEdit,
|
|
20388
20388
|
onUpdateElement
|
|
20389
20389
|
}) {
|
|
20390
|
-
const { t } =
|
|
20390
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20391
20391
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20392
20392
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20393
20393
|
return null;
|
|
@@ -20402,7 +20402,7 @@ function AccessibilityTextSection({
|
|
|
20402
20402
|
rows: 2,
|
|
20403
20403
|
disabled: !canEdit,
|
|
20404
20404
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20405
|
-
className:
|
|
20405
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20406
20406
|
value: fields.altText,
|
|
20407
20407
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20408
20408
|
}
|
|
@@ -20416,7 +20416,7 @@ function AccessibilityTextSection({
|
|
|
20416
20416
|
type: "text",
|
|
20417
20417
|
disabled: !canEdit,
|
|
20418
20418
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20419
|
-
className:
|
|
20419
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "text-[11px]"),
|
|
20420
20420
|
value: fields.title,
|
|
20421
20421
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20422
20422
|
}
|
|
@@ -20444,7 +20444,7 @@ function RecentColorsRow({
|
|
|
20444
20444
|
disabled,
|
|
20445
20445
|
onCommit
|
|
20446
20446
|
}) {
|
|
20447
|
-
const { t } =
|
|
20447
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20448
20448
|
const { recentColors, pushColor } = useRecentColors();
|
|
20449
20449
|
const shown = recentColors.length > 0;
|
|
20450
20450
|
const ref = React109.useRef(null);
|
|
@@ -20486,7 +20486,7 @@ function ThemeColorSwatchGrid({
|
|
|
20486
20486
|
selectedHex,
|
|
20487
20487
|
onPick
|
|
20488
20488
|
}) {
|
|
20489
|
-
const { t } =
|
|
20489
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20490
20490
|
const themeColorMap = useThemeColorMap();
|
|
20491
20491
|
const columns = React109.useMemo(
|
|
20492
20492
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20533,7 +20533,7 @@ function SelectRow({
|
|
|
20533
20533
|
options,
|
|
20534
20534
|
onChange
|
|
20535
20535
|
}) {
|
|
20536
|
-
const { t } =
|
|
20536
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20537
20537
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20538
20538
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20539
20539
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20557,14 +20557,14 @@ function ColorPickerRow({
|
|
|
20557
20557
|
onChange,
|
|
20558
20558
|
styleChange
|
|
20559
20559
|
}) {
|
|
20560
|
-
const { t } =
|
|
20560
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20561
20561
|
const { pushColor } = useRecentColors();
|
|
20562
20562
|
const commit = (color, ref) => {
|
|
20563
20563
|
onChange(color, ref);
|
|
20564
20564
|
pushColor(color);
|
|
20565
20565
|
};
|
|
20566
20566
|
const handleEyedropper = async () => {
|
|
20567
|
-
const color = await
|
|
20567
|
+
const color = await chunk5KFSMXI4_js.openNativeEyeDropper();
|
|
20568
20568
|
if (color) {
|
|
20569
20569
|
commit(color);
|
|
20570
20570
|
}
|
|
@@ -20637,7 +20637,7 @@ function GradientStopRow({
|
|
|
20637
20637
|
onUpdate,
|
|
20638
20638
|
allStops
|
|
20639
20639
|
}) {
|
|
20640
|
-
const { t } =
|
|
20640
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20641
20641
|
const { pushColor } = useRecentColors();
|
|
20642
20642
|
const commitRecentColor = useRecentColorCommit();
|
|
20643
20643
|
const patchStop = (patch) => {
|
|
@@ -20650,9 +20650,9 @@ function GradientStopRow({
|
|
|
20650
20650
|
"input",
|
|
20651
20651
|
{
|
|
20652
20652
|
type: "color",
|
|
20653
|
-
value:
|
|
20653
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20654
20654
|
ref: commitRecentColor,
|
|
20655
|
-
onChange: (e) => patchStop({ color:
|
|
20655
|
+
onChange: (e) => patchStop({ color: chunk5KFSMXI4_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20656
20656
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20657
20657
|
}
|
|
20658
20658
|
),
|
|
@@ -20727,7 +20727,7 @@ function FillAdvancedControls({
|
|
|
20727
20727
|
onUpdateGradientStops,
|
|
20728
20728
|
onSetFillColor: _onSetFillColor
|
|
20729
20729
|
}) {
|
|
20730
|
-
const { t } =
|
|
20730
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20731
20731
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20732
20732
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20733
20733
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20781,7 +20781,7 @@ function FillAdvancedControls({
|
|
|
20781
20781
|
onClick: () => onUpdateGradientStops([
|
|
20782
20782
|
...gradientStops,
|
|
20783
20783
|
{
|
|
20784
|
-
color:
|
|
20784
|
+
color: chunk5KFSMXI4_js.normalizeHexColor(style?.fillColor, chunk5KFSMXI4_js.DEFAULT_FILL_COLOR),
|
|
20785
20785
|
position: 50,
|
|
20786
20786
|
opacity: 1
|
|
20787
20787
|
}
|
|
@@ -20795,9 +20795,9 @@ function FillAdvancedControls({
|
|
|
20795
20795
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20796
20796
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20797
20797
|
/* @__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) => {
|
|
20798
|
-
const fgColor =
|
|
20799
|
-
const bgColor =
|
|
20800
|
-
const svgPattern =
|
|
20798
|
+
const fgColor = chunk5KFSMXI4_js.normalizeHexColor(style?.fillColor, chunk5KFSMXI4_js.DEFAULT_FILL_COLOR);
|
|
20799
|
+
const bgColor = chunk5KFSMXI4_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20800
|
+
const svgPattern = chunk5KFSMXI4_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20801
20801
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20802
20802
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20803
20803
|
"button",
|
|
@@ -20830,7 +20830,7 @@ function FillAdvancedControls({
|
|
|
20830
20830
|
{
|
|
20831
20831
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20832
20832
|
prefix: "pattern-fg",
|
|
20833
|
-
value:
|
|
20833
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(style?.fillColor, chunk5KFSMXI4_js.DEFAULT_FILL_COLOR),
|
|
20834
20834
|
disabled: isLine,
|
|
20835
20835
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
20836
20836
|
styleChange: patternForeground
|
|
@@ -20841,7 +20841,7 @@ function FillAdvancedControls({
|
|
|
20841
20841
|
{
|
|
20842
20842
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20843
20843
|
prefix: "pattern-bg",
|
|
20844
|
-
value:
|
|
20844
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20845
20845
|
disabled: isLine,
|
|
20846
20846
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
20847
20847
|
styleChange: patternBackground
|
|
@@ -20906,7 +20906,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20906
20906
|
function QuickStylesGallery({
|
|
20907
20907
|
onUpdateShapeStyle
|
|
20908
20908
|
}) {
|
|
20909
|
-
const { t } =
|
|
20909
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20910
20910
|
const ref = React109.useRef(null);
|
|
20911
20911
|
React109.useLayoutEffect(() => {
|
|
20912
20912
|
const gallery = ref.current;
|
|
@@ -20943,14 +20943,14 @@ function StrokeEffectsSection({
|
|
|
20943
20943
|
onUpdateShapeStyle,
|
|
20944
20944
|
onSetStrokeColor
|
|
20945
20945
|
}) {
|
|
20946
|
-
const { t } =
|
|
20946
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20947
20947
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20948
20948
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20949
20949
|
ColorPickerRow,
|
|
20950
20950
|
{
|
|
20951
20951
|
label: t("pptx.inspector.stroke"),
|
|
20952
20952
|
prefix: "stroke",
|
|
20953
|
-
value:
|
|
20953
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(style?.strokeColor, chunk5KFSMXI4_js.DEFAULT_STROKE_COLOR),
|
|
20954
20954
|
selectedRef: style?.strokeColorRef,
|
|
20955
20955
|
onChange: onSetStrokeColor,
|
|
20956
20956
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -20993,7 +20993,7 @@ function FillStrokeProperties({
|
|
|
20993
20993
|
onSetFillColor,
|
|
20994
20994
|
onSetStrokeColor
|
|
20995
20995
|
}) {
|
|
20996
|
-
const { t } =
|
|
20996
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
20997
20997
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
20998
20998
|
const style = selectedShapeStyle;
|
|
20999
20999
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21009,10 +21009,10 @@ function FillStrokeProperties({
|
|
|
21009
21009
|
return;
|
|
21010
21010
|
}
|
|
21011
21011
|
if (nextMode === "gradient") {
|
|
21012
|
-
const existing =
|
|
21012
|
+
const existing = chunk5KFSMXI4_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21013
21013
|
const stops = existing.length >= 2 ? existing : [
|
|
21014
21014
|
{
|
|
21015
|
-
color:
|
|
21015
|
+
color: chunk5KFSMXI4_js.normalizeHexColor(style?.fillColor, chunk5KFSMXI4_js.DEFAULT_FILL_COLOR),
|
|
21016
21016
|
position: 0,
|
|
21017
21017
|
opacity: 1
|
|
21018
21018
|
},
|
|
@@ -21037,7 +21037,7 @@ function FillStrokeProperties({
|
|
|
21037
21037
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21038
21038
|
};
|
|
21039
21039
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21040
|
-
{ color:
|
|
21040
|
+
{ color: chunk5KFSMXI4_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21041
21041
|
{ color: "#ffffff", position: 100 }
|
|
21042
21042
|
];
|
|
21043
21043
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21064,7 +21064,7 @@ function FillStrokeProperties({
|
|
|
21064
21064
|
{
|
|
21065
21065
|
label: t("pptx.fill.fill"),
|
|
21066
21066
|
prefix: "fill",
|
|
21067
|
-
value:
|
|
21067
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(style?.fillColor, chunk5KFSMXI4_js.DEFAULT_FILL_COLOR),
|
|
21068
21068
|
selectedRef: style?.fillColorRef,
|
|
21069
21069
|
disabled: line,
|
|
21070
21070
|
onChange: onSetFillColor,
|
|
@@ -21102,7 +21102,7 @@ function Text3DProperties({
|
|
|
21102
21102
|
ts,
|
|
21103
21103
|
onUpdateTextStyle
|
|
21104
21104
|
}) {
|
|
21105
|
-
const { t } =
|
|
21105
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
21106
21106
|
const commitRecentColor = useRecentColorCommit();
|
|
21107
21107
|
const t3d = ts?.text3d;
|
|
21108
21108
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21149,7 +21149,7 @@ function Text3DProperties({
|
|
|
21149
21149
|
"input",
|
|
21150
21150
|
{
|
|
21151
21151
|
type: "color",
|
|
21152
|
-
value:
|
|
21152
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21153
21153
|
ref: commitRecentColor,
|
|
21154
21154
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21155
21155
|
className: COLOR_CLS
|
|
@@ -21316,7 +21316,7 @@ function AdvancedTextFormatting({
|
|
|
21316
21316
|
onUpdateTextStyle,
|
|
21317
21317
|
numChange
|
|
21318
21318
|
}) {
|
|
21319
|
-
const { t } =
|
|
21319
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
21320
21320
|
const commitRecentColor = useRecentColorCommit();
|
|
21321
21321
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21322
21322
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21338,7 +21338,7 @@ function AdvancedTextFormatting({
|
|
|
21338
21338
|
"input",
|
|
21339
21339
|
{
|
|
21340
21340
|
type: "color",
|
|
21341
|
-
value:
|
|
21341
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21342
21342
|
ref: commitRecentColor,
|
|
21343
21343
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21344
21344
|
disabled: !canEdit,
|
|
@@ -21480,7 +21480,7 @@ function TextReflectionSection({
|
|
|
21480
21480
|
onUpdateTextStyle,
|
|
21481
21481
|
numChange
|
|
21482
21482
|
}) {
|
|
21483
|
-
const { t } =
|
|
21483
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
21484
21484
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21485
21485
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21486
21486
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21588,7 +21588,7 @@ function TextEffectsPanel({
|
|
|
21588
21588
|
onUpdateTextStyle,
|
|
21589
21589
|
numChange
|
|
21590
21590
|
}) {
|
|
21591
|
-
const { t } =
|
|
21591
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
21592
21592
|
const commitRecentColor = useRecentColorCommit();
|
|
21593
21593
|
const hasShadow = Boolean(
|
|
21594
21594
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21634,7 +21634,7 @@ function TextEffectsPanel({
|
|
|
21634
21634
|
"input",
|
|
21635
21635
|
{
|
|
21636
21636
|
type: "color",
|
|
21637
|
-
value:
|
|
21637
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21638
21638
|
ref: commitRecentColor,
|
|
21639
21639
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21640
21640
|
className: COLOR_CLS2
|
|
@@ -21739,7 +21739,7 @@ function TextEffectsPanel({
|
|
|
21739
21739
|
"input",
|
|
21740
21740
|
{
|
|
21741
21741
|
type: "color",
|
|
21742
|
-
value:
|
|
21742
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21743
21743
|
ref: commitRecentColor,
|
|
21744
21744
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21745
21745
|
className: COLOR_CLS2
|
|
@@ -21789,7 +21789,7 @@ function TextWarpGallery({
|
|
|
21789
21789
|
ts,
|
|
21790
21790
|
onUpdateTextStyle
|
|
21791
21791
|
}) {
|
|
21792
|
-
const { t } =
|
|
21792
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
21793
21793
|
const [expanded, setExpanded] = React109__default.default.useState(false);
|
|
21794
21794
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21795
21795
|
const descriptor = React109.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21870,7 +21870,7 @@ function ShapeTextPanels({
|
|
|
21870
21870
|
onUpdateElementStyle,
|
|
21871
21871
|
onUpdateTextStyle
|
|
21872
21872
|
}) {
|
|
21873
|
-
const { t } =
|
|
21873
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
21874
21874
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21875
21875
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21876
21876
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21879,11 +21879,11 @@ function ShapeTextPanels({
|
|
|
21879
21879
|
{
|
|
21880
21880
|
value: selectedElement.shapeType || "rect",
|
|
21881
21881
|
disabled: !canEdit,
|
|
21882
|
-
className:
|
|
21882
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-full"),
|
|
21883
21883
|
onChange: (e) => onUpdateElement({
|
|
21884
21884
|
shapeType: e.target.value
|
|
21885
21885
|
}),
|
|
21886
|
-
children:
|
|
21886
|
+
children: chunk5KFSMXI4_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21887
21887
|
}
|
|
21888
21888
|
)
|
|
21889
21889
|
] }),
|
|
@@ -21895,7 +21895,7 @@ function ShapeTextPanels({
|
|
|
21895
21895
|
selectedElement,
|
|
21896
21896
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21897
21897
|
selectedShapeType: selectedElement.shapeType,
|
|
21898
|
-
selectedGradientStops:
|
|
21898
|
+
selectedGradientStops: chunk5KFSMXI4_js.sanitizeGradientStops(
|
|
21899
21899
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21900
21900
|
),
|
|
21901
21901
|
canEdit,
|
|
@@ -21931,7 +21931,7 @@ function ShapeTextPanels({
|
|
|
21931
21931
|
{
|
|
21932
21932
|
disabled: !canEdit,
|
|
21933
21933
|
"aria-label": "Text Color",
|
|
21934
|
-
value:
|
|
21934
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
21935
21935
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
21936
21936
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
21937
21937
|
patch: textColorPatch
|
|
@@ -22022,7 +22022,7 @@ function TextFormatToggle({
|
|
|
22022
22022
|
{
|
|
22023
22023
|
type: "button",
|
|
22024
22024
|
disabled,
|
|
22025
|
-
className:
|
|
22025
|
+
className: chunk5KFSMXI4_js.cn(
|
|
22026
22026
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22027
22027
|
italic && "italic",
|
|
22028
22028
|
underline && "underline",
|
|
@@ -22191,7 +22191,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22191
22191
|
canEdit,
|
|
22192
22192
|
onUpdateSmartArt
|
|
22193
22193
|
}) {
|
|
22194
|
-
const { t } =
|
|
22194
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22195
22195
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22196
22196
|
const handleLayoutSwitch = (newLayout) => {
|
|
22197
22197
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22210,7 +22210,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22210
22210
|
type: "button",
|
|
22211
22211
|
"data-testid": `smartart-layout-${type}`,
|
|
22212
22212
|
disabled: !canEdit,
|
|
22213
|
-
className:
|
|
22213
|
+
className: chunk5KFSMXI4_js.cn(
|
|
22214
22214
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22215
22215
|
"text-[9px] leading-tight",
|
|
22216
22216
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22237,7 +22237,7 @@ function SmartArtStyleControls({
|
|
|
22237
22237
|
onChangeColorScheme,
|
|
22238
22238
|
onChangeStyle
|
|
22239
22239
|
}) {
|
|
22240
|
-
const { t } =
|
|
22240
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22241
22241
|
const translate = React109__default.default.useCallback((key) => t(key), [t]);
|
|
22242
22242
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22243
22243
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22248,7 +22248,7 @@ function SmartArtStyleControls({
|
|
|
22248
22248
|
disabled: !canEdit,
|
|
22249
22249
|
"data-testid": "smartart-color-scheme",
|
|
22250
22250
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22251
|
-
className:
|
|
22251
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-full"),
|
|
22252
22252
|
value: colorScheme,
|
|
22253
22253
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22254
22254
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22263,7 +22263,7 @@ function SmartArtStyleControls({
|
|
|
22263
22263
|
type: "button",
|
|
22264
22264
|
disabled: !canEdit,
|
|
22265
22265
|
"aria-pressed": style === s,
|
|
22266
|
-
className:
|
|
22266
|
+
className: chunk5KFSMXI4_js.cn(
|
|
22267
22267
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22268
22268
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22269
22269
|
),
|
|
@@ -22289,14 +22289,14 @@ function SmartArtPropertiesPanel({
|
|
|
22289
22289
|
onUpdateElement,
|
|
22290
22290
|
box
|
|
22291
22291
|
}) {
|
|
22292
|
-
const { t } =
|
|
22292
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22293
22293
|
const { pushColor } = useRecentColors();
|
|
22294
22294
|
const paneRef = React109__default.default.useRef(null);
|
|
22295
22295
|
const applySmartArtData = (newData) => {
|
|
22296
22296
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22297
22297
|
newData,
|
|
22298
22298
|
newData.layout,
|
|
22299
|
-
|
|
22299
|
+
chunkOIQAJR57_js.resolveSmartArtDataPalette(newData),
|
|
22300
22300
|
newData.style ?? "flat",
|
|
22301
22301
|
"inspector",
|
|
22302
22302
|
box
|
|
@@ -22367,9 +22367,9 @@ function TableDataGrid({
|
|
|
22367
22367
|
canEdit,
|
|
22368
22368
|
onUpdateElement
|
|
22369
22369
|
}) {
|
|
22370
|
-
const { t } =
|
|
22370
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22371
22371
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22372
|
-
const { viewportWidth } =
|
|
22372
|
+
const { viewportWidth } = chunkOIQAJR57_js.useIsMobile();
|
|
22373
22373
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22374
22374
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22375
22375
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22533,7 +22533,7 @@ function TableCellPatternFill({
|
|
|
22533
22533
|
canEdit,
|
|
22534
22534
|
onUpdateCellStyle
|
|
22535
22535
|
}) {
|
|
22536
|
-
const { t } =
|
|
22536
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22537
22537
|
const commitRecentColor = useRecentColorCommit();
|
|
22538
22538
|
const translate = (key) => t(key);
|
|
22539
22539
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22588,7 +22588,7 @@ function TableCellAdvancedFill({
|
|
|
22588
22588
|
canEdit,
|
|
22589
22589
|
onUpdateCellStyle
|
|
22590
22590
|
}) {
|
|
22591
|
-
const { t } =
|
|
22591
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22592
22592
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22593
22593
|
const handleFillModeChange = (mode) => {
|
|
22594
22594
|
const next = mode;
|
|
@@ -22676,7 +22676,7 @@ function GradientControls({
|
|
|
22676
22676
|
canEdit,
|
|
22677
22677
|
onUpdateCellStyle
|
|
22678
22678
|
}) {
|
|
22679
|
-
const { t } =
|
|
22679
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22680
22680
|
const commitRecentColor = useRecentColorCommit();
|
|
22681
22681
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22682
22682
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22774,7 +22774,7 @@ function TableCellColorField({
|
|
|
22774
22774
|
disabled,
|
|
22775
22775
|
onCommit
|
|
22776
22776
|
}) {
|
|
22777
|
-
const hex =
|
|
22777
|
+
const hex = chunk5KFSMXI4_js.normalizeHexColor(value, fallback);
|
|
22778
22778
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22779
22779
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22780
22780
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22804,7 +22804,7 @@ function TableCellFormattingPanel({
|
|
|
22804
22804
|
onUpdateTableData,
|
|
22805
22805
|
onUpdateMergeRows
|
|
22806
22806
|
}) {
|
|
22807
|
-
const { t } =
|
|
22807
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
22808
22808
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22809
22809
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22810
22810
|
if (!cell) {
|
|
@@ -22882,7 +22882,7 @@ function TableCellFormattingPanel({
|
|
|
22882
22882
|
{
|
|
22883
22883
|
type: "button",
|
|
22884
22884
|
disabled: !canEdit,
|
|
22885
|
-
className:
|
|
22885
|
+
className: chunk5KFSMXI4_js.cn(
|
|
22886
22886
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22887
22887
|
cls,
|
|
22888
22888
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22901,7 +22901,7 @@ function TableCellFormattingPanel({
|
|
|
22901
22901
|
{
|
|
22902
22902
|
type: "button",
|
|
22903
22903
|
disabled: !canEdit,
|
|
22904
|
-
className:
|
|
22904
|
+
className: chunk5KFSMXI4_js.cn(
|
|
22905
22905
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22906
22906
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22907
22907
|
),
|
|
@@ -22919,7 +22919,7 @@ function TableCellFormattingPanel({
|
|
|
22919
22919
|
{
|
|
22920
22920
|
type: "button",
|
|
22921
22921
|
disabled: !canEdit,
|
|
22922
|
-
className:
|
|
22922
|
+
className: chunk5KFSMXI4_js.cn(
|
|
22923
22923
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22924
22924
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22925
22925
|
),
|
|
@@ -22942,7 +22942,7 @@ function TableCellFormattingPanel({
|
|
|
22942
22942
|
DebouncedColorInput,
|
|
22943
22943
|
{
|
|
22944
22944
|
disabled: !canEdit,
|
|
22945
|
-
value:
|
|
22945
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
22946
22946
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
22947
22947
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
22948
22948
|
}
|
|
@@ -22952,7 +22952,7 @@ function TableCellFormattingPanel({
|
|
|
22952
22952
|
{
|
|
22953
22953
|
type: "number",
|
|
22954
22954
|
disabled: !canEdit,
|
|
22955
|
-
className:
|
|
22955
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-14"),
|
|
22956
22956
|
min: 0,
|
|
22957
22957
|
max: 10,
|
|
22958
22958
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -22968,7 +22968,7 @@ function TableCellFormattingPanel({
|
|
|
22968
22968
|
{
|
|
22969
22969
|
type: "button",
|
|
22970
22970
|
disabled: !canEdit,
|
|
22971
|
-
className:
|
|
22971
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "text-center"),
|
|
22972
22972
|
onClick: () => {
|
|
22973
22973
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
22974
22974
|
if (newRows) {
|
|
@@ -22983,7 +22983,7 @@ function TableCellFormattingPanel({
|
|
|
22983
22983
|
{
|
|
22984
22984
|
type: "button",
|
|
22985
22985
|
disabled: !canEdit,
|
|
22986
|
-
className:
|
|
22986
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "text-center"),
|
|
22987
22987
|
onClick: () => {
|
|
22988
22988
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
22989
22989
|
if (newRows) {
|
|
@@ -22998,7 +22998,7 @@ function TableCellFormattingPanel({
|
|
|
22998
22998
|
{
|
|
22999
22999
|
type: "button",
|
|
23000
23000
|
disabled: !canEdit,
|
|
23001
|
-
className:
|
|
23001
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "text-center"),
|
|
23002
23002
|
onClick: () => {
|
|
23003
23003
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23004
23004
|
if (newRows) {
|
|
@@ -23017,7 +23017,7 @@ function TableStyleEditorFields({
|
|
|
23017
23017
|
canEdit,
|
|
23018
23018
|
onEdit
|
|
23019
23019
|
}) {
|
|
23020
|
-
const { t } =
|
|
23020
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23021
23021
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23022
23022
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23023
23023
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23122,7 +23122,7 @@ function BorderSideRow({
|
|
|
23122
23122
|
canEdit,
|
|
23123
23123
|
onEdit
|
|
23124
23124
|
}) {
|
|
23125
|
-
const { t } =
|
|
23125
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23126
23126
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23127
23127
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23128
23128
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23179,7 +23179,7 @@ function TableStyleEditor({
|
|
|
23179
23179
|
onAssignStyle,
|
|
23180
23180
|
onClose
|
|
23181
23181
|
}) {
|
|
23182
|
-
const { t } =
|
|
23182
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23183
23183
|
const themeColorMap = useThemeColorMap();
|
|
23184
23184
|
const [activeStyleId, setActiveStyleId] = React109.useState(
|
|
23185
23185
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23252,7 +23252,7 @@ function TablePropertiesPanel({
|
|
|
23252
23252
|
onTableStyleMapChange,
|
|
23253
23253
|
onDeleteTableStyle
|
|
23254
23254
|
}) {
|
|
23255
|
-
const { t } =
|
|
23255
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23256
23256
|
const [showStyleEditor, setShowStyleEditor] = React109.useState(false);
|
|
23257
23257
|
const td = tableElement.tableData;
|
|
23258
23258
|
if (!td) {
|
|
@@ -23334,7 +23334,7 @@ function TablePropertiesPanel({
|
|
|
23334
23334
|
] }),
|
|
23335
23335
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23336
23336
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23337
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23337
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk5KFSMXI4_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23338
23338
|
"button",
|
|
23339
23339
|
{
|
|
23340
23340
|
type: "button",
|
|
@@ -23482,7 +23482,7 @@ function ElementInspectorBody({
|
|
|
23482
23482
|
onUpdateTextStyle,
|
|
23483
23483
|
onMoveLayer
|
|
23484
23484
|
}) {
|
|
23485
|
-
const { t } =
|
|
23485
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23486
23486
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23487
23487
|
const handleToggleLock = () => {
|
|
23488
23488
|
if (!canEdit) {
|
|
@@ -23632,7 +23632,7 @@ function CommentMentionTextarea({
|
|
|
23632
23632
|
className,
|
|
23633
23633
|
ariaLabel
|
|
23634
23634
|
}) {
|
|
23635
|
-
const { t } =
|
|
23635
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23636
23636
|
const textareaRef = React109.useRef(null);
|
|
23637
23637
|
const [caret, setCaret] = React109.useState(value.length);
|
|
23638
23638
|
const [highlighted, setHighlighted] = React109.useState(0);
|
|
@@ -23721,7 +23721,7 @@ function CommentMentionTextarea({
|
|
|
23721
23721
|
"data-testid": "pptx-comment-mention-option",
|
|
23722
23722
|
role: "option",
|
|
23723
23723
|
"aria-selected": index === safeHighlighted,
|
|
23724
|
-
className:
|
|
23724
|
+
className: chunk5KFSMXI4_js.cn(
|
|
23725
23725
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23726
23726
|
index === safeHighlighted && "bg-accent"
|
|
23727
23727
|
),
|
|
@@ -23768,7 +23768,7 @@ function InspectorCommentReplyForm({
|
|
|
23768
23768
|
onSubmit,
|
|
23769
23769
|
onCancel
|
|
23770
23770
|
}) {
|
|
23771
|
-
const { t } =
|
|
23771
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23772
23772
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23773
23773
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23774
23774
|
CommentMentionTextarea,
|
|
@@ -23834,7 +23834,7 @@ function InspectorCommentRow({
|
|
|
23834
23834
|
onSelectElement,
|
|
23835
23835
|
depth = 0
|
|
23836
23836
|
}) {
|
|
23837
|
-
const { t } =
|
|
23837
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
23838
23838
|
const isEditing = editingCommentId === comment.id;
|
|
23839
23839
|
const isReplying = replyingToCommentId === comment.id;
|
|
23840
23840
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23844,7 +23844,7 @@ function InspectorCommentRow({
|
|
|
23844
23844
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23845
23845
|
"div",
|
|
23846
23846
|
{
|
|
23847
|
-
className:
|
|
23847
|
+
className: chunk5KFSMXI4_js.cn(
|
|
23848
23848
|
"rounded border border-border bg-card p-2",
|
|
23849
23849
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23850
23850
|
),
|
|
@@ -23858,7 +23858,7 @@ function InspectorCommentRow({
|
|
|
23858
23858
|
t("pptx.comments.resolved")
|
|
23859
23859
|
] })
|
|
23860
23860
|
] }),
|
|
23861
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23861
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk5KFSMXI4_js.formatCommentTimestamp(comment.createdAt) })
|
|
23862
23862
|
] }),
|
|
23863
23863
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23864
23864
|
"button",
|
|
@@ -23866,12 +23866,12 @@ function InspectorCommentRow({
|
|
|
23866
23866
|
type: "button",
|
|
23867
23867
|
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",
|
|
23868
23868
|
title: t("pptx.comments.commentingOn", {
|
|
23869
|
-
element:
|
|
23869
|
+
element: chunk5KFSMXI4_js.getElementLabel(targetElement)
|
|
23870
23870
|
}),
|
|
23871
23871
|
onClick: () => onSelectElement(targetElement.id),
|
|
23872
23872
|
children: [
|
|
23873
23873
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23874
|
-
|
|
23874
|
+
chunk5KFSMXI4_js.getElementLabel(targetElement)
|
|
23875
23875
|
]
|
|
23876
23876
|
}
|
|
23877
23877
|
) : /* @__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") })),
|
|
@@ -23940,7 +23940,7 @@ function InspectorCommentRow({
|
|
|
23940
23940
|
"button",
|
|
23941
23941
|
{
|
|
23942
23942
|
type: "button",
|
|
23943
|
-
className:
|
|
23943
|
+
className: chunk5KFSMXI4_js.cn(
|
|
23944
23944
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
23945
23945
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
23946
23946
|
),
|
|
@@ -24046,7 +24046,7 @@ function InspectorCommentsSection({
|
|
|
24046
24046
|
onSubmitReply,
|
|
24047
24047
|
onSelectElement
|
|
24048
24048
|
}) {
|
|
24049
|
-
const { t } =
|
|
24049
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24050
24050
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24051
24051
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24052
24052
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24083,7 +24083,7 @@ function InspectorCommentsSection({
|
|
|
24083
24083
|
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: [
|
|
24084
24084
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24085
24085
|
t("pptx.comments.commentingOn", {
|
|
24086
|
-
element:
|
|
24086
|
+
element: chunk5KFSMXI4_js.getElementLabel(selectedElement)
|
|
24087
24087
|
})
|
|
24088
24088
|
] }),
|
|
24089
24089
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24094,7 +24094,7 @@ function InspectorCommentsSection({
|
|
|
24094
24094
|
authors: commentAuthors,
|
|
24095
24095
|
rows: 2,
|
|
24096
24096
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24097
|
-
element:
|
|
24097
|
+
element: chunk5KFSMXI4_js.getElementLabel(selectedElement)
|
|
24098
24098
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24099
24099
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24100
24100
|
onChange: onSetCommentDraft,
|
|
@@ -24107,7 +24107,7 @@ function InspectorCommentsSection({
|
|
|
24107
24107
|
type: "button",
|
|
24108
24108
|
onClick: onAddComment,
|
|
24109
24109
|
disabled: !commentDraft.trim(),
|
|
24110
|
-
className:
|
|
24110
|
+
className: chunk5KFSMXI4_js.cn(
|
|
24111
24111
|
"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]!",
|
|
24112
24112
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24113
24113
|
),
|
|
@@ -24132,7 +24132,7 @@ function InspectorElementsTab({
|
|
|
24132
24132
|
onSelectElement,
|
|
24133
24133
|
onUpdateSlide
|
|
24134
24134
|
}) {
|
|
24135
|
-
const { t } =
|
|
24135
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24136
24136
|
const toggleHidden = (elementId2) => {
|
|
24137
24137
|
const elements2 = activeSlide?.elements;
|
|
24138
24138
|
if (!canEdit || !elements2) {
|
|
@@ -24148,13 +24148,13 @@ function InspectorElementsTab({
|
|
|
24148
24148
|
};
|
|
24149
24149
|
if (!activeSlide) {
|
|
24150
24150
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24151
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24151
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk5KFSMXI4_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24152
24152
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24153
24153
|
] });
|
|
24154
24154
|
}
|
|
24155
24155
|
const elements = activeSlide.elements || [];
|
|
24156
24156
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24157
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24157
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk5KFSMXI4_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24158
24158
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24159
24159
|
const index = elements.length - 1 - reversedIndex;
|
|
24160
24160
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24162,7 +24162,7 @@ function InspectorElementsTab({
|
|
|
24162
24162
|
"div",
|
|
24163
24163
|
{
|
|
24164
24164
|
title: `${el.type} - ${el.id}`,
|
|
24165
|
-
className:
|
|
24165
|
+
className: chunk5KFSMXI4_js.cn(
|
|
24166
24166
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24167
24167
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24168
24168
|
),
|
|
@@ -24198,8 +24198,8 @@ function InspectorPaneHeader({
|
|
|
24198
24198
|
onSetActiveTab,
|
|
24199
24199
|
onClose
|
|
24200
24200
|
}) {
|
|
24201
|
-
const { t } =
|
|
24202
|
-
const { viewportWidth } =
|
|
24201
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24202
|
+
const { viewportWidth } = chunkOIQAJR57_js.useIsMobile();
|
|
24203
24203
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24204
24204
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24205
24205
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24222,7 +24222,7 @@ function InspectorPaneHeader({
|
|
|
24222
24222
|
type: "button",
|
|
24223
24223
|
title: t(labelKey),
|
|
24224
24224
|
style: touchBtnStyle,
|
|
24225
|
-
className:
|
|
24225
|
+
className: chunk5KFSMXI4_js.cn(
|
|
24226
24226
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24227
24227
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24228
24228
|
),
|
|
@@ -24282,7 +24282,7 @@ function CustomPropertiesBlock({
|
|
|
24282
24282
|
canEdit,
|
|
24283
24283
|
onUpdate
|
|
24284
24284
|
}) {
|
|
24285
|
-
const { t } =
|
|
24285
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24286
24286
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24287
24287
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24288
24288
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24336,7 +24336,7 @@ function CustomPropertiesBlock({
|
|
|
24336
24336
|
"button",
|
|
24337
24337
|
{
|
|
24338
24338
|
type: "button",
|
|
24339
|
-
className:
|
|
24339
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24340
24340
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24341
24341
|
children: "\xD7"
|
|
24342
24342
|
}
|
|
@@ -24349,7 +24349,7 @@ function NotesHandoutCard({
|
|
|
24349
24349
|
notesMaster,
|
|
24350
24350
|
handoutMaster
|
|
24351
24351
|
}) {
|
|
24352
|
-
const { t } =
|
|
24352
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24353
24353
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24354
24354
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24355
24355
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24386,7 +24386,7 @@ function DocumentPropertiesCard({
|
|
|
24386
24386
|
onUpdateAppProperties,
|
|
24387
24387
|
onUpdateCustomProperties
|
|
24388
24388
|
}) {
|
|
24389
|
-
const { t } =
|
|
24389
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24390
24390
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24391
24391
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24392
24392
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24440,7 +24440,7 @@ function DocumentPropertiesCard({
|
|
|
24440
24440
|
function SlideSizeRescalePrompt({
|
|
24441
24441
|
onChoose
|
|
24442
24442
|
}) {
|
|
24443
|
-
const { t } =
|
|
24443
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24444
24444
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24445
24445
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24446
24446
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24482,7 +24482,7 @@ function SlideSizeCard({
|
|
|
24482
24482
|
onUpdateSlideSize,
|
|
24483
24483
|
hasContent
|
|
24484
24484
|
}) {
|
|
24485
|
-
const { t } =
|
|
24485
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24486
24486
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24487
24487
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24488
24488
|
const [pendingSize, setPendingSize] = React109.useState(null);
|
|
@@ -24593,7 +24593,7 @@ function PresentationSettingsCard({
|
|
|
24593
24593
|
canEdit,
|
|
24594
24594
|
onUpdate
|
|
24595
24595
|
}) {
|
|
24596
|
-
const { t } =
|
|
24596
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24597
24597
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24598
24598
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24599
24599
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24664,7 +24664,7 @@ function PresentationSettingsCard({
|
|
|
24664
24664
|
min: 1,
|
|
24665
24665
|
max: 16,
|
|
24666
24666
|
disabled: !canEdit,
|
|
24667
|
-
className:
|
|
24667
|
+
className: chunk5KFSMXI4_js.cn(INPUT2, "w-20"),
|
|
24668
24668
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24669
24669
|
onChange: (e) => onUpdate({
|
|
24670
24670
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24685,7 +24685,7 @@ function ThemeSelectorCard({
|
|
|
24685
24685
|
canEdit,
|
|
24686
24686
|
onApplyTheme
|
|
24687
24687
|
}) {
|
|
24688
|
-
const { t } =
|
|
24688
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24689
24689
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24690
24690
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24691
24691
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24748,7 +24748,7 @@ function SlideThemeOverridePanel({
|
|
|
24748
24748
|
canEdit,
|
|
24749
24749
|
onUpdateSlide
|
|
24750
24750
|
}) {
|
|
24751
|
-
const { t } =
|
|
24751
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24752
24752
|
const translate = React109.useCallback((key) => t(key), [t]);
|
|
24753
24753
|
const override = activeSlide?.clrMapOverride;
|
|
24754
24754
|
const isOverrideActive = override !== void 0;
|
|
@@ -24855,7 +24855,7 @@ function DirectionPicker({
|
|
|
24855
24855
|
disabled,
|
|
24856
24856
|
onChange
|
|
24857
24857
|
}) {
|
|
24858
|
-
const { t } =
|
|
24858
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24859
24859
|
if (directions.length <= 3) {
|
|
24860
24860
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24861
24861
|
"button",
|
|
@@ -24897,10 +24897,10 @@ function TransitionPreview({
|
|
|
24897
24897
|
const previewRef = React109.useRef(null);
|
|
24898
24898
|
const [playing, setPlaying] = React109.useState(false);
|
|
24899
24899
|
const [animKey, setAnimKey] = React109.useState(0);
|
|
24900
|
-
const { t } =
|
|
24900
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24901
24901
|
const durationMs = transition.durationMs ?? 500;
|
|
24902
24902
|
const animations = React109.useMemo(
|
|
24903
|
-
() =>
|
|
24903
|
+
() => chunkOIQAJR57_js.getSlideTransitionAnimations(
|
|
24904
24904
|
transition.type,
|
|
24905
24905
|
durationMs,
|
|
24906
24906
|
transition.direction,
|
|
@@ -24969,7 +24969,7 @@ function TransitionPreview({
|
|
|
24969
24969
|
]
|
|
24970
24970
|
}
|
|
24971
24971
|
),
|
|
24972
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
24972
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkOIQAJR57_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
24973
24973
|
] });
|
|
24974
24974
|
}
|
|
24975
24975
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -24981,7 +24981,7 @@ function SlideTransitionSection({
|
|
|
24981
24981
|
canEdit = true,
|
|
24982
24982
|
onTransitionChange
|
|
24983
24983
|
}) {
|
|
24984
|
-
const { t } =
|
|
24984
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
24985
24985
|
if (!activeSlide) {
|
|
24986
24986
|
return null;
|
|
24987
24987
|
}
|
|
@@ -25012,7 +25012,7 @@ function SlideTransitionSection({
|
|
|
25012
25012
|
type: e.target.value
|
|
25013
25013
|
}),
|
|
25014
25014
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25015
|
-
children:
|
|
25015
|
+
children: chunk5KFSMXI4_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25016
25016
|
}
|
|
25017
25017
|
)
|
|
25018
25018
|
] }),
|
|
@@ -25170,7 +25170,7 @@ function TagsSection({
|
|
|
25170
25170
|
onUpdateTagCollections,
|
|
25171
25171
|
canEdit
|
|
25172
25172
|
}) {
|
|
25173
|
-
const { t } =
|
|
25173
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
25174
25174
|
const [collapsed, setCollapsed] = React109.useState(true);
|
|
25175
25175
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25176
25176
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25228,7 +25228,7 @@ function TagsSection({
|
|
|
25228
25228
|
"button",
|
|
25229
25229
|
{
|
|
25230
25230
|
type: "button",
|
|
25231
|
-
className:
|
|
25231
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25232
25232
|
title: t("pptx.tags.deleteTag"),
|
|
25233
25233
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25234
25234
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25270,7 +25270,7 @@ function PresentationPropertiesPanel({
|
|
|
25270
25270
|
tagCollections,
|
|
25271
25271
|
onUpdateTagCollections
|
|
25272
25272
|
}) {
|
|
25273
|
-
const { t } =
|
|
25273
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
25274
25274
|
const handleTransitionChange = React109__default.default.useCallback(
|
|
25275
25275
|
(updates) => {
|
|
25276
25276
|
onUpdateSlide({
|
|
@@ -25357,7 +25357,7 @@ function PresentationPropertiesPanel({
|
|
|
25357
25357
|
canEdit
|
|
25358
25358
|
}
|
|
25359
25359
|
) }),
|
|
25360
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25360
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk5KFSMXI4_js.cn(CARD2, "space-y-1"), children: [
|
|
25361
25361
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25362
25362
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25363
25363
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25375,17 +25375,17 @@ function SlideBackgroundPanel({
|
|
|
25375
25375
|
onSetTemplateBackground,
|
|
25376
25376
|
onGetTemplateBackgroundColor
|
|
25377
25377
|
}) {
|
|
25378
|
-
const { t } =
|
|
25378
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
25379
25379
|
const bgImageInputRef = React109.useRef(null);
|
|
25380
25380
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25381
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25381
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk5KFSMXI4_js.cn(CARD2, "space-y-2"), children: [
|
|
25382
25382
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25383
25383
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25384
25384
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25385
25385
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25386
25386
|
DebouncedColorInput,
|
|
25387
25387
|
{
|
|
25388
|
-
value:
|
|
25388
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25389
25389
|
disabled: !canEdit,
|
|
25390
25390
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25391
25391
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25424,7 +25424,7 @@ function SlideBackgroundPanel({
|
|
|
25424
25424
|
"button",
|
|
25425
25425
|
{
|
|
25426
25426
|
type: "button",
|
|
25427
|
-
className:
|
|
25427
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "flex-1 text-center"),
|
|
25428
25428
|
disabled: !canEdit,
|
|
25429
25429
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25430
25430
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25457,7 +25457,7 @@ function SlideBackgroundPanel({
|
|
|
25457
25457
|
"button",
|
|
25458
25458
|
{
|
|
25459
25459
|
type: "button",
|
|
25460
|
-
className:
|
|
25460
|
+
className: chunk5KFSMXI4_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25461
25461
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25462
25462
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25463
25463
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25494,21 +25494,21 @@ function TemplateBackgroundCard({
|
|
|
25494
25494
|
onSetTemplateBackground,
|
|
25495
25495
|
onGetTemplateBackgroundColor
|
|
25496
25496
|
}) {
|
|
25497
|
-
const { t } =
|
|
25497
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
25498
25498
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25499
25499
|
activeSlide,
|
|
25500
25500
|
slideMasters,
|
|
25501
25501
|
t("pptx.master.layout"),
|
|
25502
25502
|
t("pptx.master.master")
|
|
25503
25503
|
);
|
|
25504
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25504
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk5KFSMXI4_js.cn(CARD2, "space-y-2"), children: [
|
|
25505
25505
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25506
25506
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25507
25507
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25508
25508
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25509
25509
|
DebouncedColorInput,
|
|
25510
25510
|
{
|
|
25511
|
-
value:
|
|
25511
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25512
25512
|
disabled: !canEdit,
|
|
25513
25513
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25514
25514
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25521,7 +25521,7 @@ function TemplateBackgroundCard({
|
|
|
25521
25521
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25522
25522
|
DebouncedColorInput,
|
|
25523
25523
|
{
|
|
25524
|
-
value:
|
|
25524
|
+
value: chunk5KFSMXI4_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25525
25525
|
disabled: !canEdit,
|
|
25526
25526
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25527
25527
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25631,8 +25631,8 @@ function InspectorPane(props) {
|
|
|
25631
25631
|
panelWidth
|
|
25632
25632
|
} = props;
|
|
25633
25633
|
const hasSelection = selectedElement !== null;
|
|
25634
|
-
const { t } =
|
|
25635
|
-
const { dragY, handlers: dragHandlers } =
|
|
25634
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
25635
|
+
const { dragY, handlers: dragHandlers } = chunkOIQAJR57_js.useSheetDismissDrag(onClose);
|
|
25636
25636
|
const {
|
|
25637
25637
|
animationPanelHeight,
|
|
25638
25638
|
effectiveThemeOptions,
|
|
@@ -25654,7 +25654,7 @@ function InspectorPane(props) {
|
|
|
25654
25654
|
"div",
|
|
25655
25655
|
{
|
|
25656
25656
|
"data-pptx-chrome": "inspector",
|
|
25657
|
-
className:
|
|
25657
|
+
className: chunk5KFSMXI4_js.cn(
|
|
25658
25658
|
// Shared styles
|
|
25659
25659
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25660
25660
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -25985,7 +25985,7 @@ function PresentationAnnotationOverlay({
|
|
|
25985
25985
|
);
|
|
25986
25986
|
}
|
|
25987
25987
|
function PresentationToolbar(p) {
|
|
25988
|
-
const { t } =
|
|
25988
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
25989
25989
|
const ref = useWebControl(
|
|
25990
25990
|
{
|
|
25991
25991
|
current: p.currentSlideIndex,
|
|
@@ -26044,8 +26044,8 @@ function PresentationTouchControls({
|
|
|
26044
26044
|
onEndPresentation,
|
|
26045
26045
|
hideNavigation = false
|
|
26046
26046
|
}) {
|
|
26047
|
-
const { t } =
|
|
26048
|
-
const { isTouchDevice } =
|
|
26047
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26048
|
+
const { isTouchDevice } = chunkOIQAJR57_js.useIsMobile();
|
|
26049
26049
|
if (!isTouchDevice) {
|
|
26050
26050
|
return null;
|
|
26051
26051
|
}
|
|
@@ -26127,7 +26127,7 @@ function KeepAnnotationsDialog({
|
|
|
26127
26127
|
onKeep,
|
|
26128
26128
|
onDiscard
|
|
26129
26129
|
}) {
|
|
26130
|
-
const { t } =
|
|
26130
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26131
26131
|
if (!isOpen) {
|
|
26132
26132
|
return null;
|
|
26133
26133
|
}
|
|
@@ -26175,7 +26175,7 @@ function PasteSpecialDialog({
|
|
|
26175
26175
|
onCancel,
|
|
26176
26176
|
onConfirm
|
|
26177
26177
|
}) {
|
|
26178
|
-
const { t } =
|
|
26178
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26179
26179
|
const [selected, setSelected] = React109.useState("keep-source-formatting");
|
|
26180
26180
|
if (!isOpen) {
|
|
26181
26181
|
return null;
|
|
@@ -26233,7 +26233,7 @@ function PasteOptionsToolbar({
|
|
|
26233
26233
|
onChoose,
|
|
26234
26234
|
onDismiss
|
|
26235
26235
|
}) {
|
|
26236
|
-
const { t } =
|
|
26236
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26237
26237
|
const [rect, setRect] = React109.useState(null);
|
|
26238
26238
|
React109.useEffect(() => {
|
|
26239
26239
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26260,7 +26260,7 @@ function NotesPagePreview({
|
|
|
26260
26260
|
frameSlides,
|
|
26261
26261
|
maxPages = 3
|
|
26262
26262
|
}) {
|
|
26263
|
-
const { t } =
|
|
26263
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26264
26264
|
const pages = React109.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26265
26265
|
const printable = React109.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26266
26266
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26348,15 +26348,15 @@ function PrintPreview({
|
|
|
26348
26348
|
frameSlides,
|
|
26349
26349
|
maxPages = 3
|
|
26350
26350
|
}) {
|
|
26351
|
-
const { t } =
|
|
26351
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26352
26352
|
const pages = React109.useMemo(
|
|
26353
|
-
() =>
|
|
26353
|
+
() => chunk5KFSMXI4_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26354
26354
|
[slideIndices, slidesPerPage, orientation]
|
|
26355
26355
|
);
|
|
26356
|
-
const printable = React109.useMemo(() =>
|
|
26356
|
+
const printable = React109.useMemo(() => chunk5KFSMXI4_js.getPrintableArea(orientation), [orientation]);
|
|
26357
26357
|
const visiblePages = pages.slice(0, maxPages);
|
|
26358
26358
|
const isThreePerPage = slidesPerPage === 3;
|
|
26359
|
-
const noteLineCount =
|
|
26359
|
+
const noteLineCount = chunk5KFSMXI4_js.generateNoteLineCount();
|
|
26360
26360
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26361
26361
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26362
26362
|
const noteAreaFraction = 0.5;
|
|
@@ -26454,7 +26454,7 @@ function PrintSettingsPanel({
|
|
|
26454
26454
|
totalSlides,
|
|
26455
26455
|
activeSlideIndex
|
|
26456
26456
|
}) {
|
|
26457
|
-
const { t } =
|
|
26457
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26458
26458
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26459
26459
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26460
26460
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26690,13 +26690,13 @@ function PrintDialog({
|
|
|
26690
26690
|
defaultSlidesPerPage,
|
|
26691
26691
|
defaultFrameSlides
|
|
26692
26692
|
}) {
|
|
26693
|
-
const { t } =
|
|
26693
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26694
26694
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26695
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26696
|
-
const { viewportWidth } =
|
|
26695
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(onClose);
|
|
26696
|
+
const { viewportWidth } = chunkOIQAJR57_js.useIsMobile();
|
|
26697
26697
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26698
26698
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26699
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26699
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkOIQAJR57_js.useViewerOptionsContext());
|
|
26700
26700
|
const [printWhat, setPrintWhat] = React109.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26701
26701
|
const [orientation, setOrientation] = React109.useState("landscape");
|
|
26702
26702
|
const [colorMode, setColorMode] = React109.useState(
|
|
@@ -26880,7 +26880,7 @@ function ShowOptionsFieldset({
|
|
|
26880
26880
|
draft,
|
|
26881
26881
|
update
|
|
26882
26882
|
}) {
|
|
26883
|
-
const { t } =
|
|
26883
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26884
26884
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26885
26885
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26886
26886
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -26938,7 +26938,7 @@ function ShowSlidesFieldset({
|
|
|
26938
26938
|
slideCount,
|
|
26939
26939
|
customShows
|
|
26940
26940
|
}) {
|
|
26941
|
-
const { t } =
|
|
26941
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
26942
26942
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26943
26943
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
26944
26944
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27048,7 +27048,7 @@ function SetUpSlideShowDialog({
|
|
|
27048
27048
|
customShows,
|
|
27049
27049
|
slideCount
|
|
27050
27050
|
}) {
|
|
27051
|
-
const { t } =
|
|
27051
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27052
27052
|
const [draft, setDraft] = React109.useState({
|
|
27053
27053
|
...properties
|
|
27054
27054
|
});
|
|
@@ -27184,16 +27184,16 @@ function BroadcastDialog({
|
|
|
27184
27184
|
defaultUserName,
|
|
27185
27185
|
defaultServerUrl
|
|
27186
27186
|
}) {
|
|
27187
|
-
const { t } =
|
|
27187
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27188
27188
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27189
|
-
const collab =
|
|
27189
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
27190
27190
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27191
27191
|
const [roomId, setRoomId] = React109.useState("");
|
|
27192
27192
|
const [userName, setUserName] = React109.useState("");
|
|
27193
27193
|
const [serverUrl, setServerUrl] = React109.useState("");
|
|
27194
27194
|
const [copied, setCopied] = React109.useState(false);
|
|
27195
27195
|
const dialogRef = React109.useRef(null);
|
|
27196
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27196
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(onClose);
|
|
27197
27197
|
useModalFocus(open, dialogRef, onClose);
|
|
27198
27198
|
React109.useEffect(() => {
|
|
27199
27199
|
if (open && !isBroadcasting) {
|
|
@@ -27352,7 +27352,7 @@ function StartBroadcastForm({
|
|
|
27352
27352
|
onUserNameChange,
|
|
27353
27353
|
onServerUrlChange
|
|
27354
27354
|
}) {
|
|
27355
|
-
const { t } =
|
|
27355
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27356
27356
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27357
27357
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27358
27358
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27428,7 +27428,7 @@ function ActiveBroadcastView({
|
|
|
27428
27428
|
onCopyUrl,
|
|
27429
27429
|
onStopBroadcast
|
|
27430
27430
|
}) {
|
|
27431
|
-
const { t } =
|
|
27431
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27432
27432
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27433
27433
|
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" });
|
|
27434
27434
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27509,7 +27509,7 @@ function ActiveSessionView({
|
|
|
27509
27509
|
onCopyRoomId,
|
|
27510
27510
|
onStopCollaboration
|
|
27511
27511
|
}) {
|
|
27512
|
-
const { t } =
|
|
27512
|
+
const { t } = chunk5KFSMXI4_js.useTranslation(), viewerOptions = chunkOIQAJR57_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({
|
|
27513
27513
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27514
27514
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27515
27515
|
localUserColor: collab.config.userColor,
|
|
@@ -27607,8 +27607,8 @@ function StartSessionForm({
|
|
|
27607
27607
|
connectionFailed,
|
|
27608
27608
|
onRetry
|
|
27609
27609
|
}) {
|
|
27610
|
-
const { t } =
|
|
27611
|
-
const { viewportWidth } =
|
|
27610
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27611
|
+
const { viewportWidth } = chunkOIQAJR57_js.useIsMobile();
|
|
27612
27612
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27613
27613
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27614
27614
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27742,9 +27742,9 @@ function ShareDialog({
|
|
|
27742
27742
|
defaultUserName,
|
|
27743
27743
|
defaultServerUrl
|
|
27744
27744
|
}) {
|
|
27745
|
-
const collab =
|
|
27745
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
27746
27746
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27747
|
-
const { t } =
|
|
27747
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27748
27748
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27749
27749
|
const [roomId, setRoomId] = React109.useState(defaultRoomId ?? "");
|
|
27750
27750
|
const [userName, setUserName] = React109.useState(defaultUserName ?? "");
|
|
@@ -27753,9 +27753,9 @@ function ShareDialog({
|
|
|
27753
27753
|
const [invitation, setInvitation] = React109.useState("");
|
|
27754
27754
|
const [copied, setCopied] = React109.useState(false);
|
|
27755
27755
|
const dialogRef = React109.useRef(null);
|
|
27756
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27756
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(onClose);
|
|
27757
27757
|
useModalFocus(open, dialogRef, onClose);
|
|
27758
|
-
const { viewportWidth, viewportHeight } =
|
|
27758
|
+
const { viewportWidth, viewportHeight } = chunkOIQAJR57_js.useIsMobile();
|
|
27759
27759
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27760
27760
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27761
27761
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -27928,7 +27928,7 @@ function HyperlinkTabContent({
|
|
|
27928
27928
|
inputCls,
|
|
27929
27929
|
onEnterConfirm
|
|
27930
27930
|
}) {
|
|
27931
|
-
const { t } =
|
|
27931
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
27932
27932
|
const handleEnterKey = (e) => {
|
|
27933
27933
|
if (e.key === "Enter") {
|
|
27934
27934
|
onEnterConfirm();
|
|
@@ -28053,13 +28053,13 @@ function HyperlinkEditDialog({
|
|
|
28053
28053
|
onConfirm,
|
|
28054
28054
|
onCancel
|
|
28055
28055
|
}) {
|
|
28056
|
-
const { t } =
|
|
28057
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28056
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
28057
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(onCancel);
|
|
28058
28058
|
const inputRef = React109.useRef(null);
|
|
28059
|
-
const detectedType =
|
|
28060
|
-
const emailParts =
|
|
28061
|
-
const detectedSlide =
|
|
28062
|
-
const detectedVerb = initialAction ?
|
|
28059
|
+
const detectedType = chunkOIQAJR57_js.detectTargetType(initialUrl, initialAction);
|
|
28060
|
+
const emailParts = chunkOIQAJR57_js.parseEmailUrl(initialUrl || "");
|
|
28061
|
+
const detectedSlide = chunkOIQAJR57_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28062
|
+
const detectedVerb = initialAction ? chunkOIQAJR57_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28063
28063
|
const [targetType, setTargetType] = React109.useState(detectedType);
|
|
28064
28064
|
const [url, setUrl] = React109.useState(
|
|
28065
28065
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28090,7 +28090,7 @@ function HyperlinkEditDialog({
|
|
|
28090
28090
|
actionVerb
|
|
28091
28091
|
});
|
|
28092
28092
|
};
|
|
28093
|
-
const tabCls = (active) =>
|
|
28093
|
+
const tabCls = (active) => chunk5KFSMXI4_js.cn(
|
|
28094
28094
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28095
28095
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28096
28096
|
);
|
|
@@ -28336,7 +28336,7 @@ function ViewerBottomPanels({
|
|
|
28336
28336
|
notesStyle,
|
|
28337
28337
|
onNotesHeightChange
|
|
28338
28338
|
}) {
|
|
28339
|
-
const { isHidden } =
|
|
28339
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(hiddenActions);
|
|
28340
28340
|
const customization = useViewerCustomizationContext();
|
|
28341
28341
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28342
28342
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28465,7 +28465,7 @@ function ViewerInspector({
|
|
|
28465
28465
|
onPreviewElement,
|
|
28466
28466
|
elementById
|
|
28467
28467
|
}) {
|
|
28468
|
-
const { t } =
|
|
28468
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
28469
28469
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28470
28470
|
const liveEdit = onPreviewElement ? {
|
|
28471
28471
|
element: selectedElement,
|
|
@@ -28680,7 +28680,7 @@ function ViewerToolbarSection(props) {
|
|
|
28680
28680
|
onSetSnapToShape,
|
|
28681
28681
|
onSetShowGuides
|
|
28682
28682
|
} = props;
|
|
28683
|
-
const { t } =
|
|
28683
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
28684
28684
|
const customization = useViewerCustomizationContext();
|
|
28685
28685
|
const handleAddAnimation = React109.useCallback(
|
|
28686
28686
|
(preset, group) => {
|
|
@@ -28733,7 +28733,7 @@ function ViewerToolbarSection(props) {
|
|
|
28733
28733
|
[activeSlide, propertyHandlers]
|
|
28734
28734
|
);
|
|
28735
28735
|
const scopedLayoutOptions = React109__default.default.useMemo(
|
|
28736
|
-
() =>
|
|
28736
|
+
() => chunkOIQAJR57_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28737
28737
|
[s.layoutOptions, activeSlide]
|
|
28738
28738
|
);
|
|
28739
28739
|
const handleResetSlide = React109.useCallback(() => {
|
|
@@ -29140,14 +29140,14 @@ function ViewerToolbarSection(props) {
|
|
|
29140
29140
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29141
29141
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29142
29142
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29143
|
-
reviewComments:
|
|
29143
|
+
reviewComments: chunkOIQAJR57_js.createReviewCommentsHost({
|
|
29144
29144
|
state: s,
|
|
29145
29145
|
activeSlideIndex,
|
|
29146
29146
|
updateSlides: ops.updateSlides,
|
|
29147
29147
|
markDirty: history.markDirty
|
|
29148
29148
|
}),
|
|
29149
29149
|
formatPainterActive: s.formatPainterActive,
|
|
29150
|
-
canActivateFormatPainter:
|
|
29150
|
+
canActivateFormatPainter: chunk5KFSMXI4_js.hasCopyableFormat(selectedElement),
|
|
29151
29151
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29152
29152
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29153
29153
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29233,8 +29233,8 @@ function EquationEditorDialog({
|
|
|
29233
29233
|
onInsert,
|
|
29234
29234
|
existingOmml
|
|
29235
29235
|
}) {
|
|
29236
|
-
const { t } =
|
|
29237
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29236
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
29237
|
+
const { panelStyle, handlers: dragHandlers } = chunkOIQAJR57_js.useModalDismissDrag(onClose);
|
|
29238
29238
|
const initialLatex = React109.useMemo(() => {
|
|
29239
29239
|
if (!existingOmml) {
|
|
29240
29240
|
return "";
|
|
@@ -29356,7 +29356,7 @@ function EquationEditorDialog({
|
|
|
29356
29356
|
{
|
|
29357
29357
|
type: "button",
|
|
29358
29358
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29359
|
-
className:
|
|
29359
|
+
className: chunk5KFSMXI4_js.cn(
|
|
29360
29360
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29361
29361
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29362
29362
|
),
|
|
@@ -29421,7 +29421,7 @@ function InsertSmartArtDialog({
|
|
|
29421
29421
|
onInsert
|
|
29422
29422
|
}) {
|
|
29423
29423
|
const ref = React109.useRef(null);
|
|
29424
|
-
const { t } =
|
|
29424
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
29425
29425
|
React109.useLayoutEffect(() => {
|
|
29426
29426
|
if (ref.current) {
|
|
29427
29427
|
ref.current.translateLabel = t;
|
|
@@ -29445,7 +29445,7 @@ function InsertChartDialog({
|
|
|
29445
29445
|
onInsert
|
|
29446
29446
|
}) {
|
|
29447
29447
|
const ref = React109.useRef(null);
|
|
29448
|
-
const { t } =
|
|
29448
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
29449
29449
|
React109.useLayoutEffect(() => {
|
|
29450
29450
|
if (ref.current) {
|
|
29451
29451
|
ref.current.translateLabel = t;
|
|
@@ -29933,11 +29933,11 @@ function PresentationStage({
|
|
|
29933
29933
|
})
|
|
29934
29934
|
},
|
|
29935
29935
|
children: [
|
|
29936
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29936
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
29937
29937
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
29938
29938
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
29939
29939
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29940
|
-
|
|
29940
|
+
chunkOIQAJR57_js.ElementRenderer,
|
|
29941
29941
|
{
|
|
29942
29942
|
element,
|
|
29943
29943
|
activeSlide,
|
|
@@ -29974,7 +29974,7 @@ function PresentationStage({
|
|
|
29974
29974
|
`tpl-${element.id}`
|
|
29975
29975
|
)),
|
|
29976
29976
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29977
|
-
|
|
29977
|
+
chunkOIQAJR57_js.ElementRenderer,
|
|
29978
29978
|
{
|
|
29979
29979
|
element,
|
|
29980
29980
|
activeSlide,
|
|
@@ -30026,7 +30026,7 @@ function PresentationStage({
|
|
|
30026
30026
|
function noop() {
|
|
30027
30027
|
}
|
|
30028
30028
|
function PresentationContextMenu(p) {
|
|
30029
|
-
const { t } =
|
|
30029
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
30030
30030
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30031
30031
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30032
30032
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30095,9 +30095,9 @@ function ViewerCanvasArea(props) {
|
|
|
30095
30095
|
aiHighlightOverlay,
|
|
30096
30096
|
aiCanvasActive = false
|
|
30097
30097
|
} = props;
|
|
30098
|
-
const { t } =
|
|
30099
|
-
const { isHidden } =
|
|
30100
|
-
const viewerOptions =
|
|
30098
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
30099
|
+
const { isHidden } = chunkOIQAJR57_js.useToolbarVisibility(hiddenActions);
|
|
30100
|
+
const viewerOptions = chunkOIQAJR57_js.useViewerOptionsContext();
|
|
30101
30101
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30102
30102
|
state: s,
|
|
30103
30103
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30127,7 +30127,7 @@ function ViewerCanvasArea(props) {
|
|
|
30127
30127
|
${url}`)) {
|
|
30128
30128
|
return;
|
|
30129
30129
|
}
|
|
30130
|
-
|
|
30130
|
+
chunk5KFSMXI4_js.safeOpenUrl(url);
|
|
30131
30131
|
},
|
|
30132
30132
|
[viewerOptions, t]
|
|
30133
30133
|
);
|
|
@@ -30148,9 +30148,9 @@ ${url}`)) {
|
|
|
30148
30148
|
);
|
|
30149
30149
|
const handleHyperlinkClick = React109.useCallback(
|
|
30150
30150
|
(url) => {
|
|
30151
|
-
if (
|
|
30151
|
+
if (chunk5KFSMXI4_js.isPpactionUrl(url)) {
|
|
30152
30152
|
if (mode === "present") {
|
|
30153
|
-
const parsed =
|
|
30153
|
+
const parsed = chunk5KFSMXI4_js.parsePpactionUrl(url);
|
|
30154
30154
|
if (parsed) {
|
|
30155
30155
|
const action = {
|
|
30156
30156
|
action: parsed.action,
|
|
@@ -30235,7 +30235,7 @@ ${url}`)) {
|
|
|
30235
30235
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30236
30236
|
}
|
|
30237
30237
|
}, [mode, presentation, s]);
|
|
30238
|
-
const swipe =
|
|
30238
|
+
const swipe = chunkOIQAJR57_js.useSwipeNavigation({
|
|
30239
30239
|
enabled: swipeEnabled,
|
|
30240
30240
|
onNext: handleSwipeNext,
|
|
30241
30241
|
onPrev: handleSwipePrev
|
|
@@ -30315,7 +30315,7 @@ ${url}`)) {
|
|
|
30315
30315
|
),
|
|
30316
30316
|
children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30317
30317
|
presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
|
|
30318
|
-
|
|
30318
|
+
chunkOIQAJR57_js.PresentationTransitionOverlay,
|
|
30319
30319
|
{
|
|
30320
30320
|
outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
|
|
30321
30321
|
templateElements: [
|
|
@@ -30432,14 +30432,14 @@ ${url}`)) {
|
|
|
30432
30432
|
outlineAuthoring,
|
|
30433
30433
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30434
30434
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30435
|
-
|
|
30435
|
+
chunkOIQAJR57_js.RemoteSelectionOverlay,
|
|
30436
30436
|
{
|
|
30437
30437
|
elements: effectiveSlide?.elements ?? [],
|
|
30438
30438
|
activeSlideIndex
|
|
30439
30439
|
}
|
|
30440
30440
|
),
|
|
30441
30441
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30442
|
-
|
|
30442
|
+
chunkOIQAJR57_js.CollaborationCursorOverlay,
|
|
30443
30443
|
{
|
|
30444
30444
|
activeSlideIndex,
|
|
30445
30445
|
canvasWidth: canvasSize.width,
|
|
@@ -30579,7 +30579,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
30579
30579
|
var AiChatPanel = /* @__PURE__ */ React109.lazy(async () => {
|
|
30580
30580
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
30581
30581
|
import('@ai-sdk/react'),
|
|
30582
|
-
import('./AiChatPanel-
|
|
30582
|
+
import('./AiChatPanel-7DESUEAZ.js')
|
|
30583
30583
|
]);
|
|
30584
30584
|
function BoundAiChatPanel(props) {
|
|
30585
30585
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -30702,8 +30702,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
30702
30702
|
] });
|
|
30703
30703
|
}
|
|
30704
30704
|
function ChartFormatPanel() {
|
|
30705
|
-
const { t } =
|
|
30706
|
-
const commands =
|
|
30705
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
30706
|
+
const commands = chunkOIQAJR57_js.useChartFormatContext();
|
|
30707
30707
|
const ref = React109.useRef(null);
|
|
30708
30708
|
const chart = commands?.chart;
|
|
30709
30709
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -30738,7 +30738,7 @@ function ChartFormatPanel() {
|
|
|
30738
30738
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
30739
30739
|
}
|
|
30740
30740
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
30741
|
-
const { t } =
|
|
30741
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
30742
30742
|
const ref = React109.useRef(null);
|
|
30743
30743
|
React109.useEffect(() => {
|
|
30744
30744
|
const node = ref.current;
|
|
@@ -30775,8 +30775,8 @@ function MobileDismissSheet({
|
|
|
30775
30775
|
className,
|
|
30776
30776
|
children
|
|
30777
30777
|
}) {
|
|
30778
|
-
const { t } =
|
|
30779
|
-
const { dragY, handlers } =
|
|
30778
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
30779
|
+
const { dragY, handlers } = chunkOIQAJR57_js.useSheetDismissDrag(onClose);
|
|
30780
30780
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30781
30781
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30782
30782
|
"button",
|
|
@@ -31045,7 +31045,7 @@ function ThemeThumbnail({
|
|
|
31045
31045
|
{
|
|
31046
31046
|
type: "button",
|
|
31047
31047
|
onClick,
|
|
31048
|
-
className:
|
|
31048
|
+
className: chunk5KFSMXI4_js.cn(
|
|
31049
31049
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31050
31050
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31051
31051
|
),
|
|
@@ -31076,7 +31076,7 @@ function ThemeGallery({
|
|
|
31076
31076
|
onApplyTheme,
|
|
31077
31077
|
onImportTheme
|
|
31078
31078
|
}) {
|
|
31079
|
-
const { t } =
|
|
31079
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
31080
31080
|
const [selectedTheme, setSelectedTheme] = React109.useState(currentTheme ?? null);
|
|
31081
31081
|
const fileInputRef = React109.useRef(null);
|
|
31082
31082
|
React109.useEffect(() => {
|
|
@@ -31518,7 +31518,7 @@ function ViewerMainContent(props) {
|
|
|
31518
31518
|
);
|
|
31519
31519
|
const layoutGalleryAnchorRef = React109.useRef(null);
|
|
31520
31520
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31521
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31521
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31522
31522
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31523
31523
|
slidesPaneRenderer ? (
|
|
31524
31524
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -31728,7 +31728,7 @@ function AutosaveRecoveryDialog({
|
|
|
31728
31728
|
onDiscard,
|
|
31729
31729
|
busy = false
|
|
31730
31730
|
}) {
|
|
31731
|
-
const { t } =
|
|
31731
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
31732
31732
|
if (!prompt) {
|
|
31733
31733
|
return null;
|
|
31734
31734
|
}
|
|
@@ -31784,7 +31784,7 @@ function CompatibilityToasts({
|
|
|
31784
31784
|
rightInset = 0,
|
|
31785
31785
|
bottomInset = 0
|
|
31786
31786
|
}) {
|
|
31787
|
-
const { t } =
|
|
31787
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
31788
31788
|
const ref = useWebControl(
|
|
31789
31789
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
31790
31790
|
{
|
|
@@ -31829,7 +31829,7 @@ function HeaderFooterPanel({
|
|
|
31829
31829
|
onApplyToCurrent,
|
|
31830
31830
|
onClose
|
|
31831
31831
|
}) {
|
|
31832
|
-
const { t } =
|
|
31832
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
31833
31833
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
31834
31834
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
31835
31835
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -31970,7 +31970,7 @@ function HeaderFooterPanel({
|
|
|
31970
31970
|
] }) });
|
|
31971
31971
|
}
|
|
31972
31972
|
function MobileBottomBar(p) {
|
|
31973
|
-
const { t } =
|
|
31973
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
31974
31974
|
const handlers = {
|
|
31975
31975
|
slides: p.onOpenSlides,
|
|
31976
31976
|
insert: p.onOpenInsert,
|
|
@@ -31996,7 +31996,7 @@ function MobileSlidesSheet({
|
|
|
31996
31996
|
onClose,
|
|
31997
31997
|
...sidebar
|
|
31998
31998
|
}) {
|
|
31999
|
-
const { t } =
|
|
31999
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32000
32000
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32001
32001
|
MobileSheet,
|
|
32002
32002
|
{
|
|
@@ -32023,7 +32023,7 @@ function MobileChromeOverlay(props) {
|
|
|
32023
32023
|
slideSectionGroups,
|
|
32024
32024
|
canEdit,
|
|
32025
32025
|
commentCount
|
|
32026
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32026
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkOIQAJR57_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32027
32027
|
s.setIsSlidesPaneOpen(false);
|
|
32028
32028
|
s.setIsMobileInsertOpen(false);
|
|
32029
32029
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32123,7 +32123,7 @@ function MobileChromeOverlay(props) {
|
|
|
32123
32123
|
] });
|
|
32124
32124
|
}
|
|
32125
32125
|
function ReadOnlyBanner(p) {
|
|
32126
|
-
const { t } =
|
|
32126
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32127
32127
|
const ref = useWebControl(
|
|
32128
32128
|
pptx.readOnlyBannerState(
|
|
32129
32129
|
p.recommendation,
|
|
@@ -32157,7 +32157,7 @@ function RibbonCustomizationStyle({
|
|
|
32157
32157
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32158
32158
|
}
|
|
32159
32159
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32160
|
-
const { t } =
|
|
32160
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32161
32161
|
if (notices.length === 0) {
|
|
32162
32162
|
return null;
|
|
32163
32163
|
}
|
|
@@ -32215,14 +32215,14 @@ function AddinTable({
|
|
|
32215
32215
|
selectedId,
|
|
32216
32216
|
onSelect
|
|
32217
32217
|
}) {
|
|
32218
|
-
const { t } =
|
|
32218
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32219
32219
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32220
32220
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32221
32221
|
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(
|
|
32222
32222
|
"tr",
|
|
32223
32223
|
{
|
|
32224
32224
|
onClick: () => onSelect(row.id),
|
|
32225
|
-
className:
|
|
32225
|
+
className: chunk5KFSMXI4_js.cn(
|
|
32226
32226
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32227
32227
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32228
32228
|
),
|
|
@@ -32237,7 +32237,7 @@ function AddinTable({
|
|
|
32237
32237
|
] });
|
|
32238
32238
|
}
|
|
32239
32239
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32240
|
-
const { t } =
|
|
32240
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32241
32241
|
const [selectedId, setSelectedId] = React109.useState(null);
|
|
32242
32242
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32243
32243
|
const active = rows.filter((row) => row.active);
|
|
@@ -32280,7 +32280,7 @@ function CommandList({
|
|
|
32280
32280
|
selectedId,
|
|
32281
32281
|
onSelect
|
|
32282
32282
|
}) {
|
|
32283
|
-
const { t } =
|
|
32283
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32284
32284
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32285
32285
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32286
32286
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32301,7 +32301,7 @@ function CommandList({
|
|
|
32301
32301
|
role: "option",
|
|
32302
32302
|
"aria-selected": selectedId === id,
|
|
32303
32303
|
onClick: () => onSelect(id),
|
|
32304
|
-
className:
|
|
32304
|
+
className: chunk5KFSMXI4_js.cn(
|
|
32305
32305
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32306
32306
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32307
32307
|
),
|
|
@@ -32319,7 +32319,7 @@ function OptionsQuickAccessPane({
|
|
|
32319
32319
|
onQuickAccessCommandsChange,
|
|
32320
32320
|
onResetQuickAccess
|
|
32321
32321
|
}) {
|
|
32322
|
-
const { t } =
|
|
32322
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32323
32323
|
const [selectedAvailable, setSelectedAvailable] = React109.useState(null);
|
|
32324
32324
|
const [selectedCurrent, setSelectedCurrent] = React109.useState(null);
|
|
32325
32325
|
const current = options.quickAccess.commandIds;
|
|
@@ -32433,7 +32433,7 @@ function OptionsRibbonPane({
|
|
|
32433
32433
|
onRibbonTabHiddenChange,
|
|
32434
32434
|
onResetRibbon
|
|
32435
32435
|
}) {
|
|
32436
|
-
const { t } =
|
|
32436
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32437
32437
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32438
32438
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32439
32439
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32445,7 +32445,7 @@ function OptionsRibbonPane({
|
|
|
32445
32445
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32446
32446
|
"label",
|
|
32447
32447
|
{
|
|
32448
|
-
className:
|
|
32448
|
+
className: chunk5KFSMXI4_js.cn(
|
|
32449
32449
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32450
32450
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32451
32451
|
),
|
|
@@ -32479,7 +32479,7 @@ function OptionsRibbonPane({
|
|
|
32479
32479
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32480
32480
|
"div",
|
|
32481
32481
|
{
|
|
32482
|
-
className:
|
|
32482
|
+
className: chunk5KFSMXI4_js.cn(
|
|
32483
32483
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32484
32484
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32485
32485
|
),
|
|
@@ -32500,12 +32500,12 @@ async function exportAiChatLogs(options) {
|
|
|
32500
32500
|
chats,
|
|
32501
32501
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32502
32502
|
(filename, content, mime) => {
|
|
32503
|
-
|
|
32503
|
+
chunkOIQAJR57_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32504
32504
|
}
|
|
32505
32505
|
);
|
|
32506
32506
|
}
|
|
32507
32507
|
function SettingsAiTab({ store }) {
|
|
32508
|
-
const { t } =
|
|
32508
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32509
32509
|
const activeStore = React109.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
32510
32510
|
const [chatCount, setChatCount] = React109.useState(null);
|
|
32511
32511
|
const [detailed, setDetailed] = React109.useState(true);
|
|
@@ -32597,7 +32597,7 @@ function SettingsAppearanceTab({
|
|
|
32597
32597
|
themes,
|
|
32598
32598
|
onSelectTheme
|
|
32599
32599
|
}) {
|
|
32600
|
-
const { t } =
|
|
32600
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32601
32601
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
32602
32602
|
const isActive = entry.key === activeThemeKey;
|
|
32603
32603
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -32608,7 +32608,7 @@ function SettingsAppearanceTab({
|
|
|
32608
32608
|
type: "button",
|
|
32609
32609
|
onClick: () => onSelectTheme(entry.key),
|
|
32610
32610
|
"aria-pressed": isActive,
|
|
32611
|
-
className:
|
|
32611
|
+
className: chunk5KFSMXI4_js.cn(
|
|
32612
32612
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
32613
32613
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
32614
32614
|
),
|
|
@@ -32625,7 +32625,7 @@ function SettingsAppearanceTab({
|
|
|
32625
32625
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32626
32626
|
"span",
|
|
32627
32627
|
{
|
|
32628
|
-
className:
|
|
32628
|
+
className: chunk5KFSMXI4_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
32629
32629
|
children: t(entry.labelKey)
|
|
32630
32630
|
}
|
|
32631
32631
|
)
|
|
@@ -32640,7 +32640,7 @@ function SettingsCustomFontsSection({
|
|
|
32640
32640
|
families,
|
|
32641
32641
|
onRegistered
|
|
32642
32642
|
}) {
|
|
32643
|
-
const { t } =
|
|
32643
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32644
32644
|
const inputRef = React109.useRef(null);
|
|
32645
32645
|
const [error, setError] = React109.useState(false);
|
|
32646
32646
|
const handleFile = async (file) => {
|
|
@@ -32705,7 +32705,7 @@ function SettingsLanguageTab({
|
|
|
32705
32705
|
type: "button",
|
|
32706
32706
|
onClick: () => onSelectLocale(locale.code),
|
|
32707
32707
|
"aria-pressed": isActive,
|
|
32708
|
-
className:
|
|
32708
|
+
className: chunk5KFSMXI4_js.cn(
|
|
32709
32709
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
32710
32710
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
32711
32711
|
),
|
|
@@ -32744,7 +32744,7 @@ function OpenSettingsDialog({
|
|
|
32744
32744
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
32745
32745
|
onCustomFontRegistered
|
|
32746
32746
|
}) {
|
|
32747
|
-
const { t } =
|
|
32747
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
32748
32748
|
const viewerCustomization = useViewerCustomizationContext();
|
|
32749
32749
|
const customization = React109.useMemo(
|
|
32750
32750
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -32853,7 +32853,7 @@ function ViewerOptionsProvider({
|
|
|
32853
32853
|
store,
|
|
32854
32854
|
children
|
|
32855
32855
|
}) {
|
|
32856
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32856
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
32857
32857
|
}
|
|
32858
32858
|
function useAiBridge(input) {
|
|
32859
32859
|
const ref = React109.useRef(input);
|
|
@@ -32934,7 +32934,7 @@ function useAiPanelController(input) {
|
|
|
32934
32934
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
32935
32935
|
})
|
|
32936
32936
|
);
|
|
32937
|
-
const state =
|
|
32937
|
+
const state = chunkOIQAJR57_js.useController(controller);
|
|
32938
32938
|
React109.useEffect(() => () => controller.dispose(), [controller]);
|
|
32939
32939
|
const liveFocusTargets = React109.useMemo(
|
|
32940
32940
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33167,7 +33167,7 @@ function useMasterViewCrud(input) {
|
|
|
33167
33167
|
forgetHistory,
|
|
33168
33168
|
pushToast
|
|
33169
33169
|
} = input;
|
|
33170
|
-
const { t } =
|
|
33170
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
33171
33171
|
const data = React109.useMemo(
|
|
33172
33172
|
() => ({ slides, slideMasters }),
|
|
33173
33173
|
[slides, slideMasters]
|
|
@@ -33187,7 +33187,7 @@ function useMasterViewCrud(input) {
|
|
|
33187
33187
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
33188
33188
|
const master = slideMasters[target.masterIndex];
|
|
33189
33189
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
33190
|
-
const next =
|
|
33190
|
+
const next = chunkOIQAJR57_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
33191
33191
|
if (!next) {
|
|
33192
33192
|
return;
|
|
33193
33193
|
}
|
|
@@ -33556,7 +33556,7 @@ function useHostLanguage({
|
|
|
33556
33556
|
availableLocales,
|
|
33557
33557
|
onLocaleChange
|
|
33558
33558
|
}) {
|
|
33559
|
-
const { t, i18n } =
|
|
33559
|
+
const { t, i18n } = chunk5KFSMXI4_js.useHostI18next();
|
|
33560
33560
|
const [localeCode, setLocaleCode] = React109.useState(
|
|
33561
33561
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
33562
33562
|
);
|
|
@@ -33596,7 +33596,7 @@ function useProvidedLanguage({
|
|
|
33596
33596
|
availableLocales,
|
|
33597
33597
|
onLocaleChange
|
|
33598
33598
|
}) {
|
|
33599
|
-
const state = React109.useContext(
|
|
33599
|
+
const state = React109.useContext(chunk5KFSMXI4_js.PptxI18nContext);
|
|
33600
33600
|
const { locale } = state;
|
|
33601
33601
|
const locales = availableLocales ?? NO_LOCALES;
|
|
33602
33602
|
const controls = React109.useMemo(
|
|
@@ -33616,7 +33616,7 @@ function useProvidedLanguage({
|
|
|
33616
33616
|
return { state, controls };
|
|
33617
33617
|
}
|
|
33618
33618
|
function provideLanguage({ state, controls }, children) {
|
|
33619
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33619
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5KFSMXI4_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5KFSMXI4_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
33620
33620
|
}
|
|
33621
33621
|
function HostLanguageRoot({ children, ...props }) {
|
|
33622
33622
|
return provideLanguage(useHostLanguage(props), children);
|
|
@@ -33625,11 +33625,11 @@ function ProvidedLanguageRoot({ children, ...props }) {
|
|
|
33625
33625
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
33626
33626
|
}
|
|
33627
33627
|
function ViewerI18nRoot(props) {
|
|
33628
|
-
const Root = React109.useContext(
|
|
33628
|
+
const Root = React109.useContext(chunk5KFSMXI4_js.PptxI18nContext) ? ProvidedLanguageRoot : HostLanguageRoot;
|
|
33629
33629
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
33630
33630
|
}
|
|
33631
33631
|
function useViewerLocaleControls() {
|
|
33632
|
-
return React109.useContext(
|
|
33632
|
+
return React109.useContext(chunk5KFSMXI4_js.ViewerLocaleControlsContext);
|
|
33633
33633
|
}
|
|
33634
33634
|
var NO_RIBBON_ADD_INS = [];
|
|
33635
33635
|
var PowerPointViewerComponent = /* @__PURE__ */ React109.forwardRef(
|
|
@@ -33741,7 +33741,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
33741
33741
|
(current) => current.includes(family) ? current : [...current, family]
|
|
33742
33742
|
);
|
|
33743
33743
|
}, []);
|
|
33744
|
-
const { t } =
|
|
33744
|
+
const { t } = chunk5KFSMXI4_js.useTranslation();
|
|
33745
33745
|
const {
|
|
33746
33746
|
localeCode,
|
|
33747
33747
|
locales: resolvedLocales,
|
|
@@ -33779,7 +33779,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
33779
33779
|
},
|
|
33780
33780
|
[storage]
|
|
33781
33781
|
);
|
|
33782
|
-
const { optionsStore, options: viewerOptions } =
|
|
33782
|
+
const { optionsStore, options: viewerOptions } = chunkOIQAJR57_js.useViewerOptions();
|
|
33783
33783
|
const custom = useViewerCustomization(
|
|
33784
33784
|
customization,
|
|
33785
33785
|
legacyHiddenActions,
|
|
@@ -33798,8 +33798,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
33798
33798
|
const handleEnableEditing = React109.useCallback(() => {
|
|
33799
33799
|
setProtectedViewOverridden(true);
|
|
33800
33800
|
}, []);
|
|
33801
|
-
const readOnlyRec =
|
|
33802
|
-
const compatToastsState =
|
|
33801
|
+
const readOnlyRec = chunkOIQAJR57_js.useReadOnlyRecommendationState(content);
|
|
33802
|
+
const compatToastsState = chunkOIQAJR57_js.useCompatibilityToastsState();
|
|
33803
33803
|
const [notesBarHeight, setNotesBarHeight] = React109.useState(0);
|
|
33804
33804
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
33805
33805
|
const [collaborationReadOnly, setCollaborationReadOnly] = React109.useState(Boolean(collaboration));
|
|
@@ -33822,8 +33822,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
33822
33822
|
filePath
|
|
33823
33823
|
});
|
|
33824
33824
|
const [isShareDialogOpen, setIsShareDialogOpen] = React109.useState(false);
|
|
33825
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
33826
|
-
const state =
|
|
33825
|
+
const { reducedMotion, toggleReducedMotion } = chunkOIQAJR57_js.useReducedMotion();
|
|
33826
|
+
const state = chunkOIQAJR57_js.useViewerState({
|
|
33827
33827
|
content,
|
|
33828
33828
|
canEdit,
|
|
33829
33829
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -33950,16 +33950,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
33950
33950
|
}
|
|
33951
33951
|
}, [settings, optionsStore]);
|
|
33952
33952
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
33953
|
-
const mobile =
|
|
33953
|
+
const mobile = chunkOIQAJR57_js.useIsMobile();
|
|
33954
33954
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
33955
|
-
const resizablePanels =
|
|
33955
|
+
const resizablePanels = chunkOIQAJR57_js.useResizablePanels();
|
|
33956
33956
|
const {
|
|
33957
33957
|
gridSpacingPx,
|
|
33958
33958
|
visibleSlideIndexes,
|
|
33959
33959
|
slideSectionGroups,
|
|
33960
33960
|
masterPseudoSlide,
|
|
33961
33961
|
authoredRange
|
|
33962
|
-
} =
|
|
33962
|
+
} = chunkOIQAJR57_js.useDerivedSlideState({
|
|
33963
33963
|
slides,
|
|
33964
33964
|
sections: state.sections,
|
|
33965
33965
|
customShows: state.customShows,
|
|
@@ -33984,7 +33984,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
33984
33984
|
state.cropSessionRef
|
|
33985
33985
|
]
|
|
33986
33986
|
);
|
|
33987
|
-
const zoom =
|
|
33987
|
+
const zoom = chunkOIQAJR57_js.useZoomViewport({
|
|
33988
33988
|
canvasSize,
|
|
33989
33989
|
selectedElements: state.selectedElements,
|
|
33990
33990
|
fitPadding: props.fitPadding,
|
|
@@ -34000,7 +34000,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
34000
34000
|
onChangeCallback.current?.();
|
|
34001
34001
|
}, [setIsDirty]);
|
|
34002
34002
|
const restoreHistoryThemeRef = React109.useRef(void 0);
|
|
34003
|
-
const history =
|
|
34003
|
+
const history = chunkOIQAJR57_js.useEditorHistory({
|
|
34004
34004
|
slides,
|
|
34005
34005
|
canvasSize,
|
|
34006
34006
|
activeSlideIndex,
|
|
@@ -34029,7 +34029,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React109.forwardRef(
|
|
|
34029
34029
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34030
34030
|
setHeaderFooter: state.setHeaderFooter
|
|
34031
34031
|
});
|
|
34032
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34032
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkOIQAJR57_js.usePresentationSetup({
|
|
34033
34033
|
mode,
|
|
34034
34034
|
slides,
|
|
34035
34035
|
visibleSlideIndexes,
|
|
@@ -34104,7 +34104,7 @@ ${url}`)
|
|
|
34104
34104
|
loading,
|
|
34105
34105
|
error
|
|
34106
34106
|
]);
|
|
34107
|
-
|
|
34107
|
+
chunkOIQAJR57_js.useTouchGestures({
|
|
34108
34108
|
targetRef: zoom.canvasViewportRef,
|
|
34109
34109
|
currentScale: zoom.scale,
|
|
34110
34110
|
callbacks: {
|
|
@@ -34126,7 +34126,7 @@ ${url}`)
|
|
|
34126
34126
|
},
|
|
34127
34127
|
enabled: isTouchDevice
|
|
34128
34128
|
});
|
|
34129
|
-
const dialogs =
|
|
34129
|
+
const dialogs = chunkOIQAJR57_js.useViewerDialogs({
|
|
34130
34130
|
mode,
|
|
34131
34131
|
slides,
|
|
34132
34132
|
activeSlide,
|
|
@@ -34153,7 +34153,7 @@ ${url}`)
|
|
|
34153
34153
|
history,
|
|
34154
34154
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34155
34155
|
});
|
|
34156
|
-
|
|
34156
|
+
chunkOIQAJR57_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34157
34157
|
const zoomBeforePresentRef = React109.useRef(null);
|
|
34158
34158
|
React109.useEffect(() => {
|
|
34159
34159
|
if (mode !== "present") {
|
|
@@ -34171,7 +34171,7 @@ ${url}`)
|
|
|
34171
34171
|
zoom.handleZoomToFit();
|
|
34172
34172
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34173
34173
|
}, [mode]);
|
|
34174
|
-
const editorOps =
|
|
34174
|
+
const editorOps = chunkOIQAJR57_js.useEditorOperations({
|
|
34175
34175
|
state,
|
|
34176
34176
|
history,
|
|
34177
34177
|
zoom,
|
|
@@ -34214,7 +34214,7 @@ ${url}`)
|
|
|
34214
34214
|
handlerRef,
|
|
34215
34215
|
viewerApi,
|
|
34216
34216
|
loadVersion
|
|
34217
|
-
} =
|
|
34217
|
+
} = chunkOIQAJR57_js.useViewerIntegration({
|
|
34218
34218
|
transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
|
|
34219
34219
|
state,
|
|
34220
34220
|
zoom,
|
|
@@ -34357,7 +34357,7 @@ ${url}`)
|
|
|
34357
34357
|
updateElementById: editorOps.ops.updateElementById
|
|
34358
34358
|
});
|
|
34359
34359
|
const ribbonScope = useRibbonScopeToken();
|
|
34360
|
-
const viewPreferencesSync =
|
|
34360
|
+
const viewPreferencesSync = chunkOIQAJR57_js.useViewPreferencesSync({
|
|
34361
34361
|
loadVersion,
|
|
34362
34362
|
viewProperties: state.viewProperties,
|
|
34363
34363
|
setViewProperties: state.setViewProperties,
|
|
@@ -34399,7 +34399,7 @@ ${url}`)
|
|
|
34399
34399
|
},
|
|
34400
34400
|
[state]
|
|
34401
34401
|
);
|
|
34402
|
-
const layoutSwitching =
|
|
34402
|
+
const layoutSwitching = chunkOIQAJR57_js.useLayoutSwitching({
|
|
34403
34403
|
handler: handlerRef.current,
|
|
34404
34404
|
slides,
|
|
34405
34405
|
activeSlideIndex,
|
|
@@ -34516,7 +34516,7 @@ ${url}`)
|
|
|
34516
34516
|
"data-pptx-editor-chrome": "",
|
|
34517
34517
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
34518
34518
|
"aria-busy": loading,
|
|
34519
|
-
className:
|
|
34519
|
+
className: chunk5KFSMXI4_js.cn(
|
|
34520
34520
|
"h-full w-full bg-background text-foreground relative",
|
|
34521
34521
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
34522
34522
|
),
|
|
@@ -34913,8 +34913,8 @@ ${url}`)
|
|
|
34913
34913
|
// Nothing previously provided it, so every one of those consumers was
|
|
34914
34914
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
34915
34915
|
// the user changed in the Options dialog.
|
|
34916
|
-
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: storage, 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(
|
|
34917
|
-
|
|
34916
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: storage, 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(chunkOIQAJR57_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34917
|
+
chunkOIQAJR57_js.CollaborationProvider,
|
|
34918
34918
|
{
|
|
34919
34919
|
config: collaboration,
|
|
34920
34920
|
canvasWidth: canvasSize.width,
|
|
@@ -34970,19 +34970,19 @@ ${url}`)
|
|
|
34970
34970
|
slideCount: slides.length
|
|
34971
34971
|
}
|
|
34972
34972
|
),
|
|
34973
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34973
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkOIQAJR57_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
34974
34974
|
]
|
|
34975
34975
|
}
|
|
34976
34976
|
) }) }) }) }) }) }) }) })
|
|
34977
34977
|
);
|
|
34978
34978
|
}
|
|
34979
34979
|
);
|
|
34980
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
34980
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunkOIQAJR57_js.withDisplayName(
|
|
34981
34981
|
PowerPointViewerComponent,
|
|
34982
34982
|
"PowerPointViewer"
|
|
34983
34983
|
);
|
|
34984
34984
|
function CollaborationStatusStrip() {
|
|
34985
|
-
const collab =
|
|
34985
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
34986
34986
|
if (!collab) {
|
|
34987
34987
|
return null;
|
|
34988
34988
|
}
|
|
@@ -34999,9 +34999,9 @@ function CollaborationStateReporter({
|
|
|
34999
34999
|
onChange,
|
|
35000
35000
|
onStatus
|
|
35001
35001
|
}) {
|
|
35002
|
-
const collab =
|
|
35002
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
35003
35003
|
useCollaborationStateReport(collab, onChange);
|
|
35004
|
-
|
|
35004
|
+
chunkOIQAJR57_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35005
35005
|
return null;
|
|
35006
35006
|
}
|
|
35007
35007
|
function CollaborationDocumentSync({
|
|
@@ -35015,8 +35015,8 @@ function CollaborationDocumentSync({
|
|
|
35015
35015
|
deckSaveState,
|
|
35016
35016
|
onReadOnlyChange
|
|
35017
35017
|
}) {
|
|
35018
|
-
const collab =
|
|
35019
|
-
|
|
35018
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
35019
|
+
chunkOIQAJR57_js.useCollaborationDocumentSync({
|
|
35020
35020
|
collaboration: collab,
|
|
35021
35021
|
slides,
|
|
35022
35022
|
templateElementsBySlideId,
|
|
@@ -35035,14 +35035,14 @@ function CollaborationFollowLayer({
|
|
|
35035
35035
|
setActiveSlideIndex,
|
|
35036
35036
|
slideCount
|
|
35037
35037
|
}) {
|
|
35038
|
-
const collab =
|
|
35039
|
-
const { followedClientId, followUser } =
|
|
35038
|
+
const collab = chunkOIQAJR57_js.useCollaboration();
|
|
35039
|
+
const { followedClientId, followUser } = chunkOIQAJR57_js.useFollowMode({
|
|
35040
35040
|
collab,
|
|
35041
35041
|
activeSlideIndex,
|
|
35042
35042
|
setActiveSlideIndex,
|
|
35043
35043
|
slideCount
|
|
35044
35044
|
});
|
|
35045
|
-
|
|
35045
|
+
chunkOIQAJR57_js.useBroadcastFollower({
|
|
35046
35046
|
collab,
|
|
35047
35047
|
activeSlideIndex,
|
|
35048
35048
|
setActiveSlideIndex,
|
|
@@ -35084,7 +35084,7 @@ function PptxI18nProvider({
|
|
|
35084
35084
|
() => ({ t: withEnglishFallback(translate), locale }),
|
|
35085
35085
|
[translate, locale]
|
|
35086
35086
|
);
|
|
35087
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35087
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5KFSMXI4_js.PptxI18nContext.Provider, { value: state, children });
|
|
35088
35088
|
}
|
|
35089
35089
|
|
|
35090
35090
|
Object.defineProperty(exports, "THEME_CATALOG", {
|