pptx-react-viewer 4.51.1 → 4.52.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 +63 -0
- package/dist/{AiChatPanel-EV22O7UO.js → AiChatPanel-7GJQ66GR.js} +19 -19
- package/dist/AiChatPanel-7GJQ66GR.js.br +0 -0
- package/dist/AiChatPanel-7GJQ66GR.js.gz +0 -0
- package/dist/{AiChatPanel-R323KNGN.mjs → AiChatPanel-AI75AT6C.mjs} +1 -1
- package/dist/AiChatPanel-AI75AT6C.mjs.br +0 -0
- package/dist/AiChatPanel-AI75AT6C.mjs.gz +0 -0
- package/dist/{chunk-V4DY4IWP.mjs → chunk-3KXEJCMG.mjs} +283 -300
- package/dist/chunk-3KXEJCMG.mjs.br +0 -0
- package/dist/chunk-3KXEJCMG.mjs.gz +0 -0
- package/dist/{chunk-Z22RD3E2.js → chunk-3TN5SUQR.js} +4 -1
- package/dist/chunk-3TN5SUQR.js.br +0 -0
- package/dist/chunk-3TN5SUQR.js.gz +0 -0
- package/dist/{chunk-YJ4DAS4V.js → chunk-6GAWXARM.js} +479 -496
- package/dist/chunk-6GAWXARM.js.br +0 -0
- package/dist/chunk-6GAWXARM.js.gz +0 -0
- package/dist/{chunk-KCUXY7DE.mjs → chunk-E6A6ZBAM.mjs} +49 -69
- package/dist/chunk-E6A6ZBAM.mjs.br +0 -0
- package/dist/chunk-E6A6ZBAM.mjs.gz +0 -0
- package/dist/{chunk-VRX5NJY2.js → chunk-I63IFSNX.js} +597 -617
- package/dist/chunk-I63IFSNX.js.br +0 -0
- package/dist/chunk-I63IFSNX.js.gz +0 -0
- package/dist/{chunk-ZCGYPCZM.mjs → chunk-ID37Y3HG.mjs} +4 -1
- package/dist/chunk-ID37Y3HG.mjs.br +0 -0
- package/dist/chunk-ID37Y3HG.mjs.gz +0 -0
- package/dist/i18n/de.cjs +1 -24
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +1 -24
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +1 -24
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +1 -24
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +1 -24
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +1 -24
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +0 -23
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +0 -23
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.d.ts +13 -1
- 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.d.ts +59 -17
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +13 -1
- 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-EV22O7UO.js.br +0 -0
- package/dist/AiChatPanel-EV22O7UO.js.gz +0 -0
- package/dist/AiChatPanel-R323KNGN.mjs.br +0 -0
- package/dist/AiChatPanel-R323KNGN.mjs.gz +0 -0
- package/dist/chunk-KCUXY7DE.mjs.br +0 -0
- package/dist/chunk-KCUXY7DE.mjs.gz +0 -0
- package/dist/chunk-V4DY4IWP.mjs.br +0 -0
- package/dist/chunk-V4DY4IWP.mjs.gz +0 -0
- package/dist/chunk-VRX5NJY2.js.br +0 -0
- package/dist/chunk-VRX5NJY2.js.gz +0 -0
- package/dist/chunk-YJ4DAS4V.js.br +0 -0
- package/dist/chunk-YJ4DAS4V.js.gz +0 -0
- package/dist/chunk-Z22RD3E2.js.br +0 -0
- package/dist/chunk-Z22RD3E2.js.gz +0 -0
- package/dist/chunk-ZCGYPCZM.mjs.br +0 -0
- package/dist/chunk-ZCGYPCZM.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk6GAWXARM_js = require('./chunk-6GAWXARM.js');
|
|
4
|
+
var chunk3TN5SUQR_js = require('./chunk-3TN5SUQR.js');
|
|
5
5
|
var pptx = require('ooxml-ui/pptx');
|
|
6
6
|
var React108 = 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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
381
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_js.useModalDismissDrag(onClose);
|
|
382
382
|
const [selected, setSelected] = React108.useState(null);
|
|
383
383
|
const dialogRef = React108.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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
624
624
|
const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
|
|
625
625
|
const [dateFormat, setDateFormat] = React108.useState("locale");
|
|
626
626
|
const confirmDatePicker = React108.useCallback(() => {
|
|
@@ -726,7 +726,7 @@ function useViewerCustomizationContext() {
|
|
|
726
726
|
return React108.useContext(ViewerCustomizationContext);
|
|
727
727
|
}
|
|
728
728
|
function InsertSection(p) {
|
|
729
|
-
const { t } =
|
|
729
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
730
730
|
const customization = useViewerCustomizationContext();
|
|
731
731
|
const ref = React108.useRef(null);
|
|
732
732
|
const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
|
|
@@ -875,8 +875,8 @@ function MobileSheet({
|
|
|
875
875
|
headerRight
|
|
876
876
|
}) {
|
|
877
877
|
const sheetRef = React108.useRef(null);
|
|
878
|
-
const { t } =
|
|
879
|
-
const { dragY, dragging, handlers } =
|
|
878
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
879
|
+
const { dragY, dragging, handlers } = chunk6GAWXARM_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
951
951
|
const close = () => p.onCloseMobileInsert?.();
|
|
952
952
|
const customization = useViewerCustomizationContext();
|
|
953
953
|
const [dateOpen, setDateOpen] = React108.useState(false);
|
|
@@ -1023,7 +1023,7 @@ function MobileInsertSheet(p) {
|
|
|
1023
1023
|
] });
|
|
1024
1024
|
}
|
|
1025
1025
|
function AnimationsSection(p) {
|
|
1026
|
-
const { t } =
|
|
1026
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
1027
1027
|
const ref = React108.useRef(null);
|
|
1028
1028
|
const [previewActive, setPreviewActive] = React108.useState(false);
|
|
1029
1029
|
const timer = React108.useRef(void 0);
|
|
@@ -1104,7 +1104,7 @@ function WebHomeControls({
|
|
|
1104
1104
|
onPopup,
|
|
1105
1105
|
layoutArtwork
|
|
1106
1106
|
}) {
|
|
1107
|
-
const { t } =
|
|
1107
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
1108
1108
|
const ref = React108.useRef(null);
|
|
1109
1109
|
React108.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 } = chunk6GAWXARM_js.useToolbarVisibility(p.hiddenActions);
|
|
1149
1149
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
1150
1150
|
const controls = React108.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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
1307
1307
|
const ref = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
1442
1442
|
const ref = React108.useRef(null);
|
|
1443
1443
|
const draft = React108.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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_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 React108.useContext(RecentColorsContext);
|
|
1563
1563
|
}
|
|
1564
1564
|
function DrawSection(p) {
|
|
1565
|
-
const { t } =
|
|
1565
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
1566
1566
|
const { pushColor, recentColors } = useRecentColors();
|
|
1567
1567
|
const ref = React108.useRef(null);
|
|
1568
1568
|
React108.useEffect(() => {
|
|
@@ -1655,7 +1655,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
1659
1659
|
const accountAuth = React108.useContext(AccountAuthContext);
|
|
1660
1660
|
const storage = useViewerStorage();
|
|
1661
1661
|
const [profile, setProfile] = React108.useState(
|
|
@@ -1683,7 +1683,7 @@ function AccountPage() {
|
|
|
1683
1683
|
return void 0;
|
|
1684
1684
|
});
|
|
1685
1685
|
};
|
|
1686
|
-
const version = "4.
|
|
1686
|
+
const version = "4.52.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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
1943
1943
|
const [requestedPage, setRequestedPage] = React108.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] = React108.useState("");
|
|
1949
1949
|
const [recent, setRecent] = React108.useState([]);
|
|
1950
|
-
const { isHidden } =
|
|
1950
|
+
const { isHidden } = chunk6GAWXARM_js.useToolbarVisibility(p.hiddenActions);
|
|
1951
1951
|
const exportHidden = isHidden("export");
|
|
1952
1952
|
const storage = useViewerStorage();
|
|
1953
1953
|
React108.useEffect(() => {
|
|
@@ -2196,7 +2196,7 @@ function RibbonMenu({
|
|
|
2196
2196
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2197
2197
|
"div",
|
|
2198
2198
|
{
|
|
2199
|
-
className:
|
|
2199
|
+
className: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
2575
2575
|
const [activeCommentId, setActiveCommentId] = React108.useState(null);
|
|
2576
2576
|
React108.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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 = React108.useRef(null);
|
|
2729
|
-
const { t } =
|
|
2729
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
2730
2730
|
React108.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 = React108.useContext(
|
|
2748
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
2749
|
+
const supplied = React108.useContext(chunk6GAWXARM_js.ViewerOptionsStoreContext);
|
|
2750
2750
|
const fallback = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
2783
|
+
const { isHidden } = chunk6GAWXARM_js.useToolbarVisibility(p.hiddenActions);
|
|
2784
2784
|
const [showsOpen, setShowsOpen] = React108.useState(false);
|
|
2785
2785
|
const showsRef = React108.useRef(null);
|
|
2786
2786
|
React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3047
3047
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
3048
3048
|
const { onFamily, onSize } = p;
|
|
3049
3049
|
const controls = React108.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 } = chunk3TN5SUQR_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 React108.useSyncExternalStore(subscribe, read, readServer);
|
|
3168
3168
|
}
|
|
3169
3169
|
function TextSection(p) {
|
|
3170
|
-
const { t } =
|
|
3170
|
+
const { t } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3247
3247
|
const ref = React108.useRef(null);
|
|
3248
3248
|
React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3320
3320
|
const { open, onClose } = props;
|
|
3321
3321
|
const [active, setActive] = React108.useState("home");
|
|
3322
|
-
const { isTabVisible } =
|
|
3322
|
+
const { isTabVisible } = chunk6GAWXARM_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3611
3611
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
3612
3612
|
const [menuOpen, setMenuOpen] = React108.useState(false);
|
|
3613
|
-
const { isHidden } =
|
|
3613
|
+
const { isHidden } = chunk6GAWXARM_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3660
|
+
const commands = chunk6GAWXARM_js.useChartFormatContext();
|
|
3661
3661
|
const chart = commands?.chart;
|
|
3662
3662
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
3663
3663
|
const controls = React108.useMemo(
|
|
@@ -3688,7 +3688,7 @@ function PictureSizeStrip({
|
|
|
3688
3688
|
hiddenActions
|
|
3689
3689
|
}) {
|
|
3690
3690
|
const crop = useShapeFormatContext()?.crop;
|
|
3691
|
-
const { isHidden } =
|
|
3691
|
+
const { isHidden } = chunk6GAWXARM_js.useToolbarVisibility(hiddenActions);
|
|
3692
3692
|
const controls = React108.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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3818
3818
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
3819
3819
|
const controls = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3864
|
+
const viewerOptions = chunk6GAWXARM_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
|
+
chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3941
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
3942
3942
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
3943
|
-
const { isHidden } =
|
|
3943
|
+
const { isHidden } = chunk6GAWXARM_js.useToolbarVisibility(p.hiddenActions);
|
|
3944
3944
|
const customization = useViewerCustomizationContext();
|
|
3945
3945
|
const ref = React108.useRef(null);
|
|
3946
3946
|
const handlers = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
3998
|
+
const options = chunk6GAWXARM_js.useViewerOptionsContext();
|
|
3999
3999
|
const customization = useViewerCustomizationContext();
|
|
4000
4000
|
const ref = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
4063
4063
|
const [open, setOpen] = React108.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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 = chunk6GAWXARM_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
4624
|
+
const { isTabVisible } = chunk6GAWXARM_js.useToolbarVisibility(p.hiddenActions);
|
|
4625
|
+
const viewerOptions = chunk6GAWXARM_js.useViewerOptionsContext();
|
|
4626
4626
|
const customization = useViewerCustomizationContext();
|
|
4627
4627
|
const belowInput = React108.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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
5161
5161
|
const [open, setOpen] = React108.useState(null);
|
|
5162
5162
|
const hostRef = React108.useRef(null);
|
|
5163
5163
|
React108.useEffect(() => {
|
|
@@ -5328,7 +5328,7 @@ function CommentMarkersOverlay({
|
|
|
5328
5328
|
canvasSize,
|
|
5329
5329
|
onCommentMarkerClick
|
|
5330
5330
|
}) {
|
|
5331
|
-
const { t } =
|
|
5331
|
+
const { t } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
5376
5376
|
const [drag, setDrag] = React108.useState(null);
|
|
5377
5377
|
const candidates = React108.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 ? chunk6GAWXARM_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 = chunk3TN5SUQR_js.GRID_SIZE, visible }) {
|
|
5627
5627
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
5628
5628
|
const patternId = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
5655
5655
|
const dragRef = React108.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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
5844
5844
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
5845
5845
|
const svgRef = React108.useRef(null);
|
|
5846
5846
|
const latest = React108.useRef({ onCommit, onExit });
|
|
@@ -5996,7 +5996,7 @@ function FreeformToolOverlay({
|
|
|
5996
5996
|
onCommit,
|
|
5997
5997
|
onCancel
|
|
5998
5998
|
}) {
|
|
5999
|
-
const { t } =
|
|
5999
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
6000
6000
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
6001
6001
|
const svgRef = React108.useRef(null);
|
|
6002
6002
|
const latest = React108.useRef({ onCommit, onCancel });
|
|
@@ -6139,7 +6139,7 @@ function PictureCropOverlay({
|
|
|
6139
6139
|
onUpdate,
|
|
6140
6140
|
onContextMenu
|
|
6141
6141
|
}) {
|
|
6142
|
-
const { t } =
|
|
6142
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
6143
6143
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
6144
6144
|
const dragRef = React108.useRef(null);
|
|
6145
6145
|
const latest = React108.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 = chunk6GAWXARM_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__ */ chunk6GAWXARM_js.withDisplayName(
|
|
6367
6367
|
/* @__PURE__ */ React108__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__ */ chunk6GAWXARM_js.withDisplayName(
|
|
6441
6441
|
/* @__PURE__ */ React108__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, chunk3TN5SUQR_js.MIN_ELEMENT_SIZE),
|
|
6608
|
+
height: Math.max(element.height, chunk3TN5SUQR_js.MIN_ELEMENT_SIZE),
|
|
6609
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk3TN5SUQR_js.MIN_ELEMENT_SIZE)}px`,
|
|
6610
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk3TN5SUQR_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: chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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: chunk3TN5SUQR_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(chunk6GAWXARM_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(chunk6GAWXARM_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
|
+
chunk6GAWXARM_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 ? chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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 ? chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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) && !chunk3TN5SUQR_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7772
7772
|
SelectionHandleOverlay,
|
|
7773
7773
|
{
|
|
7774
7774
|
element: selectedElement,
|
|
7775
|
-
adjustmentHandles:
|
|
7775
|
+
adjustmentHandles: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
8066
8066
|
const ref = React108.useRef(null);
|
|
8067
8067
|
React108.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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 ?? chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
8181
8181
|
const transitionLabel = slide.transition ? (() => {
|
|
8182
|
-
const opt =
|
|
8182
|
+
const opt = chunk3TN5SUQR_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(chunk6GAWXARM_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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
8394
8394
|
const customization = useViewerCustomizationContext();
|
|
8395
8395
|
const shapeFormat = useShapeFormatContext();
|
|
8396
|
-
const chartFormat =
|
|
8396
|
+
const chartFormat = chunk6GAWXARM_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
8536
8536
|
const searchInputRef = React108.useRef(null);
|
|
8537
8537
|
React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
8731
8731
|
React108.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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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__ */ React108__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 !== chunk3TN5SUQR_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
9040
9040
|
const isHidden = Boolean(slide.hidden);
|
|
9041
9041
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
9042
9042
|
const handleContextMenu = React108.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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
9311
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
9312
9312
|
const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
|
|
9313
9313
|
const renameInputRef = React108.useRef(null);
|
|
9314
9314
|
const slidePresenceMap = React108.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 !== chunk3TN5SUQR_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 } = chunk6GAWXARM_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
9707
9707
|
const placeholderLabels = React108.useMemo(() => {
|
|
9708
9708
|
if (!notesMaster?.placeholders) {
|
|
9709
9709
|
return [];
|
|
@@ -9765,7 +9765,7 @@ function SlideMastersList({
|
|
|
9765
9765
|
React108.useEffect(() => {
|
|
9766
9766
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9767
9767
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9768
|
-
const { t } =
|
|
9768
|
+
const { t } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 = React108.useRef(null);
|
|
9878
|
-
const { t } =
|
|
9878
|
+
const { t } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
10029
10029
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10030
10030
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10031
10031
|
const scale = React108.useMemo(() => {
|
|
@@ -10285,7 +10285,7 @@ function HandoutMasterCanvas({
|
|
|
10285
10285
|
slideThumbnails,
|
|
10286
10286
|
pageNumber
|
|
10287
10287
|
}) {
|
|
10288
|
-
const { t } =
|
|
10288
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
10289
10289
|
const slideAspect = 4 / 3;
|
|
10290
10290
|
const scale = React108.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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_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 && chunk3TN5SUQR_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
|
+
chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
11540
11540
|
const printFrameRef = React108.useRef(null);
|
|
11541
11541
|
const handlePrint = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
11598
11598
|
const ref = React108.useRef(null);
|
|
11599
11599
|
React108.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
|
+
chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
11902
11902
|
const rootRef = React108__default.default.useRef(null);
|
|
11903
11903
|
React108__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 } = chunk6GAWXARM_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
12146
12146
|
const [versions, setVersions] = React108.useState([]);
|
|
12147
12147
|
const [loading, setLoading] = React108.useState(false);
|
|
12148
12148
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12288,7 +12288,7 @@ function SlideDiffRow({
|
|
|
12288
12288
|
onAccept,
|
|
12289
12289
|
onReject
|
|
12290
12290
|
}) {
|
|
12291
|
-
const { t } =
|
|
12291
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
12292
12292
|
const [expanded, setExpanded] = React108.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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
12445
12445
|
const [accepted, setAccepted] = React108.useState({});
|
|
12446
12446
|
const [rejected, setRejected] = React108.useState({});
|
|
12447
12447
|
const handleAccept = React108.useCallback(
|
|
@@ -12570,7 +12570,7 @@ function PasswordProtectionDialog({
|
|
|
12570
12570
|
onSetPassword,
|
|
12571
12571
|
onRemovePassword
|
|
12572
12572
|
}) {
|
|
12573
|
-
const { t } =
|
|
12573
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
12574
12574
|
const [password, setPassword] = React108.useState("");
|
|
12575
12575
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12576
12576
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -12786,7 +12786,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12786
12786
|
customProperties,
|
|
12787
12787
|
onUpdate
|
|
12788
12788
|
}) {
|
|
12789
|
-
const { t } =
|
|
12789
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
12790
12790
|
const handleAdd = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
12992
12992
|
const handleEditableChange = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
13032
13032
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13033
13033
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13034
13034
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13079,7 +13079,7 @@ function DocumentPropertiesDialog({
|
|
|
13079
13079
|
const handleClose = React108.useCallback(() => {
|
|
13080
13080
|
onClose();
|
|
13081
13081
|
}, [onClose]);
|
|
13082
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13082
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
13220
13220
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13221
13221
|
const [scanning, setScanning] = React108.useState(false);
|
|
13222
13222
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13344,7 +13344,7 @@ function DigitalSignaturesDialog({
|
|
|
13344
13344
|
hasSignatures,
|
|
13345
13345
|
signatureCount
|
|
13346
13346
|
}) {
|
|
13347
|
-
const { t } =
|
|
13347
|
+
const { t } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
13678
13678
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13679
|
-
pptx.subtitleSettingsFromOptions(
|
|
13679
|
+
pptx.subtitleSettingsFromOptions(chunk6GAWXARM_js.useViewerOptionsContext()),
|
|
13680
13680
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13681
13681
|
);
|
|
13682
13682
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13753,7 +13753,7 @@ function renderNotesSegments(segments) {
|
|
|
13753
13753
|
});
|
|
13754
13754
|
}
|
|
13755
13755
|
function PresenterConsoleToolbar(p) {
|
|
13756
|
-
const { t } =
|
|
13756
|
+
const { t } = chunk3TN5SUQR_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: chunk3TN5SUQR_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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
14208
14208
|
const [now, setNow] = React108.useState(Date.now());
|
|
14209
14209
|
React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
14365
14365
|
const [now, setNow] = React108.useState(Date.now());
|
|
14366
14366
|
React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
14478
14478
|
const [tick, setTick] = React108.useState(0);
|
|
14479
14479
|
React108.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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
14610
14610
|
const activeSlide = slides[activeSlideIndex];
|
|
14611
14611
|
const elements = activeSlide?.elements ?? [];
|
|
14612
14612
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14761,7 +14761,7 @@ function SelectionPane({
|
|
|
14761
14761
|
setDragIndex(null);
|
|
14762
14762
|
setDragOverIndex(null);
|
|
14763
14763
|
},
|
|
14764
|
-
className:
|
|
14764
|
+
className: chunk3TN5SUQR_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__ */ chunk3TN5SUQR_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__ */ chunk3TN5SUQR_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__ */ chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
15170
15170
|
const fileInputRef = React108__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
|
+
chunk6GAWXARM_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 } = chunk3TN5SUQR_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 = React108.useCallback((anim) => {
|
|
15381
15381
|
if (anim.motionPath) {
|
|
15382
|
-
|
|
15382
|
+
chunk3TN5SUQR_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
|
+
chunk3TN5SUQR_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 = React108.useCallback(() =>
|
|
15399
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunk3TN5SUQR_js.stopPreviewAnimation(), []);
|
|
15400
15400
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15401
15401
|
if (!selectedElementAnimation) {
|
|
15402
15402
|
return;
|
|
15403
15403
|
}
|
|
15404
15404
|
if (selectedElementAnimation.motionPath) {
|
|
15405
|
-
|
|
15405
|
+
chunk3TN5SUQR_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
|
+
chunk3TN5SUQR_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 || chunk3TN5SUQR_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 || chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
15719
|
+
const { viewportWidth } = chunk6GAWXARM_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
16211
16211
|
const [pendingType, setPendingType] = React108.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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
16647
16647
|
const commitRecentColor = useRecentColorCommit();
|
|
16648
16648
|
const [seriesIndex, setSeriesIndex] = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
16753
16753
|
const commitRecentColor = useRecentColorCommit();
|
|
16754
16754
|
const [seriesIndex, setSeriesIndex] = React108.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 } = chunk3TN5SUQR_js.useTranslation();
|
|
16855
16855
|
const ref = React108.useRef(null);
|
|
16856
16856
|
React108.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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 = chunk6GAWXARM_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17845
|
+
const { selection: partSelection } = chunk6GAWXARM_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
18284
18284
|
const dialogRef = React108.useRef(null);
|
|
18285
18285
|
const fileInputRef = React108.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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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 } = chunk3TN5SUQR_js.useTranslation();
|
|
18640
18640
|
const [isEditorOpen, setIsEditorOpen] = React108.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: chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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: chunk3TN5SUQR_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 } = chunk3TN5SUQR_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: chunk3TN5SUQR_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 }
|
|
@@ -18939,7 +18939,7 @@ function ColorWashSection({
|
|
|
18939
18939
|
] })
|
|
18940
18940
|
] });
|
|
18941
18941
|
}
|
|
18942
|
-
function
|
|
18942
|
+
function DuotoneColorInput({
|
|
18943
18943
|
value,
|
|
18944
18944
|
disabled,
|
|
18945
18945
|
className,
|
|
@@ -18955,10 +18955,6 @@ function DebouncedColorInput2({
|
|
|
18955
18955
|
const handleChange = React108.useCallback((e) => {
|
|
18956
18956
|
setLocal(e.target.value);
|
|
18957
18957
|
}, []);
|
|
18958
|
-
const handleBlur = React108.useCallback(() => {
|
|
18959
|
-
commitRef.current(local);
|
|
18960
|
-
pushColor(local);
|
|
18961
|
-
}, [local, pushColor]);
|
|
18962
18958
|
const inputRef = React108.useRef(null);
|
|
18963
18959
|
React108.useEffect(() => {
|
|
18964
18960
|
const el = inputRef.current;
|
|
@@ -18980,8 +18976,7 @@ function DebouncedColorInput2({
|
|
|
18980
18976
|
disabled,
|
|
18981
18977
|
className,
|
|
18982
18978
|
value: local,
|
|
18983
|
-
onChange: handleChange
|
|
18984
|
-
onBlur: handleBlur
|
|
18979
|
+
onChange: handleChange
|
|
18985
18980
|
}
|
|
18986
18981
|
);
|
|
18987
18982
|
}
|
|
@@ -18990,7 +18985,7 @@ function DuotonePanel({
|
|
|
18990
18985
|
canEdit,
|
|
18991
18986
|
onUpdateElement
|
|
18992
18987
|
}) {
|
|
18993
|
-
const { t } =
|
|
18988
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
18994
18989
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
18995
18990
|
const commitDuotone = React108.useCallback(
|
|
18996
18991
|
(color1, color2) => {
|
|
@@ -19011,15 +19006,15 @@ function DuotonePanel({
|
|
|
19011
19006
|
}
|
|
19012
19007
|
});
|
|
19013
19008
|
}, [effects, onUpdateElement]);
|
|
19014
|
-
const shadowColor =
|
|
19015
|
-
const highlightColor =
|
|
19009
|
+
const shadowColor = chunk3TN5SUQR_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19010
|
+
const highlightColor = chunk3TN5SUQR_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19016
19011
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19017
19012
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19018
19013
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
19019
19014
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1.5", children: [
|
|
19020
19015
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.duotoneShadows") }),
|
|
19021
19016
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19022
|
-
|
|
19017
|
+
DuotoneColorInput,
|
|
19023
19018
|
{
|
|
19024
19019
|
disabled: !canEdit,
|
|
19025
19020
|
value: shadowColor,
|
|
@@ -19031,7 +19026,7 @@ function DuotonePanel({
|
|
|
19031
19026
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1.5", children: [
|
|
19032
19027
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.duotoneHighlights") }),
|
|
19033
19028
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19034
|
-
|
|
19029
|
+
DuotoneColorInput,
|
|
19035
19030
|
{
|
|
19036
19031
|
disabled: !canEdit,
|
|
19037
19032
|
value: highlightColor,
|
|
@@ -19043,7 +19038,7 @@ function DuotonePanel({
|
|
|
19043
19038
|
] }),
|
|
19044
19039
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19045
19040
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19046
|
-
/* @__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: chunk6GAWXARM_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19047
19042
|
"button",
|
|
19048
19043
|
{
|
|
19049
19044
|
type: "button",
|
|
@@ -19079,7 +19074,7 @@ function ImageAdjustmentsPanel({
|
|
|
19079
19074
|
canEdit,
|
|
19080
19075
|
onUpdateElement
|
|
19081
19076
|
}) {
|
|
19082
|
-
const { t } =
|
|
19077
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
19083
19078
|
const effects = React108.useMemo(
|
|
19084
19079
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19085
19080
|
[selectedElement]
|
|
@@ -19180,7 +19175,7 @@ function ImageCropSection({
|
|
|
19180
19175
|
canEdit,
|
|
19181
19176
|
onUpdateElement
|
|
19182
19177
|
}) {
|
|
19183
|
-
const { t } =
|
|
19178
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
19184
19179
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19185
19180
|
return null;
|
|
19186
19181
|
}
|
|
@@ -19198,7 +19193,7 @@ function ImageCropSection({
|
|
|
19198
19193
|
max: MAX_CROP_PERCENT,
|
|
19199
19194
|
disabled: !croppable,
|
|
19200
19195
|
className: "accent-primary",
|
|
19201
|
-
value: Math.round(
|
|
19196
|
+
value: Math.round(chunk3TN5SUQR_js.clampCropValue(selectedElement[key]) * 100),
|
|
19202
19197
|
onChange: (e) => onUpdateElement({
|
|
19203
19198
|
[key]: Number(e.target.value) / 100
|
|
19204
19199
|
})
|
|
@@ -19245,7 +19240,7 @@ function ImagePropertiesPanel({
|
|
|
19245
19240
|
canEdit,
|
|
19246
19241
|
onUpdateElement
|
|
19247
19242
|
}) {
|
|
19248
|
-
const { t } =
|
|
19243
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
19249
19244
|
const fx = selectedElement.imageEffects;
|
|
19250
19245
|
const updateEffects = (patch) => {
|
|
19251
19246
|
onUpdateElement({
|
|
@@ -19262,7 +19257,7 @@ function ImagePropertiesPanel({
|
|
|
19262
19257
|
{
|
|
19263
19258
|
rows: 2,
|
|
19264
19259
|
disabled: !canEdit,
|
|
19265
|
-
className:
|
|
19260
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19266
19261
|
value: selectedElement.altText ?? "",
|
|
19267
19262
|
onChange: (e) => onUpdateElement({
|
|
19268
19263
|
altText: e.target.value
|
|
@@ -19376,7 +19371,7 @@ function InspectorFields({
|
|
|
19376
19371
|
onPatch,
|
|
19377
19372
|
disabled = false
|
|
19378
19373
|
}) {
|
|
19379
|
-
const { t } =
|
|
19374
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
19380
19375
|
const commitRecentColor = useRecentColorCommit();
|
|
19381
19376
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19382
19377
|
const change = (sectionId, fieldId, raw) => {
|
|
@@ -19597,7 +19592,7 @@ function MediaInspector({
|
|
|
19597
19592
|
durationSeconds,
|
|
19598
19593
|
onUpdateElement
|
|
19599
19594
|
}) {
|
|
19600
|
-
const { t } =
|
|
19595
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
19601
19596
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19602
19597
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19603
19598
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19827,7 +19822,7 @@ function MediaPlaybackBookmarks({
|
|
|
19827
19822
|
onUpdateElement,
|
|
19828
19823
|
onSeekTo
|
|
19829
19824
|
}) {
|
|
19830
|
-
const { t } =
|
|
19825
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
19831
19826
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
19832
19827
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19833
19828
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20077,7 +20072,7 @@ function MediaPropertiesPanel({
|
|
|
20077
20072
|
canEdit,
|
|
20078
20073
|
onUpdateElement
|
|
20079
20074
|
}) {
|
|
20080
|
-
const { t } =
|
|
20075
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20081
20076
|
const mediaRef = React108.useRef(null);
|
|
20082
20077
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20083
20078
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20311,7 +20306,7 @@ function AccessibilityTextSection({
|
|
|
20311
20306
|
canEdit,
|
|
20312
20307
|
onUpdateElement
|
|
20313
20308
|
}) {
|
|
20314
|
-
const { t } =
|
|
20309
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20315
20310
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20316
20311
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20317
20312
|
return null;
|
|
@@ -20326,7 +20321,7 @@ function AccessibilityTextSection({
|
|
|
20326
20321
|
rows: 2,
|
|
20327
20322
|
disabled: !canEdit,
|
|
20328
20323
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20329
|
-
className:
|
|
20324
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20330
20325
|
value: fields.altText,
|
|
20331
20326
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20332
20327
|
}
|
|
@@ -20340,7 +20335,7 @@ function AccessibilityTextSection({
|
|
|
20340
20335
|
type: "text",
|
|
20341
20336
|
disabled: !canEdit,
|
|
20342
20337
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20343
|
-
className:
|
|
20338
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "text-[11px]"),
|
|
20344
20339
|
value: fields.title,
|
|
20345
20340
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20346
20341
|
}
|
|
@@ -20368,7 +20363,7 @@ function RecentColorsRow({
|
|
|
20368
20363
|
disabled,
|
|
20369
20364
|
onCommit
|
|
20370
20365
|
}) {
|
|
20371
|
-
const { t } =
|
|
20366
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20372
20367
|
const { recentColors, pushColor } = useRecentColors();
|
|
20373
20368
|
const shown = recentColors.length > 0;
|
|
20374
20369
|
const ref = React108.useRef(null);
|
|
@@ -20410,7 +20405,7 @@ function ThemeColorSwatchGrid({
|
|
|
20410
20405
|
selectedHex,
|
|
20411
20406
|
onPick
|
|
20412
20407
|
}) {
|
|
20413
|
-
const { t } =
|
|
20408
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20414
20409
|
const themeColorMap = useThemeColorMap();
|
|
20415
20410
|
const columns = React108.useMemo(
|
|
20416
20411
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20457,7 +20452,7 @@ function SelectRow({
|
|
|
20457
20452
|
options,
|
|
20458
20453
|
onChange
|
|
20459
20454
|
}) {
|
|
20460
|
-
const { t } =
|
|
20455
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20461
20456
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20462
20457
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20463
20458
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20480,7 +20475,7 @@ function ColorPickerRow({
|
|
|
20480
20475
|
prefix,
|
|
20481
20476
|
onChange
|
|
20482
20477
|
}) {
|
|
20483
|
-
const { t } =
|
|
20478
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20484
20479
|
const { pushColor } = useRecentColors();
|
|
20485
20480
|
const commitRecentColor = useRecentColorCommit();
|
|
20486
20481
|
const commit = (color, ref) => {
|
|
@@ -20488,7 +20483,7 @@ function ColorPickerRow({
|
|
|
20488
20483
|
pushColor(color);
|
|
20489
20484
|
};
|
|
20490
20485
|
const handleEyedropper = async () => {
|
|
20491
|
-
const color = await
|
|
20486
|
+
const color = await chunk3TN5SUQR_js.openNativeEyeDropper();
|
|
20492
20487
|
if (color) {
|
|
20493
20488
|
commit(color);
|
|
20494
20489
|
}
|
|
@@ -20559,7 +20554,7 @@ function GradientStopRow({
|
|
|
20559
20554
|
onUpdate,
|
|
20560
20555
|
allStops
|
|
20561
20556
|
}) {
|
|
20562
|
-
const { t } =
|
|
20557
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20563
20558
|
const { pushColor } = useRecentColors();
|
|
20564
20559
|
const commitRecentColor = useRecentColorCommit();
|
|
20565
20560
|
const patchStop = (patch) => {
|
|
@@ -20572,9 +20567,9 @@ function GradientStopRow({
|
|
|
20572
20567
|
"input",
|
|
20573
20568
|
{
|
|
20574
20569
|
type: "color",
|
|
20575
|
-
value:
|
|
20570
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20576
20571
|
ref: commitRecentColor,
|
|
20577
|
-
onChange: (e) => patchStop({ color:
|
|
20572
|
+
onChange: (e) => patchStop({ color: chunk3TN5SUQR_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20578
20573
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20579
20574
|
}
|
|
20580
20575
|
),
|
|
@@ -20641,7 +20636,7 @@ function FillAdvancedControls({
|
|
|
20641
20636
|
onUpdateGradientStops,
|
|
20642
20637
|
onSetFillColor: _onSetFillColor
|
|
20643
20638
|
}) {
|
|
20644
|
-
const { t } =
|
|
20639
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20645
20640
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20646
20641
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20647
20642
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20695,7 +20690,7 @@ function FillAdvancedControls({
|
|
|
20695
20690
|
onClick: () => onUpdateGradientStops([
|
|
20696
20691
|
...gradientStops,
|
|
20697
20692
|
{
|
|
20698
|
-
color:
|
|
20693
|
+
color: chunk3TN5SUQR_js.normalizeHexColor(style?.fillColor, chunk3TN5SUQR_js.DEFAULT_FILL_COLOR),
|
|
20699
20694
|
position: 50,
|
|
20700
20695
|
opacity: 1
|
|
20701
20696
|
}
|
|
@@ -20709,9 +20704,9 @@ function FillAdvancedControls({
|
|
|
20709
20704
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20710
20705
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20711
20706
|
/* @__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) => {
|
|
20712
|
-
const fgColor =
|
|
20713
|
-
const bgColor =
|
|
20714
|
-
const svgPattern =
|
|
20707
|
+
const fgColor = chunk3TN5SUQR_js.normalizeHexColor(style?.fillColor, chunk3TN5SUQR_js.DEFAULT_FILL_COLOR);
|
|
20708
|
+
const bgColor = chunk3TN5SUQR_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20709
|
+
const svgPattern = chunk3TN5SUQR_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20715
20710
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20716
20711
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20717
20712
|
"button",
|
|
@@ -20744,7 +20739,7 @@ function FillAdvancedControls({
|
|
|
20744
20739
|
{
|
|
20745
20740
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20746
20741
|
prefix: "pattern-fg",
|
|
20747
|
-
value:
|
|
20742
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(style?.fillColor, chunk3TN5SUQR_js.DEFAULT_FILL_COLOR),
|
|
20748
20743
|
disabled: isLine,
|
|
20749
20744
|
onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
|
|
20750
20745
|
}
|
|
@@ -20754,7 +20749,7 @@ function FillAdvancedControls({
|
|
|
20754
20749
|
{
|
|
20755
20750
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20756
20751
|
prefix: "pattern-bg",
|
|
20757
|
-
value:
|
|
20752
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20758
20753
|
disabled: isLine,
|
|
20759
20754
|
onChange: (color) => onUpdateShapeStyle({
|
|
20760
20755
|
fillMode: "pattern",
|
|
@@ -20821,7 +20816,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20821
20816
|
function QuickStylesGallery({
|
|
20822
20817
|
onUpdateShapeStyle
|
|
20823
20818
|
}) {
|
|
20824
|
-
const { t } =
|
|
20819
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20825
20820
|
const ref = React108.useRef(null);
|
|
20826
20821
|
React108.useLayoutEffect(() => {
|
|
20827
20822
|
const gallery = ref.current;
|
|
@@ -20855,14 +20850,14 @@ function StrokeEffectsSection({
|
|
|
20855
20850
|
onUpdateShapeStyle,
|
|
20856
20851
|
onSetStrokeColor
|
|
20857
20852
|
}) {
|
|
20858
|
-
const { t } =
|
|
20853
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20859
20854
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20860
20855
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20861
20856
|
ColorPickerRow,
|
|
20862
20857
|
{
|
|
20863
20858
|
label: t("pptx.inspector.stroke"),
|
|
20864
20859
|
prefix: "stroke",
|
|
20865
|
-
value:
|
|
20860
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(style?.strokeColor, chunk3TN5SUQR_js.DEFAULT_STROKE_COLOR),
|
|
20866
20861
|
selectedRef: style?.strokeColorRef,
|
|
20867
20862
|
onChange: onSetStrokeColor
|
|
20868
20863
|
}
|
|
@@ -20902,7 +20897,7 @@ function FillStrokeProperties({
|
|
|
20902
20897
|
onSetFillColor,
|
|
20903
20898
|
onSetStrokeColor
|
|
20904
20899
|
}) {
|
|
20905
|
-
const { t } =
|
|
20900
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
20906
20901
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
20907
20902
|
const style = selectedShapeStyle;
|
|
20908
20903
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -20918,10 +20913,10 @@ function FillStrokeProperties({
|
|
|
20918
20913
|
return;
|
|
20919
20914
|
}
|
|
20920
20915
|
if (nextMode === "gradient") {
|
|
20921
|
-
const existing =
|
|
20916
|
+
const existing = chunk3TN5SUQR_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
20922
20917
|
const stops = existing.length >= 2 ? existing : [
|
|
20923
20918
|
{
|
|
20924
|
-
color:
|
|
20919
|
+
color: chunk3TN5SUQR_js.normalizeHexColor(style?.fillColor, chunk3TN5SUQR_js.DEFAULT_FILL_COLOR),
|
|
20925
20920
|
position: 0,
|
|
20926
20921
|
opacity: 1
|
|
20927
20922
|
},
|
|
@@ -20946,7 +20941,7 @@ function FillStrokeProperties({
|
|
|
20946
20941
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
20947
20942
|
};
|
|
20948
20943
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
20949
|
-
{ color:
|
|
20944
|
+
{ color: chunk3TN5SUQR_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
20950
20945
|
{ color: "#ffffff", position: 100 }
|
|
20951
20946
|
];
|
|
20952
20947
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -20973,7 +20968,7 @@ function FillStrokeProperties({
|
|
|
20973
20968
|
{
|
|
20974
20969
|
label: t("pptx.fill.fill"),
|
|
20975
20970
|
prefix: "fill",
|
|
20976
|
-
value:
|
|
20971
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(style?.fillColor, chunk3TN5SUQR_js.DEFAULT_FILL_COLOR),
|
|
20977
20972
|
selectedRef: style?.fillColorRef,
|
|
20978
20973
|
disabled: line,
|
|
20979
20974
|
onChange: onSetFillColor
|
|
@@ -21010,7 +21005,7 @@ function Text3DProperties({
|
|
|
21010
21005
|
ts,
|
|
21011
21006
|
onUpdateTextStyle
|
|
21012
21007
|
}) {
|
|
21013
|
-
const { t } =
|
|
21008
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
21014
21009
|
const commitRecentColor = useRecentColorCommit();
|
|
21015
21010
|
const t3d = ts?.text3d;
|
|
21016
21011
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21057,7 +21052,7 @@ function Text3DProperties({
|
|
|
21057
21052
|
"input",
|
|
21058
21053
|
{
|
|
21059
21054
|
type: "color",
|
|
21060
|
-
value:
|
|
21055
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21061
21056
|
ref: commitRecentColor,
|
|
21062
21057
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21063
21058
|
className: COLOR_CLS
|
|
@@ -21224,7 +21219,7 @@ function AdvancedTextFormatting({
|
|
|
21224
21219
|
onUpdateTextStyle,
|
|
21225
21220
|
numChange
|
|
21226
21221
|
}) {
|
|
21227
|
-
const { t } =
|
|
21222
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
21228
21223
|
const commitRecentColor = useRecentColorCommit();
|
|
21229
21224
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21230
21225
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21246,7 +21241,7 @@ function AdvancedTextFormatting({
|
|
|
21246
21241
|
"input",
|
|
21247
21242
|
{
|
|
21248
21243
|
type: "color",
|
|
21249
|
-
value:
|
|
21244
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21250
21245
|
ref: commitRecentColor,
|
|
21251
21246
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21252
21247
|
disabled: !canEdit,
|
|
@@ -21388,7 +21383,7 @@ function TextReflectionSection({
|
|
|
21388
21383
|
onUpdateTextStyle,
|
|
21389
21384
|
numChange
|
|
21390
21385
|
}) {
|
|
21391
|
-
const { t } =
|
|
21386
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
21392
21387
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21393
21388
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21394
21389
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21496,7 +21491,7 @@ function TextEffectsPanel({
|
|
|
21496
21491
|
onUpdateTextStyle,
|
|
21497
21492
|
numChange
|
|
21498
21493
|
}) {
|
|
21499
|
-
const { t } =
|
|
21494
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
21500
21495
|
const commitRecentColor = useRecentColorCommit();
|
|
21501
21496
|
const hasShadow = Boolean(
|
|
21502
21497
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21542,7 +21537,7 @@ function TextEffectsPanel({
|
|
|
21542
21537
|
"input",
|
|
21543
21538
|
{
|
|
21544
21539
|
type: "color",
|
|
21545
|
-
value:
|
|
21540
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21546
21541
|
ref: commitRecentColor,
|
|
21547
21542
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21548
21543
|
className: COLOR_CLS2
|
|
@@ -21647,7 +21642,7 @@ function TextEffectsPanel({
|
|
|
21647
21642
|
"input",
|
|
21648
21643
|
{
|
|
21649
21644
|
type: "color",
|
|
21650
|
-
value:
|
|
21645
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21651
21646
|
ref: commitRecentColor,
|
|
21652
21647
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21653
21648
|
className: COLOR_CLS2
|
|
@@ -21697,7 +21692,7 @@ function TextWarpGallery({
|
|
|
21697
21692
|
ts,
|
|
21698
21693
|
onUpdateTextStyle
|
|
21699
21694
|
}) {
|
|
21700
|
-
const { t } =
|
|
21695
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
21701
21696
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
21702
21697
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21703
21698
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21775,7 +21770,7 @@ function ShapeTextPanels({
|
|
|
21775
21770
|
onUpdateElementStyle,
|
|
21776
21771
|
onUpdateTextStyle
|
|
21777
21772
|
}) {
|
|
21778
|
-
const { t } =
|
|
21773
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
21779
21774
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21780
21775
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21781
21776
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21784,11 +21779,11 @@ function ShapeTextPanels({
|
|
|
21784
21779
|
{
|
|
21785
21780
|
value: selectedElement.shapeType || "rect",
|
|
21786
21781
|
disabled: !canEdit,
|
|
21787
|
-
className:
|
|
21782
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "w-full"),
|
|
21788
21783
|
onChange: (e) => onUpdateElement({
|
|
21789
21784
|
shapeType: e.target.value
|
|
21790
21785
|
}),
|
|
21791
|
-
children:
|
|
21786
|
+
children: chunk3TN5SUQR_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21792
21787
|
}
|
|
21793
21788
|
)
|
|
21794
21789
|
] }),
|
|
@@ -21800,7 +21795,7 @@ function ShapeTextPanels({
|
|
|
21800
21795
|
selectedElement,
|
|
21801
21796
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21802
21797
|
selectedShapeType: selectedElement.shapeType,
|
|
21803
|
-
selectedGradientStops:
|
|
21798
|
+
selectedGradientStops: chunk3TN5SUQR_js.sanitizeGradientStops(
|
|
21804
21799
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21805
21800
|
),
|
|
21806
21801
|
canEdit,
|
|
@@ -21836,7 +21831,7 @@ function ShapeTextPanels({
|
|
|
21836
21831
|
{
|
|
21837
21832
|
disabled: !canEdit,
|
|
21838
21833
|
ariaLabel: "Text Color",
|
|
21839
|
-
value:
|
|
21834
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
21840
21835
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
21841
21836
|
onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
|
|
21842
21837
|
}
|
|
@@ -21926,7 +21921,7 @@ function TextFormatToggle({
|
|
|
21926
21921
|
{
|
|
21927
21922
|
type: "button",
|
|
21928
21923
|
disabled,
|
|
21929
|
-
className:
|
|
21924
|
+
className: chunk3TN5SUQR_js.cn(
|
|
21930
21925
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
21931
21926
|
italic && "italic",
|
|
21932
21927
|
underline && "underline",
|
|
@@ -22095,7 +22090,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22095
22090
|
canEdit,
|
|
22096
22091
|
onUpdateSmartArt
|
|
22097
22092
|
}) {
|
|
22098
|
-
const { t } =
|
|
22093
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22099
22094
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22100
22095
|
const handleLayoutSwitch = (newLayout) => {
|
|
22101
22096
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22114,7 +22109,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22114
22109
|
type: "button",
|
|
22115
22110
|
"data-testid": `smartart-layout-${type}`,
|
|
22116
22111
|
disabled: !canEdit,
|
|
22117
|
-
className:
|
|
22112
|
+
className: chunk3TN5SUQR_js.cn(
|
|
22118
22113
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22119
22114
|
"text-[9px] leading-tight",
|
|
22120
22115
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22141,7 +22136,7 @@ function SmartArtStyleControls({
|
|
|
22141
22136
|
onChangeColorScheme,
|
|
22142
22137
|
onChangeStyle
|
|
22143
22138
|
}) {
|
|
22144
|
-
const { t } =
|
|
22139
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22145
22140
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22146
22141
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22147
22142
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22152,7 +22147,7 @@ function SmartArtStyleControls({
|
|
|
22152
22147
|
disabled: !canEdit,
|
|
22153
22148
|
"data-testid": "smartart-color-scheme",
|
|
22154
22149
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22155
|
-
className:
|
|
22150
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "w-full"),
|
|
22156
22151
|
value: colorScheme,
|
|
22157
22152
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22158
22153
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22167,7 +22162,7 @@ function SmartArtStyleControls({
|
|
|
22167
22162
|
type: "button",
|
|
22168
22163
|
disabled: !canEdit,
|
|
22169
22164
|
"aria-pressed": style === s,
|
|
22170
|
-
className:
|
|
22165
|
+
className: chunk3TN5SUQR_js.cn(
|
|
22171
22166
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22172
22167
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22173
22168
|
),
|
|
@@ -22193,14 +22188,14 @@ function SmartArtPropertiesPanel({
|
|
|
22193
22188
|
onUpdateElement,
|
|
22194
22189
|
box
|
|
22195
22190
|
}) {
|
|
22196
|
-
const { t } =
|
|
22191
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22197
22192
|
const { pushColor } = useRecentColors();
|
|
22198
22193
|
const paneRef = React108__default.default.useRef(null);
|
|
22199
22194
|
const applySmartArtData = (newData) => {
|
|
22200
22195
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22201
22196
|
newData,
|
|
22202
22197
|
newData.layout,
|
|
22203
|
-
|
|
22198
|
+
chunk6GAWXARM_js.resolveSmartArtDataPalette(newData),
|
|
22204
22199
|
newData.style ?? "flat",
|
|
22205
22200
|
"inspector",
|
|
22206
22201
|
box
|
|
@@ -22271,9 +22266,9 @@ function TableDataGrid({
|
|
|
22271
22266
|
canEdit,
|
|
22272
22267
|
onUpdateElement
|
|
22273
22268
|
}) {
|
|
22274
|
-
const { t } =
|
|
22269
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22275
22270
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22276
|
-
const { viewportWidth } =
|
|
22271
|
+
const { viewportWidth } = chunk6GAWXARM_js.useIsMobile();
|
|
22277
22272
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22278
22273
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22279
22274
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22437,7 +22432,7 @@ function TableCellPatternFill({
|
|
|
22437
22432
|
canEdit,
|
|
22438
22433
|
onUpdateCellStyle
|
|
22439
22434
|
}) {
|
|
22440
|
-
const { t } =
|
|
22435
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22441
22436
|
const commitRecentColor = useRecentColorCommit();
|
|
22442
22437
|
const translate = (key) => t(key);
|
|
22443
22438
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22492,7 +22487,7 @@ function TableCellAdvancedFill({
|
|
|
22492
22487
|
canEdit,
|
|
22493
22488
|
onUpdateCellStyle
|
|
22494
22489
|
}) {
|
|
22495
|
-
const { t } =
|
|
22490
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22496
22491
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22497
22492
|
const handleFillModeChange = (mode) => {
|
|
22498
22493
|
const next = mode;
|
|
@@ -22580,7 +22575,7 @@ function GradientControls({
|
|
|
22580
22575
|
canEdit,
|
|
22581
22576
|
onUpdateCellStyle
|
|
22582
22577
|
}) {
|
|
22583
|
-
const { t } =
|
|
22578
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22584
22579
|
const commitRecentColor = useRecentColorCommit();
|
|
22585
22580
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22586
22581
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22678,7 +22673,7 @@ function TableCellColorField({
|
|
|
22678
22673
|
disabled,
|
|
22679
22674
|
onCommit
|
|
22680
22675
|
}) {
|
|
22681
|
-
const hex =
|
|
22676
|
+
const hex = chunk3TN5SUQR_js.normalizeHexColor(value, fallback);
|
|
22682
22677
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22683
22678
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22684
22679
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22708,7 +22703,7 @@ function TableCellFormattingPanel({
|
|
|
22708
22703
|
onUpdateTableData,
|
|
22709
22704
|
onUpdateMergeRows
|
|
22710
22705
|
}) {
|
|
22711
|
-
const { t } =
|
|
22706
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22712
22707
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22713
22708
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22714
22709
|
if (!cell) {
|
|
@@ -22786,7 +22781,7 @@ function TableCellFormattingPanel({
|
|
|
22786
22781
|
{
|
|
22787
22782
|
type: "button",
|
|
22788
22783
|
disabled: !canEdit,
|
|
22789
|
-
className:
|
|
22784
|
+
className: chunk3TN5SUQR_js.cn(
|
|
22790
22785
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22791
22786
|
cls,
|
|
22792
22787
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22805,7 +22800,7 @@ function TableCellFormattingPanel({
|
|
|
22805
22800
|
{
|
|
22806
22801
|
type: "button",
|
|
22807
22802
|
disabled: !canEdit,
|
|
22808
|
-
className:
|
|
22803
|
+
className: chunk3TN5SUQR_js.cn(
|
|
22809
22804
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22810
22805
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22811
22806
|
),
|
|
@@ -22823,7 +22818,7 @@ function TableCellFormattingPanel({
|
|
|
22823
22818
|
{
|
|
22824
22819
|
type: "button",
|
|
22825
22820
|
disabled: !canEdit,
|
|
22826
|
-
className:
|
|
22821
|
+
className: chunk3TN5SUQR_js.cn(
|
|
22827
22822
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22828
22823
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22829
22824
|
),
|
|
@@ -22846,7 +22841,7 @@ function TableCellFormattingPanel({
|
|
|
22846
22841
|
DebouncedColorInput,
|
|
22847
22842
|
{
|
|
22848
22843
|
disabled: !canEdit,
|
|
22849
|
-
value:
|
|
22844
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
22850
22845
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
22851
22846
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
22852
22847
|
}
|
|
@@ -22856,7 +22851,7 @@ function TableCellFormattingPanel({
|
|
|
22856
22851
|
{
|
|
22857
22852
|
type: "number",
|
|
22858
22853
|
disabled: !canEdit,
|
|
22859
|
-
className:
|
|
22854
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "w-14"),
|
|
22860
22855
|
min: 0,
|
|
22861
22856
|
max: 10,
|
|
22862
22857
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -22872,7 +22867,7 @@ function TableCellFormattingPanel({
|
|
|
22872
22867
|
{
|
|
22873
22868
|
type: "button",
|
|
22874
22869
|
disabled: !canEdit,
|
|
22875
|
-
className:
|
|
22870
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "text-center"),
|
|
22876
22871
|
onClick: () => {
|
|
22877
22872
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
22878
22873
|
if (newRows) {
|
|
@@ -22887,7 +22882,7 @@ function TableCellFormattingPanel({
|
|
|
22887
22882
|
{
|
|
22888
22883
|
type: "button",
|
|
22889
22884
|
disabled: !canEdit,
|
|
22890
|
-
className:
|
|
22885
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "text-center"),
|
|
22891
22886
|
onClick: () => {
|
|
22892
22887
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
22893
22888
|
if (newRows) {
|
|
@@ -22902,7 +22897,7 @@ function TableCellFormattingPanel({
|
|
|
22902
22897
|
{
|
|
22903
22898
|
type: "button",
|
|
22904
22899
|
disabled: !canEdit,
|
|
22905
|
-
className:
|
|
22900
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "text-center"),
|
|
22906
22901
|
onClick: () => {
|
|
22907
22902
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
22908
22903
|
if (newRows) {
|
|
@@ -22921,7 +22916,7 @@ function TableStyleEditorFields({
|
|
|
22921
22916
|
canEdit,
|
|
22922
22917
|
onEdit
|
|
22923
22918
|
}) {
|
|
22924
|
-
const { t } =
|
|
22919
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
22925
22920
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
22926
22921
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
22927
22922
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23026,7 +23021,7 @@ function BorderSideRow({
|
|
|
23026
23021
|
canEdit,
|
|
23027
23022
|
onEdit
|
|
23028
23023
|
}) {
|
|
23029
|
-
const { t } =
|
|
23024
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23030
23025
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23031
23026
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23032
23027
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23083,7 +23078,7 @@ function TableStyleEditor({
|
|
|
23083
23078
|
onAssignStyle,
|
|
23084
23079
|
onClose
|
|
23085
23080
|
}) {
|
|
23086
|
-
const { t } =
|
|
23081
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23087
23082
|
const themeColorMap = useThemeColorMap();
|
|
23088
23083
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23089
23084
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23156,7 +23151,7 @@ function TablePropertiesPanel({
|
|
|
23156
23151
|
onTableStyleMapChange,
|
|
23157
23152
|
onDeleteTableStyle
|
|
23158
23153
|
}) {
|
|
23159
|
-
const { t } =
|
|
23154
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23160
23155
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23161
23156
|
const td = tableElement.tableData;
|
|
23162
23157
|
if (!td) {
|
|
@@ -23238,7 +23233,7 @@ function TablePropertiesPanel({
|
|
|
23238
23233
|
] }),
|
|
23239
23234
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23240
23235
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23241
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23236
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk3TN5SUQR_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23242
23237
|
"button",
|
|
23243
23238
|
{
|
|
23244
23239
|
type: "button",
|
|
@@ -23386,7 +23381,7 @@ function ElementInspectorBody({
|
|
|
23386
23381
|
onUpdateTextStyle,
|
|
23387
23382
|
onMoveLayer
|
|
23388
23383
|
}) {
|
|
23389
|
-
const { t } =
|
|
23384
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23390
23385
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23391
23386
|
const handleToggleLock = () => {
|
|
23392
23387
|
if (!canEdit) {
|
|
@@ -23536,7 +23531,7 @@ function CommentMentionTextarea({
|
|
|
23536
23531
|
className,
|
|
23537
23532
|
ariaLabel
|
|
23538
23533
|
}) {
|
|
23539
|
-
const { t } =
|
|
23534
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23540
23535
|
const textareaRef = React108.useRef(null);
|
|
23541
23536
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23542
23537
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23625,7 +23620,7 @@ function CommentMentionTextarea({
|
|
|
23625
23620
|
"data-testid": "pptx-comment-mention-option",
|
|
23626
23621
|
role: "option",
|
|
23627
23622
|
"aria-selected": index === safeHighlighted,
|
|
23628
|
-
className:
|
|
23623
|
+
className: chunk3TN5SUQR_js.cn(
|
|
23629
23624
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23630
23625
|
index === safeHighlighted && "bg-accent"
|
|
23631
23626
|
),
|
|
@@ -23672,7 +23667,7 @@ function InspectorCommentReplyForm({
|
|
|
23672
23667
|
onSubmit,
|
|
23673
23668
|
onCancel
|
|
23674
23669
|
}) {
|
|
23675
|
-
const { t } =
|
|
23670
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23676
23671
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23677
23672
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23678
23673
|
CommentMentionTextarea,
|
|
@@ -23738,7 +23733,7 @@ function InspectorCommentRow({
|
|
|
23738
23733
|
onSelectElement,
|
|
23739
23734
|
depth = 0
|
|
23740
23735
|
}) {
|
|
23741
|
-
const { t } =
|
|
23736
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23742
23737
|
const isEditing = editingCommentId === comment.id;
|
|
23743
23738
|
const isReplying = replyingToCommentId === comment.id;
|
|
23744
23739
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23748,7 +23743,7 @@ function InspectorCommentRow({
|
|
|
23748
23743
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23749
23744
|
"div",
|
|
23750
23745
|
{
|
|
23751
|
-
className:
|
|
23746
|
+
className: chunk3TN5SUQR_js.cn(
|
|
23752
23747
|
"rounded border border-border bg-card p-2",
|
|
23753
23748
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23754
23749
|
),
|
|
@@ -23762,7 +23757,7 @@ function InspectorCommentRow({
|
|
|
23762
23757
|
t("pptx.comments.resolved")
|
|
23763
23758
|
] })
|
|
23764
23759
|
] }),
|
|
23765
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23760
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk3TN5SUQR_js.formatCommentTimestamp(comment.createdAt) })
|
|
23766
23761
|
] }),
|
|
23767
23762
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23768
23763
|
"button",
|
|
@@ -23770,12 +23765,12 @@ function InspectorCommentRow({
|
|
|
23770
23765
|
type: "button",
|
|
23771
23766
|
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",
|
|
23772
23767
|
title: t("pptx.comments.commentingOn", {
|
|
23773
|
-
element:
|
|
23768
|
+
element: chunk3TN5SUQR_js.getElementLabel(targetElement)
|
|
23774
23769
|
}),
|
|
23775
23770
|
onClick: () => onSelectElement(targetElement.id),
|
|
23776
23771
|
children: [
|
|
23777
23772
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23778
|
-
|
|
23773
|
+
chunk3TN5SUQR_js.getElementLabel(targetElement)
|
|
23779
23774
|
]
|
|
23780
23775
|
}
|
|
23781
23776
|
) : /* @__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") })),
|
|
@@ -23844,7 +23839,7 @@ function InspectorCommentRow({
|
|
|
23844
23839
|
"button",
|
|
23845
23840
|
{
|
|
23846
23841
|
type: "button",
|
|
23847
|
-
className:
|
|
23842
|
+
className: chunk3TN5SUQR_js.cn(
|
|
23848
23843
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
23849
23844
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
23850
23845
|
),
|
|
@@ -23950,7 +23945,7 @@ function InspectorCommentsSection({
|
|
|
23950
23945
|
onSubmitReply,
|
|
23951
23946
|
onSelectElement
|
|
23952
23947
|
}) {
|
|
23953
|
-
const { t } =
|
|
23948
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
23954
23949
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
23955
23950
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
23956
23951
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -23987,7 +23982,7 @@ function InspectorCommentsSection({
|
|
|
23987
23982
|
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: [
|
|
23988
23983
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23989
23984
|
t("pptx.comments.commentingOn", {
|
|
23990
|
-
element:
|
|
23985
|
+
element: chunk3TN5SUQR_js.getElementLabel(selectedElement)
|
|
23991
23986
|
})
|
|
23992
23987
|
] }),
|
|
23993
23988
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23998,7 +23993,7 @@ function InspectorCommentsSection({
|
|
|
23998
23993
|
authors: commentAuthors,
|
|
23999
23994
|
rows: 2,
|
|
24000
23995
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24001
|
-
element:
|
|
23996
|
+
element: chunk3TN5SUQR_js.getElementLabel(selectedElement)
|
|
24002
23997
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24003
23998
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24004
23999
|
onChange: onSetCommentDraft,
|
|
@@ -24011,7 +24006,7 @@ function InspectorCommentsSection({
|
|
|
24011
24006
|
type: "button",
|
|
24012
24007
|
onClick: onAddComment,
|
|
24013
24008
|
disabled: !commentDraft.trim(),
|
|
24014
|
-
className:
|
|
24009
|
+
className: chunk3TN5SUQR_js.cn(
|
|
24015
24010
|
"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]!",
|
|
24016
24011
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24017
24012
|
),
|
|
@@ -24036,7 +24031,7 @@ function InspectorElementsTab({
|
|
|
24036
24031
|
onSelectElement,
|
|
24037
24032
|
onUpdateSlide
|
|
24038
24033
|
}) {
|
|
24039
|
-
const { t } =
|
|
24034
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24040
24035
|
const toggleHidden = (elementId2) => {
|
|
24041
24036
|
const elements2 = activeSlide?.elements;
|
|
24042
24037
|
if (!canEdit || !elements2) {
|
|
@@ -24052,13 +24047,13 @@ function InspectorElementsTab({
|
|
|
24052
24047
|
};
|
|
24053
24048
|
if (!activeSlide) {
|
|
24054
24049
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24055
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24050
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk3TN5SUQR_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24056
24051
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24057
24052
|
] });
|
|
24058
24053
|
}
|
|
24059
24054
|
const elements = activeSlide.elements || [];
|
|
24060
24055
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24061
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24056
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk3TN5SUQR_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24062
24057
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24063
24058
|
const index = elements.length - 1 - reversedIndex;
|
|
24064
24059
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24066,7 +24061,7 @@ function InspectorElementsTab({
|
|
|
24066
24061
|
"div",
|
|
24067
24062
|
{
|
|
24068
24063
|
title: `${el.type} - ${el.id}`,
|
|
24069
|
-
className:
|
|
24064
|
+
className: chunk3TN5SUQR_js.cn(
|
|
24070
24065
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24071
24066
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24072
24067
|
),
|
|
@@ -24102,8 +24097,8 @@ function InspectorPaneHeader({
|
|
|
24102
24097
|
onSetActiveTab,
|
|
24103
24098
|
onClose
|
|
24104
24099
|
}) {
|
|
24105
|
-
const { t } =
|
|
24106
|
-
const { viewportWidth } =
|
|
24100
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24101
|
+
const { viewportWidth } = chunk6GAWXARM_js.useIsMobile();
|
|
24107
24102
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24108
24103
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24109
24104
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24126,7 +24121,7 @@ function InspectorPaneHeader({
|
|
|
24126
24121
|
type: "button",
|
|
24127
24122
|
title: t(labelKey),
|
|
24128
24123
|
style: touchBtnStyle,
|
|
24129
|
-
className:
|
|
24124
|
+
className: chunk3TN5SUQR_js.cn(
|
|
24130
24125
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24131
24126
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24132
24127
|
),
|
|
@@ -24186,7 +24181,7 @@ function CustomPropertiesBlock({
|
|
|
24186
24181
|
canEdit,
|
|
24187
24182
|
onUpdate
|
|
24188
24183
|
}) {
|
|
24189
|
-
const { t } =
|
|
24184
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24190
24185
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24191
24186
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24192
24187
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24240,7 +24235,7 @@ function CustomPropertiesBlock({
|
|
|
24240
24235
|
"button",
|
|
24241
24236
|
{
|
|
24242
24237
|
type: "button",
|
|
24243
|
-
className:
|
|
24238
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24244
24239
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24245
24240
|
children: "\xD7"
|
|
24246
24241
|
}
|
|
@@ -24253,7 +24248,7 @@ function NotesHandoutCard({
|
|
|
24253
24248
|
notesMaster,
|
|
24254
24249
|
handoutMaster
|
|
24255
24250
|
}) {
|
|
24256
|
-
const { t } =
|
|
24251
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24257
24252
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24258
24253
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24259
24254
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24290,7 +24285,7 @@ function DocumentPropertiesCard({
|
|
|
24290
24285
|
onUpdateAppProperties,
|
|
24291
24286
|
onUpdateCustomProperties
|
|
24292
24287
|
}) {
|
|
24293
|
-
const { t } =
|
|
24288
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24294
24289
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24295
24290
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24296
24291
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24344,7 +24339,7 @@ function DocumentPropertiesCard({
|
|
|
24344
24339
|
function SlideSizeRescalePrompt({
|
|
24345
24340
|
onChoose
|
|
24346
24341
|
}) {
|
|
24347
|
-
const { t } =
|
|
24342
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24348
24343
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24349
24344
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24350
24345
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24386,7 +24381,7 @@ function SlideSizeCard({
|
|
|
24386
24381
|
onUpdateSlideSize,
|
|
24387
24382
|
hasContent
|
|
24388
24383
|
}) {
|
|
24389
|
-
const { t } =
|
|
24384
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24390
24385
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24391
24386
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24392
24387
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24497,7 +24492,7 @@ function PresentationSettingsCard({
|
|
|
24497
24492
|
canEdit,
|
|
24498
24493
|
onUpdate
|
|
24499
24494
|
}) {
|
|
24500
|
-
const { t } =
|
|
24495
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24501
24496
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24502
24497
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24503
24498
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24568,7 +24563,7 @@ function PresentationSettingsCard({
|
|
|
24568
24563
|
min: 1,
|
|
24569
24564
|
max: 16,
|
|
24570
24565
|
disabled: !canEdit,
|
|
24571
|
-
className:
|
|
24566
|
+
className: chunk3TN5SUQR_js.cn(INPUT2, "w-20"),
|
|
24572
24567
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24573
24568
|
onChange: (e) => onUpdate({
|
|
24574
24569
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24589,7 +24584,7 @@ function ThemeSelectorCard({
|
|
|
24589
24584
|
canEdit,
|
|
24590
24585
|
onApplyTheme
|
|
24591
24586
|
}) {
|
|
24592
|
-
const { t } =
|
|
24587
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24593
24588
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24594
24589
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24595
24590
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24652,7 +24647,7 @@ function SlideThemeOverridePanel({
|
|
|
24652
24647
|
canEdit,
|
|
24653
24648
|
onUpdateSlide
|
|
24654
24649
|
}) {
|
|
24655
|
-
const { t } =
|
|
24650
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24656
24651
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24657
24652
|
const override = activeSlide?.clrMapOverride;
|
|
24658
24653
|
const isOverrideActive = override !== void 0;
|
|
@@ -24759,7 +24754,7 @@ function DirectionPicker({
|
|
|
24759
24754
|
disabled,
|
|
24760
24755
|
onChange
|
|
24761
24756
|
}) {
|
|
24762
|
-
const { t } =
|
|
24757
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24763
24758
|
if (directions.length <= 3) {
|
|
24764
24759
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24765
24760
|
"button",
|
|
@@ -24801,10 +24796,10 @@ function TransitionPreview({
|
|
|
24801
24796
|
const previewRef = React108.useRef(null);
|
|
24802
24797
|
const [playing, setPlaying] = React108.useState(false);
|
|
24803
24798
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
24804
|
-
const { t } =
|
|
24799
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24805
24800
|
const durationMs = transition.durationMs ?? 500;
|
|
24806
24801
|
const animations = React108.useMemo(
|
|
24807
|
-
() =>
|
|
24802
|
+
() => chunk6GAWXARM_js.getSlideTransitionAnimations(
|
|
24808
24803
|
transition.type,
|
|
24809
24804
|
durationMs,
|
|
24810
24805
|
transition.direction,
|
|
@@ -24873,7 +24868,7 @@ function TransitionPreview({
|
|
|
24873
24868
|
]
|
|
24874
24869
|
}
|
|
24875
24870
|
),
|
|
24876
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
24871
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk6GAWXARM_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
24877
24872
|
] });
|
|
24878
24873
|
}
|
|
24879
24874
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -24885,7 +24880,7 @@ function SlideTransitionSection({
|
|
|
24885
24880
|
canEdit = true,
|
|
24886
24881
|
onTransitionChange
|
|
24887
24882
|
}) {
|
|
24888
|
-
const { t } =
|
|
24883
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
24889
24884
|
if (!activeSlide) {
|
|
24890
24885
|
return null;
|
|
24891
24886
|
}
|
|
@@ -24916,7 +24911,7 @@ function SlideTransitionSection({
|
|
|
24916
24911
|
type: e.target.value
|
|
24917
24912
|
}),
|
|
24918
24913
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
24919
|
-
children:
|
|
24914
|
+
children: chunk3TN5SUQR_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
24920
24915
|
}
|
|
24921
24916
|
)
|
|
24922
24917
|
] }),
|
|
@@ -25074,7 +25069,7 @@ function TagsSection({
|
|
|
25074
25069
|
onUpdateTagCollections,
|
|
25075
25070
|
canEdit
|
|
25076
25071
|
}) {
|
|
25077
|
-
const { t } =
|
|
25072
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25078
25073
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25079
25074
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25080
25075
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25132,7 +25127,7 @@ function TagsSection({
|
|
|
25132
25127
|
"button",
|
|
25133
25128
|
{
|
|
25134
25129
|
type: "button",
|
|
25135
|
-
className:
|
|
25130
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25136
25131
|
title: t("pptx.tags.deleteTag"),
|
|
25137
25132
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25138
25133
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25174,7 +25169,7 @@ function PresentationPropertiesPanel({
|
|
|
25174
25169
|
tagCollections,
|
|
25175
25170
|
onUpdateTagCollections
|
|
25176
25171
|
}) {
|
|
25177
|
-
const { t } =
|
|
25172
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25178
25173
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25179
25174
|
(updates) => {
|
|
25180
25175
|
onUpdateSlide({
|
|
@@ -25261,7 +25256,7 @@ function PresentationPropertiesPanel({
|
|
|
25261
25256
|
canEdit
|
|
25262
25257
|
}
|
|
25263
25258
|
) }),
|
|
25264
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25259
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk3TN5SUQR_js.cn(CARD2, "space-y-1"), children: [
|
|
25265
25260
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25266
25261
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25267
25262
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25279,17 +25274,17 @@ function SlideBackgroundPanel({
|
|
|
25279
25274
|
onSetTemplateBackground,
|
|
25280
25275
|
onGetTemplateBackgroundColor
|
|
25281
25276
|
}) {
|
|
25282
|
-
const { t } =
|
|
25277
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25283
25278
|
const bgImageInputRef = React108.useRef(null);
|
|
25284
25279
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25285
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25280
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk3TN5SUQR_js.cn(CARD2, "space-y-2"), children: [
|
|
25286
25281
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25287
25282
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25288
25283
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25289
25284
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25290
25285
|
DebouncedColorInput,
|
|
25291
25286
|
{
|
|
25292
|
-
value:
|
|
25287
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25293
25288
|
disabled: !canEdit,
|
|
25294
25289
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25295
25290
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25328,7 +25323,7 @@ function SlideBackgroundPanel({
|
|
|
25328
25323
|
"button",
|
|
25329
25324
|
{
|
|
25330
25325
|
type: "button",
|
|
25331
|
-
className:
|
|
25326
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "flex-1 text-center"),
|
|
25332
25327
|
disabled: !canEdit,
|
|
25333
25328
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25334
25329
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25361,7 +25356,7 @@ function SlideBackgroundPanel({
|
|
|
25361
25356
|
"button",
|
|
25362
25357
|
{
|
|
25363
25358
|
type: "button",
|
|
25364
|
-
className:
|
|
25359
|
+
className: chunk3TN5SUQR_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25365
25360
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25366
25361
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25367
25362
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25398,21 +25393,21 @@ function TemplateBackgroundCard({
|
|
|
25398
25393
|
onSetTemplateBackground,
|
|
25399
25394
|
onGetTemplateBackgroundColor
|
|
25400
25395
|
}) {
|
|
25401
|
-
const { t } =
|
|
25396
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25402
25397
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25403
25398
|
activeSlide,
|
|
25404
25399
|
slideMasters,
|
|
25405
25400
|
t("pptx.master.layout"),
|
|
25406
25401
|
t("pptx.master.master")
|
|
25407
25402
|
);
|
|
25408
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25403
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk3TN5SUQR_js.cn(CARD2, "space-y-2"), children: [
|
|
25409
25404
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25410
25405
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25411
25406
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25412
25407
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25413
25408
|
DebouncedColorInput,
|
|
25414
25409
|
{
|
|
25415
|
-
value:
|
|
25410
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25416
25411
|
disabled: !canEdit,
|
|
25417
25412
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25418
25413
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25425,7 +25420,7 @@ function TemplateBackgroundCard({
|
|
|
25425
25420
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25426
25421
|
DebouncedColorInput,
|
|
25427
25422
|
{
|
|
25428
|
-
value:
|
|
25423
|
+
value: chunk3TN5SUQR_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25429
25424
|
disabled: !canEdit,
|
|
25430
25425
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25431
25426
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25535,8 +25530,8 @@ function InspectorPane(props) {
|
|
|
25535
25530
|
panelWidth
|
|
25536
25531
|
} = props;
|
|
25537
25532
|
const hasSelection = selectedElement !== null;
|
|
25538
|
-
const { t } =
|
|
25539
|
-
const { dragY, handlers: dragHandlers } =
|
|
25533
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25534
|
+
const { dragY, handlers: dragHandlers } = chunk6GAWXARM_js.useSheetDismissDrag(onClose);
|
|
25540
25535
|
const {
|
|
25541
25536
|
animationPanelHeight,
|
|
25542
25537
|
effectiveThemeOptions,
|
|
@@ -25558,7 +25553,7 @@ function InspectorPane(props) {
|
|
|
25558
25553
|
"div",
|
|
25559
25554
|
{
|
|
25560
25555
|
"data-pptx-chrome": "inspector",
|
|
25561
|
-
className:
|
|
25556
|
+
className: chunk3TN5SUQR_js.cn(
|
|
25562
25557
|
// Shared styles
|
|
25563
25558
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25564
25559
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -25889,7 +25884,7 @@ function PresentationAnnotationOverlay({
|
|
|
25889
25884
|
);
|
|
25890
25885
|
}
|
|
25891
25886
|
function PresentationToolbar(p) {
|
|
25892
|
-
const { t } =
|
|
25887
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25893
25888
|
const ref = useWebControl(
|
|
25894
25889
|
{
|
|
25895
25890
|
current: p.currentSlideIndex,
|
|
@@ -25948,8 +25943,8 @@ function PresentationTouchControls({
|
|
|
25948
25943
|
onEndPresentation,
|
|
25949
25944
|
hideNavigation = false
|
|
25950
25945
|
}) {
|
|
25951
|
-
const { t } =
|
|
25952
|
-
const { isTouchDevice } =
|
|
25946
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
25947
|
+
const { isTouchDevice } = chunk6GAWXARM_js.useIsMobile();
|
|
25953
25948
|
if (!isTouchDevice) {
|
|
25954
25949
|
return null;
|
|
25955
25950
|
}
|
|
@@ -26031,7 +26026,7 @@ function KeepAnnotationsDialog({
|
|
|
26031
26026
|
onKeep,
|
|
26032
26027
|
onDiscard
|
|
26033
26028
|
}) {
|
|
26034
|
-
const { t } =
|
|
26029
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26035
26030
|
if (!isOpen) {
|
|
26036
26031
|
return null;
|
|
26037
26032
|
}
|
|
@@ -26079,7 +26074,7 @@ function PasteSpecialDialog({
|
|
|
26079
26074
|
onCancel,
|
|
26080
26075
|
onConfirm
|
|
26081
26076
|
}) {
|
|
26082
|
-
const { t } =
|
|
26077
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26083
26078
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26084
26079
|
if (!isOpen) {
|
|
26085
26080
|
return null;
|
|
@@ -26137,7 +26132,7 @@ function PasteOptionsToolbar({
|
|
|
26137
26132
|
onChoose,
|
|
26138
26133
|
onDismiss
|
|
26139
26134
|
}) {
|
|
26140
|
-
const { t } =
|
|
26135
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26141
26136
|
const [rect, setRect] = React108.useState(null);
|
|
26142
26137
|
React108.useEffect(() => {
|
|
26143
26138
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26164,7 +26159,7 @@ function NotesPagePreview({
|
|
|
26164
26159
|
frameSlides,
|
|
26165
26160
|
maxPages = 3
|
|
26166
26161
|
}) {
|
|
26167
|
-
const { t } =
|
|
26162
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26168
26163
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26169
26164
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26170
26165
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26252,15 +26247,15 @@ function PrintPreview({
|
|
|
26252
26247
|
frameSlides,
|
|
26253
26248
|
maxPages = 3
|
|
26254
26249
|
}) {
|
|
26255
|
-
const { t } =
|
|
26250
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26256
26251
|
const pages = React108.useMemo(
|
|
26257
|
-
() =>
|
|
26252
|
+
() => chunk3TN5SUQR_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26258
26253
|
[slideIndices, slidesPerPage, orientation]
|
|
26259
26254
|
);
|
|
26260
|
-
const printable = React108.useMemo(() =>
|
|
26255
|
+
const printable = React108.useMemo(() => chunk3TN5SUQR_js.getPrintableArea(orientation), [orientation]);
|
|
26261
26256
|
const visiblePages = pages.slice(0, maxPages);
|
|
26262
26257
|
const isThreePerPage = slidesPerPage === 3;
|
|
26263
|
-
const noteLineCount =
|
|
26258
|
+
const noteLineCount = chunk3TN5SUQR_js.generateNoteLineCount();
|
|
26264
26259
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26265
26260
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26266
26261
|
const noteAreaFraction = 0.5;
|
|
@@ -26358,7 +26353,7 @@ function PrintSettingsPanel({
|
|
|
26358
26353
|
totalSlides,
|
|
26359
26354
|
activeSlideIndex
|
|
26360
26355
|
}) {
|
|
26361
|
-
const { t } =
|
|
26356
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26362
26357
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26363
26358
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26364
26359
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26594,13 +26589,13 @@ function PrintDialog({
|
|
|
26594
26589
|
defaultSlidesPerPage,
|
|
26595
26590
|
defaultFrameSlides
|
|
26596
26591
|
}) {
|
|
26597
|
-
const { t } =
|
|
26592
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26598
26593
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26599
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26600
|
-
const { viewportWidth } =
|
|
26594
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_js.useModalDismissDrag(onClose);
|
|
26595
|
+
const { viewportWidth } = chunk6GAWXARM_js.useIsMobile();
|
|
26601
26596
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26602
26597
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26603
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26598
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunk6GAWXARM_js.useViewerOptionsContext());
|
|
26604
26599
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26605
26600
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26606
26601
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -26615,49 +26610,22 @@ function PrintDialog({
|
|
|
26615
26610
|
const [slideRange, setSlideRange] = React108.useState("all");
|
|
26616
26611
|
const [customFrom, setCustomFrom] = React108.useState(1);
|
|
26617
26612
|
const [customTo, setCustomTo] = React108.useState(slides.length);
|
|
26618
|
-
const effectiveOrientation = React108.useMemo(
|
|
26619
|
-
|
|
26620
|
-
|
|
26621
|
-
|
|
26622
|
-
|
|
26623
|
-
|
|
26624
|
-
|
|
26625
|
-
|
|
26626
|
-
|
|
26627
|
-
|
|
26628
|
-
|
|
26629
|
-
|
|
26630
|
-
|
|
26631
|
-
|
|
26632
|
-
|
|
26633
|
-
|
|
26634
|
-
const from = Math.max(1, Math.min(customFrom, slides.length));
|
|
26635
|
-
const to = Math.max(from, Math.min(customTo, slides.length));
|
|
26636
|
-
return to - from + 1;
|
|
26637
|
-
}, [slideRange, slides.length, customFrom, customTo]);
|
|
26638
|
-
const pageCount = React108.useMemo(() => {
|
|
26639
|
-
if (printWhat === "slides") {
|
|
26640
|
-
return slideCount;
|
|
26641
|
-
}
|
|
26642
|
-
if (printWhat === "notes") {
|
|
26643
|
-
return slideCount;
|
|
26644
|
-
}
|
|
26645
|
-
if (printWhat === "outline") {
|
|
26646
|
-
return 1;
|
|
26647
|
-
}
|
|
26648
|
-
return Math.ceil(slideCount / slidesPerPage);
|
|
26649
|
-
}, [printWhat, slideCount, slidesPerPage]);
|
|
26650
|
-
const previewSlideIndices = React108.useMemo(() => {
|
|
26651
|
-
if (slideRange === "current") {
|
|
26652
|
-
return [activeSlideIndex];
|
|
26653
|
-
}
|
|
26654
|
-
if (slideRange === "custom") {
|
|
26655
|
-
const from = Math.max(0, customFrom - 1);
|
|
26656
|
-
const to = Math.min(slides.length - 1, customTo - 1);
|
|
26657
|
-
return Array.from({ length: Math.max(0, to - from + 1) }, (_, i) => from + i);
|
|
26658
|
-
}
|
|
26659
|
-
return Array.from({ length: slides.length }, (_, i) => i);
|
|
26660
|
-
}, [slideRange, activeSlideIndex, customFrom, customTo, slides.length]);
|
|
26613
|
+
const effectiveOrientation = React108.useMemo(
|
|
26614
|
+
() => pptx.effectiveOrientation(printWhat, orientation),
|
|
26615
|
+
[printWhat, orientation]
|
|
26616
|
+
);
|
|
26617
|
+
const slideCount = React108.useMemo(
|
|
26618
|
+
() => pptx.computeSlideCount(slideRange, slides.length, customFrom, customTo),
|
|
26619
|
+
[slideRange, slides.length, customFrom, customTo]
|
|
26620
|
+
);
|
|
26621
|
+
const pageCount = React108.useMemo(
|
|
26622
|
+
() => pptx.estimatePageCount(printWhat, slideCount, slidesPerPage),
|
|
26623
|
+
[printWhat, slideCount, slidesPerPage]
|
|
26624
|
+
);
|
|
26625
|
+
const previewSlideIndices = React108.useMemo(
|
|
26626
|
+
() => pptx.computeSlideIndices(slideRange, activeSlideIndex, slides.length, customFrom, customTo),
|
|
26627
|
+
[slideRange, activeSlideIndex, customFrom, customTo, slides.length]
|
|
26628
|
+
);
|
|
26661
26629
|
const handlePrint = React108.useCallback(() => {
|
|
26662
26630
|
onPrint({
|
|
26663
26631
|
printWhat,
|
|
@@ -26811,7 +26779,7 @@ function ShowOptionsFieldset({
|
|
|
26811
26779
|
draft,
|
|
26812
26780
|
update
|
|
26813
26781
|
}) {
|
|
26814
|
-
const { t } =
|
|
26782
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26815
26783
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26816
26784
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26817
26785
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -26869,7 +26837,7 @@ function ShowSlidesFieldset({
|
|
|
26869
26837
|
slideCount,
|
|
26870
26838
|
customShows
|
|
26871
26839
|
}) {
|
|
26872
|
-
const { t } =
|
|
26840
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26873
26841
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26874
26842
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
26875
26843
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -26979,7 +26947,7 @@ function SetUpSlideShowDialog({
|
|
|
26979
26947
|
customShows,
|
|
26980
26948
|
slideCount
|
|
26981
26949
|
}) {
|
|
26982
|
-
const { t } =
|
|
26950
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
26983
26951
|
const [draft, setDraft] = React108.useState({
|
|
26984
26952
|
...properties
|
|
26985
26953
|
});
|
|
@@ -27115,16 +27083,16 @@ function BroadcastDialog({
|
|
|
27115
27083
|
defaultUserName,
|
|
27116
27084
|
defaultServerUrl
|
|
27117
27085
|
}) {
|
|
27118
|
-
const { t } =
|
|
27086
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27119
27087
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27120
|
-
const collab =
|
|
27088
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
27121
27089
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27122
27090
|
const [roomId, setRoomId] = React108.useState("");
|
|
27123
27091
|
const [userName, setUserName] = React108.useState("");
|
|
27124
27092
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27125
27093
|
const [copied, setCopied] = React108.useState(false);
|
|
27126
27094
|
const dialogRef = React108.useRef(null);
|
|
27127
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27095
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_js.useModalDismissDrag(onClose);
|
|
27128
27096
|
useModalFocus(open, dialogRef, onClose);
|
|
27129
27097
|
React108.useEffect(() => {
|
|
27130
27098
|
if (open && !isBroadcasting) {
|
|
@@ -27283,7 +27251,7 @@ function StartBroadcastForm({
|
|
|
27283
27251
|
onUserNameChange,
|
|
27284
27252
|
onServerUrlChange
|
|
27285
27253
|
}) {
|
|
27286
|
-
const { t } =
|
|
27254
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27287
27255
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27288
27256
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27289
27257
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27359,7 +27327,7 @@ function ActiveBroadcastView({
|
|
|
27359
27327
|
onCopyUrl,
|
|
27360
27328
|
onStopBroadcast
|
|
27361
27329
|
}) {
|
|
27362
|
-
const { t } =
|
|
27330
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27363
27331
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27364
27332
|
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" });
|
|
27365
27333
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27440,7 +27408,7 @@ function ActiveSessionView({
|
|
|
27440
27408
|
onCopyRoomId,
|
|
27441
27409
|
onStopCollaboration
|
|
27442
27410
|
}) {
|
|
27443
|
-
const { t } =
|
|
27411
|
+
const { t } = chunk3TN5SUQR_js.useTranslation(), viewerOptions = chunk6GAWXARM_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({
|
|
27444
27412
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27445
27413
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27446
27414
|
localUserColor: collab.config.userColor,
|
|
@@ -27538,8 +27506,8 @@ function StartSessionForm({
|
|
|
27538
27506
|
connectionFailed,
|
|
27539
27507
|
onRetry
|
|
27540
27508
|
}) {
|
|
27541
|
-
const { t } =
|
|
27542
|
-
const { viewportWidth } =
|
|
27509
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27510
|
+
const { viewportWidth } = chunk6GAWXARM_js.useIsMobile();
|
|
27543
27511
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27544
27512
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27545
27513
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27673,9 +27641,9 @@ function ShareDialog({
|
|
|
27673
27641
|
defaultUserName,
|
|
27674
27642
|
defaultServerUrl
|
|
27675
27643
|
}) {
|
|
27676
|
-
const collab =
|
|
27644
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
27677
27645
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27678
|
-
const { t } =
|
|
27646
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27679
27647
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27680
27648
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27681
27649
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27684,9 +27652,9 @@ function ShareDialog({
|
|
|
27684
27652
|
const [invitation, setInvitation] = React108.useState("");
|
|
27685
27653
|
const [copied, setCopied] = React108.useState(false);
|
|
27686
27654
|
const dialogRef = React108.useRef(null);
|
|
27687
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27655
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_js.useModalDismissDrag(onClose);
|
|
27688
27656
|
useModalFocus(open, dialogRef, onClose);
|
|
27689
|
-
const { viewportWidth, viewportHeight } =
|
|
27657
|
+
const { viewportWidth, viewportHeight } = chunk6GAWXARM_js.useIsMobile();
|
|
27690
27658
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27691
27659
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27692
27660
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -27859,7 +27827,7 @@ function HyperlinkTabContent({
|
|
|
27859
27827
|
inputCls,
|
|
27860
27828
|
onEnterConfirm
|
|
27861
27829
|
}) {
|
|
27862
|
-
const { t } =
|
|
27830
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27863
27831
|
const handleEnterKey = (e) => {
|
|
27864
27832
|
if (e.key === "Enter") {
|
|
27865
27833
|
onEnterConfirm();
|
|
@@ -27984,13 +27952,13 @@ function HyperlinkEditDialog({
|
|
|
27984
27952
|
onConfirm,
|
|
27985
27953
|
onCancel
|
|
27986
27954
|
}) {
|
|
27987
|
-
const { t } =
|
|
27988
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27955
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
27956
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_js.useModalDismissDrag(onCancel);
|
|
27989
27957
|
const inputRef = React108.useRef(null);
|
|
27990
|
-
const detectedType =
|
|
27991
|
-
const emailParts =
|
|
27992
|
-
const detectedSlide =
|
|
27993
|
-
const detectedVerb = initialAction ?
|
|
27958
|
+
const detectedType = chunk6GAWXARM_js.detectTargetType(initialUrl, initialAction);
|
|
27959
|
+
const emailParts = chunk6GAWXARM_js.parseEmailUrl(initialUrl || "");
|
|
27960
|
+
const detectedSlide = chunk6GAWXARM_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
27961
|
+
const detectedVerb = initialAction ? chunk6GAWXARM_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
27994
27962
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
27995
27963
|
const [url, setUrl] = React108.useState(
|
|
27996
27964
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28021,7 +27989,7 @@ function HyperlinkEditDialog({
|
|
|
28021
27989
|
actionVerb
|
|
28022
27990
|
});
|
|
28023
27991
|
};
|
|
28024
|
-
const tabCls = (active) =>
|
|
27992
|
+
const tabCls = (active) => chunk3TN5SUQR_js.cn(
|
|
28025
27993
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28026
27994
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28027
27995
|
);
|
|
@@ -28267,7 +28235,7 @@ function ViewerBottomPanels({
|
|
|
28267
28235
|
notesStyle,
|
|
28268
28236
|
onNotesHeightChange
|
|
28269
28237
|
}) {
|
|
28270
|
-
const { isHidden } =
|
|
28238
|
+
const { isHidden } = chunk6GAWXARM_js.useToolbarVisibility(hiddenActions);
|
|
28271
28239
|
const customization = useViewerCustomizationContext();
|
|
28272
28240
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28273
28241
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28394,7 +28362,7 @@ function ViewerInspector({
|
|
|
28394
28362
|
onDeleteTableStyle,
|
|
28395
28363
|
panelWidth
|
|
28396
28364
|
}) {
|
|
28397
|
-
const { t } =
|
|
28365
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
28398
28366
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28399
28367
|
if (!isOpen) {
|
|
28400
28368
|
return null;
|
|
@@ -28604,7 +28572,7 @@ function ViewerToolbarSection(props) {
|
|
|
28604
28572
|
onSetSnapToShape,
|
|
28605
28573
|
onSetShowGuides
|
|
28606
28574
|
} = props;
|
|
28607
|
-
const { t } =
|
|
28575
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
28608
28576
|
const customization = useViewerCustomizationContext();
|
|
28609
28577
|
const handleAddAnimation = React108.useCallback(
|
|
28610
28578
|
(preset, group) => {
|
|
@@ -28657,7 +28625,7 @@ function ViewerToolbarSection(props) {
|
|
|
28657
28625
|
[activeSlide, propertyHandlers]
|
|
28658
28626
|
);
|
|
28659
28627
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28660
|
-
() =>
|
|
28628
|
+
() => chunk6GAWXARM_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28661
28629
|
[s.layoutOptions, activeSlide]
|
|
28662
28630
|
);
|
|
28663
28631
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29064,14 +29032,14 @@ function ViewerToolbarSection(props) {
|
|
|
29064
29032
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29065
29033
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29066
29034
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29067
|
-
reviewComments:
|
|
29035
|
+
reviewComments: chunk6GAWXARM_js.createReviewCommentsHost({
|
|
29068
29036
|
state: s,
|
|
29069
29037
|
activeSlideIndex,
|
|
29070
29038
|
updateSlides: ops.updateSlides,
|
|
29071
29039
|
markDirty: history.markDirty
|
|
29072
29040
|
}),
|
|
29073
29041
|
formatPainterActive: s.formatPainterActive,
|
|
29074
|
-
canActivateFormatPainter:
|
|
29042
|
+
canActivateFormatPainter: chunk3TN5SUQR_js.hasCopyableFormat(selectedElement),
|
|
29075
29043
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29076
29044
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29077
29045
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29157,8 +29125,8 @@ function EquationEditorDialog({
|
|
|
29157
29125
|
onInsert,
|
|
29158
29126
|
existingOmml
|
|
29159
29127
|
}) {
|
|
29160
|
-
const { t } =
|
|
29161
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29128
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
29129
|
+
const { panelStyle, handlers: dragHandlers } = chunk6GAWXARM_js.useModalDismissDrag(onClose);
|
|
29162
29130
|
const initialLatex = React108.useMemo(() => {
|
|
29163
29131
|
if (!existingOmml) {
|
|
29164
29132
|
return "";
|
|
@@ -29280,7 +29248,7 @@ function EquationEditorDialog({
|
|
|
29280
29248
|
{
|
|
29281
29249
|
type: "button",
|
|
29282
29250
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29283
|
-
className:
|
|
29251
|
+
className: chunk3TN5SUQR_js.cn(
|
|
29284
29252
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29285
29253
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29286
29254
|
),
|
|
@@ -29345,7 +29313,7 @@ function InsertSmartArtDialog({
|
|
|
29345
29313
|
onInsert
|
|
29346
29314
|
}) {
|
|
29347
29315
|
const ref = React108.useRef(null);
|
|
29348
|
-
const { t } =
|
|
29316
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
29349
29317
|
React108.useLayoutEffect(() => {
|
|
29350
29318
|
if (ref.current) {
|
|
29351
29319
|
ref.current.translateLabel = t;
|
|
@@ -29369,7 +29337,7 @@ function InsertChartDialog({
|
|
|
29369
29337
|
onInsert
|
|
29370
29338
|
}) {
|
|
29371
29339
|
const ref = React108.useRef(null);
|
|
29372
|
-
const { t } =
|
|
29340
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
29373
29341
|
React108.useLayoutEffect(() => {
|
|
29374
29342
|
if (ref.current) {
|
|
29375
29343
|
ref.current.translateLabel = t;
|
|
@@ -29857,11 +29825,11 @@ function PresentationStage({
|
|
|
29857
29825
|
})
|
|
29858
29826
|
},
|
|
29859
29827
|
children: [
|
|
29860
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29828
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6GAWXARM_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
29861
29829
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
29862
29830
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
29863
29831
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29864
|
-
|
|
29832
|
+
chunk6GAWXARM_js.ElementRenderer,
|
|
29865
29833
|
{
|
|
29866
29834
|
element,
|
|
29867
29835
|
activeSlide,
|
|
@@ -29898,7 +29866,7 @@ function PresentationStage({
|
|
|
29898
29866
|
`tpl-${element.id}`
|
|
29899
29867
|
)),
|
|
29900
29868
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29901
|
-
|
|
29869
|
+
chunk6GAWXARM_js.ElementRenderer,
|
|
29902
29870
|
{
|
|
29903
29871
|
element,
|
|
29904
29872
|
activeSlide,
|
|
@@ -29950,7 +29918,7 @@ function PresentationStage({
|
|
|
29950
29918
|
function noop() {
|
|
29951
29919
|
}
|
|
29952
29920
|
function PresentationContextMenu(p) {
|
|
29953
|
-
const { t } =
|
|
29921
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
29954
29922
|
const sections = pptx.getPresentationContextMenuSections({
|
|
29955
29923
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
29956
29924
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30019,9 +29987,9 @@ function ViewerCanvasArea(props) {
|
|
|
30019
29987
|
aiHighlightOverlay,
|
|
30020
29988
|
aiCanvasActive = false
|
|
30021
29989
|
} = props;
|
|
30022
|
-
const { t } =
|
|
30023
|
-
const { isHidden } =
|
|
30024
|
-
const viewerOptions =
|
|
29990
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
29991
|
+
const { isHidden } = chunk6GAWXARM_js.useToolbarVisibility(hiddenActions);
|
|
29992
|
+
const viewerOptions = chunk6GAWXARM_js.useViewerOptionsContext();
|
|
30025
29993
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30026
29994
|
state: s,
|
|
30027
29995
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30051,7 +30019,7 @@ function ViewerCanvasArea(props) {
|
|
|
30051
30019
|
${url}`)) {
|
|
30052
30020
|
return;
|
|
30053
30021
|
}
|
|
30054
|
-
|
|
30022
|
+
chunk3TN5SUQR_js.safeOpenUrl(url);
|
|
30055
30023
|
},
|
|
30056
30024
|
[viewerOptions, t]
|
|
30057
30025
|
);
|
|
@@ -30072,9 +30040,9 @@ ${url}`)) {
|
|
|
30072
30040
|
);
|
|
30073
30041
|
const handleHyperlinkClick = React108.useCallback(
|
|
30074
30042
|
(url) => {
|
|
30075
|
-
if (
|
|
30043
|
+
if (chunk3TN5SUQR_js.isPpactionUrl(url)) {
|
|
30076
30044
|
if (mode === "present") {
|
|
30077
|
-
const parsed =
|
|
30045
|
+
const parsed = chunk3TN5SUQR_js.parsePpactionUrl(url);
|
|
30078
30046
|
if (parsed) {
|
|
30079
30047
|
const action = {
|
|
30080
30048
|
action: parsed.action,
|
|
@@ -30159,7 +30127,7 @@ ${url}`)) {
|
|
|
30159
30127
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30160
30128
|
}
|
|
30161
30129
|
}, [mode, presentation, s]);
|
|
30162
|
-
const swipe =
|
|
30130
|
+
const swipe = chunk6GAWXARM_js.useSwipeNavigation({
|
|
30163
30131
|
enabled: swipeEnabled,
|
|
30164
30132
|
onNext: handleSwipeNext,
|
|
30165
30133
|
onPrev: handleSwipePrev
|
|
@@ -30239,7 +30207,7 @@ ${url}`)) {
|
|
|
30239
30207
|
),
|
|
30240
30208
|
children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30241
30209
|
presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
|
|
30242
|
-
|
|
30210
|
+
chunk6GAWXARM_js.PresentationTransitionOverlay,
|
|
30243
30211
|
{
|
|
30244
30212
|
outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
|
|
30245
30213
|
templateElements: [
|
|
@@ -30356,14 +30324,14 @@ ${url}`)) {
|
|
|
30356
30324
|
outlineAuthoring,
|
|
30357
30325
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30358
30326
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30359
|
-
|
|
30327
|
+
chunk6GAWXARM_js.RemoteSelectionOverlay,
|
|
30360
30328
|
{
|
|
30361
30329
|
elements: effectiveSlide?.elements ?? [],
|
|
30362
30330
|
activeSlideIndex
|
|
30363
30331
|
}
|
|
30364
30332
|
),
|
|
30365
30333
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30366
|
-
|
|
30334
|
+
chunk6GAWXARM_js.CollaborationCursorOverlay,
|
|
30367
30335
|
{
|
|
30368
30336
|
activeSlideIndex,
|
|
30369
30337
|
canvasWidth: canvasSize.width,
|
|
@@ -30503,7 +30471,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
30503
30471
|
var AiChatPanel = /* @__PURE__ */ React108.lazy(async () => {
|
|
30504
30472
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
30505
30473
|
import('@ai-sdk/react'),
|
|
30506
|
-
import('./AiChatPanel-
|
|
30474
|
+
import('./AiChatPanel-7GJQ66GR.js')
|
|
30507
30475
|
]);
|
|
30508
30476
|
function BoundAiChatPanel(props) {
|
|
30509
30477
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -30626,8 +30594,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
30626
30594
|
] });
|
|
30627
30595
|
}
|
|
30628
30596
|
function ChartFormatPanel() {
|
|
30629
|
-
const { t } =
|
|
30630
|
-
const commands =
|
|
30597
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
30598
|
+
const commands = chunk6GAWXARM_js.useChartFormatContext();
|
|
30631
30599
|
const ref = React108.useRef(null);
|
|
30632
30600
|
const chart = commands?.chart;
|
|
30633
30601
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -30662,7 +30630,7 @@ function ChartFormatPanel() {
|
|
|
30662
30630
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
30663
30631
|
}
|
|
30664
30632
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
30665
|
-
const { t } =
|
|
30633
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
30666
30634
|
const ref = React108.useRef(null);
|
|
30667
30635
|
React108.useEffect(() => {
|
|
30668
30636
|
const node = ref.current;
|
|
@@ -30699,8 +30667,8 @@ function MobileDismissSheet({
|
|
|
30699
30667
|
className,
|
|
30700
30668
|
children
|
|
30701
30669
|
}) {
|
|
30702
|
-
const { t } =
|
|
30703
|
-
const { dragY, handlers } =
|
|
30670
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
30671
|
+
const { dragY, handlers } = chunk6GAWXARM_js.useSheetDismissDrag(onClose);
|
|
30704
30672
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30705
30673
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30706
30674
|
"button",
|
|
@@ -30969,7 +30937,7 @@ function ThemeThumbnail({
|
|
|
30969
30937
|
{
|
|
30970
30938
|
type: "button",
|
|
30971
30939
|
onClick,
|
|
30972
|
-
className:
|
|
30940
|
+
className: chunk3TN5SUQR_js.cn(
|
|
30973
30941
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
30974
30942
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
30975
30943
|
),
|
|
@@ -31000,7 +30968,7 @@ function ThemeGallery({
|
|
|
31000
30968
|
onApplyTheme,
|
|
31001
30969
|
onImportTheme
|
|
31002
30970
|
}) {
|
|
31003
|
-
const { t } =
|
|
30971
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
31004
30972
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31005
30973
|
const fileInputRef = React108.useRef(null);
|
|
31006
30974
|
React108.useEffect(() => {
|
|
@@ -31440,7 +31408,7 @@ function ViewerMainContent(props) {
|
|
|
31440
31408
|
);
|
|
31441
31409
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
31442
31410
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31443
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31411
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6GAWXARM_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31444
31412
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31445
31413
|
slidesPaneRenderer ? (
|
|
31446
31414
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -31650,7 +31618,7 @@ function AutosaveRecoveryDialog({
|
|
|
31650
31618
|
onDiscard,
|
|
31651
31619
|
busy = false
|
|
31652
31620
|
}) {
|
|
31653
|
-
const { t } =
|
|
31621
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
31654
31622
|
if (!prompt) {
|
|
31655
31623
|
return null;
|
|
31656
31624
|
}
|
|
@@ -31706,7 +31674,7 @@ function CompatibilityToasts({
|
|
|
31706
31674
|
rightInset = 0,
|
|
31707
31675
|
bottomInset = 0
|
|
31708
31676
|
}) {
|
|
31709
|
-
const { t } =
|
|
31677
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
31710
31678
|
const ref = useWebControl(
|
|
31711
31679
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
31712
31680
|
{
|
|
@@ -31751,7 +31719,7 @@ function HeaderFooterPanel({
|
|
|
31751
31719
|
onApplyToCurrent,
|
|
31752
31720
|
onClose
|
|
31753
31721
|
}) {
|
|
31754
|
-
const { t } =
|
|
31722
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
31755
31723
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
31756
31724
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
31757
31725
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -31892,7 +31860,7 @@ function HeaderFooterPanel({
|
|
|
31892
31860
|
] }) });
|
|
31893
31861
|
}
|
|
31894
31862
|
function MobileBottomBar(p) {
|
|
31895
|
-
const { t } =
|
|
31863
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
31896
31864
|
const handlers = {
|
|
31897
31865
|
slides: p.onOpenSlides,
|
|
31898
31866
|
insert: p.onOpenInsert,
|
|
@@ -31918,7 +31886,7 @@ function MobileSlidesSheet({
|
|
|
31918
31886
|
onClose,
|
|
31919
31887
|
...sidebar
|
|
31920
31888
|
}) {
|
|
31921
|
-
const { t } =
|
|
31889
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
31922
31890
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31923
31891
|
MobileSheet,
|
|
31924
31892
|
{
|
|
@@ -31945,7 +31913,7 @@ function MobileChromeOverlay(props) {
|
|
|
31945
31913
|
slideSectionGroups,
|
|
31946
31914
|
canEdit,
|
|
31947
31915
|
commentCount
|
|
31948
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
31916
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunk6GAWXARM_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
31949
31917
|
s.setIsSlidesPaneOpen(false);
|
|
31950
31918
|
s.setIsMobileInsertOpen(false);
|
|
31951
31919
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32045,7 +32013,7 @@ function MobileChromeOverlay(props) {
|
|
|
32045
32013
|
] });
|
|
32046
32014
|
}
|
|
32047
32015
|
function ReadOnlyBanner(p) {
|
|
32048
|
-
const { t } =
|
|
32016
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32049
32017
|
const ref = useWebControl(
|
|
32050
32018
|
pptx.readOnlyBannerState(
|
|
32051
32019
|
p.recommendation,
|
|
@@ -32079,7 +32047,7 @@ function RibbonCustomizationStyle({
|
|
|
32079
32047
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32080
32048
|
}
|
|
32081
32049
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32082
|
-
const { t } =
|
|
32050
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32083
32051
|
if (notices.length === 0) {
|
|
32084
32052
|
return null;
|
|
32085
32053
|
}
|
|
@@ -32137,14 +32105,14 @@ function AddinTable({
|
|
|
32137
32105
|
selectedId,
|
|
32138
32106
|
onSelect
|
|
32139
32107
|
}) {
|
|
32140
|
-
const { t } =
|
|
32108
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32141
32109
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32142
32110
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32143
32111
|
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(
|
|
32144
32112
|
"tr",
|
|
32145
32113
|
{
|
|
32146
32114
|
onClick: () => onSelect(row.id),
|
|
32147
|
-
className:
|
|
32115
|
+
className: chunk3TN5SUQR_js.cn(
|
|
32148
32116
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32149
32117
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32150
32118
|
),
|
|
@@ -32159,7 +32127,7 @@ function AddinTable({
|
|
|
32159
32127
|
] });
|
|
32160
32128
|
}
|
|
32161
32129
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32162
|
-
const { t } =
|
|
32130
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32163
32131
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32164
32132
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32165
32133
|
const active = rows.filter((row) => row.active);
|
|
@@ -32202,7 +32170,7 @@ function CommandList({
|
|
|
32202
32170
|
selectedId,
|
|
32203
32171
|
onSelect
|
|
32204
32172
|
}) {
|
|
32205
|
-
const { t } =
|
|
32173
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32206
32174
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32207
32175
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32208
32176
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32223,7 +32191,7 @@ function CommandList({
|
|
|
32223
32191
|
role: "option",
|
|
32224
32192
|
"aria-selected": selectedId === id,
|
|
32225
32193
|
onClick: () => onSelect(id),
|
|
32226
|
-
className:
|
|
32194
|
+
className: chunk3TN5SUQR_js.cn(
|
|
32227
32195
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32228
32196
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32229
32197
|
),
|
|
@@ -32241,7 +32209,7 @@ function OptionsQuickAccessPane({
|
|
|
32241
32209
|
onQuickAccessCommandsChange,
|
|
32242
32210
|
onResetQuickAccess
|
|
32243
32211
|
}) {
|
|
32244
|
-
const { t } =
|
|
32212
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32245
32213
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32246
32214
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32247
32215
|
const current = options.quickAccess.commandIds;
|
|
@@ -32355,7 +32323,7 @@ function OptionsRibbonPane({
|
|
|
32355
32323
|
onRibbonTabHiddenChange,
|
|
32356
32324
|
onResetRibbon
|
|
32357
32325
|
}) {
|
|
32358
|
-
const { t } =
|
|
32326
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32359
32327
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32360
32328
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32361
32329
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32367,7 +32335,7 @@ function OptionsRibbonPane({
|
|
|
32367
32335
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32368
32336
|
"label",
|
|
32369
32337
|
{
|
|
32370
|
-
className:
|
|
32338
|
+
className: chunk3TN5SUQR_js.cn(
|
|
32371
32339
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32372
32340
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32373
32341
|
),
|
|
@@ -32401,7 +32369,7 @@ function OptionsRibbonPane({
|
|
|
32401
32369
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32402
32370
|
"div",
|
|
32403
32371
|
{
|
|
32404
|
-
className:
|
|
32372
|
+
className: chunk3TN5SUQR_js.cn(
|
|
32405
32373
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32406
32374
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32407
32375
|
),
|
|
@@ -32422,12 +32390,12 @@ async function exportAiChatLogs(options) {
|
|
|
32422
32390
|
chats,
|
|
32423
32391
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32424
32392
|
(filename, content, mime) => {
|
|
32425
|
-
|
|
32393
|
+
chunk6GAWXARM_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32426
32394
|
}
|
|
32427
32395
|
);
|
|
32428
32396
|
}
|
|
32429
32397
|
function SettingsAiTab({ store }) {
|
|
32430
|
-
const { t } =
|
|
32398
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32431
32399
|
const activeStore = React108.useMemo(() => store ?? ai.createChatHistoryStore(), [store]);
|
|
32432
32400
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
32433
32401
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -32519,7 +32487,7 @@ function SettingsAppearanceTab({
|
|
|
32519
32487
|
themes,
|
|
32520
32488
|
onSelectTheme
|
|
32521
32489
|
}) {
|
|
32522
|
-
const { t } =
|
|
32490
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32523
32491
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
32524
32492
|
const isActive = entry.key === activeThemeKey;
|
|
32525
32493
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -32530,7 +32498,7 @@ function SettingsAppearanceTab({
|
|
|
32530
32498
|
type: "button",
|
|
32531
32499
|
onClick: () => onSelectTheme(entry.key),
|
|
32532
32500
|
"aria-pressed": isActive,
|
|
32533
|
-
className:
|
|
32501
|
+
className: chunk3TN5SUQR_js.cn(
|
|
32534
32502
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
32535
32503
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
32536
32504
|
),
|
|
@@ -32547,7 +32515,7 @@ function SettingsAppearanceTab({
|
|
|
32547
32515
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32548
32516
|
"span",
|
|
32549
32517
|
{
|
|
32550
|
-
className:
|
|
32518
|
+
className: chunk3TN5SUQR_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
32551
32519
|
children: t(entry.labelKey)
|
|
32552
32520
|
}
|
|
32553
32521
|
)
|
|
@@ -32562,7 +32530,7 @@ function SettingsCustomFontsSection({
|
|
|
32562
32530
|
families,
|
|
32563
32531
|
onRegistered
|
|
32564
32532
|
}) {
|
|
32565
|
-
const { t } =
|
|
32533
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32566
32534
|
const inputRef = React108.useRef(null);
|
|
32567
32535
|
const [error, setError] = React108.useState(false);
|
|
32568
32536
|
const handleFile = async (file) => {
|
|
@@ -32627,7 +32595,7 @@ function SettingsLanguageTab({
|
|
|
32627
32595
|
type: "button",
|
|
32628
32596
|
onClick: () => onSelectLocale(locale.code),
|
|
32629
32597
|
"aria-pressed": isActive,
|
|
32630
|
-
className:
|
|
32598
|
+
className: chunk3TN5SUQR_js.cn(
|
|
32631
32599
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
32632
32600
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
32633
32601
|
),
|
|
@@ -32666,7 +32634,7 @@ function OpenSettingsDialog({
|
|
|
32666
32634
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
32667
32635
|
onCustomFontRegistered
|
|
32668
32636
|
}) {
|
|
32669
|
-
const { t } =
|
|
32637
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
32670
32638
|
const viewerCustomization = useViewerCustomizationContext();
|
|
32671
32639
|
const customization = React108.useMemo(
|
|
32672
32640
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -32775,7 +32743,7 @@ function ViewerOptionsProvider({
|
|
|
32775
32743
|
store,
|
|
32776
32744
|
children
|
|
32777
32745
|
}) {
|
|
32778
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32746
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6GAWXARM_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunk6GAWXARM_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
32779
32747
|
}
|
|
32780
32748
|
function useAiBridge(input) {
|
|
32781
32749
|
const ref = React108.useRef(input);
|
|
@@ -32856,7 +32824,7 @@ function useAiPanelController(input) {
|
|
|
32856
32824
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
32857
32825
|
})
|
|
32858
32826
|
);
|
|
32859
|
-
const state =
|
|
32827
|
+
const state = chunk6GAWXARM_js.useController(controller);
|
|
32860
32828
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
32861
32829
|
const liveFocusTargets = React108.useMemo(
|
|
32862
32830
|
() => ai.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33081,14 +33049,15 @@ function useMasterViewCrud(input) {
|
|
|
33081
33049
|
slides,
|
|
33082
33050
|
slideMasters,
|
|
33083
33051
|
target,
|
|
33084
|
-
setSlides,
|
|
33085
33052
|
setSlideMasters,
|
|
33053
|
+
setLayoutOptions,
|
|
33086
33054
|
setActiveMasterIndex,
|
|
33087
33055
|
setActiveLayoutIndex,
|
|
33088
33056
|
markDirty,
|
|
33057
|
+
forgetHistory,
|
|
33089
33058
|
pushToast
|
|
33090
33059
|
} = input;
|
|
33091
|
-
const { t } =
|
|
33060
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
33092
33061
|
const data = React108.useMemo(
|
|
33093
33062
|
() => ({ slides, slideMasters }),
|
|
33094
33063
|
[slides, slideMasters]
|
|
@@ -33108,7 +33077,7 @@ function useMasterViewCrud(input) {
|
|
|
33108
33077
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
33109
33078
|
const master = slideMasters[target.masterIndex];
|
|
33110
33079
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
33111
|
-
const next =
|
|
33080
|
+
const next = chunk6GAWXARM_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
33112
33081
|
if (!next) {
|
|
33113
33082
|
return;
|
|
33114
33083
|
}
|
|
@@ -33131,10 +33100,11 @@ function useMasterViewCrud(input) {
|
|
|
33131
33100
|
return;
|
|
33132
33101
|
}
|
|
33133
33102
|
handlerRef.current = result.handler;
|
|
33134
|
-
setSlides(result.data.slides);
|
|
33135
33103
|
setSlideMasters(result.data.slideMasters ?? []);
|
|
33104
|
+
setLayoutOptions(result.data.layoutOptions ?? []);
|
|
33136
33105
|
setActiveMasterIndex(result.target.masterIndex);
|
|
33137
33106
|
setActiveLayoutIndex(result.target.layoutIndex);
|
|
33107
|
+
pptx.forgetStepsUsingRemovedParts(forgetHistory, data, result.data);
|
|
33138
33108
|
markDirty();
|
|
33139
33109
|
},
|
|
33140
33110
|
[
|
|
@@ -33145,10 +33115,11 @@ function useMasterViewCrud(input) {
|
|
|
33145
33115
|
t,
|
|
33146
33116
|
data,
|
|
33147
33117
|
pushToast,
|
|
33148
|
-
setSlides,
|
|
33149
33118
|
setSlideMasters,
|
|
33119
|
+
setLayoutOptions,
|
|
33150
33120
|
setActiveMasterIndex,
|
|
33151
33121
|
setActiveLayoutIndex,
|
|
33122
|
+
forgetHistory,
|
|
33152
33123
|
markDirty
|
|
33153
33124
|
]
|
|
33154
33125
|
);
|
|
@@ -33212,8 +33183,8 @@ function useRibbonGalleryCommands2(input) {
|
|
|
33212
33183
|
if (!editable) {
|
|
33213
33184
|
return;
|
|
33214
33185
|
}
|
|
33215
|
-
if (
|
|
33216
|
-
void deckStyle
|
|
33186
|
+
if (deckStyle && pptx.commitsThroughDeckStyle(result)) {
|
|
33187
|
+
void deckStyle.commit(result);
|
|
33217
33188
|
return;
|
|
33218
33189
|
}
|
|
33219
33190
|
deckStyle?.endPreview();
|
|
@@ -33469,7 +33440,7 @@ function useHostLanguage({
|
|
|
33469
33440
|
availableLocales,
|
|
33470
33441
|
onLocaleChange
|
|
33471
33442
|
}) {
|
|
33472
|
-
const { t, i18n } =
|
|
33443
|
+
const { t, i18n } = chunk3TN5SUQR_js.useHostI18next();
|
|
33473
33444
|
const [localeCode, setLocaleCode] = React108.useState(
|
|
33474
33445
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
33475
33446
|
);
|
|
@@ -33509,7 +33480,7 @@ function useProvidedLanguage({
|
|
|
33509
33480
|
availableLocales,
|
|
33510
33481
|
onLocaleChange
|
|
33511
33482
|
}) {
|
|
33512
|
-
const state = React108.useContext(
|
|
33483
|
+
const state = React108.useContext(chunk3TN5SUQR_js.PptxI18nContext);
|
|
33513
33484
|
const { locale } = state;
|
|
33514
33485
|
const locales = availableLocales ?? NO_LOCALES;
|
|
33515
33486
|
const controls = React108.useMemo(
|
|
@@ -33529,7 +33500,7 @@ function useProvidedLanguage({
|
|
|
33529
33500
|
return { state, controls };
|
|
33530
33501
|
}
|
|
33531
33502
|
function provideLanguage({ state, controls }, children) {
|
|
33532
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33503
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3TN5SUQR_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3TN5SUQR_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
33533
33504
|
}
|
|
33534
33505
|
function HostLanguageRoot({ children, ...props }) {
|
|
33535
33506
|
return provideLanguage(useHostLanguage(props), children);
|
|
@@ -33538,11 +33509,11 @@ function ProvidedLanguageRoot({ children, ...props }) {
|
|
|
33538
33509
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
33539
33510
|
}
|
|
33540
33511
|
function ViewerI18nRoot(props) {
|
|
33541
|
-
const Root = React108.useContext(
|
|
33512
|
+
const Root = React108.useContext(chunk3TN5SUQR_js.PptxI18nContext) ? ProvidedLanguageRoot : HostLanguageRoot;
|
|
33542
33513
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
33543
33514
|
}
|
|
33544
33515
|
function useViewerLocaleControls() {
|
|
33545
|
-
return React108.useContext(
|
|
33516
|
+
return React108.useContext(chunk3TN5SUQR_js.ViewerLocaleControlsContext);
|
|
33546
33517
|
}
|
|
33547
33518
|
var NO_RIBBON_ADD_INS = [];
|
|
33548
33519
|
var PowerPointViewerComponent = /* @__PURE__ */ React108.forwardRef(
|
|
@@ -33612,7 +33583,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33612
33583
|
ribbonAddIns,
|
|
33613
33584
|
ai,
|
|
33614
33585
|
customization,
|
|
33615
|
-
initialSlide
|
|
33586
|
+
initialSlide,
|
|
33587
|
+
googleFonts
|
|
33616
33588
|
} = props;
|
|
33617
33589
|
const hostCanEdit = canEditProp && !readOnly;
|
|
33618
33590
|
const collaboration = pptx.resolveCollaborationConfig(collaborationInput);
|
|
@@ -33651,7 +33623,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33651
33623
|
(current) => current.includes(family) ? current : [...current, family]
|
|
33652
33624
|
);
|
|
33653
33625
|
}, []);
|
|
33654
|
-
const { t } =
|
|
33626
|
+
const { t } = chunk3TN5SUQR_js.useTranslation();
|
|
33655
33627
|
const {
|
|
33656
33628
|
localeCode,
|
|
33657
33629
|
locales: resolvedLocales,
|
|
@@ -33689,7 +33661,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33689
33661
|
},
|
|
33690
33662
|
[storage]
|
|
33691
33663
|
);
|
|
33692
|
-
const { optionsStore, options: viewerOptions } =
|
|
33664
|
+
const { optionsStore, options: viewerOptions } = chunk6GAWXARM_js.useViewerOptions();
|
|
33693
33665
|
const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
|
|
33694
33666
|
const { resolved: customizationResolved, hiddenActions } = custom;
|
|
33695
33667
|
const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
|
|
@@ -33703,8 +33675,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33703
33675
|
const handleEnableEditing = React108.useCallback(() => {
|
|
33704
33676
|
setProtectedViewOverridden(true);
|
|
33705
33677
|
}, []);
|
|
33706
|
-
const readOnlyRec =
|
|
33707
|
-
const compatToastsState =
|
|
33678
|
+
const readOnlyRec = chunk6GAWXARM_js.useReadOnlyRecommendationState(content);
|
|
33679
|
+
const compatToastsState = chunk6GAWXARM_js.useCompatibilityToastsState();
|
|
33708
33680
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
33709
33681
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
33710
33682
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -33727,8 +33699,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33727
33699
|
filePath
|
|
33728
33700
|
});
|
|
33729
33701
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
33730
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
33731
|
-
const state =
|
|
33702
|
+
const { reducedMotion, toggleReducedMotion } = chunk6GAWXARM_js.useReducedMotion();
|
|
33703
|
+
const state = chunk6GAWXARM_js.useViewerState({
|
|
33732
33704
|
content,
|
|
33733
33705
|
canEdit,
|
|
33734
33706
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -33855,16 +33827,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33855
33827
|
}
|
|
33856
33828
|
}, [settings, optionsStore]);
|
|
33857
33829
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
33858
|
-
const mobile =
|
|
33830
|
+
const mobile = chunk6GAWXARM_js.useIsMobile();
|
|
33859
33831
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
33860
|
-
const resizablePanels =
|
|
33832
|
+
const resizablePanels = chunk6GAWXARM_js.useResizablePanels();
|
|
33861
33833
|
const {
|
|
33862
33834
|
gridSpacingPx,
|
|
33863
33835
|
visibleSlideIndexes,
|
|
33864
33836
|
slideSectionGroups,
|
|
33865
33837
|
masterPseudoSlide,
|
|
33866
33838
|
authoredRange
|
|
33867
|
-
} =
|
|
33839
|
+
} = chunk6GAWXARM_js.useDerivedSlideState({
|
|
33868
33840
|
slides,
|
|
33869
33841
|
sections: state.sections,
|
|
33870
33842
|
customShows: state.customShows,
|
|
@@ -33889,7 +33861,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33889
33861
|
state.cropSessionRef
|
|
33890
33862
|
]
|
|
33891
33863
|
);
|
|
33892
|
-
const zoom =
|
|
33864
|
+
const zoom = chunk6GAWXARM_js.useZoomViewport({
|
|
33893
33865
|
canvasSize,
|
|
33894
33866
|
selectedElements: state.selectedElements,
|
|
33895
33867
|
fitPadding: props.fitPadding,
|
|
@@ -33904,7 +33876,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33904
33876
|
setIsDirty(true);
|
|
33905
33877
|
onChangeCallback.current?.();
|
|
33906
33878
|
}, [setIsDirty]);
|
|
33907
|
-
const
|
|
33879
|
+
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
33880
|
+
const history = chunk6GAWXARM_js.useEditorHistory({
|
|
33908
33881
|
slides,
|
|
33909
33882
|
canvasSize,
|
|
33910
33883
|
activeSlideIndex,
|
|
@@ -33921,6 +33894,9 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33921
33894
|
hasActivePointerInteraction,
|
|
33922
33895
|
pointerCommitNonce: state.pointerCommitNonce,
|
|
33923
33896
|
onDirty: markDocumentDirty,
|
|
33897
|
+
theme: state.theme,
|
|
33898
|
+
slideMasters: state.slideMasters,
|
|
33899
|
+
onRestoreTheme: (recorded) => restoreHistoryThemeRef.current?.(recorded),
|
|
33924
33900
|
setSlides: state.setSlides,
|
|
33925
33901
|
setCanvasSize: state.setCanvasSize,
|
|
33926
33902
|
setActiveSlideIndex: state.setActiveSlideIndex,
|
|
@@ -33930,7 +33906,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
33930
33906
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
33931
33907
|
setHeaderFooter: state.setHeaderFooter
|
|
33932
33908
|
});
|
|
33933
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
33909
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunk6GAWXARM_js.usePresentationSetup({
|
|
33934
33910
|
mode,
|
|
33935
33911
|
slides,
|
|
33936
33912
|
visibleSlideIndexes,
|
|
@@ -34005,7 +33981,7 @@ ${url}`)
|
|
|
34005
33981
|
loading,
|
|
34006
33982
|
error
|
|
34007
33983
|
]);
|
|
34008
|
-
|
|
33984
|
+
chunk6GAWXARM_js.useTouchGestures({
|
|
34009
33985
|
targetRef: zoom.canvasViewportRef,
|
|
34010
33986
|
currentScale: zoom.scale,
|
|
34011
33987
|
callbacks: {
|
|
@@ -34027,7 +34003,7 @@ ${url}`)
|
|
|
34027
34003
|
},
|
|
34028
34004
|
enabled: isTouchDevice
|
|
34029
34005
|
});
|
|
34030
|
-
const dialogs =
|
|
34006
|
+
const dialogs = chunk6GAWXARM_js.useViewerDialogs({
|
|
34031
34007
|
mode,
|
|
34032
34008
|
slides,
|
|
34033
34009
|
activeSlide,
|
|
@@ -34076,7 +34052,7 @@ ${url}`)
|
|
|
34076
34052
|
zoom.handleZoomToFit();
|
|
34077
34053
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34078
34054
|
}, [mode]);
|
|
34079
|
-
const editorOps =
|
|
34055
|
+
const editorOps = chunk6GAWXARM_js.useEditorOperations({
|
|
34080
34056
|
state,
|
|
34081
34057
|
history,
|
|
34082
34058
|
zoom,
|
|
@@ -34119,7 +34095,7 @@ ${url}`)
|
|
|
34119
34095
|
handlerRef,
|
|
34120
34096
|
viewerApi,
|
|
34121
34097
|
loadVersion
|
|
34122
|
-
} =
|
|
34098
|
+
} = chunk6GAWXARM_js.useViewerIntegration({
|
|
34123
34099
|
transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
|
|
34124
34100
|
state,
|
|
34125
34101
|
zoom,
|
|
@@ -34152,6 +34128,7 @@ ${url}`)
|
|
|
34152
34128
|
// http(s) image sources actually load.
|
|
34153
34129
|
allowExternalImages: viewerOptions.trust.allowExternalContent,
|
|
34154
34130
|
initialSlide,
|
|
34131
|
+
googleFonts,
|
|
34155
34132
|
setReadOnlyRecommendation: readOnlyRec.setRecommendation,
|
|
34156
34133
|
setModifyVerifier: readOnlyRec.setModifyVerifier,
|
|
34157
34134
|
setCompatToasts: compatToastsState.setToasts,
|
|
@@ -34194,6 +34171,7 @@ ${url}`)
|
|
|
34194
34171
|
customizationApi: custom.api,
|
|
34195
34172
|
customization: customizationResolved
|
|
34196
34173
|
});
|
|
34174
|
+
restoreHistoryThemeRef.current = (recorded) => void themeHandlers.handleRestoreHistoryTheme(recorded);
|
|
34197
34175
|
const slidePackageClipboardRef = React108.useRef(null);
|
|
34198
34176
|
const slidePackageHost = {
|
|
34199
34177
|
getSnapshot: () => handlerRef.current ? {
|
|
@@ -34204,11 +34182,12 @@ ${url}`)
|
|
|
34204
34182
|
editable: canEdit
|
|
34205
34183
|
} : null,
|
|
34206
34184
|
commit: (result) => {
|
|
34207
|
-
|
|
34185
|
+
const pastedMasters = result.data.slideMasters ?? [];
|
|
34186
|
+
history.commitSlides(result.slides, void 0, void 0, pastedMasters);
|
|
34208
34187
|
handlerRef.current = result.handler;
|
|
34209
34188
|
actionSoundHandlerRef.current = result.handler;
|
|
34210
34189
|
state.setTemplateElementsBySlideId(result.templateElementsBySlideId);
|
|
34211
|
-
state.setSlideMasters(
|
|
34190
|
+
state.setSlideMasters(pastedMasters);
|
|
34212
34191
|
state.setLayoutOptions(result.data.layoutOptions ?? []);
|
|
34213
34192
|
state.setThemeOptions(result.data.themeOptions ?? []);
|
|
34214
34193
|
for (const [path, url] of result.mediaUrls) {
|
|
@@ -34258,7 +34237,7 @@ ${url}`)
|
|
|
34258
34237
|
updateElementById: editorOps.ops.updateElementById
|
|
34259
34238
|
});
|
|
34260
34239
|
const ribbonScope = useRibbonScopeToken();
|
|
34261
|
-
const viewPreferencesSync =
|
|
34240
|
+
const viewPreferencesSync = chunk6GAWXARM_js.useViewPreferencesSync({
|
|
34262
34241
|
loadVersion,
|
|
34263
34242
|
viewProperties: state.viewProperties,
|
|
34264
34243
|
setViewProperties: state.setViewProperties,
|
|
@@ -34300,7 +34279,7 @@ ${url}`)
|
|
|
34300
34279
|
},
|
|
34301
34280
|
[state]
|
|
34302
34281
|
);
|
|
34303
|
-
const layoutSwitching =
|
|
34282
|
+
const layoutSwitching = chunk6GAWXARM_js.useLayoutSwitching({
|
|
34304
34283
|
handler: handlerRef.current,
|
|
34305
34284
|
slides,
|
|
34306
34285
|
activeSlideIndex,
|
|
@@ -34317,11 +34296,12 @@ ${url}`)
|
|
|
34317
34296
|
masterIndex: state.activeMasterIndex,
|
|
34318
34297
|
layoutIndex: state.activeLayoutIndex
|
|
34319
34298
|
},
|
|
34320
|
-
setSlides: state.setSlides,
|
|
34321
34299
|
setSlideMasters: state.setSlideMasters,
|
|
34300
|
+
setLayoutOptions: state.setLayoutOptions,
|
|
34322
34301
|
setActiveMasterIndex: state.setActiveMasterIndex,
|
|
34323
34302
|
setActiveLayoutIndex: state.setActiveLayoutIndex,
|
|
34324
34303
|
markDirty: history.markDirty,
|
|
34304
|
+
forgetHistory: history.forgetHistory,
|
|
34325
34305
|
pushToast: (toast) => compatToastsState.setToasts((prev) => [...prev, toast])
|
|
34326
34306
|
});
|
|
34327
34307
|
const applyAiTheme = React108.useCallback(
|
|
@@ -34416,7 +34396,7 @@ ${url}`)
|
|
|
34416
34396
|
"data-pptx-editor-chrome": "",
|
|
34417
34397
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
34418
34398
|
"aria-busy": loading,
|
|
34419
|
-
className:
|
|
34399
|
+
className: chunk3TN5SUQR_js.cn(
|
|
34420
34400
|
"h-full w-full bg-background text-foreground relative",
|
|
34421
34401
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
34422
34402
|
),
|
|
@@ -34813,8 +34793,8 @@ ${url}`)
|
|
|
34813
34793
|
// Nothing previously provided it, so every one of those consumers was
|
|
34814
34794
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
34815
34795
|
// the user changed in the Options dialog.
|
|
34816
|
-
/* @__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(
|
|
34817
|
-
|
|
34796
|
+
/* @__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(chunk6GAWXARM_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34797
|
+
chunk6GAWXARM_js.CollaborationProvider,
|
|
34818
34798
|
{
|
|
34819
34799
|
config: collaboration,
|
|
34820
34800
|
canvasWidth: canvasSize.width,
|
|
@@ -34870,19 +34850,19 @@ ${url}`)
|
|
|
34870
34850
|
slideCount: slides.length
|
|
34871
34851
|
}
|
|
34872
34852
|
),
|
|
34873
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34853
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunk6GAWXARM_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
34874
34854
|
]
|
|
34875
34855
|
}
|
|
34876
34856
|
) }) }) }) }) }) }) }) })
|
|
34877
34857
|
);
|
|
34878
34858
|
}
|
|
34879
34859
|
);
|
|
34880
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
34860
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunk6GAWXARM_js.withDisplayName(
|
|
34881
34861
|
PowerPointViewerComponent,
|
|
34882
34862
|
"PowerPointViewer"
|
|
34883
34863
|
);
|
|
34884
34864
|
function CollaborationStatusStrip() {
|
|
34885
|
-
const collab =
|
|
34865
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
34886
34866
|
if (!collab) {
|
|
34887
34867
|
return null;
|
|
34888
34868
|
}
|
|
@@ -34899,9 +34879,9 @@ function CollaborationStateReporter({
|
|
|
34899
34879
|
onChange,
|
|
34900
34880
|
onStatus
|
|
34901
34881
|
}) {
|
|
34902
|
-
const collab =
|
|
34882
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
34903
34883
|
useCollaborationStateReport(collab, onChange);
|
|
34904
|
-
|
|
34884
|
+
chunk6GAWXARM_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
34905
34885
|
return null;
|
|
34906
34886
|
}
|
|
34907
34887
|
function CollaborationDocumentSync({
|
|
@@ -34915,8 +34895,8 @@ function CollaborationDocumentSync({
|
|
|
34915
34895
|
deckSaveState,
|
|
34916
34896
|
onReadOnlyChange
|
|
34917
34897
|
}) {
|
|
34918
|
-
const collab =
|
|
34919
|
-
|
|
34898
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
34899
|
+
chunk6GAWXARM_js.useCollaborationDocumentSync({
|
|
34920
34900
|
collaboration: collab,
|
|
34921
34901
|
slides,
|
|
34922
34902
|
templateElementsBySlideId,
|
|
@@ -34935,14 +34915,14 @@ function CollaborationFollowLayer({
|
|
|
34935
34915
|
setActiveSlideIndex,
|
|
34936
34916
|
slideCount
|
|
34937
34917
|
}) {
|
|
34938
|
-
const collab =
|
|
34939
|
-
const { followedClientId, followUser } =
|
|
34918
|
+
const collab = chunk6GAWXARM_js.useCollaboration();
|
|
34919
|
+
const { followedClientId, followUser } = chunk6GAWXARM_js.useFollowMode({
|
|
34940
34920
|
collab,
|
|
34941
34921
|
activeSlideIndex,
|
|
34942
34922
|
setActiveSlideIndex,
|
|
34943
34923
|
slideCount
|
|
34944
34924
|
});
|
|
34945
|
-
|
|
34925
|
+
chunk6GAWXARM_js.useBroadcastFollower({
|
|
34946
34926
|
collab,
|
|
34947
34927
|
activeSlideIndex,
|
|
34948
34928
|
setActiveSlideIndex,
|
|
@@ -34984,7 +34964,7 @@ function PptxI18nProvider({
|
|
|
34984
34964
|
() => ({ t: withEnglishFallback(translate), locale }),
|
|
34985
34965
|
[translate, locale]
|
|
34986
34966
|
);
|
|
34987
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34967
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3TN5SUQR_js.PptxI18nContext.Provider, { value: state, children });
|
|
34988
34968
|
}
|
|
34989
34969
|
|
|
34990
34970
|
Object.defineProperty(exports, "THEME_CATALOG", {
|