pptx-react-viewer 4.41.0 → 4.42.1
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 +39 -0
- package/dist/{AiChatPanel-IDP326YW.mjs → AiChatPanel-R5UTSMXU.mjs} +1 -1
- package/dist/AiChatPanel-R5UTSMXU.mjs.br +0 -0
- package/dist/AiChatPanel-R5UTSMXU.mjs.gz +0 -0
- package/dist/{AiChatPanel-KEVVVR7C.js → AiChatPanel-VI2IQ7XU.js} +9 -9
- package/dist/AiChatPanel-VI2IQ7XU.js.br +0 -0
- package/dist/AiChatPanel-VI2IQ7XU.js.gz +0 -0
- package/dist/{chunk-VU2WQN3P.js → chunk-2XVYVT25.js} +383 -383
- package/dist/chunk-2XVYVT25.js.br +0 -0
- package/dist/chunk-2XVYVT25.js.gz +0 -0
- package/dist/{chunk-MNT2CXDI.mjs → chunk-3LIHPZKS.mjs} +22 -22
- package/dist/chunk-3LIHPZKS.mjs.br +0 -0
- package/dist/chunk-3LIHPZKS.mjs.gz +0 -0
- package/dist/{chunk-3PKYNJJG.js → chunk-FKY33ZKL.js} +21 -21
- package/dist/chunk-FKY33ZKL.js.br +0 -0
- package/dist/chunk-FKY33ZKL.js.gz +0 -0
- package/dist/{chunk-QJ4X7Y7S.js → chunk-GLWV52C6.js} +248 -245
- package/dist/chunk-GLWV52C6.js.br +0 -0
- package/dist/chunk-GLWV52C6.js.gz +0 -0
- package/dist/{chunk-QP67UMRL.mjs → chunk-PZUBHPGJ.mjs} +4 -4
- package/dist/chunk-PZUBHPGJ.mjs.br +0 -0
- package/dist/chunk-PZUBHPGJ.mjs.gz +0 -0
- package/dist/{chunk-EQTNWM5Y.mjs → chunk-UACDKMXF.mjs} +4 -1
- package/dist/chunk-UACDKMXF.mjs.br +0 -0
- package/dist/chunk-UACDKMXF.mjs.gz +0 -0
- package/dist/index.js +24 -24
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.js +19 -19
- 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 +8 -8
- package/dist/AiChatPanel-IDP326YW.mjs.br +0 -0
- package/dist/AiChatPanel-IDP326YW.mjs.gz +0 -0
- package/dist/AiChatPanel-KEVVVR7C.js.br +0 -0
- package/dist/AiChatPanel-KEVVVR7C.js.gz +0 -0
- package/dist/chunk-3PKYNJJG.js.br +0 -0
- package/dist/chunk-3PKYNJJG.js.gz +0 -0
- package/dist/chunk-EQTNWM5Y.mjs.br +0 -0
- package/dist/chunk-EQTNWM5Y.mjs.gz +0 -0
- package/dist/chunk-MNT2CXDI.mjs.br +0 -0
- package/dist/chunk-MNT2CXDI.mjs.gz +0 -0
- package/dist/chunk-QJ4X7Y7S.js.br +0 -0
- package/dist/chunk-QJ4X7Y7S.js.gz +0 -0
- package/dist/chunk-QP67UMRL.mjs.br +0 -0
- package/dist/chunk-QP67UMRL.mjs.gz +0 -0
- package/dist/chunk-VU2WQN3P.js.br +0 -0
- package/dist/chunk-VU2WQN3P.js.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkGLWV52C6_js = require('./chunk-GLWV52C6.js');
|
|
4
|
+
var chunkFKY33ZKL_js = require('./chunk-FKY33ZKL.js');
|
|
5
5
|
var pptx = require('ooxml-ui/pptx');
|
|
6
6
|
var React105 = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -307,7 +307,7 @@ function SlideTemplatePreview({
|
|
|
307
307
|
transformOrigin: "top left"
|
|
308
308
|
},
|
|
309
309
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
310
|
-
|
|
310
|
+
chunkGLWV52C6_js.StaticElementRenderer,
|
|
311
311
|
{
|
|
312
312
|
element,
|
|
313
313
|
activeSlide: previewSlide,
|
|
@@ -376,7 +376,7 @@ function SlideTemplateGalleryDialog({
|
|
|
376
376
|
scheme
|
|
377
377
|
}) {
|
|
378
378
|
const { t } = reactI18next.useTranslation();
|
|
379
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
379
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
|
|
380
380
|
const [selected, setSelected] = React105.useState(null);
|
|
381
381
|
const dialogRef = React105.useRef(null);
|
|
382
382
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -459,7 +459,7 @@ function SlideTemplateGalleryDialog({
|
|
|
459
459
|
onInsert(spec.id);
|
|
460
460
|
onClose();
|
|
461
461
|
},
|
|
462
|
-
className:
|
|
462
|
+
className: chunkFKY33ZKL_js.cn(
|
|
463
463
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
464
464
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
465
465
|
),
|
|
@@ -868,7 +868,7 @@ function MobileSheet({
|
|
|
868
868
|
}) {
|
|
869
869
|
const sheetRef = React105.useRef(null);
|
|
870
870
|
const { t } = reactI18next.useTranslation();
|
|
871
|
-
const { dragY, dragging, handlers } =
|
|
871
|
+
const { dragY, dragging, handlers } = chunkGLWV52C6_js.useSheetDismissDrag(onClose);
|
|
872
872
|
useModalFocus(open, sheetRef, onClose);
|
|
873
873
|
if (!open) {
|
|
874
874
|
return null;
|
|
@@ -892,7 +892,7 @@ function MobileSheet({
|
|
|
892
892
|
"aria-modal": "true",
|
|
893
893
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
894
894
|
tabIndex: -1,
|
|
895
|
-
className:
|
|
895
|
+
className: chunkFKY33ZKL_js.cn(
|
|
896
896
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
897
897
|
"animate-in slide-in-from-bottom duration-200",
|
|
898
898
|
className
|
|
@@ -1136,7 +1136,7 @@ function WebHomeControls({
|
|
|
1136
1136
|
function ShapeArrangeExtras(p) {
|
|
1137
1137
|
const commands = useShapeFormatContext();
|
|
1138
1138
|
const crop = commands?.crop;
|
|
1139
|
-
const { isHidden } =
|
|
1139
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
|
|
1140
1140
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
1141
1141
|
const controls = React105.useMemo(
|
|
1142
1142
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -1471,7 +1471,7 @@ function TransitionsSection(p) {
|
|
|
1471
1471
|
case "soundPreview": {
|
|
1472
1472
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
1473
1473
|
if (url) {
|
|
1474
|
-
|
|
1474
|
+
chunkGLWV52C6_js.playAnimationSound(url);
|
|
1475
1475
|
}
|
|
1476
1476
|
break;
|
|
1477
1477
|
}
|
|
@@ -1667,7 +1667,7 @@ function AccountPage() {
|
|
|
1667
1667
|
return void 0;
|
|
1668
1668
|
});
|
|
1669
1669
|
};
|
|
1670
|
-
const version = "4.
|
|
1670
|
+
const version = "4.42.1" ;
|
|
1671
1671
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1672
1672
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
1673
1673
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -1707,7 +1707,7 @@ function AccountPage() {
|
|
|
1707
1707
|
"aria-label": color,
|
|
1708
1708
|
"aria-pressed": profile.avatarColor === color,
|
|
1709
1709
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
1710
|
-
className:
|
|
1710
|
+
className: chunkFKY33ZKL_js.cn(
|
|
1711
1711
|
"size-7 rounded-full border-2 transition-transform",
|
|
1712
1712
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
1713
1713
|
),
|
|
@@ -1931,7 +1931,7 @@ function FileSection(p) {
|
|
|
1931
1931
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
1932
1932
|
const [query, setQuery] = React105.useState("");
|
|
1933
1933
|
const [recent, setRecent] = React105.useState([]);
|
|
1934
|
-
const { isHidden } =
|
|
1934
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
|
|
1935
1935
|
const exportHidden = isHidden("export");
|
|
1936
1936
|
React105.useEffect(() => {
|
|
1937
1937
|
void pptx.listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
|
|
@@ -2179,7 +2179,7 @@ function RibbonMenu({
|
|
|
2179
2179
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2180
2180
|
"div",
|
|
2181
2181
|
{
|
|
2182
|
-
className:
|
|
2182
|
+
className: chunkFKY33ZKL_js.cn("fixed z-50", className),
|
|
2183
2183
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
2184
2184
|
children
|
|
2185
2185
|
}
|
|
@@ -2205,7 +2205,7 @@ function LayoutGalleryMenu(p) {
|
|
|
2205
2205
|
type: "button",
|
|
2206
2206
|
"aria-current": isCurrent ? "true" : void 0,
|
|
2207
2207
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
2208
|
-
className:
|
|
2208
|
+
className: chunkFKY33ZKL_js.cn(
|
|
2209
2209
|
"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",
|
|
2210
2210
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
2211
2211
|
),
|
|
@@ -2279,7 +2279,7 @@ function LayoutArtwork({
|
|
|
2279
2279
|
backgroundColor
|
|
2280
2280
|
};
|
|
2281
2281
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2282
|
-
|
|
2282
|
+
chunkGLWV52C6_js.StaticElementRenderer,
|
|
2283
2283
|
{
|
|
2284
2284
|
element,
|
|
2285
2285
|
activeSlide: slide,
|
|
@@ -2674,7 +2674,7 @@ function CustomShowsControls({
|
|
|
2674
2674
|
{
|
|
2675
2675
|
type: "button",
|
|
2676
2676
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
2677
|
-
className:
|
|
2677
|
+
className: chunkFKY33ZKL_js.cn(
|
|
2678
2678
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
2679
2679
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
2680
2680
|
),
|
|
@@ -2729,7 +2729,7 @@ function SlideShowOptions({
|
|
|
2729
2729
|
}
|
|
2730
2730
|
function SubtitleSettingsControl() {
|
|
2731
2731
|
const { t } = reactI18next.useTranslation();
|
|
2732
|
-
const supplied = React105.useContext(
|
|
2732
|
+
const supplied = React105.useContext(chunkGLWV52C6_js.ViewerOptionsStoreContext);
|
|
2733
2733
|
const fallback = React105.useRef(null);
|
|
2734
2734
|
if (!supplied) {
|
|
2735
2735
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -2763,7 +2763,7 @@ function SubtitleSettingsControl() {
|
|
|
2763
2763
|
}
|
|
2764
2764
|
function SlideShowSection(p) {
|
|
2765
2765
|
const { t } = reactI18next.useTranslation();
|
|
2766
|
-
const { isHidden } =
|
|
2766
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
|
|
2767
2767
|
const [showsOpen, setShowsOpen] = React105.useState(false);
|
|
2768
2768
|
const showsRef = React105.useRef(null);
|
|
2769
2769
|
React105.useEffect(() => {
|
|
@@ -2844,7 +2844,7 @@ function extractFontInfo(element, themeFonts) {
|
|
|
2844
2844
|
fontFamily: pptx.resolveDefaultFontFamily(placeholderType, themeFonts),
|
|
2845
2845
|
fontSize: "24"
|
|
2846
2846
|
};
|
|
2847
|
-
if (!element || !(0,
|
|
2847
|
+
if (!element || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
|
|
2848
2848
|
return defaults;
|
|
2849
2849
|
}
|
|
2850
2850
|
const segStyle = element.textSegments?.[0]?.style;
|
|
@@ -2865,7 +2865,7 @@ function getEffectiveTextStyle(element, tableEditorState) {
|
|
|
2865
2865
|
if (!element) {
|
|
2866
2866
|
return void 0;
|
|
2867
2867
|
}
|
|
2868
|
-
if ((0,
|
|
2868
|
+
if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
|
|
2869
2869
|
return element.textStyle;
|
|
2870
2870
|
}
|
|
2871
2871
|
if (element.type === "table" && tableEditorState && element.tableData) {
|
|
@@ -2878,7 +2878,7 @@ function isTextDecorationFlag(id) {
|
|
|
2878
2878
|
return pptx.TEXT_DECORATION_FLAGS.includes(id);
|
|
2879
2879
|
}
|
|
2880
2880
|
function textSectionFlags(element, tableEditorState, readSelection) {
|
|
2881
|
-
if (element && (0,
|
|
2881
|
+
if (element && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
|
|
2882
2882
|
const result = readSelection ? pptx.getInlineEditorSelectionResult(element.textSegments) : null;
|
|
2883
2883
|
const current = result?.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? result : null;
|
|
2884
2884
|
return pptx.getSelectionTextStyleFlags(
|
|
@@ -2894,7 +2894,7 @@ function textSectionFlags(element, tableEditorState, readSelection) {
|
|
|
2894
2894
|
);
|
|
2895
2895
|
}
|
|
2896
2896
|
function textSectionBulletKind(element, tableEditorState) {
|
|
2897
|
-
if (element && (0,
|
|
2897
|
+
if (element && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
|
|
2898
2898
|
const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
|
|
2899
2899
|
return result.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? pptx.selectionBulletKind(element, result.selection, result.snapshot?.textSegments) : pptx.elementBulletKind(element);
|
|
2900
2900
|
}
|
|
@@ -3131,7 +3131,7 @@ function subscribe(onChange) {
|
|
|
3131
3131
|
}
|
|
3132
3132
|
function useParagraphListKind(element) {
|
|
3133
3133
|
const read = React105.useCallback(() => {
|
|
3134
|
-
if (!element || !(0,
|
|
3134
|
+
if (!element || !(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element)) {
|
|
3135
3135
|
return "none";
|
|
3136
3136
|
}
|
|
3137
3137
|
const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
|
|
@@ -3154,7 +3154,7 @@ function TextSection(p) {
|
|
|
3154
3154
|
const hasSel = Boolean(p.selectedElement);
|
|
3155
3155
|
const canMut = hasSel && p.canEdit;
|
|
3156
3156
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
3157
|
-
const isTextEl = hasSel && p.selectedElement !== null && (0,
|
|
3157
|
+
const isTextEl = hasSel && p.selectedElement !== null && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement);
|
|
3158
3158
|
const isTable = hasSel && p.selectedElement?.type === "table";
|
|
3159
3159
|
const canFormat = isTextEl || isTable;
|
|
3160
3160
|
const effectiveTs = getEffectiveTextStyle(p.selectedElement, p.tableEditorState);
|
|
@@ -3164,15 +3164,15 @@ function TextSection(p) {
|
|
|
3164
3164
|
if (!p.canEdit || !canFormat || !p.selectedElement) {
|
|
3165
3165
|
return;
|
|
3166
3166
|
}
|
|
3167
|
-
if ((0,
|
|
3167
|
+
if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement)) {
|
|
3168
3168
|
p.onToggleBullets(kind);
|
|
3169
3169
|
return;
|
|
3170
3170
|
}
|
|
3171
3171
|
p.onUpdateTextStyle({ listType: effectiveTs?.listType === kind ? "none" : kind });
|
|
3172
3172
|
};
|
|
3173
|
-
const currentColor = isTextEl && p.selectedElement && (0,
|
|
3174
|
-
const currentColorThemeRef = isTextEl && p.selectedElement && (0,
|
|
3175
|
-
const currentHighlight = isTextEl && p.selectedElement && (0,
|
|
3173
|
+
const currentColor = isTextEl && p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.color ?? p.selectedElement.textStyle?.color ?? "#000000" : effectiveTs?.color ?? "#000000";
|
|
3174
|
+
const currentColorThemeRef = isTextEl && p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.colorRef ?? p.selectedElement.textStyle?.colorRef : void 0;
|
|
3175
|
+
const currentHighlight = isTextEl && p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.highlightColor ?? p.selectedElement.textStyle?.highlightColor ?? "#ffff00" : "#ffff00";
|
|
3176
3176
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3177
3177
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-0.5", ...groupAttr("home.font"), children: [
|
|
3178
3178
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", "data-pptx-chrome": "font-controls", children: [
|
|
@@ -3187,7 +3187,7 @@ function TextSection(p) {
|
|
|
3187
3187
|
customFonts: p.customFontFamilies,
|
|
3188
3188
|
onFamily: (family) => p.onUpdateTextStyle({ fontFamily: family }),
|
|
3189
3189
|
onSize: (size) => p.onUpdateTextStyle({
|
|
3190
|
-
fontSize: p.selectedElement && (0,
|
|
3190
|
+
fontSize: p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
|
|
3191
3191
|
})
|
|
3192
3192
|
}
|
|
3193
3193
|
),
|
|
@@ -3302,7 +3302,7 @@ function MobileMenuSheet(props) {
|
|
|
3302
3302
|
const { t } = reactI18next.useTranslation();
|
|
3303
3303
|
const { open, onClose } = props;
|
|
3304
3304
|
const [active, setActive] = React105.useState("home");
|
|
3305
|
-
const { isTabVisible } =
|
|
3305
|
+
const { isTabVisible } = chunkGLWV52C6_js.useToolbarVisibility(props.hiddenActions);
|
|
3306
3306
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3307
3307
|
MobileSheet,
|
|
3308
3308
|
{
|
|
@@ -3316,7 +3316,7 @@ function MobileMenuSheet(props) {
|
|
|
3316
3316
|
{
|
|
3317
3317
|
type: "button",
|
|
3318
3318
|
onClick: () => setActive(active === key ? null : key),
|
|
3319
|
-
className:
|
|
3319
|
+
className: chunkFKY33ZKL_js.cn(
|
|
3320
3320
|
"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]",
|
|
3321
3321
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
3322
3322
|
),
|
|
@@ -3591,7 +3591,7 @@ function MobileToolbar(props) {
|
|
|
3591
3591
|
const { t } = reactI18next.useTranslation();
|
|
3592
3592
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
3593
3593
|
const [menuOpen, setMenuOpen] = React105.useState(false);
|
|
3594
|
-
const { isHidden } =
|
|
3594
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(props.hiddenActions);
|
|
3595
3595
|
const showEdit = mode === "edit" || mode === "master";
|
|
3596
3596
|
const hidden = [];
|
|
3597
3597
|
if (isHidden("undo")) {
|
|
@@ -3638,7 +3638,7 @@ function MobileToolbar(props) {
|
|
|
3638
3638
|
}
|
|
3639
3639
|
function ChartSelectionStrip() {
|
|
3640
3640
|
const { t } = reactI18next.useTranslation();
|
|
3641
|
-
const commands =
|
|
3641
|
+
const commands = chunkGLWV52C6_js.useChartFormatContext();
|
|
3642
3642
|
const chart = commands?.chart;
|
|
3643
3643
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
3644
3644
|
const controls = React105.useMemo(
|
|
@@ -3669,7 +3669,7 @@ function PictureSizeStrip({
|
|
|
3669
3669
|
hiddenActions
|
|
3670
3670
|
}) {
|
|
3671
3671
|
const crop = useShapeFormatContext()?.crop;
|
|
3672
|
-
const { isHidden } =
|
|
3672
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(hiddenActions);
|
|
3673
3673
|
const controls = React105.useMemo(
|
|
3674
3674
|
() => pptx.pictureSizeHomeControls({
|
|
3675
3675
|
editable: Boolean(crop),
|
|
@@ -3713,7 +3713,7 @@ function DrawingGroup(p) {
|
|
|
3713
3713
|
const { recentColors, pushColor } = useRecentColors();
|
|
3714
3714
|
const themeColors = useThemeColorMap();
|
|
3715
3715
|
const commands = useRibbonGalleryCommands();
|
|
3716
|
-
const style = p.selectedElement && (0,
|
|
3716
|
+
const style = p.selectedElement && (0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
|
|
3717
3717
|
const { onMoveLayer, onMoveLayerToEdge, onSetNewShapeType, onAddShape, onUpdateElementStyle } = p;
|
|
3718
3718
|
const hasSelection = Boolean(p.selectedElement);
|
|
3719
3719
|
const controls = React105.useMemo(
|
|
@@ -3842,7 +3842,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
|
|
|
3842
3842
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
3843
3843
|
function RibbonTabBar(p) {
|
|
3844
3844
|
const { t } = reactI18next.useTranslation();
|
|
3845
|
-
const viewerOptions =
|
|
3845
|
+
const viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext();
|
|
3846
3846
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3847
3847
|
"div",
|
|
3848
3848
|
{
|
|
@@ -3850,7 +3850,7 @@ function RibbonTabBar(p) {
|
|
|
3850
3850
|
"data-pptx-chrome": "ribbon-tabs",
|
|
3851
3851
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
3852
3852
|
children: [
|
|
3853
|
-
|
|
3853
|
+
chunkFKY33ZKL_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
3854
3854
|
const selected = p.activeSection === s.id;
|
|
3855
3855
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3856
3856
|
"button",
|
|
@@ -3860,7 +3860,7 @@ function RibbonTabBar(p) {
|
|
|
3860
3860
|
"aria-selected": selected,
|
|
3861
3861
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
3862
3862
|
onClick: () => p.onSelectSection(s.id),
|
|
3863
|
-
className:
|
|
3863
|
+
className: chunkFKY33ZKL_js.cn(
|
|
3864
3864
|
TAB_BASE,
|
|
3865
3865
|
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"
|
|
3866
3866
|
),
|
|
@@ -3880,7 +3880,7 @@ function RibbonTabBar(p) {
|
|
|
3880
3880
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
3881
3881
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
3882
3882
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
3883
|
-
className:
|
|
3883
|
+
className: chunkFKY33ZKL_js.cn(
|
|
3884
3884
|
TAB_BASE,
|
|
3885
3885
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
3886
3886
|
),
|
|
@@ -3901,7 +3901,7 @@ function RibbonTabBar(p) {
|
|
|
3901
3901
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
3902
3902
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
3903
3903
|
onClick: () => p.onSelectContextual(id),
|
|
3904
|
-
className:
|
|
3904
|
+
className: chunkFKY33ZKL_js.cn(
|
|
3905
3905
|
TAB_BASE,
|
|
3906
3906
|
"text-primary",
|
|
3907
3907
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -3919,9 +3919,9 @@ function RibbonTabBar(p) {
|
|
|
3919
3919
|
}
|
|
3920
3920
|
function TabRowActions(p) {
|
|
3921
3921
|
const { t } = reactI18next.useTranslation();
|
|
3922
|
-
const collab =
|
|
3922
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
3923
3923
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
3924
|
-
const { isHidden } =
|
|
3924
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
|
|
3925
3925
|
const customization = useViewerCustomizationContext();
|
|
3926
3926
|
const ref = React105.useRef(null);
|
|
3927
3927
|
const handlers = React105.useRef(p);
|
|
@@ -3976,7 +3976,7 @@ function TabRowActions(p) {
|
|
|
3976
3976
|
}
|
|
3977
3977
|
function TitleBarElement(p) {
|
|
3978
3978
|
const { t } = reactI18next.useTranslation();
|
|
3979
|
-
const options =
|
|
3979
|
+
const options = chunkGLWV52C6_js.useViewerOptionsContext();
|
|
3980
3980
|
const customization = useViewerCustomizationContext();
|
|
3981
3981
|
const ref = React105.useRef(null);
|
|
3982
3982
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -4049,7 +4049,7 @@ function PresentDropdown({
|
|
|
4049
4049
|
{
|
|
4050
4050
|
type: "button",
|
|
4051
4051
|
onClick: onPresent,
|
|
4052
|
-
className:
|
|
4052
|
+
className: chunkFKY33ZKL_js.cn(
|
|
4053
4053
|
"px-2 py-1 transition-colors",
|
|
4054
4054
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
4055
4055
|
),
|
|
@@ -4062,7 +4062,7 @@ function PresentDropdown({
|
|
|
4062
4062
|
{
|
|
4063
4063
|
type: "button",
|
|
4064
4064
|
onClick: () => setOpen((prev) => !prev),
|
|
4065
|
-
className:
|
|
4065
|
+
className: chunkFKY33ZKL_js.cn(
|
|
4066
4066
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
4067
4067
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
4068
4068
|
),
|
|
@@ -4265,7 +4265,7 @@ function OverflowMenu(p) {
|
|
|
4265
4265
|
{
|
|
4266
4266
|
type: "button",
|
|
4267
4267
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
4268
|
-
className:
|
|
4268
|
+
className: chunkFKY33ZKL_js.cn(
|
|
4269
4269
|
"p-1.5 rounded transition-colors",
|
|
4270
4270
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
4271
4271
|
),
|
|
@@ -4312,7 +4312,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4312
4312
|
onToggleSidebar,
|
|
4313
4313
|
onToggleInspector
|
|
4314
4314
|
} = p;
|
|
4315
|
-
const collab =
|
|
4315
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
4316
4316
|
const customization = useViewerCustomizationContext();
|
|
4317
4317
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
4318
4318
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -4330,7 +4330,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4330
4330
|
{
|
|
4331
4331
|
type: "button",
|
|
4332
4332
|
onClick: onToggleSidebar,
|
|
4333
|
-
className:
|
|
4333
|
+
className: chunkFKY33ZKL_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
4334
4334
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
4335
4335
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
4336
4336
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -4391,7 +4391,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4391
4391
|
{
|
|
4392
4392
|
type: "button",
|
|
4393
4393
|
onClick: onToggleInspector,
|
|
4394
|
-
className:
|
|
4394
|
+
className: chunkFKY33ZKL_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
4395
4395
|
title: t("pptx.toolbar.toggleInspector"),
|
|
4396
4396
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
4397
4397
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -4402,7 +4402,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4402
4402
|
{
|
|
4403
4403
|
type: "button",
|
|
4404
4404
|
onClick: p.onToggleAiPanel,
|
|
4405
|
-
className:
|
|
4405
|
+
className: chunkFKY33ZKL_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
4406
4406
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
4407
4407
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
4408
4408
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -4413,7 +4413,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4413
4413
|
{
|
|
4414
4414
|
type: "button",
|
|
4415
4415
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
4416
|
-
className:
|
|
4416
|
+
className: chunkFKY33ZKL_js.cn(qab, "text-muted-foreground"),
|
|
4417
4417
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
4418
4418
|
"aria-label": t("pptx.toolbar.settings"),
|
|
4419
4419
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -4611,8 +4611,8 @@ function ToolbarLateTabs({
|
|
|
4611
4611
|
function Toolbar(p) {
|
|
4612
4612
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
4613
4613
|
const { t } = reactI18next.useTranslation();
|
|
4614
|
-
const { isTabVisible } =
|
|
4615
|
-
const viewerOptions =
|
|
4614
|
+
const { isTabVisible } = chunkGLWV52C6_js.useToolbarVisibility(p.hiddenActions);
|
|
4615
|
+
const viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext();
|
|
4616
4616
|
const customization = useViewerCustomizationContext();
|
|
4617
4617
|
const belowInput = React105.useMemo(
|
|
4618
4618
|
() => ({
|
|
@@ -4709,7 +4709,7 @@ function Toolbar(p) {
|
|
|
4709
4709
|
{
|
|
4710
4710
|
type: "button",
|
|
4711
4711
|
onClick: p.onToggleCompactToolbar,
|
|
4712
|
-
className:
|
|
4712
|
+
className: chunkFKY33ZKL_js.cn(
|
|
4713
4713
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
4714
4714
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
4715
4715
|
),
|
|
@@ -4735,7 +4735,7 @@ function Toolbar(p) {
|
|
|
4735
4735
|
{
|
|
4736
4736
|
ref: attachOverflow,
|
|
4737
4737
|
"data-pptx-chrome": "ribbon-content",
|
|
4738
|
-
className:
|
|
4738
|
+
className: chunkFKY33ZKL_js.cn(
|
|
4739
4739
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
4740
4740
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
4741
4741
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -5596,7 +5596,7 @@ function DrawingOverlaySvg({
|
|
|
5596
5596
|
onPointerDown,
|
|
5597
5597
|
onPointerMove,
|
|
5598
5598
|
onPointerUp,
|
|
5599
|
-
children: isStrokeActive && liveStrokeView ?
|
|
5599
|
+
children: isStrokeActive && liveStrokeView ? chunkGLWV52C6_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5600
5600
|
"path",
|
|
5601
5601
|
{
|
|
5602
5602
|
d: liveStrokeD,
|
|
@@ -5611,7 +5611,7 @@ function DrawingOverlaySvg({
|
|
|
5611
5611
|
}
|
|
5612
5612
|
);
|
|
5613
5613
|
}
|
|
5614
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
5614
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunkFKY33ZKL_js.GRID_SIZE, visible }) {
|
|
5615
5615
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
5616
5616
|
const patternId = React105.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
5617
5617
|
if (!visible) {
|
|
@@ -6175,7 +6175,7 @@ function PictureCropOverlay({
|
|
|
6175
6175
|
};
|
|
6176
6176
|
};
|
|
6177
6177
|
const { ghost, frame, handles } = overlay;
|
|
6178
|
-
const src =
|
|
6178
|
+
const src = chunkGLWV52C6_js.imgSrc(element);
|
|
6179
6179
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6180
6180
|
"div",
|
|
6181
6181
|
{
|
|
@@ -6588,10 +6588,10 @@ function SelectionHandleOverlay({
|
|
|
6588
6588
|
position: "absolute",
|
|
6589
6589
|
left: element.x,
|
|
6590
6590
|
top: element.y,
|
|
6591
|
-
width: Math.max(element.width,
|
|
6592
|
-
height: Math.max(element.height,
|
|
6593
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
6594
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
6591
|
+
width: Math.max(element.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE),
|
|
6592
|
+
height: Math.max(element.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE),
|
|
6593
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE)}px`,
|
|
6594
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunkFKY33ZKL_js.MIN_ELEMENT_SIZE)}px`,
|
|
6595
6595
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
6596
6596
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
6597
6597
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -6603,7 +6603,7 @@ function SelectionHandleOverlay({
|
|
|
6603
6603
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
6604
6604
|
// any realistic per-slide element count.
|
|
6605
6605
|
zIndex: 58,
|
|
6606
|
-
transform:
|
|
6606
|
+
transform: chunkFKY33ZKL_js.getElementTransform(element),
|
|
6607
6607
|
transformOrigin: "center",
|
|
6608
6608
|
// Transparent everywhere a handle button is not, so a click that
|
|
6609
6609
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -6615,14 +6615,14 @@ function SelectionHandleOverlay({
|
|
|
6615
6615
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
6616
6616
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
6617
6617
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6618
|
-
|
|
6618
|
+
chunkGLWV52C6_js.ResizeHandles,
|
|
6619
6619
|
{
|
|
6620
6620
|
elementId: element.id,
|
|
6621
6621
|
adjustmentHandles,
|
|
6622
6622
|
onResizePointerDown,
|
|
6623
6623
|
onAdjustmentPointerDown,
|
|
6624
6624
|
rotation: element.rotation,
|
|
6625
|
-
nonRotationTransform:
|
|
6625
|
+
nonRotationTransform: chunkFKY33ZKL_js.getElementTransformWithoutRotation(element),
|
|
6626
6626
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
6627
6627
|
forcePointerEvents: true
|
|
6628
6628
|
}
|
|
@@ -7326,7 +7326,7 @@ function SlideCanvas(props) {
|
|
|
7326
7326
|
props.registerInlineEditReader
|
|
7327
7327
|
]
|
|
7328
7328
|
);
|
|
7329
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7329
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
7330
7330
|
}
|
|
7331
7331
|
function SlideCanvasContent({
|
|
7332
7332
|
imagePaste,
|
|
@@ -7595,7 +7595,7 @@ function SlideCanvasContent({
|
|
|
7595
7595
|
onPointerMove: handleStagePointerMove,
|
|
7596
7596
|
onPointerUp: handleStagePointerUp,
|
|
7597
7597
|
children: [
|
|
7598
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7598
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
7599
7599
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
7600
7600
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
7601
7601
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7607,7 +7607,7 @@ function SlideCanvasContent({
|
|
|
7607
7607
|
}
|
|
7608
7608
|
),
|
|
7609
7609
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7610
|
-
|
|
7610
|
+
chunkGLWV52C6_js.ElementRenderer,
|
|
7611
7611
|
{
|
|
7612
7612
|
element,
|
|
7613
7613
|
activeSlide,
|
|
@@ -7629,7 +7629,7 @@ function SlideCanvasContent({
|
|
|
7629
7629
|
),
|
|
7630
7630
|
renderInk: false,
|
|
7631
7631
|
renderGroups: true,
|
|
7632
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7632
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkFKY33ZKL_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7633
7633
|
onResizePointerDown: stableResizePointerDown,
|
|
7634
7634
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7635
7635
|
onRotate: stableRotate,
|
|
@@ -7651,7 +7651,7 @@ function SlideCanvasContent({
|
|
|
7651
7651
|
`tpl-${element.id}`
|
|
7652
7652
|
)),
|
|
7653
7653
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7654
|
-
|
|
7654
|
+
chunkGLWV52C6_js.ElementRenderer,
|
|
7655
7655
|
{
|
|
7656
7656
|
element,
|
|
7657
7657
|
activeSlide,
|
|
@@ -7673,7 +7673,7 @@ function SlideCanvasContent({
|
|
|
7673
7673
|
),
|
|
7674
7674
|
renderInk: true,
|
|
7675
7675
|
renderGroups: true,
|
|
7676
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7676
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkFKY33ZKL_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7677
7677
|
onResizePointerDown: stableResizePointerDown,
|
|
7678
7678
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7679
7679
|
onRotate: stableRotate,
|
|
@@ -7717,7 +7717,7 @@ function SlideCanvasContent({
|
|
|
7717
7717
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7718
7718
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
7719
7719
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7720
|
-
|
|
7720
|
+
chunkGLWV52C6_js.ElementRenderer,
|
|
7721
7721
|
{
|
|
7722
7722
|
element: editingMember.member,
|
|
7723
7723
|
activeSlide,
|
|
@@ -7752,11 +7752,11 @@ function SlideCanvasContent({
|
|
|
7752
7752
|
`group-member-edit-${editingMember.member.id}`
|
|
7753
7753
|
)
|
|
7754
7754
|
] }),
|
|
7755
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
7755
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkFKY33ZKL_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7756
7756
|
SelectionHandleOverlay,
|
|
7757
7757
|
{
|
|
7758
7758
|
element: selectedElement,
|
|
7759
|
-
adjustmentHandles:
|
|
7759
|
+
adjustmentHandles: chunkFKY33ZKL_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
7760
7760
|
onResizePointerDown: stableResizePointerDown,
|
|
7761
7761
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7762
7762
|
onRotate: stableRotate,
|
|
@@ -7870,7 +7870,7 @@ function LoadingState({ className }) {
|
|
|
7870
7870
|
role: "status",
|
|
7871
7871
|
"aria-live": "polite",
|
|
7872
7872
|
"aria-atomic": "true",
|
|
7873
|
-
className:
|
|
7873
|
+
className: chunkFKY33ZKL_js.cn(
|
|
7874
7874
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
7875
7875
|
className
|
|
7876
7876
|
),
|
|
@@ -7893,7 +7893,7 @@ function ErrorState({ className, error }) {
|
|
|
7893
7893
|
{
|
|
7894
7894
|
role: "alert",
|
|
7895
7895
|
"aria-live": "assertive",
|
|
7896
|
-
className:
|
|
7896
|
+
className: chunkFKY33ZKL_js.cn(
|
|
7897
7897
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
7898
7898
|
className
|
|
7899
7899
|
),
|
|
@@ -7924,7 +7924,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
7924
7924
|
}
|
|
7925
7925
|
)
|
|
7926
7926
|
] }),
|
|
7927
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
7927
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkFKY33ZKL_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7928
7928
|
"div",
|
|
7929
7929
|
{
|
|
7930
7930
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -7984,14 +7984,14 @@ function AccessibilityPanel({
|
|
|
7984
7984
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
7985
7985
|
"aria-checked": reducedMotion ?? false,
|
|
7986
7986
|
onClick: onToggleReducedMotion,
|
|
7987
|
-
className:
|
|
7987
|
+
className: chunkFKY33ZKL_js.cn(
|
|
7988
7988
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
7989
7989
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
7990
7990
|
),
|
|
7991
7991
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7992
7992
|
"span",
|
|
7993
7993
|
{
|
|
7994
|
-
className:
|
|
7994
|
+
className: chunkFKY33ZKL_js.cn(
|
|
7995
7995
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
7996
7996
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
7997
7997
|
)
|
|
@@ -8010,7 +8010,7 @@ function AccessibilityPanel({
|
|
|
8010
8010
|
"div",
|
|
8011
8011
|
{
|
|
8012
8012
|
role: "listitem",
|
|
8013
|
-
className:
|
|
8013
|
+
className: chunkFKY33ZKL_js.cn(
|
|
8014
8014
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
8015
8015
|
/* Severity-based background and text colouring */
|
|
8016
8016
|
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"
|
|
@@ -8170,7 +8170,7 @@ function ResizeHandle({
|
|
|
8170
8170
|
{
|
|
8171
8171
|
role: "separator",
|
|
8172
8172
|
"aria-orientation": direction,
|
|
8173
|
-
className:
|
|
8173
|
+
className: chunkFKY33ZKL_js.cn(
|
|
8174
8174
|
// Outer container: generous hit area for easy clicking.
|
|
8175
8175
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
8176
8176
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -8181,7 +8181,7 @@ function ResizeHandle({
|
|
|
8181
8181
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8182
8182
|
"div",
|
|
8183
8183
|
{
|
|
8184
|
-
className:
|
|
8184
|
+
className: chunkFKY33ZKL_js.cn(
|
|
8185
8185
|
"absolute transition-colors",
|
|
8186
8186
|
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"
|
|
8187
8187
|
)
|
|
@@ -8200,14 +8200,14 @@ function SlideThumbnailImpl({
|
|
|
8200
8200
|
}) {
|
|
8201
8201
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
8202
8202
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
8203
|
-
const width = previewWidth ??
|
|
8203
|
+
const width = previewWidth ?? chunkFKY33ZKL_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
8204
8204
|
const scale = width / safeCanvasWidth;
|
|
8205
8205
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
8206
8206
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
8207
8207
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
8208
8208
|
const { t } = reactI18next.useTranslation();
|
|
8209
8209
|
const transitionLabel = slide.transition ? (() => {
|
|
8210
|
-
const opt =
|
|
8210
|
+
const opt = chunkFKY33ZKL_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
8211
8211
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
8212
8212
|
})() : void 0;
|
|
8213
8213
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8233,7 +8233,7 @@ function SlideThumbnailImpl({
|
|
|
8233
8233
|
...pptx.deviceStrokeStageStyle(scale)
|
|
8234
8234
|
},
|
|
8235
8235
|
children: [
|
|
8236
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8236
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SlideBackgroundImageLayer, { slide }),
|
|
8237
8237
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8238
8238
|
"div",
|
|
8239
8239
|
{
|
|
@@ -8243,7 +8243,7 @@ function SlideThumbnailImpl({
|
|
|
8243
8243
|
}
|
|
8244
8244
|
),
|
|
8245
8245
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8246
|
-
|
|
8246
|
+
chunkGLWV52C6_js.StaticElementRenderer,
|
|
8247
8247
|
{
|
|
8248
8248
|
element,
|
|
8249
8249
|
activeSlide: slide,
|
|
@@ -8418,7 +8418,7 @@ function ContextMenu(props) {
|
|
|
8418
8418
|
const { t } = reactI18next.useTranslation();
|
|
8419
8419
|
const customization = useViewerCustomizationContext();
|
|
8420
8420
|
const shapeFormat = useShapeFormatContext();
|
|
8421
|
-
const chartFormat =
|
|
8421
|
+
const chartFormat = chunkGLWV52C6_js.useChartFormatContext();
|
|
8422
8422
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
8423
8423
|
const handlers = {
|
|
8424
8424
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -8853,7 +8853,7 @@ function SectionHeader({
|
|
|
8853
8853
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8854
8854
|
lu.LuChevronDown,
|
|
8855
8855
|
{
|
|
8856
|
-
className:
|
|
8856
|
+
className: chunkFKY33ZKL_js.cn(
|
|
8857
8857
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
8858
8858
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
8859
8859
|
)
|
|
@@ -9004,7 +9004,7 @@ function LazyThumbnailInner({
|
|
|
9004
9004
|
}
|
|
9005
9005
|
var LazyThumbnail = React105__default.default.memo(LazyThumbnailInner);
|
|
9006
9006
|
function declaredSectionFacts(groups, sectionId) {
|
|
9007
|
-
const declared = groups.filter((group) => group.id !==
|
|
9007
|
+
const declared = groups.filter((group) => group.id !== chunkFKY33ZKL_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkFKY33ZKL_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
9008
9008
|
return {
|
|
9009
9009
|
isDeclared: declared.includes(sectionId),
|
|
9010
9010
|
index: declared.indexOf(sectionId),
|
|
@@ -9089,7 +9089,7 @@ function SlideItemInner({
|
|
|
9089
9089
|
"data-pptx-chrome": "slide-row",
|
|
9090
9090
|
"aria-describedby": cue.labelId,
|
|
9091
9091
|
"data-pptx-slide-hidden": cue.marker,
|
|
9092
|
-
className:
|
|
9092
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9093
9093
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
9094
9094
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
9095
9095
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -9111,7 +9111,7 @@ function SlideItemInner({
|
|
|
9111
9111
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9112
9112
|
"span",
|
|
9113
9113
|
{
|
|
9114
|
-
className:
|
|
9114
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9115
9115
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
9116
9116
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
9117
9117
|
),
|
|
@@ -9134,7 +9134,7 @@ function SlideItemInner({
|
|
|
9134
9134
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9135
9135
|
"div",
|
|
9136
9136
|
{
|
|
9137
|
-
className:
|
|
9137
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9138
9138
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
9139
9139
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
9140
9140
|
),
|
|
@@ -9333,7 +9333,7 @@ function SlidesPaneSidebar({
|
|
|
9333
9333
|
tableStyleContext
|
|
9334
9334
|
}) {
|
|
9335
9335
|
const { t } = reactI18next.useTranslation();
|
|
9336
|
-
const collab =
|
|
9336
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
9337
9337
|
const slideRefs = React105.useRef(/* @__PURE__ */ new Map());
|
|
9338
9338
|
const renameInputRef = React105.useRef(null);
|
|
9339
9339
|
const slidePresenceMap = React105.useMemo(() => {
|
|
@@ -9358,7 +9358,7 @@ function SlidesPaneSidebar({
|
|
|
9358
9358
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
9359
9359
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
9360
9360
|
);
|
|
9361
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
9361
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkFKY33ZKL_js.DEFAULT_SECTION_GROUP_ID);
|
|
9362
9362
|
const {
|
|
9363
9363
|
collapsedSections,
|
|
9364
9364
|
renamingSectionId,
|
|
@@ -9428,7 +9428,7 @@ function SlidesPaneSidebar({
|
|
|
9428
9428
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
9429
9429
|
);
|
|
9430
9430
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
9431
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
9431
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkGLWV52C6_js.useVirtualizedSlides({
|
|
9432
9432
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
9433
9433
|
itemHeight: estimatedItemHeight
|
|
9434
9434
|
});
|
|
@@ -9685,7 +9685,7 @@ function HandoutMasterPanel({
|
|
|
9685
9685
|
{
|
|
9686
9686
|
type: "button",
|
|
9687
9687
|
"aria-pressed": slidesPerPage === count,
|
|
9688
|
-
className:
|
|
9688
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9689
9689
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9690
9690
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9691
9691
|
),
|
|
@@ -9803,7 +9803,7 @@ function SlideMastersList({
|
|
|
9803
9803
|
ref: isMasterActive ? activeRef : void 0,
|
|
9804
9804
|
"aria-pressed": isMasterActive,
|
|
9805
9805
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9806
|
-
className:
|
|
9806
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9807
9807
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9808
9808
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9809
9809
|
),
|
|
@@ -9820,7 +9820,7 @@ function SlideMastersList({
|
|
|
9820
9820
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9821
9821
|
"span",
|
|
9822
9822
|
{
|
|
9823
|
-
className:
|
|
9823
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9824
9824
|
"text-[10px] font-medium",
|
|
9825
9825
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9826
9826
|
),
|
|
@@ -9839,7 +9839,7 @@ function SlideMastersList({
|
|
|
9839
9839
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9840
9840
|
"aria-pressed": isLayoutActive,
|
|
9841
9841
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9842
|
-
className:
|
|
9842
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9843
9843
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9844
9844
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9845
9845
|
),
|
|
@@ -9856,7 +9856,7 @@ function SlideMastersList({
|
|
|
9856
9856
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9857
9857
|
"span",
|
|
9858
9858
|
{
|
|
9859
|
-
className:
|
|
9859
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9860
9860
|
"text-[9px]",
|
|
9861
9861
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9862
9862
|
),
|
|
@@ -9948,7 +9948,7 @@ function MasterViewSidebar({
|
|
|
9948
9948
|
type: "button",
|
|
9949
9949
|
role: "tab",
|
|
9950
9950
|
"aria-selected": masterViewTab === tab.key,
|
|
9951
|
-
className:
|
|
9951
|
+
className: chunkFKY33ZKL_js.cn(
|
|
9952
9952
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
9953
9953
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9954
9954
|
),
|
|
@@ -10451,7 +10451,7 @@ function SectionBlock({
|
|
|
10451
10451
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10452
10452
|
lu.LuChevronDown,
|
|
10453
10453
|
{
|
|
10454
|
-
className:
|
|
10454
|
+
className: chunkFKY33ZKL_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10455
10455
|
}
|
|
10456
10456
|
),
|
|
10457
10457
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10500,7 +10500,7 @@ function SlideCardImpl({
|
|
|
10500
10500
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10501
10501
|
"div",
|
|
10502
10502
|
{
|
|
10503
|
-
className:
|
|
10503
|
+
className: chunkFKY33ZKL_js.cn(
|
|
10504
10504
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10505
10505
|
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",
|
|
10506
10506
|
slide.hidden && "opacity-40"
|
|
@@ -10523,7 +10523,7 @@ function SlideCardImpl({
|
|
|
10523
10523
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10524
10524
|
"span",
|
|
10525
10525
|
{
|
|
10526
|
-
className:
|
|
10526
|
+
className: chunkFKY33ZKL_js.cn(
|
|
10527
10527
|
"text-[11px] font-medium px-0.5",
|
|
10528
10528
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10529
10529
|
),
|
|
@@ -11293,7 +11293,7 @@ function ReadingViewStage({
|
|
|
11293
11293
|
"div",
|
|
11294
11294
|
{
|
|
11295
11295
|
className: "absolute inset-0",
|
|
11296
|
-
style: { backgroundColor:
|
|
11296
|
+
style: { backgroundColor: chunkFKY33ZKL_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11297
11297
|
}
|
|
11298
11298
|
),
|
|
11299
11299
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11312,7 +11312,7 @@ function ReadingViewStage({
|
|
|
11312
11312
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11313
11313
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11314
11314
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11315
|
-
|
|
11315
|
+
chunkGLWV52C6_js.StaticElementRenderer,
|
|
11316
11316
|
{
|
|
11317
11317
|
element,
|
|
11318
11318
|
activeSlide: slide,
|
|
@@ -11524,7 +11524,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11524
11524
|
if (segment.style.fontFamily) {
|
|
11525
11525
|
style.fontFamily = segment.style.fontFamily;
|
|
11526
11526
|
}
|
|
11527
|
-
if (segment.style.hyperlink &&
|
|
11527
|
+
if (segment.style.hyperlink && chunkFKY33ZKL_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11528
11528
|
const safeHref = segment.style.hyperlink;
|
|
11529
11529
|
style.color = "#4a9eff";
|
|
11530
11530
|
style.textDecoration = "underline";
|
|
@@ -11537,7 +11537,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11537
11537
|
style,
|
|
11538
11538
|
onClick: (e) => {
|
|
11539
11539
|
e.preventDefault();
|
|
11540
|
-
|
|
11540
|
+
chunkFKY33ZKL_js.safeOpenUrl(safeHref);
|
|
11541
11541
|
},
|
|
11542
11542
|
children: segment.text
|
|
11543
11543
|
},
|
|
@@ -11886,7 +11886,7 @@ function useSlideNotes({
|
|
|
11886
11886
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11887
11887
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11888
11888
|
e.preventDefault();
|
|
11889
|
-
|
|
11889
|
+
chunkFKY33ZKL_js.safeOpenUrl(href);
|
|
11890
11890
|
}
|
|
11891
11891
|
}, []);
|
|
11892
11892
|
return {
|
|
@@ -11967,7 +11967,7 @@ function SlideNotesPanel({
|
|
|
11967
11967
|
});
|
|
11968
11968
|
const hasNotes = draft.trim().length > 0;
|
|
11969
11969
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
11970
|
-
const { dragY, handlers: dragHandlers } =
|
|
11970
|
+
const { dragY, handlers: dragHandlers } = chunkGLWV52C6_js.useSheetDismissDrag(onToggle);
|
|
11971
11971
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11972
11972
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11973
11973
|
"button",
|
|
@@ -11983,7 +11983,7 @@ function SlideNotesPanel({
|
|
|
11983
11983
|
{
|
|
11984
11984
|
ref: rootRef,
|
|
11985
11985
|
"data-pptx-chrome": "notes",
|
|
11986
|
-
className:
|
|
11986
|
+
className: chunkFKY33ZKL_js.cn(
|
|
11987
11987
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
11988
11988
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
11989
11989
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12347,7 +12347,7 @@ function SlideDiffRow({
|
|
|
12347
12347
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12348
12348
|
"div",
|
|
12349
12349
|
{
|
|
12350
|
-
className:
|
|
12350
|
+
className: chunkFKY33ZKL_js.cn(
|
|
12351
12351
|
"rounded-lg border transition-colors",
|
|
12352
12352
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12353
12353
|
),
|
|
@@ -12361,7 +12361,7 @@ function SlideDiffRow({
|
|
|
12361
12361
|
children: [
|
|
12362
12362
|
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" }),
|
|
12363
12363
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12364
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12364
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkFKY33ZKL_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12365
12365
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12366
12366
|
diff.changes.length,
|
|
12367
12367
|
" ",
|
|
@@ -12371,7 +12371,7 @@ function SlideDiffRow({
|
|
|
12371
12371
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12372
12372
|
"span",
|
|
12373
12373
|
{
|
|
12374
|
-
className:
|
|
12374
|
+
className: chunkFKY33ZKL_js.cn(
|
|
12375
12375
|
"text-[10px] font-medium",
|
|
12376
12376
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12377
12377
|
),
|
|
@@ -12399,7 +12399,7 @@ function SlideDiffRow({
|
|
|
12399
12399
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12400
12400
|
"div",
|
|
12401
12401
|
{
|
|
12402
|
-
className:
|
|
12402
|
+
className: chunkFKY33ZKL_js.cn(
|
|
12403
12403
|
"rounded border overflow-hidden",
|
|
12404
12404
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12405
12405
|
),
|
|
@@ -13104,7 +13104,7 @@ function DocumentPropertiesDialog({
|
|
|
13104
13104
|
const handleClose = React105.useCallback(() => {
|
|
13105
13105
|
onClose();
|
|
13106
13106
|
}, [onClose]);
|
|
13107
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13107
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(handleClose);
|
|
13108
13108
|
if (!isOpen) {
|
|
13109
13109
|
return null;
|
|
13110
13110
|
}
|
|
@@ -13701,7 +13701,7 @@ function PresentationSubtitleBar({
|
|
|
13701
13701
|
}) {
|
|
13702
13702
|
const { t } = reactI18next.useTranslation();
|
|
13703
13703
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13704
|
-
pptx.subtitleSettingsFromOptions(
|
|
13704
|
+
pptx.subtitleSettingsFromOptions(chunkGLWV52C6_js.useViewerOptionsContext()),
|
|
13705
13705
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13706
13706
|
);
|
|
13707
13707
|
const [captionText, setCaptionText] = React105.useState("");
|
|
@@ -13869,7 +13869,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13869
13869
|
{
|
|
13870
13870
|
className: "absolute inset-0",
|
|
13871
13871
|
style: {
|
|
13872
|
-
backgroundColor:
|
|
13872
|
+
backgroundColor: chunkFKY33ZKL_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13873
13873
|
}
|
|
13874
13874
|
}
|
|
13875
13875
|
),
|
|
@@ -13895,7 +13895,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13895
13895
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13896
13896
|
},
|
|
13897
13897
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13898
|
-
|
|
13898
|
+
chunkGLWV52C6_js.StaticElementRenderer,
|
|
13899
13899
|
{
|
|
13900
13900
|
element,
|
|
13901
13901
|
activeSlide: slide,
|
|
@@ -14612,7 +14612,7 @@ function getElementDisplayName(element, index) {
|
|
|
14612
14612
|
if (element.name && element.name.trim().length > 0) {
|
|
14613
14613
|
return element.name.trim();
|
|
14614
14614
|
}
|
|
14615
|
-
if ((0,
|
|
14615
|
+
if ((0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
|
|
14616
14616
|
return element.text.trim().slice(0, 32);
|
|
14617
14617
|
}
|
|
14618
14618
|
const label = TYPE_LABELS[element.type] ?? "Object";
|
|
@@ -14785,7 +14785,7 @@ function SelectionPane({
|
|
|
14785
14785
|
setDragIndex(null);
|
|
14786
14786
|
setDragOverIndex(null);
|
|
14787
14787
|
},
|
|
14788
|
-
className:
|
|
14788
|
+
className: chunkFKY33ZKL_js.cn(
|
|
14789
14789
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14790
14790
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14791
14791
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14839,13 +14839,13 @@ function SelectionPane({
|
|
|
14839
14839
|
}
|
|
14840
14840
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14841
14841
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14842
|
-
var ENTRANCE_PRESETS =
|
|
14842
|
+
var ENTRANCE_PRESETS = chunkFKY33ZKL_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14843
14843
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14844
14844
|
);
|
|
14845
|
-
var EXIT_PRESETS =
|
|
14845
|
+
var EXIT_PRESETS = chunkFKY33ZKL_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14846
14846
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14847
14847
|
);
|
|
14848
|
-
var EMPHASIS_PRESETS =
|
|
14848
|
+
var EMPHASIS_PRESETS = chunkFKY33ZKL_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14849
14849
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14850
14850
|
);
|
|
14851
14851
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -15012,7 +15012,7 @@ function AnimationTimelineSection({
|
|
|
15012
15012
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15013
15013
|
"div",
|
|
15014
15014
|
{
|
|
15015
|
-
className:
|
|
15015
|
+
className: chunkFKY33ZKL_js.cn(
|
|
15016
15016
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15017
15017
|
animationTypeColor(bar.anim),
|
|
15018
15018
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15041,7 +15041,7 @@ function AnimationTimelineSection({
|
|
|
15041
15041
|
onDragLeave: handleDragLeave,
|
|
15042
15042
|
onDrop: (e) => handleDrop(index, e),
|
|
15043
15043
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15044
|
-
className:
|
|
15044
|
+
className: chunkFKY33ZKL_js.cn(
|
|
15045
15045
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15046
15046
|
"bg-muted/20 text-muted-foreground/70",
|
|
15047
15047
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15080,7 +15080,7 @@ function AnimationTimelineSection({
|
|
|
15080
15080
|
onDragEnd: handleDragEnd,
|
|
15081
15081
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15082
15082
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15083
|
-
className:
|
|
15083
|
+
className: chunkFKY33ZKL_js.cn(
|
|
15084
15084
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15085
15085
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15086
15086
|
isDragging && "opacity-40",
|
|
@@ -15212,7 +15212,7 @@ function EffectSoundRow({
|
|
|
15212
15212
|
}
|
|
15213
15213
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15214
15214
|
if (asset) {
|
|
15215
|
-
|
|
15215
|
+
chunkGLWV52C6_js.playAnimationSound(asset.dataUrl);
|
|
15216
15216
|
}
|
|
15217
15217
|
};
|
|
15218
15218
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15387,7 +15387,7 @@ function useAnimationPreview({
|
|
|
15387
15387
|
}) {
|
|
15388
15388
|
const handleAnimationHover = React105.useCallback((anim) => {
|
|
15389
15389
|
if (anim.motionPath) {
|
|
15390
|
-
|
|
15390
|
+
chunkFKY33ZKL_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15391
15391
|
durationMs: anim.durationMs,
|
|
15392
15392
|
delayMs: anim.delayMs,
|
|
15393
15393
|
timingCurve: anim.timingCurve
|
|
@@ -15398,19 +15398,19 @@ function useAnimationPreview({
|
|
|
15398
15398
|
if (!preset || preset === "none") {
|
|
15399
15399
|
return;
|
|
15400
15400
|
}
|
|
15401
|
-
|
|
15401
|
+
chunkFKY33ZKL_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15402
15402
|
direction: anim.direction,
|
|
15403
15403
|
durationMs: anim.durationMs ?? 500,
|
|
15404
15404
|
timingCurve: anim.timingCurve
|
|
15405
15405
|
});
|
|
15406
15406
|
}, []);
|
|
15407
|
-
const handleAnimationHoverEnd = React105.useCallback(() =>
|
|
15407
|
+
const handleAnimationHoverEnd = React105.useCallback(() => chunkFKY33ZKL_js.stopPreviewAnimation(), []);
|
|
15408
15408
|
const handlePreviewClick = React105.useCallback(() => {
|
|
15409
15409
|
if (!selectedElementAnimation) {
|
|
15410
15410
|
return;
|
|
15411
15411
|
}
|
|
15412
15412
|
if (selectedElementAnimation.motionPath) {
|
|
15413
|
-
|
|
15413
|
+
chunkFKY33ZKL_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15414
15414
|
durationMs: selectedElementAnimation.durationMs,
|
|
15415
15415
|
delayMs: selectedElementAnimation.delayMs,
|
|
15416
15416
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15421,7 +15421,7 @@ function useAnimationPreview({
|
|
|
15421
15421
|
if (!preset || preset === "none") {
|
|
15422
15422
|
return;
|
|
15423
15423
|
}
|
|
15424
|
-
|
|
15424
|
+
chunkFKY33ZKL_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15425
15425
|
direction: selectedElementAnimation.direction,
|
|
15426
15426
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15427
15427
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15655,8 +15655,8 @@ function useAnimationHandlers({
|
|
|
15655
15655
|
if (!el) {
|
|
15656
15656
|
return anim.elementId.slice(0, 8);
|
|
15657
15657
|
}
|
|
15658
|
-
const text = (0,
|
|
15659
|
-
return text ||
|
|
15658
|
+
const text = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15659
|
+
return text || chunkFKY33ZKL_js.getElementLabel(el);
|
|
15660
15660
|
},
|
|
15661
15661
|
[activeSlide.elements]
|
|
15662
15662
|
);
|
|
@@ -15666,8 +15666,8 @@ function useAnimationHandlers({
|
|
|
15666
15666
|
if (!el) {
|
|
15667
15667
|
return id.slice(0, 8);
|
|
15668
15668
|
}
|
|
15669
|
-
const text = (0,
|
|
15670
|
-
return text ||
|
|
15669
|
+
const text = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15670
|
+
return text || chunkFKY33ZKL_js.getElementLabel(el);
|
|
15671
15671
|
}).join(", "),
|
|
15672
15672
|
[activeSlide.elements]
|
|
15673
15673
|
);
|
|
@@ -15724,7 +15724,7 @@ function AnimationPanel({
|
|
|
15724
15724
|
onUpdateSlide
|
|
15725
15725
|
}) {
|
|
15726
15726
|
const { t } = reactI18next.useTranslation();
|
|
15727
|
-
const { viewportWidth } =
|
|
15727
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
15728
15728
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15729
15729
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15730
15730
|
const handlers = useAnimationHandlers({
|
|
@@ -15852,7 +15852,7 @@ function AnimationPanel({
|
|
|
15852
15852
|
type: "button",
|
|
15853
15853
|
disabled: !canEdit,
|
|
15854
15854
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15855
|
-
className:
|
|
15855
|
+
className: chunkFKY33ZKL_js.cn(
|
|
15856
15856
|
"flex items-center justify-center rounded border transition-colors",
|
|
15857
15857
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15858
15858
|
),
|
|
@@ -15918,7 +15918,7 @@ function AnimationPanel({
|
|
|
15918
15918
|
style: fieldStyle,
|
|
15919
15919
|
children: [
|
|
15920
15920
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15921
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15921
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkFKY33ZKL_js.getElementLabel(el) }, el.id))
|
|
15922
15922
|
]
|
|
15923
15923
|
}
|
|
15924
15924
|
)
|
|
@@ -16077,7 +16077,7 @@ function ActionTargetFields({
|
|
|
16077
16077
|
type: "text",
|
|
16078
16078
|
disabled: !canEdit,
|
|
16079
16079
|
"aria-label": t(urlLabelKey),
|
|
16080
|
-
className:
|
|
16080
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
|
|
16081
16081
|
placeholder: "https://...",
|
|
16082
16082
|
value: url ?? "",
|
|
16083
16083
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16091,7 +16091,7 @@ function ActionTargetFields({
|
|
|
16091
16091
|
type: "number",
|
|
16092
16092
|
disabled: !canEdit,
|
|
16093
16093
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16094
|
-
className:
|
|
16094
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
|
|
16095
16095
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16096
16096
|
min: 1,
|
|
16097
16097
|
max: slideCount,
|
|
@@ -16113,7 +16113,7 @@ function ActionTargetFields({
|
|
|
16113
16113
|
"data-testid": "pptx-action-custom-show",
|
|
16114
16114
|
disabled: !canEdit,
|
|
16115
16115
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16116
|
-
className:
|
|
16116
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
|
|
16117
16117
|
value: customShowId ?? "",
|
|
16118
16118
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16119
16119
|
children: [
|
|
@@ -16146,11 +16146,11 @@ function ActionSettingsPanel({
|
|
|
16146
16146
|
onUpdateElement
|
|
16147
16147
|
}) {
|
|
16148
16148
|
const { t } = reactI18next.useTranslation();
|
|
16149
|
-
const clickAction = selectedElement.actionClick ? (0,
|
|
16150
|
-
const hoverAction = selectedElement.actionHover ? (0,
|
|
16149
|
+
const clickAction = selectedElement.actionClick ? (0, chunkFKY33ZKL_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
|
|
16150
|
+
const hoverAction = selectedElement.actionHover ? (0, chunkFKY33ZKL_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
|
|
16151
16151
|
const updateAction = (trigger, type, patch) => {
|
|
16152
16152
|
const ea = { trigger, type, ...patch };
|
|
16153
|
-
const pa = (0,
|
|
16153
|
+
const pa = (0, chunkFKY33ZKL_js.dist_exports.elementActionToPptxAction)(ea);
|
|
16154
16154
|
if (trigger === "click") {
|
|
16155
16155
|
onUpdateElement({ actionClick: pa });
|
|
16156
16156
|
} else {
|
|
@@ -16235,7 +16235,7 @@ function ActionTriggerSection({
|
|
|
16235
16235
|
{
|
|
16236
16236
|
disabled: !canEdit,
|
|
16237
16237
|
"aria-label": label,
|
|
16238
|
-
className:
|
|
16238
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
|
|
16239
16239
|
value: effectiveType,
|
|
16240
16240
|
onChange: (e) => changeType(e.target.value),
|
|
16241
16241
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16623,7 +16623,7 @@ function ChartDataGrid({
|
|
|
16623
16623
|
}) {
|
|
16624
16624
|
const { t } = reactI18next.useTranslation();
|
|
16625
16625
|
const highlightRef = React105.useRef(null);
|
|
16626
|
-
const { viewportWidth } =
|
|
16626
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
16627
16627
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
16628
16628
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
16629
16629
|
const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
|
|
@@ -17980,8 +17980,8 @@ function ChartUserShapeOptions({
|
|
|
17980
17980
|
}
|
|
17981
17981
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17982
17982
|
const chartData = selectedElement.chartData;
|
|
17983
|
-
const followDataPoint =
|
|
17984
|
-
const { selection: partSelection } =
|
|
17983
|
+
const followDataPoint = chunkGLWV52C6_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17984
|
+
const { selection: partSelection } = chunkGLWV52C6_js.useChartPartSelection();
|
|
17985
17985
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17986
17986
|
const title = chartData?.title;
|
|
17987
17987
|
const chartType = chartData?.chartType;
|
|
@@ -18195,40 +18195,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
18195
18195
|
[chartData, selectedElement, replaceChartData]
|
|
18196
18196
|
);
|
|
18197
18197
|
const setAxisLogScale = React105.useCallback(
|
|
18198
|
-
(axisType, opts) => applyChartOp((el) => (0,
|
|
18198
|
+
(axisType, opts) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
|
|
18199
18199
|
[applyChartOp]
|
|
18200
18200
|
);
|
|
18201
18201
|
const setAxisTitleStyle = React105.useCallback(
|
|
18202
|
-
(axisType, edit) => applyChartOp((el) => (0,
|
|
18202
|
+
(axisType, edit) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
|
|
18203
18203
|
[applyChartOp]
|
|
18204
18204
|
);
|
|
18205
18205
|
const setGridlineStyle = React105.useCallback(
|
|
18206
|
-
(axisType, which, edit) => applyChartOp((el) => (0,
|
|
18206
|
+
(axisType, which, edit) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
|
|
18207
18207
|
[applyChartOp]
|
|
18208
18208
|
);
|
|
18209
18209
|
const setSeriesMarker = React105.useCallback(
|
|
18210
|
-
(index, marker) => applyChartOp((el) => (0,
|
|
18210
|
+
(index, marker) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
|
|
18211
18211
|
[applyChartOp]
|
|
18212
18212
|
);
|
|
18213
18213
|
const setSeriesType = React105.useCallback(
|
|
18214
|
-
(index, seriesType) => applyChartOp((el) => (0,
|
|
18214
|
+
(index, seriesType) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
|
|
18215
18215
|
[applyChartOp]
|
|
18216
18216
|
);
|
|
18217
18217
|
const setPointFill = React105.useCallback(
|
|
18218
|
-
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0,
|
|
18218
|
+
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
|
|
18219
18219
|
[applyChartOp]
|
|
18220
18220
|
);
|
|
18221
18221
|
const setPointExplosion = React105.useCallback(
|
|
18222
|
-
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0,
|
|
18222
|
+
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
|
|
18223
18223
|
[applyChartOp]
|
|
18224
18224
|
);
|
|
18225
18225
|
const setPointMarker = React105.useCallback(
|
|
18226
|
-
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0,
|
|
18226
|
+
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
|
|
18227
18227
|
[applyChartOp]
|
|
18228
18228
|
);
|
|
18229
18229
|
const setPointLabel = React105.useCallback(
|
|
18230
18230
|
(seriesIndex, pointIndex, text) => applyChartOp(
|
|
18231
|
-
(el) => (0,
|
|
18231
|
+
(el) => (0, chunkFKY33ZKL_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
|
|
18232
18232
|
),
|
|
18233
18233
|
[applyChartOp]
|
|
18234
18234
|
);
|
|
@@ -18496,17 +18496,17 @@ function OleEditorDialog({
|
|
|
18496
18496
|
const kind = descriptor.contentTab.kind;
|
|
18497
18497
|
const load = async () => {
|
|
18498
18498
|
if (kind === "sheet") {
|
|
18499
|
-
const value = await (0,
|
|
18499
|
+
const value = await (0, chunkFKY33ZKL_js.dist_exports.getOleSheetGrid)(element);
|
|
18500
18500
|
if (!cancelled) {
|
|
18501
18501
|
setGrid(value);
|
|
18502
18502
|
}
|
|
18503
18503
|
} else if (kind === "document") {
|
|
18504
|
-
const value = await (0,
|
|
18504
|
+
const value = await (0, chunkFKY33ZKL_js.dist_exports.getOleDocumentParagraphs)(element);
|
|
18505
18505
|
if (!cancelled) {
|
|
18506
18506
|
setParagraphs(value);
|
|
18507
18507
|
}
|
|
18508
18508
|
} else if (kind === "deck") {
|
|
18509
|
-
const value = await (0,
|
|
18509
|
+
const value = await (0, chunkFKY33ZKL_js.dist_exports.getOleNestedDeckDetail)(element);
|
|
18510
18510
|
if (!cancelled) {
|
|
18511
18511
|
setDeckSlides(value);
|
|
18512
18512
|
}
|
|
@@ -18532,9 +18532,9 @@ function OleEditorDialog({
|
|
|
18532
18532
|
const handleCellEdit = React105.useCallback(
|
|
18533
18533
|
async (row, col, value) => {
|
|
18534
18534
|
try {
|
|
18535
|
-
const updated = await (0,
|
|
18535
|
+
const updated = await (0, chunkFKY33ZKL_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
|
|
18536
18536
|
commit(updated);
|
|
18537
|
-
const refreshed = await (0,
|
|
18537
|
+
const refreshed = await (0, chunkFKY33ZKL_js.dist_exports.getOleSheetGrid)(updated);
|
|
18538
18538
|
if (mountedRef.current) {
|
|
18539
18539
|
setGrid(refreshed);
|
|
18540
18540
|
}
|
|
@@ -18549,9 +18549,9 @@ function OleEditorDialog({
|
|
|
18549
18549
|
const handleParagraphEdit = React105.useCallback(
|
|
18550
18550
|
async (index, text) => {
|
|
18551
18551
|
try {
|
|
18552
|
-
const updated = await (0,
|
|
18552
|
+
const updated = await (0, chunkFKY33ZKL_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
|
|
18553
18553
|
commit(updated);
|
|
18554
|
-
const refreshed = await (0,
|
|
18554
|
+
const refreshed = await (0, chunkFKY33ZKL_js.dist_exports.getOleDocumentParagraphs)(updated);
|
|
18555
18555
|
if (mountedRef.current) {
|
|
18556
18556
|
setParagraphs(refreshed);
|
|
18557
18557
|
}
|
|
@@ -18566,14 +18566,14 @@ function OleEditorDialog({
|
|
|
18566
18566
|
const handleDeckElementEdit = React105.useCallback(
|
|
18567
18567
|
async (slideIndex, deckElementId, text) => {
|
|
18568
18568
|
try {
|
|
18569
|
-
const updated = await (0,
|
|
18569
|
+
const updated = await (0, chunkFKY33ZKL_js.dist_exports.applyOleNestedDeckElementTextEdit)(
|
|
18570
18570
|
element,
|
|
18571
18571
|
slideIndex,
|
|
18572
18572
|
deckElementId,
|
|
18573
18573
|
text
|
|
18574
18574
|
);
|
|
18575
18575
|
commit(updated);
|
|
18576
|
-
const refreshed = await (0,
|
|
18576
|
+
const refreshed = await (0, chunkFKY33ZKL_js.dist_exports.getOleNestedDeckDetail)(updated);
|
|
18577
18577
|
if (mountedRef.current) {
|
|
18578
18578
|
setDeckSlides(refreshed);
|
|
18579
18579
|
}
|
|
@@ -18589,7 +18589,7 @@ function OleEditorDialog({
|
|
|
18589
18589
|
async (file) => {
|
|
18590
18590
|
try {
|
|
18591
18591
|
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
18592
|
-
const updated = await (0,
|
|
18592
|
+
const updated = await (0, chunkFKY33ZKL_js.dist_exports.replaceOleFile)(element, bytes, file.name);
|
|
18593
18593
|
commit(updated);
|
|
18594
18594
|
if (mountedRef.current) {
|
|
18595
18595
|
onClose();
|
|
@@ -18738,7 +18738,7 @@ function ConnectorArrowsSection({
|
|
|
18738
18738
|
},
|
|
18739
18739
|
disabled: !canEdit,
|
|
18740
18740
|
className: SELECT_CLS2,
|
|
18741
|
-
children:
|
|
18741
|
+
children: chunkFKY33ZKL_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18742
18742
|
}
|
|
18743
18743
|
)
|
|
18744
18744
|
] }, end);
|
|
@@ -18762,7 +18762,7 @@ function ConnectorArrowsSection({
|
|
|
18762
18762
|
},
|
|
18763
18763
|
disabled: !canEdit,
|
|
18764
18764
|
className: SELECT_CLS2,
|
|
18765
|
-
children:
|
|
18765
|
+
children: chunkFKY33ZKL_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18766
18766
|
}
|
|
18767
18767
|
)
|
|
18768
18768
|
] }),
|
|
@@ -18781,7 +18781,7 @@ function ConnectorArrowsSection({
|
|
|
18781
18781
|
},
|
|
18782
18782
|
disabled: !canEdit,
|
|
18783
18783
|
className: SELECT_CLS2,
|
|
18784
|
-
children:
|
|
18784
|
+
children: chunkFKY33ZKL_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18785
18785
|
}
|
|
18786
18786
|
)
|
|
18787
18787
|
] })
|
|
@@ -18861,7 +18861,7 @@ function OlePropertiesPanel({
|
|
|
18861
18861
|
] }),
|
|
18862
18862
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18863
18863
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
|
|
18864
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0,
|
|
18864
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkFKY33ZKL_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
|
|
18865
18865
|
] }),
|
|
18866
18866
|
ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18867
18867
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
|
|
@@ -18872,7 +18872,7 @@ function OlePropertiesPanel({
|
|
|
18872
18872
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18873
18873
|
"span",
|
|
18874
18874
|
{
|
|
18875
|
-
className:
|
|
18875
|
+
className: chunkFKY33ZKL_js.cn(
|
|
18876
18876
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18877
18877
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18878
18878
|
),
|
|
@@ -18940,7 +18940,7 @@ function LayerOrderButtons({
|
|
|
18940
18940
|
"button",
|
|
18941
18941
|
{
|
|
18942
18942
|
type: "button",
|
|
18943
|
-
className:
|
|
18943
|
+
className: chunkFKY33ZKL_js.cn("flex-1", BTN2),
|
|
18944
18944
|
disabled: !canEdit,
|
|
18945
18945
|
onClick: () => onMoveLayer("forward"),
|
|
18946
18946
|
children: "\u2191 Forward"
|
|
@@ -18950,7 +18950,7 @@ function LayerOrderButtons({
|
|
|
18950
18950
|
"button",
|
|
18951
18951
|
{
|
|
18952
18952
|
type: "button",
|
|
18953
|
-
className:
|
|
18953
|
+
className: chunkFKY33ZKL_js.cn("flex-1", BTN2),
|
|
18954
18954
|
disabled: !canEdit,
|
|
18955
18955
|
onClick: () => onMoveLayer("backward"),
|
|
18956
18956
|
children: "\u2193 Backward"
|
|
@@ -18974,7 +18974,7 @@ function ArtisticEffectsGallery({
|
|
|
18974
18974
|
{
|
|
18975
18975
|
type: "button",
|
|
18976
18976
|
disabled: !canEdit,
|
|
18977
|
-
className:
|
|
18977
|
+
className: chunkFKY33ZKL_js.cn(
|
|
18978
18978
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18979
18979
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18980
18980
|
),
|
|
@@ -19036,7 +19036,7 @@ function ColorChangeSection({
|
|
|
19036
19036
|
DebouncedColorInput,
|
|
19037
19037
|
{
|
|
19038
19038
|
disabled: !canEdit,
|
|
19039
|
-
value:
|
|
19039
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
19040
19040
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19041
19041
|
onCommit: (hex) => updateEffects({
|
|
19042
19042
|
clrChange: {
|
|
@@ -19054,7 +19054,7 @@ function ColorChangeSection({
|
|
|
19054
19054
|
DebouncedColorInput,
|
|
19055
19055
|
{
|
|
19056
19056
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
19057
|
-
value:
|
|
19057
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
19058
19058
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19059
19059
|
onCommit: (hex) => updateEffects({
|
|
19060
19060
|
clrChange: {
|
|
@@ -19114,7 +19114,7 @@ function ColorWashSection({
|
|
|
19114
19114
|
DebouncedColorInput,
|
|
19115
19115
|
{
|
|
19116
19116
|
disabled: !canEdit,
|
|
19117
|
-
value:
|
|
19117
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
19118
19118
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19119
19119
|
onCommit: (hex) => updateEffects({
|
|
19120
19120
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19217,8 +19217,8 @@ function DuotonePanel({
|
|
|
19217
19217
|
}
|
|
19218
19218
|
});
|
|
19219
19219
|
}, [effects, onUpdateElement]);
|
|
19220
|
-
const shadowColor =
|
|
19221
|
-
const highlightColor =
|
|
19220
|
+
const shadowColor = chunkFKY33ZKL_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19221
|
+
const highlightColor = chunkFKY33ZKL_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19222
19222
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19223
19223
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19224
19224
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19249,7 +19249,7 @@ function DuotonePanel({
|
|
|
19249
19249
|
] }),
|
|
19250
19250
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19251
19251
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19252
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19252
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkGLWV52C6_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19253
19253
|
"button",
|
|
19254
19254
|
{
|
|
19255
19255
|
type: "button",
|
|
@@ -19387,7 +19387,7 @@ function ImageCropSection({
|
|
|
19387
19387
|
onUpdateElement
|
|
19388
19388
|
}) {
|
|
19389
19389
|
const { t } = reactI18next.useTranslation();
|
|
19390
|
-
if (!(0,
|
|
19390
|
+
if (!(0, chunkFKY33ZKL_js.dist_exports.isImageLikeElement)(selectedElement)) {
|
|
19391
19391
|
return null;
|
|
19392
19392
|
}
|
|
19393
19393
|
const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
|
|
@@ -19404,7 +19404,7 @@ function ImageCropSection({
|
|
|
19404
19404
|
max: MAX_CROP_PERCENT,
|
|
19405
19405
|
disabled: !croppable,
|
|
19406
19406
|
className: "accent-primary",
|
|
19407
|
-
value: Math.round(
|
|
19407
|
+
value: Math.round(chunkFKY33ZKL_js.clampCropValue(selectedElement[key]) * 100),
|
|
19408
19408
|
onChange: (e) => onUpdateElement({
|
|
19409
19409
|
[key]: Number(e.target.value) / 100
|
|
19410
19410
|
})
|
|
@@ -19468,7 +19468,7 @@ function ImagePropertiesPanel({
|
|
|
19468
19468
|
{
|
|
19469
19469
|
rows: 2,
|
|
19470
19470
|
disabled: !canEdit,
|
|
19471
|
-
className:
|
|
19471
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19472
19472
|
value: selectedElement.altText ?? "",
|
|
19473
19473
|
onChange: (e) => onUpdateElement({
|
|
19474
19474
|
altText: e.target.value
|
|
@@ -20408,7 +20408,7 @@ function AccessibilityTextSection({
|
|
|
20408
20408
|
rows: 2,
|
|
20409
20409
|
disabled: !canEdit,
|
|
20410
20410
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20411
|
-
className:
|
|
20411
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20412
20412
|
value: fields.altText,
|
|
20413
20413
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20414
20414
|
}
|
|
@@ -20422,7 +20422,7 @@ function AccessibilityTextSection({
|
|
|
20422
20422
|
type: "text",
|
|
20423
20423
|
disabled: !canEdit,
|
|
20424
20424
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20425
|
-
className:
|
|
20425
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "text-[11px]"),
|
|
20426
20426
|
value: fields.title,
|
|
20427
20427
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20428
20428
|
}
|
|
@@ -20538,7 +20538,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20538
20538
|
angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
|
|
20539
20539
|
}
|
|
20540
20540
|
return {
|
|
20541
|
-
shadowColor:
|
|
20541
|
+
shadowColor: chunkFKY33ZKL_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20542
20542
|
shadowOpacity: s?.shadowOpacity ?? 0.35,
|
|
20543
20543
|
shadowBlur: s?.shadowBlur ?? 6,
|
|
20544
20544
|
shadowAngle: angle,
|
|
@@ -20554,7 +20554,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20554
20554
|
key: "sc",
|
|
20555
20555
|
label: "Shadow Color",
|
|
20556
20556
|
type: "color",
|
|
20557
|
-
read: (s) =>
|
|
20557
|
+
read: (s) => chunkFKY33ZKL_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20558
20558
|
write: (v) => ({ shadowColor: String(v) })
|
|
20559
20559
|
},
|
|
20560
20560
|
{
|
|
@@ -20690,7 +20690,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20690
20690
|
label: "Inner Shadow",
|
|
20691
20691
|
isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
|
|
20692
20692
|
onEnable: (s) => ({
|
|
20693
|
-
innerShadowColor:
|
|
20693
|
+
innerShadowColor: chunkFKY33ZKL_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20694
20694
|
innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
|
|
20695
20695
|
innerShadowBlur: s?.innerShadowBlur ?? 5,
|
|
20696
20696
|
innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
|
|
@@ -20702,7 +20702,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20702
20702
|
key: "isc",
|
|
20703
20703
|
label: "Color",
|
|
20704
20704
|
type: "color",
|
|
20705
|
-
read: (s) =>
|
|
20705
|
+
read: (s) => chunkFKY33ZKL_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20706
20706
|
write: (v) => ({ innerShadowColor: String(v) })
|
|
20707
20707
|
},
|
|
20708
20708
|
{
|
|
@@ -21215,7 +21215,7 @@ function ColorPickerRow({
|
|
|
21215
21215
|
pushColor(color);
|
|
21216
21216
|
};
|
|
21217
21217
|
const handleEyedropper = async () => {
|
|
21218
|
-
const color = await
|
|
21218
|
+
const color = await chunkFKY33ZKL_js.openNativeEyeDropper();
|
|
21219
21219
|
if (color) {
|
|
21220
21220
|
commit(color);
|
|
21221
21221
|
}
|
|
@@ -21298,9 +21298,9 @@ function GradientStopRow({
|
|
|
21298
21298
|
"input",
|
|
21299
21299
|
{
|
|
21300
21300
|
type: "color",
|
|
21301
|
-
value:
|
|
21301
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
21302
21302
|
onChange: (e) => {
|
|
21303
|
-
const hex =
|
|
21303
|
+
const hex = chunkFKY33ZKL_js.normalizeHexColor(e.target.value, "#3b82f6");
|
|
21304
21304
|
patchStop({ color: hex, colorRef: void 0 });
|
|
21305
21305
|
pushColor(hex);
|
|
21306
21306
|
},
|
|
@@ -21425,7 +21425,7 @@ function FillAdvancedControls({
|
|
|
21425
21425
|
onClick: () => onUpdateGradientStops([
|
|
21426
21426
|
...gradientStops,
|
|
21427
21427
|
{
|
|
21428
|
-
color:
|
|
21428
|
+
color: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
|
|
21429
21429
|
position: 50,
|
|
21430
21430
|
opacity: 1
|
|
21431
21431
|
}
|
|
@@ -21439,9 +21439,9 @@ function FillAdvancedControls({
|
|
|
21439
21439
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
21440
21440
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
21441
21441
|
/* @__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) => {
|
|
21442
|
-
const fgColor =
|
|
21443
|
-
const bgColor =
|
|
21444
|
-
const svgPattern =
|
|
21442
|
+
const fgColor = chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR);
|
|
21443
|
+
const bgColor = chunkFKY33ZKL_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
21444
|
+
const svgPattern = chunkFKY33ZKL_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
21445
21445
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
21446
21446
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21447
21447
|
"button",
|
|
@@ -21474,7 +21474,7 @@ function FillAdvancedControls({
|
|
|
21474
21474
|
{
|
|
21475
21475
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
21476
21476
|
prefix: "pattern-fg",
|
|
21477
|
-
value:
|
|
21477
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
|
|
21478
21478
|
disabled: isLine,
|
|
21479
21479
|
onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
|
|
21480
21480
|
}
|
|
@@ -21484,7 +21484,7 @@ function FillAdvancedControls({
|
|
|
21484
21484
|
{
|
|
21485
21485
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
21486
21486
|
prefix: "pattern-bg",
|
|
21487
|
-
value:
|
|
21487
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
21488
21488
|
disabled: isLine,
|
|
21489
21489
|
onChange: (color) => onUpdateShapeStyle({
|
|
21490
21490
|
fillMode: "pattern",
|
|
@@ -21551,11 +21551,11 @@ function QuickStylesGallery({
|
|
|
21551
21551
|
onUpdateShapeStyle
|
|
21552
21552
|
}) {
|
|
21553
21553
|
const { t } = reactI18next.useTranslation();
|
|
21554
|
-
const { viewportWidth } =
|
|
21554
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
21555
21555
|
const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
21556
21556
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
21557
21557
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
|
|
21558
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children:
|
|
21558
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkFKY33ZKL_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21559
21559
|
"button",
|
|
21560
21560
|
{
|
|
21561
21561
|
type: "button",
|
|
@@ -21582,7 +21582,7 @@ function StrokeEffectsSection({
|
|
|
21582
21582
|
{
|
|
21583
21583
|
label: t("pptx.inspector.stroke"),
|
|
21584
21584
|
prefix: "stroke",
|
|
21585
|
-
value:
|
|
21585
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(style?.strokeColor, chunkFKY33ZKL_js.DEFAULT_STROKE_COLOR),
|
|
21586
21586
|
selectedRef: style?.strokeColorRef,
|
|
21587
21587
|
onChange: onSetStrokeColor
|
|
21588
21588
|
}
|
|
@@ -21645,7 +21645,7 @@ function StrokeEffectsSection({
|
|
|
21645
21645
|
strokeDash: e.target.value
|
|
21646
21646
|
}),
|
|
21647
21647
|
className: SEL,
|
|
21648
|
-
children:
|
|
21648
|
+
children: chunkFKY33ZKL_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
21649
21649
|
}
|
|
21650
21650
|
)
|
|
21651
21651
|
] }),
|
|
@@ -21735,10 +21735,10 @@ function FillStrokeProperties({
|
|
|
21735
21735
|
return;
|
|
21736
21736
|
}
|
|
21737
21737
|
if (nextMode === "gradient") {
|
|
21738
|
-
const existing =
|
|
21738
|
+
const existing = chunkFKY33ZKL_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21739
21739
|
const stops = existing.length >= 2 ? existing : [
|
|
21740
21740
|
{
|
|
21741
|
-
color:
|
|
21741
|
+
color: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
|
|
21742
21742
|
position: 0,
|
|
21743
21743
|
opacity: 1
|
|
21744
21744
|
},
|
|
@@ -21763,7 +21763,7 @@ function FillStrokeProperties({
|
|
|
21763
21763
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21764
21764
|
};
|
|
21765
21765
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21766
|
-
{ color:
|
|
21766
|
+
{ color: chunkFKY33ZKL_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21767
21767
|
{ color: "#ffffff", position: 100 }
|
|
21768
21768
|
];
|
|
21769
21769
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21790,7 +21790,7 @@ function FillStrokeProperties({
|
|
|
21790
21790
|
{
|
|
21791
21791
|
label: t("pptx.fill.fill"),
|
|
21792
21792
|
prefix: "fill",
|
|
21793
|
-
value:
|
|
21793
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(style?.fillColor, chunkFKY33ZKL_js.DEFAULT_FILL_COLOR),
|
|
21794
21794
|
selectedRef: style?.fillColorRef,
|
|
21795
21795
|
disabled: line,
|
|
21796
21796
|
onChange: onSetFillColor
|
|
@@ -21874,7 +21874,7 @@ function Text3DProperties({
|
|
|
21874
21874
|
"input",
|
|
21875
21875
|
{
|
|
21876
21876
|
type: "color",
|
|
21877
|
-
value:
|
|
21877
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21878
21878
|
onChange: (e) => {
|
|
21879
21879
|
update3d({ extrusionColor: e.target.value });
|
|
21880
21880
|
pushColor(e.target.value);
|
|
@@ -22065,7 +22065,7 @@ function AdvancedTextFormatting({
|
|
|
22065
22065
|
"input",
|
|
22066
22066
|
{
|
|
22067
22067
|
type: "color",
|
|
22068
|
-
value:
|
|
22068
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
22069
22069
|
onChange: (e) => {
|
|
22070
22070
|
onUpdateTextStyle({ highlightColor: e.target.value });
|
|
22071
22071
|
pushColor(e.target.value);
|
|
@@ -22369,7 +22369,7 @@ function TextEffectsPanel({
|
|
|
22369
22369
|
"input",
|
|
22370
22370
|
{
|
|
22371
22371
|
type: "color",
|
|
22372
|
-
value:
|
|
22372
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
22373
22373
|
onChange: (e) => {
|
|
22374
22374
|
onUpdateTextStyle({ textShadowColor: e.target.value });
|
|
22375
22375
|
pushColor(e.target.value);
|
|
@@ -22476,7 +22476,7 @@ function TextEffectsPanel({
|
|
|
22476
22476
|
"input",
|
|
22477
22477
|
{
|
|
22478
22478
|
type: "color",
|
|
22479
|
-
value:
|
|
22479
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
22480
22480
|
onChange: (e) => {
|
|
22481
22481
|
onUpdateTextStyle({ textGlowColor: e.target.value });
|
|
22482
22482
|
pushColor(e.target.value);
|
|
@@ -22578,7 +22578,7 @@ function TextAdvancedSections({
|
|
|
22578
22578
|
canEdit,
|
|
22579
22579
|
onUpdateTextStyle
|
|
22580
22580
|
}) {
|
|
22581
|
-
if (!(0,
|
|
22581
|
+
if (!(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
22582
22582
|
return null;
|
|
22583
22583
|
}
|
|
22584
22584
|
const ts = selectedElement.textStyle;
|
|
@@ -22607,22 +22607,22 @@ function ShapeTextPanels({
|
|
|
22607
22607
|
}) {
|
|
22608
22608
|
const { t } = reactI18next.useTranslation();
|
|
22609
22609
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22610
|
-
(0,
|
|
22610
|
+
(0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
22611
22611
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
22612
22612
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22613
22613
|
WebSelect,
|
|
22614
22614
|
{
|
|
22615
22615
|
value: selectedElement.shapeType || "rect",
|
|
22616
22616
|
disabled: !canEdit,
|
|
22617
|
-
className:
|
|
22617
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
|
|
22618
22618
|
onChange: (e) => onUpdateElement({
|
|
22619
22619
|
shapeType: e.target.value
|
|
22620
22620
|
}),
|
|
22621
|
-
children:
|
|
22621
|
+
children: chunkFKY33ZKL_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
22622
22622
|
}
|
|
22623
22623
|
)
|
|
22624
22624
|
] }),
|
|
22625
|
-
(0,
|
|
22625
|
+
(0, chunkFKY33ZKL_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
|
|
22626
22626
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
|
|
22627
22627
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22628
22628
|
FillStrokeProperties,
|
|
@@ -22630,7 +22630,7 @@ function ShapeTextPanels({
|
|
|
22630
22630
|
selectedElement,
|
|
22631
22631
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
22632
22632
|
selectedShapeType: selectedElement.shapeType,
|
|
22633
|
-
selectedGradientStops:
|
|
22633
|
+
selectedGradientStops: chunkFKY33ZKL_js.sanitizeGradientStops(
|
|
22634
22634
|
selectedElement.shapeStyle?.fillGradientStops
|
|
22635
22635
|
),
|
|
22636
22636
|
canEdit,
|
|
@@ -22640,7 +22640,7 @@ function ShapeTextPanels({
|
|
|
22640
22640
|
}
|
|
22641
22641
|
)
|
|
22642
22642
|
] }),
|
|
22643
|
-
(0,
|
|
22643
|
+
(0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
|
|
22644
22644
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
|
|
22645
22645
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
|
|
22646
22646
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -22666,7 +22666,7 @@ function ShapeTextPanels({
|
|
|
22666
22666
|
{
|
|
22667
22667
|
disabled: !canEdit,
|
|
22668
22668
|
ariaLabel: "Text Color",
|
|
22669
|
-
value:
|
|
22669
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22670
22670
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22671
22671
|
onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
|
|
22672
22672
|
}
|
|
@@ -22758,7 +22758,7 @@ function TextFormatToggle({
|
|
|
22758
22758
|
{
|
|
22759
22759
|
type: "button",
|
|
22760
22760
|
disabled,
|
|
22761
|
-
className:
|
|
22761
|
+
className: chunkFKY33ZKL_js.cn(
|
|
22762
22762
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22763
22763
|
italic && "italic",
|
|
22764
22764
|
underline && "underline",
|
|
@@ -22916,7 +22916,7 @@ var THUMB_COMPONENTS = {
|
|
|
22916
22916
|
chevron: ChevronThumb,
|
|
22917
22917
|
bending: BendingThumb
|
|
22918
22918
|
};
|
|
22919
|
-
var LAYOUT_DESCRIPTORS =
|
|
22919
|
+
var LAYOUT_DESCRIPTORS = chunkFKY33ZKL_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
|
|
22920
22920
|
type,
|
|
22921
22921
|
i18nKey: `pptx.smartart.category.${type}`
|
|
22922
22922
|
}));
|
|
@@ -22944,7 +22944,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22944
22944
|
type: "button",
|
|
22945
22945
|
"data-testid": `smartart-layout-${type}`,
|
|
22946
22946
|
disabled: !canEdit,
|
|
22947
|
-
className:
|
|
22947
|
+
className: chunkFKY33ZKL_js.cn(
|
|
22948
22948
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22949
22949
|
"text-[9px] leading-tight",
|
|
22950
22950
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -23023,7 +23023,7 @@ function SmartArtNodeStyleControls({
|
|
|
23023
23023
|
disabled: !canEdit,
|
|
23024
23024
|
"aria-label": `Bold ${label}`,
|
|
23025
23025
|
"aria-pressed": bold,
|
|
23026
|
-
className:
|
|
23026
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23027
23027
|
EMPHASIS_BTN,
|
|
23028
23028
|
"font-bold",
|
|
23029
23029
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -23039,7 +23039,7 @@ function SmartArtNodeStyleControls({
|
|
|
23039
23039
|
disabled: !canEdit,
|
|
23040
23040
|
"aria-label": `Italic ${label}`,
|
|
23041
23041
|
"aria-pressed": italic,
|
|
23042
|
-
className:
|
|
23042
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23043
23043
|
EMPHASIS_BTN,
|
|
23044
23044
|
"italic",
|
|
23045
23045
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -23078,7 +23078,7 @@ function SmartArtNodeRow({
|
|
|
23078
23078
|
"div",
|
|
23079
23079
|
{
|
|
23080
23080
|
role: "listitem",
|
|
23081
|
-
className:
|
|
23081
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23082
23082
|
"rounded border bg-background/60 p-1.5",
|
|
23083
23083
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
23084
23084
|
),
|
|
@@ -23093,7 +23093,7 @@ function SmartArtNodeRow({
|
|
|
23093
23093
|
"data-testid": "smartart-node-text",
|
|
23094
23094
|
disabled: !canEdit,
|
|
23095
23095
|
"aria-label": label,
|
|
23096
|
-
className:
|
|
23096
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
|
|
23097
23097
|
value: text,
|
|
23098
23098
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
23099
23099
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -23142,7 +23142,7 @@ function SmartArtNodeRow({
|
|
|
23142
23142
|
{
|
|
23143
23143
|
type: "button",
|
|
23144
23144
|
disabled: !canEdit || removeDisabled,
|
|
23145
|
-
className:
|
|
23145
|
+
className: chunkFKY33ZKL_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
23146
23146
|
onClick: () => onRemove(nodeId),
|
|
23147
23147
|
"aria-label": `Remove ${label}`,
|
|
23148
23148
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -23185,7 +23185,7 @@ function SmartArtStyleControls({
|
|
|
23185
23185
|
disabled: !canEdit,
|
|
23186
23186
|
"data-testid": "smartart-color-scheme",
|
|
23187
23187
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
23188
|
-
className:
|
|
23188
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-full"),
|
|
23189
23189
|
value: colorScheme,
|
|
23190
23190
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
23191
23191
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -23200,7 +23200,7 @@ function SmartArtStyleControls({
|
|
|
23200
23200
|
type: "button",
|
|
23201
23201
|
disabled: !canEdit,
|
|
23202
23202
|
"aria-pressed": style === s,
|
|
23203
|
-
className:
|
|
23203
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23204
23204
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
23205
23205
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
23206
23206
|
),
|
|
@@ -23246,7 +23246,7 @@ function SmartArtPropertiesPanel({
|
|
|
23246
23246
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
23247
23247
|
newData,
|
|
23248
23248
|
newData.layout,
|
|
23249
|
-
|
|
23249
|
+
chunkGLWV52C6_js.resolveSmartArtDataPalette(newData),
|
|
23250
23250
|
newData.style ?? "flat",
|
|
23251
23251
|
"inspector",
|
|
23252
23252
|
box
|
|
@@ -23257,10 +23257,10 @@ function SmartArtPropertiesPanel({
|
|
|
23257
23257
|
applySmartArtData({ ...smartArtData, ...patch });
|
|
23258
23258
|
};
|
|
23259
23259
|
const handleUpdateNodeText = (nodeId, text) => {
|
|
23260
|
-
applySmartArtData((0,
|
|
23260
|
+
applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
|
|
23261
23261
|
};
|
|
23262
23262
|
const handleChangeNodeStyle = (nodeId, patch) => {
|
|
23263
|
-
const next = (0,
|
|
23263
|
+
const next = (0, chunkFKY33ZKL_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
|
|
23264
23264
|
if (next !== smartArtData) {
|
|
23265
23265
|
applySmartArtData(next);
|
|
23266
23266
|
}
|
|
@@ -23269,17 +23269,17 @@ function SmartArtPropertiesPanel({
|
|
|
23269
23269
|
if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
|
|
23270
23270
|
return;
|
|
23271
23271
|
}
|
|
23272
|
-
applySmartArtData((0,
|
|
23272
|
+
applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
|
|
23273
23273
|
};
|
|
23274
23274
|
const addSubItem = (parentId) => {
|
|
23275
|
-
applySmartArtData((0,
|
|
23275
|
+
applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
|
|
23276
23276
|
};
|
|
23277
23277
|
const removeNode = (nodeId) => {
|
|
23278
23278
|
const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
|
|
23279
23279
|
if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
|
|
23280
23280
|
return;
|
|
23281
23281
|
}
|
|
23282
|
-
applySmartArtData((0,
|
|
23282
|
+
applySmartArtData((0, chunkFKY33ZKL_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
|
|
23283
23283
|
};
|
|
23284
23284
|
const moveNode = (nodeId, direction) => {
|
|
23285
23285
|
const next = pptx.reorder(smartArtData, nodeId, direction);
|
|
@@ -23435,7 +23435,7 @@ function TableDataGrid({
|
|
|
23435
23435
|
}) {
|
|
23436
23436
|
const { t } = reactI18next.useTranslation();
|
|
23437
23437
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
23438
|
-
const { viewportWidth } =
|
|
23438
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
23439
23439
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
23440
23440
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
23441
23441
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -23847,7 +23847,7 @@ function TableCellColorField({
|
|
|
23847
23847
|
disabled,
|
|
23848
23848
|
onCommit
|
|
23849
23849
|
}) {
|
|
23850
|
-
const hex =
|
|
23850
|
+
const hex = chunkFKY33ZKL_js.normalizeHexColor(value, fallback);
|
|
23851
23851
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
23852
23852
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
23853
23853
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23958,7 +23958,7 @@ function TableCellFormattingPanel({
|
|
|
23958
23958
|
{
|
|
23959
23959
|
type: "button",
|
|
23960
23960
|
disabled: !canEdit,
|
|
23961
|
-
className:
|
|
23961
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23962
23962
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23963
23963
|
cls,
|
|
23964
23964
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -23977,7 +23977,7 @@ function TableCellFormattingPanel({
|
|
|
23977
23977
|
{
|
|
23978
23978
|
type: "button",
|
|
23979
23979
|
disabled: !canEdit,
|
|
23980
|
-
className:
|
|
23980
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23981
23981
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23982
23982
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23983
23983
|
),
|
|
@@ -23995,7 +23995,7 @@ function TableCellFormattingPanel({
|
|
|
23995
23995
|
{
|
|
23996
23996
|
type: "button",
|
|
23997
23997
|
disabled: !canEdit,
|
|
23998
|
-
className:
|
|
23998
|
+
className: chunkFKY33ZKL_js.cn(
|
|
23999
23999
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
24000
24000
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
24001
24001
|
),
|
|
@@ -24018,7 +24018,7 @@ function TableCellFormattingPanel({
|
|
|
24018
24018
|
DebouncedColorInput,
|
|
24019
24019
|
{
|
|
24020
24020
|
disabled: !canEdit,
|
|
24021
|
-
value:
|
|
24021
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
24022
24022
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
24023
24023
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
24024
24024
|
}
|
|
@@ -24028,7 +24028,7 @@ function TableCellFormattingPanel({
|
|
|
24028
24028
|
{
|
|
24029
24029
|
type: "number",
|
|
24030
24030
|
disabled: !canEdit,
|
|
24031
|
-
className:
|
|
24031
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-14"),
|
|
24032
24032
|
min: 0,
|
|
24033
24033
|
max: 10,
|
|
24034
24034
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -24044,7 +24044,7 @@ function TableCellFormattingPanel({
|
|
|
24044
24044
|
{
|
|
24045
24045
|
type: "button",
|
|
24046
24046
|
disabled: !canEdit,
|
|
24047
|
-
className:
|
|
24047
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "text-center"),
|
|
24048
24048
|
onClick: () => {
|
|
24049
24049
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
24050
24050
|
if (newRows) {
|
|
@@ -24059,7 +24059,7 @@ function TableCellFormattingPanel({
|
|
|
24059
24059
|
{
|
|
24060
24060
|
type: "button",
|
|
24061
24061
|
disabled: !canEdit,
|
|
24062
|
-
className:
|
|
24062
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "text-center"),
|
|
24063
24063
|
onClick: () => {
|
|
24064
24064
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
24065
24065
|
if (newRows) {
|
|
@@ -24074,7 +24074,7 @@ function TableCellFormattingPanel({
|
|
|
24074
24074
|
{
|
|
24075
24075
|
type: "button",
|
|
24076
24076
|
disabled: !canEdit,
|
|
24077
|
-
className:
|
|
24077
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "text-center"),
|
|
24078
24078
|
onClick: () => {
|
|
24079
24079
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
24080
24080
|
if (newRows) {
|
|
@@ -24260,7 +24260,7 @@ function TableStyleEditor({
|
|
|
24260
24260
|
const { t } = reactI18next.useTranslation();
|
|
24261
24261
|
const themeColorMap = useThemeColorMap();
|
|
24262
24262
|
const [activeStyleId, setActiveStyleId] = React105.useState(
|
|
24263
|
-
styleId ? (0,
|
|
24263
|
+
styleId ? (0, chunkFKY33ZKL_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
|
|
24264
24264
|
);
|
|
24265
24265
|
const [selectedPart, setSelectedPart] = React105.useState("wholeTbl");
|
|
24266
24266
|
const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
|
|
@@ -24281,8 +24281,8 @@ function TableStyleEditor({
|
|
|
24281
24281
|
return;
|
|
24282
24282
|
}
|
|
24283
24283
|
const nextMap = { ...styleMap ?? {} };
|
|
24284
|
-
const created = (0,
|
|
24285
|
-
(0,
|
|
24284
|
+
const created = (0, chunkFKY33ZKL_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
|
|
24285
|
+
(0, chunkFKY33ZKL_js.dist_exports.addTableStyleToMap)(nextMap, created);
|
|
24286
24286
|
onStyleMapChange(nextMap);
|
|
24287
24287
|
setActiveStyleId(created.styleId);
|
|
24288
24288
|
onAssignStyle?.(created.styleId);
|
|
@@ -24292,7 +24292,7 @@ function TableStyleEditor({
|
|
|
24292
24292
|
return;
|
|
24293
24293
|
}
|
|
24294
24294
|
const nextMap = { ...styleMap };
|
|
24295
|
-
(0,
|
|
24295
|
+
(0, chunkFKY33ZKL_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
|
|
24296
24296
|
onStyleMapChange(nextMap);
|
|
24297
24297
|
onDeleteStyle(entry.styleId);
|
|
24298
24298
|
onClose();
|
|
@@ -24346,7 +24346,7 @@ function TablePropertiesPanel({
|
|
|
24346
24346
|
const updateMergeRows = (rows) => {
|
|
24347
24347
|
const tableData = { ...td, rows };
|
|
24348
24348
|
const updates = { tableData };
|
|
24349
|
-
const rawXml = (0,
|
|
24349
|
+
const rawXml = (0, chunkFKY33ZKL_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
|
|
24350
24350
|
if (rawXml) {
|
|
24351
24351
|
updates.rawXml = rawXml;
|
|
24352
24352
|
}
|
|
@@ -24412,7 +24412,7 @@ function TablePropertiesPanel({
|
|
|
24412
24412
|
] }),
|
|
24413
24413
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24414
24414
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
24415
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
24415
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkFKY33ZKL_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24416
24416
|
"button",
|
|
24417
24417
|
{
|
|
24418
24418
|
type: "button",
|
|
@@ -24640,7 +24640,7 @@ function ElementInspectorBody({
|
|
|
24640
24640
|
box: { width: selectedElement.width, height: selectedElement.height }
|
|
24641
24641
|
}
|
|
24642
24642
|
),
|
|
24643
|
-
(0,
|
|
24643
|
+
(0, chunkFKY33ZKL_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24644
24644
|
ImagePropertiesPanel,
|
|
24645
24645
|
{
|
|
24646
24646
|
selectedElement,
|
|
@@ -24805,7 +24805,7 @@ function CommentMentionTextarea({
|
|
|
24805
24805
|
"data-testid": "pptx-comment-mention-option",
|
|
24806
24806
|
role: "option",
|
|
24807
24807
|
"aria-selected": index === safeHighlighted,
|
|
24808
|
-
className:
|
|
24808
|
+
className: chunkFKY33ZKL_js.cn(
|
|
24809
24809
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
24810
24810
|
index === safeHighlighted && "bg-accent"
|
|
24811
24811
|
),
|
|
@@ -24928,7 +24928,7 @@ function InspectorCommentRow({
|
|
|
24928
24928
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24929
24929
|
"div",
|
|
24930
24930
|
{
|
|
24931
|
-
className:
|
|
24931
|
+
className: chunkFKY33ZKL_js.cn(
|
|
24932
24932
|
"rounded border border-border bg-card p-2",
|
|
24933
24933
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
24934
24934
|
),
|
|
@@ -24942,7 +24942,7 @@ function InspectorCommentRow({
|
|
|
24942
24942
|
t("pptx.comments.resolved")
|
|
24943
24943
|
] })
|
|
24944
24944
|
] }),
|
|
24945
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
24945
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkFKY33ZKL_js.formatCommentTimestamp(comment.createdAt) })
|
|
24946
24946
|
] }),
|
|
24947
24947
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24948
24948
|
"button",
|
|
@@ -24950,12 +24950,12 @@ function InspectorCommentRow({
|
|
|
24950
24950
|
type: "button",
|
|
24951
24951
|
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",
|
|
24952
24952
|
title: t("pptx.comments.commentingOn", {
|
|
24953
|
-
element:
|
|
24953
|
+
element: chunkFKY33ZKL_js.getElementLabel(targetElement)
|
|
24954
24954
|
}),
|
|
24955
24955
|
onClick: () => onSelectElement(targetElement.id),
|
|
24956
24956
|
children: [
|
|
24957
24957
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24958
|
-
|
|
24958
|
+
chunkFKY33ZKL_js.getElementLabel(targetElement)
|
|
24959
24959
|
]
|
|
24960
24960
|
}
|
|
24961
24961
|
) : /* @__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") })),
|
|
@@ -25024,7 +25024,7 @@ function InspectorCommentRow({
|
|
|
25024
25024
|
"button",
|
|
25025
25025
|
{
|
|
25026
25026
|
type: "button",
|
|
25027
|
-
className:
|
|
25027
|
+
className: chunkFKY33ZKL_js.cn(
|
|
25028
25028
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
25029
25029
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
25030
25030
|
),
|
|
@@ -25167,7 +25167,7 @@ function InspectorCommentsSection({
|
|
|
25167
25167
|
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: [
|
|
25168
25168
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
25169
25169
|
t("pptx.comments.commentingOn", {
|
|
25170
|
-
element:
|
|
25170
|
+
element: chunkFKY33ZKL_js.getElementLabel(selectedElement)
|
|
25171
25171
|
})
|
|
25172
25172
|
] }),
|
|
25173
25173
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25178,7 +25178,7 @@ function InspectorCommentsSection({
|
|
|
25178
25178
|
authors: commentAuthors,
|
|
25179
25179
|
rows: 2,
|
|
25180
25180
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
25181
|
-
element:
|
|
25181
|
+
element: chunkFKY33ZKL_js.getElementLabel(selectedElement)
|
|
25182
25182
|
}) : t("pptx.comments.addPlaceholder"),
|
|
25183
25183
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
25184
25184
|
onChange: onSetCommentDraft,
|
|
@@ -25191,7 +25191,7 @@ function InspectorCommentsSection({
|
|
|
25191
25191
|
type: "button",
|
|
25192
25192
|
onClick: onAddComment,
|
|
25193
25193
|
disabled: !commentDraft.trim(),
|
|
25194
|
-
className:
|
|
25194
|
+
className: chunkFKY33ZKL_js.cn(
|
|
25195
25195
|
"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]!",
|
|
25196
25196
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
25197
25197
|
),
|
|
@@ -25205,7 +25205,7 @@ function InspectorCommentsSection({
|
|
|
25205
25205
|
] });
|
|
25206
25206
|
}
|
|
25207
25207
|
function elementLabel(element) {
|
|
25208
|
-
const text = (0,
|
|
25208
|
+
const text = (0, chunkFKY33ZKL_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
|
|
25209
25209
|
return text || element.type;
|
|
25210
25210
|
}
|
|
25211
25211
|
function InspectorElementsTab({
|
|
@@ -25232,13 +25232,13 @@ function InspectorElementsTab({
|
|
|
25232
25232
|
};
|
|
25233
25233
|
if (!activeSlide) {
|
|
25234
25234
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
25235
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
25235
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkFKY33ZKL_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
25236
25236
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
25237
25237
|
] });
|
|
25238
25238
|
}
|
|
25239
25239
|
const elements = activeSlide.elements || [];
|
|
25240
25240
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
25241
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
25241
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkFKY33ZKL_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
25242
25242
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
25243
25243
|
const index = elements.length - 1 - reversedIndex;
|
|
25244
25244
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -25246,7 +25246,7 @@ function InspectorElementsTab({
|
|
|
25246
25246
|
"div",
|
|
25247
25247
|
{
|
|
25248
25248
|
title: `${el.type} - ${el.id}`,
|
|
25249
|
-
className:
|
|
25249
|
+
className: chunkFKY33ZKL_js.cn(
|
|
25250
25250
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
25251
25251
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
25252
25252
|
),
|
|
@@ -25283,7 +25283,7 @@ function InspectorPaneHeader({
|
|
|
25283
25283
|
onClose
|
|
25284
25284
|
}) {
|
|
25285
25285
|
const { t } = reactI18next.useTranslation();
|
|
25286
|
-
const { viewportWidth } =
|
|
25286
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
25287
25287
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
25288
25288
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
25289
25289
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -25306,7 +25306,7 @@ function InspectorPaneHeader({
|
|
|
25306
25306
|
type: "button",
|
|
25307
25307
|
title: t(labelKey),
|
|
25308
25308
|
style: touchBtnStyle,
|
|
25309
|
-
className:
|
|
25309
|
+
className: chunkFKY33ZKL_js.cn(
|
|
25310
25310
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
25311
25311
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
25312
25312
|
),
|
|
@@ -25420,7 +25420,7 @@ function CustomPropertiesBlock({
|
|
|
25420
25420
|
"button",
|
|
25421
25421
|
{
|
|
25422
25422
|
type: "button",
|
|
25423
|
-
className:
|
|
25423
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25424
25424
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
25425
25425
|
children: "\xD7"
|
|
25426
25426
|
}
|
|
@@ -25748,7 +25748,7 @@ function PresentationSettingsCard({
|
|
|
25748
25748
|
min: 1,
|
|
25749
25749
|
max: 16,
|
|
25750
25750
|
disabled: !canEdit,
|
|
25751
|
-
className:
|
|
25751
|
+
className: chunkFKY33ZKL_js.cn(INPUT2, "w-20"),
|
|
25752
25752
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
25753
25753
|
onChange: (e) => onUpdate({
|
|
25754
25754
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -25836,14 +25836,14 @@ function SlideThemeOverridePanel({
|
|
|
25836
25836
|
const translate = React105.useCallback((key) => t(key), [t]);
|
|
25837
25837
|
const override = activeSlide?.clrMapOverride;
|
|
25838
25838
|
const isOverrideActive = override !== void 0;
|
|
25839
|
-
const targetSlotOptions = React105.useMemo(() => [...
|
|
25839
|
+
const targetSlotOptions = React105.useMemo(() => [...chunkFKY33ZKL_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
|
|
25840
25840
|
const commitOverride = React105.useCallback(
|
|
25841
25841
|
(nextOverride) => {
|
|
25842
25842
|
if (!activeSlide || !theme?.colorScheme) {
|
|
25843
25843
|
onUpdateSlide({ clrMapOverride: nextOverride });
|
|
25844
25844
|
return;
|
|
25845
25845
|
}
|
|
25846
|
-
const nextSlide = (0,
|
|
25846
|
+
const nextSlide = (0, chunkFKY33ZKL_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
|
|
25847
25847
|
onUpdateSlide({
|
|
25848
25848
|
clrMapOverride: nextSlide.clrMapOverride,
|
|
25849
25849
|
backgroundColor: nextSlide.backgroundColor,
|
|
@@ -25856,8 +25856,8 @@ function SlideThemeOverridePanel({
|
|
|
25856
25856
|
(enabled) => {
|
|
25857
25857
|
if (enabled) {
|
|
25858
25858
|
const defaultMap = {};
|
|
25859
|
-
for (const key of
|
|
25860
|
-
defaultMap[key] =
|
|
25859
|
+
for (const key of chunkFKY33ZKL_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25860
|
+
defaultMap[key] = chunkFKY33ZKL_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25861
25861
|
}
|
|
25862
25862
|
commitOverride(defaultMap);
|
|
25863
25863
|
} else {
|
|
@@ -25870,9 +25870,9 @@ function SlideThemeOverridePanel({
|
|
|
25870
25870
|
(alias, targetSlot) => {
|
|
25871
25871
|
const current = override ?? {};
|
|
25872
25872
|
const next = { ...current, [alias]: targetSlot };
|
|
25873
|
-
for (const key of
|
|
25873
|
+
for (const key of chunkFKY33ZKL_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25874
25874
|
if (!next[key]) {
|
|
25875
|
-
next[key] =
|
|
25875
|
+
next[key] = chunkFKY33ZKL_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25876
25876
|
}
|
|
25877
25877
|
}
|
|
25878
25878
|
commitOverride(next);
|
|
@@ -25904,8 +25904,8 @@ function SlideThemeOverridePanel({
|
|
|
25904
25904
|
),
|
|
25905
25905
|
t("pptx.themeOverride.enableOverride")
|
|
25906
25906
|
] }),
|
|
25907
|
-
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children:
|
|
25908
|
-
const currentTarget = override[alias] ??
|
|
25907
|
+
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkFKY33ZKL_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
|
|
25908
|
+
const currentTarget = override[alias] ?? chunkFKY33ZKL_js.dist_exports.DEFAULT_COLOR_MAP[alias];
|
|
25909
25909
|
const resolvedHex = resolveSlotColor(currentTarget);
|
|
25910
25910
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25911
25911
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
|
|
@@ -25984,7 +25984,7 @@ function TransitionPreview({
|
|
|
25984
25984
|
const { t } = reactI18next.useTranslation();
|
|
25985
25985
|
const durationMs = transition.durationMs ?? 500;
|
|
25986
25986
|
const animations = React105.useMemo(
|
|
25987
|
-
() =>
|
|
25987
|
+
() => chunkGLWV52C6_js.getSlideTransitionAnimations(
|
|
25988
25988
|
transition.type,
|
|
25989
25989
|
durationMs,
|
|
25990
25990
|
transition.direction,
|
|
@@ -26053,7 +26053,7 @@ function TransitionPreview({
|
|
|
26053
26053
|
]
|
|
26054
26054
|
}
|
|
26055
26055
|
),
|
|
26056
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
26056
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkGLWV52C6_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
26057
26057
|
] });
|
|
26058
26058
|
}
|
|
26059
26059
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -26070,13 +26070,13 @@ function SlideTransitionSection({
|
|
|
26070
26070
|
return null;
|
|
26071
26071
|
}
|
|
26072
26072
|
const transitionType = activeSlide.transition?.type ?? "none";
|
|
26073
|
-
const validDirections =
|
|
26073
|
+
const validDirections = chunkFKY33ZKL_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
|
|
26074
26074
|
const hasDirections = validDirections !== void 0 && validDirections.length > 0;
|
|
26075
26075
|
const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
|
|
26076
26076
|
const isWheel = transitionType === "wheel";
|
|
26077
26077
|
const isMorph = transitionType === "morph";
|
|
26078
|
-
const patternOptions =
|
|
26079
|
-
const hasThruBlk =
|
|
26078
|
+
const patternOptions = chunkFKY33ZKL_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
|
|
26079
|
+
const hasThruBlk = chunkFKY33ZKL_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
|
|
26080
26080
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26081
26081
|
"div",
|
|
26082
26082
|
{
|
|
@@ -26096,7 +26096,7 @@ function SlideTransitionSection({
|
|
|
26096
26096
|
type: e.target.value
|
|
26097
26097
|
}),
|
|
26098
26098
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
26099
|
-
children:
|
|
26099
|
+
children: chunkFKY33ZKL_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
26100
26100
|
}
|
|
26101
26101
|
)
|
|
26102
26102
|
] }),
|
|
@@ -26312,7 +26312,7 @@ function TagsSection({
|
|
|
26312
26312
|
"button",
|
|
26313
26313
|
{
|
|
26314
26314
|
type: "button",
|
|
26315
|
-
className:
|
|
26315
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
26316
26316
|
title: t("pptx.tags.deleteTag"),
|
|
26317
26317
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
26318
26318
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -26441,7 +26441,7 @@ function PresentationPropertiesPanel({
|
|
|
26441
26441
|
canEdit
|
|
26442
26442
|
}
|
|
26443
26443
|
) }),
|
|
26444
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
26444
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunkFKY33ZKL_js.cn(CARD2, "space-y-1"), children: [
|
|
26445
26445
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
26446
26446
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
26447
26447
|
activeSlide.elements?.length ?? 0,
|
|
@@ -26462,14 +26462,14 @@ function SlideBackgroundPanel({
|
|
|
26462
26462
|
const { t } = reactI18next.useTranslation();
|
|
26463
26463
|
const bgImageInputRef = React105.useRef(null);
|
|
26464
26464
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26465
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26465
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkFKY33ZKL_js.cn(CARD2, "space-y-2"), children: [
|
|
26466
26466
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
26467
26467
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26468
26468
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
26469
26469
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26470
26470
|
DebouncedColorInput,
|
|
26471
26471
|
{
|
|
26472
|
-
value:
|
|
26472
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
26473
26473
|
disabled: !canEdit,
|
|
26474
26474
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26475
26475
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -26508,7 +26508,7 @@ function SlideBackgroundPanel({
|
|
|
26508
26508
|
"button",
|
|
26509
26509
|
{
|
|
26510
26510
|
type: "button",
|
|
26511
|
-
className:
|
|
26511
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "flex-1 text-center"),
|
|
26512
26512
|
disabled: !canEdit,
|
|
26513
26513
|
onClick: () => bgImageInputRef.current?.click(),
|
|
26514
26514
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -26541,7 +26541,7 @@ function SlideBackgroundPanel({
|
|
|
26541
26541
|
"button",
|
|
26542
26542
|
{
|
|
26543
26543
|
type: "button",
|
|
26544
|
-
className:
|
|
26544
|
+
className: chunkFKY33ZKL_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
26545
26545
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
26546
26546
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
26547
26547
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -26585,14 +26585,14 @@ function TemplateBackgroundCard({
|
|
|
26585
26585
|
t("pptx.master.layout"),
|
|
26586
26586
|
t("pptx.master.master")
|
|
26587
26587
|
);
|
|
26588
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26588
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkFKY33ZKL_js.cn(CARD2, "space-y-2"), children: [
|
|
26589
26589
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
26590
26590
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26591
26591
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
26592
26592
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26593
26593
|
DebouncedColorInput,
|
|
26594
26594
|
{
|
|
26595
|
-
value:
|
|
26595
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
26596
26596
|
disabled: !canEdit,
|
|
26597
26597
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26598
26598
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -26605,7 +26605,7 @@ function TemplateBackgroundCard({
|
|
|
26605
26605
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26606
26606
|
DebouncedColorInput,
|
|
26607
26607
|
{
|
|
26608
|
-
value:
|
|
26608
|
+
value: chunkFKY33ZKL_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
26609
26609
|
disabled: !canEdit,
|
|
26610
26610
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26611
26611
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -26716,7 +26716,7 @@ function InspectorPane(props) {
|
|
|
26716
26716
|
} = props;
|
|
26717
26717
|
const hasSelection = selectedElement !== null;
|
|
26718
26718
|
const { t } = reactI18next.useTranslation();
|
|
26719
|
-
const { dragY, handlers: dragHandlers } =
|
|
26719
|
+
const { dragY, handlers: dragHandlers } = chunkGLWV52C6_js.useSheetDismissDrag(onClose);
|
|
26720
26720
|
const {
|
|
26721
26721
|
animationPanelHeight,
|
|
26722
26722
|
effectiveThemeOptions,
|
|
@@ -26738,7 +26738,7 @@ function InspectorPane(props) {
|
|
|
26738
26738
|
"div",
|
|
26739
26739
|
{
|
|
26740
26740
|
"data-pptx-chrome": "inspector",
|
|
26741
|
-
className:
|
|
26741
|
+
className: chunkFKY33ZKL_js.cn(
|
|
26742
26742
|
// Shared styles
|
|
26743
26743
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
26744
26744
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -27129,7 +27129,7 @@ function PresentationTouchControls({
|
|
|
27129
27129
|
hideNavigation = false
|
|
27130
27130
|
}) {
|
|
27131
27131
|
const { t } = reactI18next.useTranslation();
|
|
27132
|
-
const { isTouchDevice } =
|
|
27132
|
+
const { isTouchDevice } = chunkGLWV52C6_js.useIsMobile();
|
|
27133
27133
|
if (!isTouchDevice) {
|
|
27134
27134
|
return null;
|
|
27135
27135
|
}
|
|
@@ -27434,13 +27434,13 @@ function PrintPreview({
|
|
|
27434
27434
|
}) {
|
|
27435
27435
|
const { t } = reactI18next.useTranslation();
|
|
27436
27436
|
const pages = React105.useMemo(
|
|
27437
|
-
() =>
|
|
27437
|
+
() => chunkFKY33ZKL_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
27438
27438
|
[slideIndices, slidesPerPage, orientation]
|
|
27439
27439
|
);
|
|
27440
|
-
const printable = React105.useMemo(() =>
|
|
27440
|
+
const printable = React105.useMemo(() => chunkFKY33ZKL_js.getPrintableArea(orientation), [orientation]);
|
|
27441
27441
|
const visiblePages = pages.slice(0, maxPages);
|
|
27442
27442
|
const isThreePerPage = slidesPerPage === 3;
|
|
27443
|
-
const noteLineCount =
|
|
27443
|
+
const noteLineCount = chunkFKY33ZKL_js.generateNoteLineCount();
|
|
27444
27444
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
27445
27445
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
27446
27446
|
const noteAreaFraction = 0.5;
|
|
@@ -27776,11 +27776,11 @@ function PrintDialog({
|
|
|
27776
27776
|
}) {
|
|
27777
27777
|
const { t } = reactI18next.useTranslation();
|
|
27778
27778
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
27779
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27780
|
-
const { viewportWidth } =
|
|
27779
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
|
|
27780
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
27781
27781
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27782
27782
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27783
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
27783
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkGLWV52C6_js.useViewerOptionsContext());
|
|
27784
27784
|
const [printWhat, setPrintWhat] = React105.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
27785
27785
|
const [orientation, setOrientation] = React105.useState("landscape");
|
|
27786
27786
|
const [colorMode, setColorMode] = React105.useState(
|
|
@@ -28297,14 +28297,14 @@ function BroadcastDialog({
|
|
|
28297
28297
|
}) {
|
|
28298
28298
|
const { t } = reactI18next.useTranslation();
|
|
28299
28299
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
28300
|
-
const collab =
|
|
28300
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
28301
28301
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
28302
28302
|
const [roomId, setRoomId] = React105.useState("");
|
|
28303
28303
|
const [userName, setUserName] = React105.useState("");
|
|
28304
28304
|
const [serverUrl, setServerUrl] = React105.useState("");
|
|
28305
28305
|
const [copied, setCopied] = React105.useState(false);
|
|
28306
28306
|
const dialogRef = React105.useRef(null);
|
|
28307
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28307
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
|
|
28308
28308
|
useModalFocus(open, dialogRef, onClose);
|
|
28309
28309
|
React105.useEffect(() => {
|
|
28310
28310
|
if (open && !isBroadcasting) {
|
|
@@ -28620,7 +28620,7 @@ function ActiveSessionView({
|
|
|
28620
28620
|
onCopyRoomId,
|
|
28621
28621
|
onStopCollaboration
|
|
28622
28622
|
}) {
|
|
28623
|
-
const { t } = reactI18next.useTranslation(), viewerOptions =
|
|
28623
|
+
const { t } = reactI18next.useTranslation(), viewerOptions = chunkGLWV52C6_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({
|
|
28624
28624
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
28625
28625
|
localUserInitials: viewerOptions.general.userInitials,
|
|
28626
28626
|
localUserColor: collab.config.userColor,
|
|
@@ -28719,7 +28719,7 @@ function StartSessionForm({
|
|
|
28719
28719
|
onRetry
|
|
28720
28720
|
}) {
|
|
28721
28721
|
const { t } = reactI18next.useTranslation();
|
|
28722
|
-
const { viewportWidth } =
|
|
28722
|
+
const { viewportWidth } = chunkGLWV52C6_js.useIsMobile();
|
|
28723
28723
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
28724
28724
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
28725
28725
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -28853,7 +28853,7 @@ function ShareDialog({
|
|
|
28853
28853
|
defaultUserName,
|
|
28854
28854
|
defaultServerUrl
|
|
28855
28855
|
}) {
|
|
28856
|
-
const collab =
|
|
28856
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
28857
28857
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
28858
28858
|
const { t } = reactI18next.useTranslation();
|
|
28859
28859
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
@@ -28864,9 +28864,9 @@ function ShareDialog({
|
|
|
28864
28864
|
const [invitation, setInvitation] = React105.useState("");
|
|
28865
28865
|
const [copied, setCopied] = React105.useState(false);
|
|
28866
28866
|
const dialogRef = React105.useRef(null);
|
|
28867
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28867
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
|
|
28868
28868
|
useModalFocus(open, dialogRef, onClose);
|
|
28869
|
-
const { viewportWidth, viewportHeight } =
|
|
28869
|
+
const { viewportWidth, viewportHeight } = chunkGLWV52C6_js.useIsMobile();
|
|
28870
28870
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
28871
28871
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
28872
28872
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -29165,12 +29165,12 @@ function HyperlinkEditDialog({
|
|
|
29165
29165
|
onCancel
|
|
29166
29166
|
}) {
|
|
29167
29167
|
const { t } = reactI18next.useTranslation();
|
|
29168
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29168
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onCancel);
|
|
29169
29169
|
const inputRef = React105.useRef(null);
|
|
29170
|
-
const detectedType =
|
|
29171
|
-
const emailParts =
|
|
29172
|
-
const detectedSlide =
|
|
29173
|
-
const detectedVerb = initialAction ?
|
|
29170
|
+
const detectedType = chunkGLWV52C6_js.detectTargetType(initialUrl, initialAction);
|
|
29171
|
+
const emailParts = chunkGLWV52C6_js.parseEmailUrl(initialUrl || "");
|
|
29172
|
+
const detectedSlide = chunkGLWV52C6_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
29173
|
+
const detectedVerb = initialAction ? chunkGLWV52C6_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
29174
29174
|
const [targetType, setTargetType] = React105.useState(detectedType);
|
|
29175
29175
|
const [url, setUrl] = React105.useState(
|
|
29176
29176
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -29201,7 +29201,7 @@ function HyperlinkEditDialog({
|
|
|
29201
29201
|
actionVerb
|
|
29202
29202
|
});
|
|
29203
29203
|
};
|
|
29204
|
-
const tabCls = (active) =>
|
|
29204
|
+
const tabCls = (active) => chunkFKY33ZKL_js.cn(
|
|
29205
29205
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
29206
29206
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
29207
29207
|
);
|
|
@@ -29447,7 +29447,7 @@ function ViewerBottomPanels({
|
|
|
29447
29447
|
notesStyle,
|
|
29448
29448
|
onNotesHeightChange
|
|
29449
29449
|
}) {
|
|
29450
|
-
const { isHidden } =
|
|
29450
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(hiddenActions);
|
|
29451
29451
|
const customization = useViewerCustomizationContext();
|
|
29452
29452
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
29453
29453
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -29837,7 +29837,7 @@ function ViewerToolbarSection(props) {
|
|
|
29837
29837
|
[activeSlide, propertyHandlers]
|
|
29838
29838
|
);
|
|
29839
29839
|
const scopedLayoutOptions = React105__default.default.useMemo(
|
|
29840
|
-
() =>
|
|
29840
|
+
() => chunkGLWV52C6_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
29841
29841
|
[s.layoutOptions, activeSlide]
|
|
29842
29842
|
);
|
|
29843
29843
|
const handleResetSlide = React105.useCallback(() => {
|
|
@@ -30242,14 +30242,14 @@ function ViewerToolbarSection(props) {
|
|
|
30242
30242
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
30243
30243
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
30244
30244
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
30245
|
-
reviewComments:
|
|
30245
|
+
reviewComments: chunkGLWV52C6_js.createReviewCommentsHost({
|
|
30246
30246
|
state: s,
|
|
30247
30247
|
activeSlideIndex,
|
|
30248
30248
|
updateSlides: ops.updateSlides,
|
|
30249
30249
|
markDirty: history.markDirty
|
|
30250
30250
|
}),
|
|
30251
30251
|
formatPainterActive: s.formatPainterActive,
|
|
30252
|
-
canActivateFormatPainter:
|
|
30252
|
+
canActivateFormatPainter: chunkFKY33ZKL_js.hasCopyableFormat(selectedElement),
|
|
30253
30253
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
30254
30254
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
30255
30255
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -30336,7 +30336,7 @@ function EquationEditorDialog({
|
|
|
30336
30336
|
existingOmml
|
|
30337
30337
|
}) {
|
|
30338
30338
|
const { t } = reactI18next.useTranslation();
|
|
30339
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
30339
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
|
|
30340
30340
|
const initialLatex = React105.useMemo(() => {
|
|
30341
30341
|
if (!existingOmml) {
|
|
30342
30342
|
return "";
|
|
@@ -30458,7 +30458,7 @@ function EquationEditorDialog({
|
|
|
30458
30458
|
{
|
|
30459
30459
|
type: "button",
|
|
30460
30460
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
30461
|
-
className:
|
|
30461
|
+
className: chunkFKY33ZKL_js.cn(
|
|
30462
30462
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
30463
30463
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
30464
30464
|
),
|
|
@@ -30524,7 +30524,7 @@ function getPreviewForLayout(layout) {
|
|
|
30524
30524
|
transform: `scale(${scale})`,
|
|
30525
30525
|
transformOrigin: "top left"
|
|
30526
30526
|
},
|
|
30527
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
30527
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
|
|
30528
30528
|
}
|
|
30529
30529
|
)
|
|
30530
30530
|
}
|
|
@@ -30536,7 +30536,7 @@ function InsertSmartArtDialog({
|
|
|
30536
30536
|
onInsert
|
|
30537
30537
|
}) {
|
|
30538
30538
|
const { t } = reactI18next.useTranslation();
|
|
30539
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
30539
|
+
const { panelStyle, handlers: dragHandlers } = chunkGLWV52C6_js.useModalDismissDrag(onClose);
|
|
30540
30540
|
const [activeCategory, setActiveCategory] = React105.useState("list");
|
|
30541
30541
|
const [selectedLayout, setSelectedLayout] = React105.useState(null);
|
|
30542
30542
|
const dialogRef = React105.useRef(null);
|
|
@@ -30617,7 +30617,7 @@ function InsertSmartArtDialog({
|
|
|
30617
30617
|
setActiveCategory(cat.id);
|
|
30618
30618
|
setSelectedLayout(null);
|
|
30619
30619
|
},
|
|
30620
|
-
className:
|
|
30620
|
+
className: chunkFKY33ZKL_js.cn(
|
|
30621
30621
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
30622
30622
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
30623
30623
|
),
|
|
@@ -30645,7 +30645,7 @@ function InsertSmartArtDialog({
|
|
|
30645
30645
|
onInsert(preset.layout, preset.defaultItems);
|
|
30646
30646
|
onClose();
|
|
30647
30647
|
},
|
|
30648
|
-
className:
|
|
30648
|
+
className: chunkFKY33ZKL_js.cn(
|
|
30649
30649
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
30650
30650
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
30651
30651
|
),
|
|
@@ -31143,11 +31143,11 @@ function PresentationStage({
|
|
|
31143
31143
|
})
|
|
31144
31144
|
},
|
|
31145
31145
|
children: [
|
|
31146
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31146
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
31147
31147
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
31148
31148
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
31149
31149
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
31150
|
-
|
|
31150
|
+
chunkGLWV52C6_js.ElementRenderer,
|
|
31151
31151
|
{
|
|
31152
31152
|
element,
|
|
31153
31153
|
activeSlide,
|
|
@@ -31184,7 +31184,7 @@ function PresentationStage({
|
|
|
31184
31184
|
`tpl-${element.id}`
|
|
31185
31185
|
)),
|
|
31186
31186
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
31187
|
-
|
|
31187
|
+
chunkGLWV52C6_js.ElementRenderer,
|
|
31188
31188
|
{
|
|
31189
31189
|
element,
|
|
31190
31190
|
activeSlide,
|
|
@@ -31306,8 +31306,8 @@ function ViewerCanvasArea(props) {
|
|
|
31306
31306
|
aiCanvasActive = false
|
|
31307
31307
|
} = props;
|
|
31308
31308
|
const { t } = reactI18next.useTranslation();
|
|
31309
|
-
const { isHidden } =
|
|
31310
|
-
const viewerOptions =
|
|
31309
|
+
const { isHidden } = chunkGLWV52C6_js.useToolbarVisibility(hiddenActions);
|
|
31310
|
+
const viewerOptions = chunkGLWV52C6_js.useViewerOptionsContext();
|
|
31311
31311
|
const outlineAuthoring = useOutlineAuthoring({
|
|
31312
31312
|
state: s,
|
|
31313
31313
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -31337,7 +31337,7 @@ function ViewerCanvasArea(props) {
|
|
|
31337
31337
|
${url}`)) {
|
|
31338
31338
|
return;
|
|
31339
31339
|
}
|
|
31340
|
-
|
|
31340
|
+
chunkFKY33ZKL_js.safeOpenUrl(url);
|
|
31341
31341
|
},
|
|
31342
31342
|
[viewerOptions, t]
|
|
31343
31343
|
);
|
|
@@ -31358,9 +31358,9 @@ ${url}`)) {
|
|
|
31358
31358
|
);
|
|
31359
31359
|
const handleHyperlinkClick = React105.useCallback(
|
|
31360
31360
|
(url) => {
|
|
31361
|
-
if (
|
|
31361
|
+
if (chunkFKY33ZKL_js.isPpactionUrl(url)) {
|
|
31362
31362
|
if (mode === "present") {
|
|
31363
|
-
const parsed =
|
|
31363
|
+
const parsed = chunkFKY33ZKL_js.parsePpactionUrl(url);
|
|
31364
31364
|
if (parsed) {
|
|
31365
31365
|
const action = {
|
|
31366
31366
|
action: parsed.action,
|
|
@@ -31445,7 +31445,7 @@ ${url}`)) {
|
|
|
31445
31445
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
31446
31446
|
}
|
|
31447
31447
|
}, [mode, presentation, s]);
|
|
31448
|
-
const swipe =
|
|
31448
|
+
const swipe = chunkGLWV52C6_js.useSwipeNavigation({
|
|
31449
31449
|
enabled: swipeEnabled,
|
|
31450
31450
|
onNext: handleSwipeNext,
|
|
31451
31451
|
onPrev: handleSwipePrev
|
|
@@ -31525,7 +31525,7 @@ ${url}`)) {
|
|
|
31525
31525
|
),
|
|
31526
31526
|
children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31527
31527
|
presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
|
|
31528
|
-
|
|
31528
|
+
chunkGLWV52C6_js.PresentationTransitionOverlay,
|
|
31529
31529
|
{
|
|
31530
31530
|
outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
|
|
31531
31531
|
templateElements,
|
|
@@ -31636,14 +31636,14 @@ ${url}`)) {
|
|
|
31636
31636
|
outlineAuthoring,
|
|
31637
31637
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31638
31638
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31639
|
-
|
|
31639
|
+
chunkGLWV52C6_js.RemoteSelectionOverlay,
|
|
31640
31640
|
{
|
|
31641
31641
|
elements: effectiveSlide?.elements ?? [],
|
|
31642
31642
|
activeSlideIndex
|
|
31643
31643
|
}
|
|
31644
31644
|
),
|
|
31645
31645
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31646
|
-
|
|
31646
|
+
chunkGLWV52C6_js.CollaborationCursorOverlay,
|
|
31647
31647
|
{
|
|
31648
31648
|
activeSlideIndex,
|
|
31649
31649
|
canvasWidth: canvasSize.width,
|
|
@@ -31783,7 +31783,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
31783
31783
|
var AiChatPanel = React105.lazy(async () => {
|
|
31784
31784
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
31785
31785
|
import('@ai-sdk/react'),
|
|
31786
|
-
import('./AiChatPanel-
|
|
31786
|
+
import('./AiChatPanel-VI2IQ7XU.js')
|
|
31787
31787
|
]);
|
|
31788
31788
|
function BoundAiChatPanel(props) {
|
|
31789
31789
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -31907,7 +31907,7 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31907
31907
|
}
|
|
31908
31908
|
function ChartFormatPanel() {
|
|
31909
31909
|
const { t } = reactI18next.useTranslation();
|
|
31910
|
-
const commands =
|
|
31910
|
+
const commands = chunkGLWV52C6_js.useChartFormatContext();
|
|
31911
31911
|
const ref = React105.useRef(null);
|
|
31912
31912
|
const chart = commands?.chart;
|
|
31913
31913
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31980,7 +31980,7 @@ function MobileDismissSheet({
|
|
|
31980
31980
|
children
|
|
31981
31981
|
}) {
|
|
31982
31982
|
const { t } = reactI18next.useTranslation();
|
|
31983
|
-
const { dragY, handlers } =
|
|
31983
|
+
const { dragY, handlers } = chunkGLWV52C6_js.useSheetDismissDrag(onClose);
|
|
31984
31984
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31985
31985
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31986
31986
|
"button",
|
|
@@ -32249,7 +32249,7 @@ function ThemeThumbnail({
|
|
|
32249
32249
|
{
|
|
32250
32250
|
type: "button",
|
|
32251
32251
|
onClick,
|
|
32252
|
-
className:
|
|
32252
|
+
className: chunkFKY33ZKL_js.cn(
|
|
32253
32253
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
32254
32254
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
32255
32255
|
),
|
|
@@ -32435,7 +32435,7 @@ function ViewerSidePanels(props) {
|
|
|
32435
32435
|
const customization = useViewerCustomizationContext();
|
|
32436
32436
|
const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
|
|
32437
32437
|
const currentBuiltInTheme = BUILT_IN_THEMES.find(
|
|
32438
|
-
(candidate) => (0,
|
|
32438
|
+
(candidate) => (0, chunkFKY33ZKL_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
|
|
32439
32439
|
) ?? null;
|
|
32440
32440
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32441
32441
|
inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
|
|
@@ -32720,7 +32720,7 @@ function ViewerMainContent(props) {
|
|
|
32720
32720
|
);
|
|
32721
32721
|
const layoutGalleryAnchorRef = React105.useRef(null);
|
|
32722
32722
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
32723
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32723
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
32724
32724
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32725
32725
|
slidesPaneRenderer ? (
|
|
32726
32726
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -33225,7 +33225,7 @@ function MobileChromeOverlay(props) {
|
|
|
33225
33225
|
slideSectionGroups,
|
|
33226
33226
|
canEdit,
|
|
33227
33227
|
commentCount
|
|
33228
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
33228
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkGLWV52C6_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
33229
33229
|
s.setIsSlidesPaneOpen(false);
|
|
33230
33230
|
s.setIsMobileInsertOpen(false);
|
|
33231
33231
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -33433,7 +33433,7 @@ function AddinTable({
|
|
|
33433
33433
|
"tr",
|
|
33434
33434
|
{
|
|
33435
33435
|
onClick: () => onSelect(row.id),
|
|
33436
|
-
className:
|
|
33436
|
+
className: chunkFKY33ZKL_js.cn(
|
|
33437
33437
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
33438
33438
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
33439
33439
|
),
|
|
@@ -33512,7 +33512,7 @@ function CommandList({
|
|
|
33512
33512
|
role: "option",
|
|
33513
33513
|
"aria-selected": selectedId === id,
|
|
33514
33514
|
onClick: () => onSelect(id),
|
|
33515
|
-
className:
|
|
33515
|
+
className: chunkFKY33ZKL_js.cn(
|
|
33516
33516
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
33517
33517
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
33518
33518
|
),
|
|
@@ -33656,7 +33656,7 @@ function OptionsRibbonPane({
|
|
|
33656
33656
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33657
33657
|
"label",
|
|
33658
33658
|
{
|
|
33659
|
-
className:
|
|
33659
|
+
className: chunkFKY33ZKL_js.cn(
|
|
33660
33660
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
33661
33661
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
33662
33662
|
),
|
|
@@ -33690,7 +33690,7 @@ function OptionsRibbonPane({
|
|
|
33690
33690
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33691
33691
|
"div",
|
|
33692
33692
|
{
|
|
33693
|
-
className:
|
|
33693
|
+
className: chunkFKY33ZKL_js.cn(
|
|
33694
33694
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
33695
33695
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
33696
33696
|
),
|
|
@@ -33711,7 +33711,7 @@ async function exportAiChatLogs(options) {
|
|
|
33711
33711
|
chats,
|
|
33712
33712
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
33713
33713
|
(filename, content, mime) => {
|
|
33714
|
-
|
|
33714
|
+
chunkGLWV52C6_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
33715
33715
|
}
|
|
33716
33716
|
);
|
|
33717
33717
|
}
|
|
@@ -33819,7 +33819,7 @@ function SettingsAppearanceTab({
|
|
|
33819
33819
|
type: "button",
|
|
33820
33820
|
onClick: () => onSelectTheme(entry.key),
|
|
33821
33821
|
"aria-pressed": isActive,
|
|
33822
|
-
className:
|
|
33822
|
+
className: chunkFKY33ZKL_js.cn(
|
|
33823
33823
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33824
33824
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33825
33825
|
),
|
|
@@ -33836,7 +33836,7 @@ function SettingsAppearanceTab({
|
|
|
33836
33836
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33837
33837
|
"span",
|
|
33838
33838
|
{
|
|
33839
|
-
className:
|
|
33839
|
+
className: chunkFKY33ZKL_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33840
33840
|
children: t(entry.labelKey)
|
|
33841
33841
|
}
|
|
33842
33842
|
)
|
|
@@ -33916,7 +33916,7 @@ function SettingsLanguageTab({
|
|
|
33916
33916
|
type: "button",
|
|
33917
33917
|
onClick: () => onSelectLocale(locale.code),
|
|
33918
33918
|
"aria-pressed": isActive,
|
|
33919
|
-
className:
|
|
33919
|
+
className: chunkFKY33ZKL_js.cn(
|
|
33920
33920
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33921
33921
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33922
33922
|
),
|
|
@@ -34053,7 +34053,7 @@ function ViewerOptionsProvider({
|
|
|
34053
34053
|
store,
|
|
34054
34054
|
children
|
|
34055
34055
|
}) {
|
|
34056
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34056
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
34057
34057
|
}
|
|
34058
34058
|
function useAiBridge(input) {
|
|
34059
34059
|
const ref = React105.useRef(input);
|
|
@@ -34497,7 +34497,7 @@ function useMasterViewCrud(input) {
|
|
|
34497
34497
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
34498
34498
|
const master = slideMasters[target.masterIndex];
|
|
34499
34499
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
34500
|
-
const next =
|
|
34500
|
+
const next = chunkGLWV52C6_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
34501
34501
|
if (!next) {
|
|
34502
34502
|
return;
|
|
34503
34503
|
}
|
|
@@ -34995,7 +34995,7 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
34995
34995
|
}
|
|
34996
34996
|
})();
|
|
34997
34997
|
}, []);
|
|
34998
|
-
const { optionsStore, options: viewerOptions } =
|
|
34998
|
+
const { optionsStore, options: viewerOptions } = chunkGLWV52C6_js.useViewerOptions();
|
|
34999
34999
|
const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
|
|
35000
35000
|
const { resolved: customizationResolved, hiddenActions } = custom;
|
|
35001
35001
|
const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
|
|
@@ -35009,8 +35009,8 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35009
35009
|
const handleEnableEditing = React105.useCallback(() => {
|
|
35010
35010
|
setProtectedViewOverridden(true);
|
|
35011
35011
|
}, []);
|
|
35012
|
-
const readOnlyRec =
|
|
35013
|
-
const compatToastsState =
|
|
35012
|
+
const readOnlyRec = chunkGLWV52C6_js.useReadOnlyRecommendationState(content);
|
|
35013
|
+
const compatToastsState = chunkGLWV52C6_js.useCompatibilityToastsState();
|
|
35014
35014
|
const [notesBarHeight, setNotesBarHeight] = React105.useState(0);
|
|
35015
35015
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
35016
35016
|
const [collaborationReadOnly, setCollaborationReadOnly] = React105.useState(Boolean(collaboration));
|
|
@@ -35025,8 +35025,8 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35025
35025
|
filePath
|
|
35026
35026
|
});
|
|
35027
35027
|
const [isShareDialogOpen, setIsShareDialogOpen] = React105.useState(false);
|
|
35028
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
35029
|
-
const state =
|
|
35028
|
+
const { reducedMotion, toggleReducedMotion } = chunkGLWV52C6_js.useReducedMotion();
|
|
35029
|
+
const state = chunkGLWV52C6_js.useViewerState({
|
|
35030
35030
|
content,
|
|
35031
35031
|
canEdit,
|
|
35032
35032
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -35063,7 +35063,7 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35063
35063
|
[state.recentColors, pushColor]
|
|
35064
35064
|
);
|
|
35065
35065
|
const themeColorMapValue = React105.useMemo(
|
|
35066
|
-
() => state.theme?.colorScheme ? (0,
|
|
35066
|
+
() => state.theme?.colorScheme ? (0, chunkFKY33ZKL_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
|
|
35067
35067
|
[state.theme?.colorScheme]
|
|
35068
35068
|
);
|
|
35069
35069
|
const settings = React105.useMemo(
|
|
@@ -35150,16 +35150,16 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35150
35150
|
}
|
|
35151
35151
|
}, [settings, optionsStore]);
|
|
35152
35152
|
const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
|
|
35153
|
-
const mobile =
|
|
35153
|
+
const mobile = chunkGLWV52C6_js.useIsMobile();
|
|
35154
35154
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
35155
|
-
const resizablePanels =
|
|
35155
|
+
const resizablePanels = chunkGLWV52C6_js.useResizablePanels();
|
|
35156
35156
|
const {
|
|
35157
35157
|
gridSpacingPx,
|
|
35158
35158
|
visibleSlideIndexes,
|
|
35159
35159
|
slideSectionGroups,
|
|
35160
35160
|
masterPseudoSlide,
|
|
35161
35161
|
authoredRange
|
|
35162
|
-
} =
|
|
35162
|
+
} = chunkGLWV52C6_js.useDerivedSlideState({
|
|
35163
35163
|
slides,
|
|
35164
35164
|
sections: state.sections,
|
|
35165
35165
|
customShows: state.customShows,
|
|
@@ -35184,7 +35184,7 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35184
35184
|
state.cropSessionRef
|
|
35185
35185
|
]
|
|
35186
35186
|
);
|
|
35187
|
-
const zoom =
|
|
35187
|
+
const zoom = chunkGLWV52C6_js.useZoomViewport({
|
|
35188
35188
|
canvasSize,
|
|
35189
35189
|
selectedElements: state.selectedElements,
|
|
35190
35190
|
fitPadding: props.fitPadding,
|
|
@@ -35194,7 +35194,7 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35194
35194
|
const markDocumentDirty = React105.useCallback(() => {
|
|
35195
35195
|
setIsDirty(true);
|
|
35196
35196
|
}, [setIsDirty]);
|
|
35197
|
-
const history =
|
|
35197
|
+
const history = chunkGLWV52C6_js.useEditorHistory({
|
|
35198
35198
|
slides,
|
|
35199
35199
|
canvasSize,
|
|
35200
35200
|
activeSlideIndex,
|
|
@@ -35220,7 +35220,7 @@ var PowerPointViewer = React105.forwardRef(
|
|
|
35220
35220
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
35221
35221
|
setHeaderFooter: state.setHeaderFooter
|
|
35222
35222
|
});
|
|
35223
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
35223
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkGLWV52C6_js.usePresentationSetup({
|
|
35224
35224
|
mode,
|
|
35225
35225
|
slides,
|
|
35226
35226
|
visibleSlideIndexes,
|
|
@@ -35295,7 +35295,7 @@ ${url}`)
|
|
|
35295
35295
|
loading,
|
|
35296
35296
|
error
|
|
35297
35297
|
]);
|
|
35298
|
-
|
|
35298
|
+
chunkGLWV52C6_js.useTouchGestures({
|
|
35299
35299
|
targetRef: zoom.canvasViewportRef,
|
|
35300
35300
|
currentScale: zoom.scale,
|
|
35301
35301
|
callbacks: {
|
|
@@ -35317,7 +35317,7 @@ ${url}`)
|
|
|
35317
35317
|
},
|
|
35318
35318
|
enabled: isTouchDevice
|
|
35319
35319
|
});
|
|
35320
|
-
const dialogs =
|
|
35320
|
+
const dialogs = chunkGLWV52C6_js.useViewerDialogs({
|
|
35321
35321
|
mode,
|
|
35322
35322
|
slides,
|
|
35323
35323
|
activeSlide,
|
|
@@ -35366,7 +35366,7 @@ ${url}`)
|
|
|
35366
35366
|
zoom.handleZoomToFit();
|
|
35367
35367
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
35368
35368
|
}, [mode]);
|
|
35369
|
-
const editorOps =
|
|
35369
|
+
const editorOps = chunkGLWV52C6_js.useEditorOperations({
|
|
35370
35370
|
state,
|
|
35371
35371
|
history,
|
|
35372
35372
|
zoom,
|
|
@@ -35409,7 +35409,7 @@ ${url}`)
|
|
|
35409
35409
|
handlerRef,
|
|
35410
35410
|
viewerApi,
|
|
35411
35411
|
loadVersion
|
|
35412
|
-
} =
|
|
35412
|
+
} = chunkGLWV52C6_js.useViewerIntegration({
|
|
35413
35413
|
transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
|
|
35414
35414
|
state,
|
|
35415
35415
|
zoom,
|
|
@@ -35536,7 +35536,7 @@ ${url}`)
|
|
|
35536
35536
|
updateElementById: editorOps.ops.updateElementById
|
|
35537
35537
|
});
|
|
35538
35538
|
const ribbonScope = useRibbonScopeToken();
|
|
35539
|
-
const viewPreferencesSync =
|
|
35539
|
+
const viewPreferencesSync = chunkGLWV52C6_js.useViewPreferencesSync({
|
|
35540
35540
|
loadVersion,
|
|
35541
35541
|
viewProperties: state.viewProperties,
|
|
35542
35542
|
setViewProperties: state.setViewProperties,
|
|
@@ -35574,7 +35574,7 @@ ${url}`)
|
|
|
35574
35574
|
},
|
|
35575
35575
|
[state]
|
|
35576
35576
|
);
|
|
35577
|
-
const layoutSwitching =
|
|
35577
|
+
const layoutSwitching = chunkGLWV52C6_js.useLayoutSwitching({
|
|
35578
35578
|
handler: handlerRef.current,
|
|
35579
35579
|
slides,
|
|
35580
35580
|
activeSlideIndex,
|
|
@@ -35684,7 +35684,7 @@ ${url}`)
|
|
|
35684
35684
|
"data-pptx-editor-chrome": "",
|
|
35685
35685
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35686
35686
|
"aria-busy": loading,
|
|
35687
|
-
className:
|
|
35687
|
+
className: chunkFKY33ZKL_js.cn(
|
|
35688
35688
|
"h-full w-full bg-background text-foreground relative",
|
|
35689
35689
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35690
35690
|
),
|
|
@@ -36079,8 +36079,8 @@ ${url}`)
|
|
|
36079
36079
|
// Nothing previously provided it, so every one of those consumers was
|
|
36080
36080
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
36081
36081
|
// the user changed in the Options dialog.
|
|
36082
|
-
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, 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(
|
|
36083
|
-
|
|
36082
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, 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(chunkGLWV52C6_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36083
|
+
chunkGLWV52C6_js.CollaborationProvider,
|
|
36084
36084
|
{
|
|
36085
36085
|
config: collaboration,
|
|
36086
36086
|
canvasWidth: canvasSize.width,
|
|
@@ -36129,7 +36129,7 @@ ${url}`)
|
|
|
36129
36129
|
slideCount: slides.length
|
|
36130
36130
|
}
|
|
36131
36131
|
),
|
|
36132
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
36132
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkGLWV52C6_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
36133
36133
|
]
|
|
36134
36134
|
}
|
|
36135
36135
|
) }) }) }) }) }) }) })
|
|
@@ -36138,7 +36138,7 @@ ${url}`)
|
|
|
36138
36138
|
);
|
|
36139
36139
|
PowerPointViewer.displayName = "PowerPointViewer";
|
|
36140
36140
|
function CollaborationStatusStrip() {
|
|
36141
|
-
const collab =
|
|
36141
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
36142
36142
|
if (!collab) {
|
|
36143
36143
|
return null;
|
|
36144
36144
|
}
|
|
@@ -36162,8 +36162,8 @@ function CollaborationDocumentSync({
|
|
|
36162
36162
|
deckSaveState,
|
|
36163
36163
|
onReadOnlyChange
|
|
36164
36164
|
}) {
|
|
36165
|
-
const collab =
|
|
36166
|
-
|
|
36165
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
36166
|
+
chunkGLWV52C6_js.useCollaborationDocumentSync({
|
|
36167
36167
|
collaboration: collab,
|
|
36168
36168
|
slides,
|
|
36169
36169
|
templateElementsBySlideId,
|
|
@@ -36182,14 +36182,14 @@ function CollaborationFollowLayer({
|
|
|
36182
36182
|
setActiveSlideIndex,
|
|
36183
36183
|
slideCount
|
|
36184
36184
|
}) {
|
|
36185
|
-
const collab =
|
|
36186
|
-
const { followedClientId, followUser } =
|
|
36185
|
+
const collab = chunkGLWV52C6_js.useCollaboration();
|
|
36186
|
+
const { followedClientId, followUser } = chunkGLWV52C6_js.useFollowMode({
|
|
36187
36187
|
collab,
|
|
36188
36188
|
activeSlideIndex,
|
|
36189
36189
|
setActiveSlideIndex,
|
|
36190
36190
|
slideCount
|
|
36191
36191
|
});
|
|
36192
|
-
|
|
36192
|
+
chunkGLWV52C6_js.useBroadcastFollower({
|
|
36193
36193
|
collab,
|
|
36194
36194
|
activeSlideIndex,
|
|
36195
36195
|
setActiveSlideIndex,
|