pptx-react-viewer 4.39.0 → 4.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/{AiChatPanel-5O6PHRSH.mjs → AiChatPanel-IDP326YW.mjs} +1 -1
- package/dist/AiChatPanel-IDP326YW.mjs.br +0 -0
- package/dist/AiChatPanel-IDP326YW.mjs.gz +0 -0
- package/dist/{AiChatPanel-FNHDAKPB.js → AiChatPanel-KEVVVR7C.js} +9 -9
- package/dist/AiChatPanel-KEVVVR7C.js.br +0 -0
- package/dist/AiChatPanel-KEVVVR7C.js.gz +0 -0
- package/dist/{chunk-43TOUP5U.js → chunk-3PKYNJJG.js} +8 -14
- package/dist/chunk-3PKYNJJG.js.br +0 -0
- package/dist/chunk-3PKYNJJG.js.gz +0 -0
- package/dist/{chunk-5XBS7MCX.mjs → chunk-EQTNWM5Y.mjs} +16 -6
- package/dist/chunk-EQTNWM5Y.mjs.br +0 -0
- package/dist/chunk-EQTNWM5Y.mjs.gz +0 -0
- package/dist/{chunk-UC2VQORY.mjs → chunk-MNT2CXDI.mjs} +9 -15
- package/dist/chunk-MNT2CXDI.mjs.br +0 -0
- package/dist/chunk-MNT2CXDI.mjs.gz +0 -0
- package/dist/{chunk-TYULCCA6.mjs → chunk-MZKSWYSM.mjs} +247 -101
- package/dist/chunk-MZKSWYSM.mjs.br +0 -0
- package/dist/chunk-MZKSWYSM.mjs.gz +0 -0
- package/dist/{chunk-HOKZJLT5.js → chunk-QJ4X7Y7S.js} +258 -248
- package/dist/chunk-QJ4X7Y7S.js.br +0 -0
- package/dist/chunk-QJ4X7Y7S.js.gz +0 -0
- package/dist/{chunk-2LNWGZPT.js → chunk-WM7LBTSB.js} +1546 -1400
- package/dist/chunk-WM7LBTSB.js.br +0 -0
- package/dist/chunk-WM7LBTSB.js.gz +0 -0
- package/dist/i18n/de.cjs +321 -50
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +321 -50
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +326 -55
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +326 -55
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +338 -67
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +338 -67
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +330 -59
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +330 -59
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.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.d.ts +19 -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 +3 -3
- package/dist/AiChatPanel-5O6PHRSH.mjs.br +0 -0
- package/dist/AiChatPanel-5O6PHRSH.mjs.gz +0 -0
- package/dist/AiChatPanel-FNHDAKPB.js.br +0 -0
- package/dist/AiChatPanel-FNHDAKPB.js.gz +0 -0
- package/dist/chunk-2LNWGZPT.js.br +0 -0
- package/dist/chunk-2LNWGZPT.js.gz +0 -0
- package/dist/chunk-43TOUP5U.js.br +0 -0
- package/dist/chunk-43TOUP5U.js.gz +0 -0
- package/dist/chunk-5XBS7MCX.mjs.br +0 -0
- package/dist/chunk-5XBS7MCX.mjs.gz +0 -0
- package/dist/chunk-HOKZJLT5.js.br +0 -0
- package/dist/chunk-HOKZJLT5.js.gz +0 -0
- package/dist/chunk-TYULCCA6.mjs.br +0 -0
- package/dist/chunk-TYULCCA6.mjs.gz +0 -0
- package/dist/chunk-UC2VQORY.mjs.br +0 -0
- package/dist/chunk-UC2VQORY.mjs.gz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3PKYNJJG_js = require('./chunk-3PKYNJJG.js');
|
|
4
4
|
var pptx = require('ooxml-ui/pptx');
|
|
5
5
|
var React17 = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -684,9 +684,9 @@ function serializeHistoryDocument(snapshot) {
|
|
|
684
684
|
}
|
|
685
685
|
function recordExplicitSlideUpdate(past, future, previous, before, label, maxDepth) {
|
|
686
686
|
if (previous && serializeHistoryDocument(previous) !== serializeHistoryDocument(before)) {
|
|
687
|
-
past.push(
|
|
687
|
+
past.push(chunk3PKYNJJG_js.cloneHistorySnapshot(previous));
|
|
688
688
|
}
|
|
689
|
-
past.push({ ...
|
|
689
|
+
past.push({ ...chunk3PKYNJJG_js.cloneHistorySnapshot(before), actionLabel: label });
|
|
690
690
|
while (past.length > Math.max(1, maxDepth)) {
|
|
691
691
|
past.shift();
|
|
692
692
|
}
|
|
@@ -752,6 +752,7 @@ function useEditorHistory(input) {
|
|
|
752
752
|
const lastHistorySerializedRef = React17.useRef("");
|
|
753
753
|
const lastCheapHashRef = React17.useRef("");
|
|
754
754
|
const isApplyingHistoryRef = React17.useRef(false);
|
|
755
|
+
const trackingHeldRef = React17.useRef(false);
|
|
755
756
|
const unlockHistoryTimerRef = React17.useRef(null);
|
|
756
757
|
const [canUndo, setCanUndo] = React17.useState(false);
|
|
757
758
|
const [canRedo, setCanRedo] = React17.useState(false);
|
|
@@ -775,8 +776,8 @@ function useEditorHistory(input) {
|
|
|
775
776
|
width: canvasSize.width,
|
|
776
777
|
height: canvasSize.height,
|
|
777
778
|
activeSlideIndex,
|
|
778
|
-
slides: slides.map(
|
|
779
|
-
templateElementsBySlideId:
|
|
779
|
+
slides: slides.map(chunk3PKYNJJG_js.cloneSlide),
|
|
780
|
+
templateElementsBySlideId: chunk3PKYNJJG_js.cloneTemplateElementsBySlideId(templateElementsBySlideId),
|
|
780
781
|
...actionLabel ? { actionLabel } : {}
|
|
781
782
|
};
|
|
782
783
|
},
|
|
@@ -789,9 +790,9 @@ function useEditorHistory(input) {
|
|
|
789
790
|
width: snapshot.width,
|
|
790
791
|
height: snapshot.height
|
|
791
792
|
});
|
|
792
|
-
setSlides(snapshot.slides.map(
|
|
793
|
+
setSlides(snapshot.slides.map(chunk3PKYNJJG_js.cloneSlide));
|
|
793
794
|
setTemplateElementsBySlideId(
|
|
794
|
-
|
|
795
|
+
chunk3PKYNJJG_js.cloneTemplateElementsBySlideId(snapshot.templateElementsBySlideId)
|
|
795
796
|
);
|
|
796
797
|
setActiveSlideIndex(Math.min(snapshot.activeSlideIndex, maxSlideIndex));
|
|
797
798
|
setSelectedElementIds([]);
|
|
@@ -830,8 +831,8 @@ function useEditorHistory(input) {
|
|
|
830
831
|
const currentSnapshot = buildHistorySnapshot(previousSnapshot.actionLabel);
|
|
831
832
|
historyFutureRef.current.push(currentSnapshot);
|
|
832
833
|
isApplyingHistoryRef.current = true;
|
|
833
|
-
const nextSnapshot =
|
|
834
|
-
lastHistorySnapshotRef.current =
|
|
834
|
+
const nextSnapshot = chunk3PKYNJJG_js.cloneHistorySnapshot(previousSnapshot);
|
|
835
|
+
lastHistorySnapshotRef.current = chunk3PKYNJJG_js.cloneHistorySnapshot(nextSnapshot);
|
|
835
836
|
lastHistorySerializedRef.current = serializeHistoryDocument(nextSnapshot);
|
|
836
837
|
applyHistorySnapshot(nextSnapshot);
|
|
837
838
|
updateHistoryAvailability();
|
|
@@ -852,8 +853,8 @@ function useEditorHistory(input) {
|
|
|
852
853
|
const currentSnapshot = buildHistorySnapshot(nextSnapshot.actionLabel);
|
|
853
854
|
historyPastRef.current.push(currentSnapshot);
|
|
854
855
|
isApplyingHistoryRef.current = true;
|
|
855
|
-
const targetSnapshot =
|
|
856
|
-
lastHistorySnapshotRef.current =
|
|
856
|
+
const targetSnapshot = chunk3PKYNJJG_js.cloneHistorySnapshot(nextSnapshot);
|
|
857
|
+
lastHistorySnapshotRef.current = chunk3PKYNJJG_js.cloneHistorySnapshot(targetSnapshot);
|
|
857
858
|
lastHistorySerializedRef.current = serializeHistoryDocument(targetSnapshot);
|
|
858
859
|
applyHistorySnapshot(targetSnapshot);
|
|
859
860
|
updateHistoryAvailability();
|
|
@@ -871,7 +872,7 @@ function useEditorHistory(input) {
|
|
|
871
872
|
historyPastRef.current = [];
|
|
872
873
|
historyFutureRef.current = [];
|
|
873
874
|
if (initialSnapshot) {
|
|
874
|
-
const clonedInitial =
|
|
875
|
+
const clonedInitial = chunk3PKYNJJG_js.cloneHistorySnapshot(initialSnapshot);
|
|
875
876
|
lastHistorySnapshotRef.current = clonedInitial;
|
|
876
877
|
lastHistorySerializedRef.current = serializeHistoryDocument(clonedInitial);
|
|
877
878
|
} else {
|
|
@@ -894,7 +895,7 @@ function useEditorHistory(input) {
|
|
|
894
895
|
if (loading || error) {
|
|
895
896
|
return;
|
|
896
897
|
}
|
|
897
|
-
if (isApplyingHistoryRef.current) {
|
|
898
|
+
if (isApplyingHistoryRef.current || trackingHeldRef.current) {
|
|
898
899
|
return;
|
|
899
900
|
}
|
|
900
901
|
if (hasActivePointerInteraction()) {
|
|
@@ -953,8 +954,8 @@ function useEditorHistory(input) {
|
|
|
953
954
|
updateHistoryAvailability
|
|
954
955
|
]);
|
|
955
956
|
const commitSlides = (nextSlides, label, beforeSlides = slides) => {
|
|
956
|
-
const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(
|
|
957
|
-
const after = { ...before, slides: nextSlides.map(
|
|
957
|
+
const before = { ...buildHistorySnapshot(), slides: beforeSlides.map(chunk3PKYNJJG_js.cloneSlide) };
|
|
958
|
+
const after = { ...before, slides: nextSlides.map(chunk3PKYNJJG_js.cloneSlide) };
|
|
958
959
|
recordExplicitSlideUpdate(
|
|
959
960
|
historyPastRef.current,
|
|
960
961
|
historyFutureRef.current,
|
|
@@ -963,15 +964,19 @@ function useEditorHistory(input) {
|
|
|
963
964
|
label,
|
|
964
965
|
maxHistoryEntries
|
|
965
966
|
);
|
|
966
|
-
lastHistorySnapshotRef.current =
|
|
967
|
+
lastHistorySnapshotRef.current = chunk3PKYNJJG_js.cloneHistorySnapshot(after);
|
|
967
968
|
lastHistorySerializedRef.current = serializeHistoryDocument(after);
|
|
968
969
|
isApplyingHistoryRef.current = false;
|
|
969
970
|
setSlides(nextSlides);
|
|
970
971
|
onDirtyRef.current?.();
|
|
971
972
|
updateHistoryAvailability();
|
|
972
973
|
};
|
|
974
|
+
const holdTracking = React17.useCallback((held) => {
|
|
975
|
+
trackingHeldRef.current = held;
|
|
976
|
+
}, []);
|
|
973
977
|
return {
|
|
974
978
|
commitSlides,
|
|
979
|
+
holdTracking,
|
|
975
980
|
canUndo,
|
|
976
981
|
canRedo,
|
|
977
982
|
undoLabel,
|
|
@@ -1146,22 +1151,22 @@ function useZoomViewport({
|
|
|
1146
1151
|
selectedElements.forEach((element) => {
|
|
1147
1152
|
minX = Math.min(minX, element.x);
|
|
1148
1153
|
minY = Math.min(minY, element.y);
|
|
1149
|
-
maxX = Math.max(maxX, element.x + Math.max(element.width,
|
|
1150
|
-
maxY = Math.max(maxY, element.y + Math.max(element.height,
|
|
1154
|
+
maxX = Math.max(maxX, element.x + Math.max(element.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE));
|
|
1155
|
+
maxY = Math.max(maxY, element.y + Math.max(element.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE));
|
|
1151
1156
|
});
|
|
1152
1157
|
if (!Number.isFinite(minX) || !Number.isFinite(minY) || !Number.isFinite(maxX) || !Number.isFinite(maxY)) {
|
|
1153
1158
|
return;
|
|
1154
1159
|
}
|
|
1155
1160
|
const selectionBounds = { minX, minY, maxX, maxY };
|
|
1156
|
-
const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX,
|
|
1157
|
-
const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY,
|
|
1161
|
+
const boundsWidth = Math.max(selectionBounds.maxX - selectionBounds.minX, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
|
|
1162
|
+
const boundsHeight = Math.max(selectionBounds.maxY - selectionBounds.minY, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
|
|
1158
1163
|
const availableWidth = Math.max(
|
|
1159
|
-
effectiveEditorDimensions.width -
|
|
1160
|
-
|
|
1164
|
+
effectiveEditorDimensions.width - chunk3PKYNJJG_js.ZOOM_TO_SELECTION_PADDING,
|
|
1165
|
+
chunk3PKYNJJG_js.MIN_ELEMENT_SIZE
|
|
1161
1166
|
);
|
|
1162
1167
|
const availableHeight = Math.max(
|
|
1163
|
-
effectiveEditorDimensions.height -
|
|
1164
|
-
|
|
1168
|
+
effectiveEditorDimensions.height - chunk3PKYNJJG_js.ZOOM_TO_SELECTION_PADDING,
|
|
1169
|
+
chunk3PKYNJJG_js.MIN_ELEMENT_SIZE
|
|
1165
1170
|
);
|
|
1166
1171
|
const targetEditorScale = Math.min(
|
|
1167
1172
|
availableWidth / boundsWidth,
|
|
@@ -4128,8 +4133,8 @@ function useViewerCoreState(_input) {
|
|
|
4128
4133
|
const { slides, setSlides, slidesRef } = useSlideState();
|
|
4129
4134
|
const [templateElementsBySlideId, setTemplateElementsBySlideId] = React17.useState({});
|
|
4130
4135
|
const [canvasSize, setCanvasSize] = React17.useState({
|
|
4131
|
-
width:
|
|
4132
|
-
height:
|
|
4136
|
+
width: chunk3PKYNJJG_js.DEFAULT_CANVAS_WIDTH,
|
|
4137
|
+
height: chunk3PKYNJJG_js.DEFAULT_CANVAS_HEIGHT
|
|
4133
4138
|
});
|
|
4134
4139
|
const [slideSizeEmu, setSlideSizeEmu] = React17.useState();
|
|
4135
4140
|
const [activeSlideIndex, setActiveSlideIndex] = React17.useState(0);
|
|
@@ -4160,6 +4165,7 @@ function useViewerCoreState(_input) {
|
|
|
4160
4165
|
const [modernCommentAuthors, setModernCommentAuthors] = React17.useState([]);
|
|
4161
4166
|
const [recentColors, setRecentColors] = React17.useState([]);
|
|
4162
4167
|
const [theme, setTheme] = React17.useState();
|
|
4168
|
+
const deckStyleHeldRef = React17.useRef(void 0);
|
|
4163
4169
|
const [tableStyleMap, setTableStyleMap] = React17.useState();
|
|
4164
4170
|
const [tableStylesDefaultId, setTableStylesDefaultId] = React17.useState();
|
|
4165
4171
|
const [tableStylesToDelete, setTableStylesToDelete] = React17.useState([]);
|
|
@@ -4257,6 +4263,7 @@ function useViewerCoreState(_input) {
|
|
|
4257
4263
|
recentColors,
|
|
4258
4264
|
setRecentColors,
|
|
4259
4265
|
theme,
|
|
4266
|
+
deckStyleHeldRef,
|
|
4260
4267
|
setTheme,
|
|
4261
4268
|
tableStyleMap,
|
|
4262
4269
|
setTableStyleMap,
|
|
@@ -4515,7 +4522,7 @@ function useLoadContent({
|
|
|
4515
4522
|
}
|
|
4516
4523
|
let cancelled = false;
|
|
4517
4524
|
const token = ++renderTokenRef.current;
|
|
4518
|
-
const handler = new
|
|
4525
|
+
const handler = new chunk3PKYNJJG_js.dist_exports.PptxHandler();
|
|
4519
4526
|
const resources = pptx.createPresentationLoadResources(handler);
|
|
4520
4527
|
const loadBlobUrls = resources.blobUrls;
|
|
4521
4528
|
(async () => {
|
|
@@ -4600,12 +4607,12 @@ function useLoadContent({
|
|
|
4600
4607
|
}
|
|
4601
4608
|
resources.commit();
|
|
4602
4609
|
handlerRef.current = handler;
|
|
4603
|
-
const partition =
|
|
4610
|
+
const partition = chunk3PKYNJJG_js.partitionTemplateElements(nextSlides);
|
|
4604
4611
|
setSlides(partition.slides);
|
|
4605
4612
|
setTemplateElementsBySlideId(partition.templateElementsBySlideId);
|
|
4606
4613
|
setCanvasSize({
|
|
4607
|
-
width: parsed.width ??
|
|
4608
|
-
height: parsed.height ??
|
|
4614
|
+
width: parsed.width ?? chunk3PKYNJJG_js.DEFAULT_CANVAS_WIDTH,
|
|
4615
|
+
height: parsed.height ?? chunk3PKYNJJG_js.DEFAULT_CANVAS_HEIGHT
|
|
4609
4616
|
});
|
|
4610
4617
|
setSlideSizeEmu(
|
|
4611
4618
|
typeof parsed.widthEmu === "number" && typeof parsed.heightEmu === "number" && parsed.widthEmu > 0 && parsed.heightEmu > 0 ? {
|
|
@@ -4669,7 +4676,7 @@ function useLoadContent({
|
|
|
4669
4676
|
onContentApplied?.();
|
|
4670
4677
|
} catch (err) {
|
|
4671
4678
|
if (!cancelled && token === renderTokenRef.current) {
|
|
4672
|
-
if (err instanceof
|
|
4679
|
+
if (err instanceof chunk3PKYNJJG_js.dist_exports.EncryptedFileError) {
|
|
4673
4680
|
setIsEncrypted(true);
|
|
4674
4681
|
} else {
|
|
4675
4682
|
console.error("[pptx] Failed to load presentation content:", err);
|
|
@@ -4794,7 +4801,7 @@ function useTextElementOperations(input) {
|
|
|
4794
4801
|
updateSelectedElement
|
|
4795
4802
|
} = input;
|
|
4796
4803
|
const liveTextSegments = React17.useCallback(() => {
|
|
4797
|
-
if (!selectedElement || !(0,
|
|
4804
|
+
if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
4798
4805
|
return void 0;
|
|
4799
4806
|
}
|
|
4800
4807
|
if (selectedElement.id !== inlineEditingElementId) {
|
|
@@ -4812,7 +4819,7 @@ function useTextElementOperations(input) {
|
|
|
4812
4819
|
}, [selectedElement, inlineEditingElementId, inlineEditingText, inlineEditingSnapshotRef]);
|
|
4813
4820
|
const updateSelectedTextStyle = React17.useCallback(
|
|
4814
4821
|
(updates) => {
|
|
4815
|
-
if (!selectedElement || !(0,
|
|
4822
|
+
if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
4816
4823
|
return;
|
|
4817
4824
|
}
|
|
4818
4825
|
const isLiveEditing = selectedElement.id === inlineEditingElementId;
|
|
@@ -4890,7 +4897,7 @@ function useTextElementOperations(input) {
|
|
|
4890
4897
|
);
|
|
4891
4898
|
const toggleSelectedBullets = React17.useCallback(
|
|
4892
4899
|
(kind) => {
|
|
4893
|
-
if (!selectedElement || !(0,
|
|
4900
|
+
if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
4894
4901
|
return;
|
|
4895
4902
|
}
|
|
4896
4903
|
const currentSegments = liveTextSegments();
|
|
@@ -4941,7 +4948,7 @@ function useTextElementOperations(input) {
|
|
|
4941
4948
|
);
|
|
4942
4949
|
const updateSelectedTextCase = React17.useCallback(
|
|
4943
4950
|
(mode) => {
|
|
4944
|
-
if (!selectedElement || !(0,
|
|
4951
|
+
if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
4945
4952
|
return;
|
|
4946
4953
|
}
|
|
4947
4954
|
const isLiveEditing = selectedElement.id === inlineEditingElementId;
|
|
@@ -5057,7 +5064,7 @@ function useElementOperations(input) {
|
|
|
5057
5064
|
);
|
|
5058
5065
|
return;
|
|
5059
5066
|
}
|
|
5060
|
-
if (
|
|
5067
|
+
if (chunk3PKYNJJG_js.isTemplateElementId(elementId)) {
|
|
5061
5068
|
const slideId = activeSlide?.id;
|
|
5062
5069
|
if (slideId) {
|
|
5063
5070
|
setTemplateElementsBySlideId((prev) => ({
|
|
@@ -5093,7 +5100,7 @@ function useElementOperations(input) {
|
|
|
5093
5100
|
);
|
|
5094
5101
|
const updateSelectedShapeStyle = React17.useCallback(
|
|
5095
5102
|
(updates) => {
|
|
5096
|
-
if (!selectedElement || !(0,
|
|
5103
|
+
if (!selectedElement || !(0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(selectedElement)) {
|
|
5097
5104
|
return;
|
|
5098
5105
|
}
|
|
5099
5106
|
updateSelectedElement({
|
|
@@ -5297,15 +5304,15 @@ function syncSelectionHandleOverlay(elementNode, elementId, geometry) {
|
|
|
5297
5304
|
// src/viewer/hooks/pointer-move-handlers.ts
|
|
5298
5305
|
function computeResizeGeometry(handle, startX, startY, startWidth, startHeight, dx, dy, snapToGrid, gridSpacingPx, lockAspect = false) {
|
|
5299
5306
|
const startBox = { x: startX, y: startY, width: startWidth, height: startHeight };
|
|
5300
|
-
let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize:
|
|
5307
|
+
let resized = pptx.applyResize(startBox, handle, dx, dy, 1, { minSize: chunk3PKYNJJG_js.MIN_ELEMENT_SIZE });
|
|
5301
5308
|
if (lockAspect) {
|
|
5302
|
-
resized = pptx.lockResizeAspect(resized, startBox, handle,
|
|
5309
|
+
resized = pptx.lockResizeAspect(resized, startBox, handle, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
|
|
5303
5310
|
}
|
|
5304
5311
|
const box = { x: resized.x, y: resized.y, width: resized.width, height: resized.height };
|
|
5305
5312
|
if (!snapToGrid) {
|
|
5306
5313
|
return box;
|
|
5307
5314
|
}
|
|
5308
|
-
return pptx.snapBoxToGrid(box, handle, gridSpacingPx,
|
|
5315
|
+
return pptx.snapBoxToGrid(box, handle, gridSpacingPx, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
|
|
5309
5316
|
}
|
|
5310
5317
|
function resolveLiveTarget(input) {
|
|
5311
5318
|
const { livePatcher, editTemplateMode, activeSlide } = input;
|
|
@@ -5418,7 +5425,7 @@ function processDragMove(e, drag, editorScale, snapToGrid, snapToShape, gridSpac
|
|
|
5418
5425
|
width: el.width,
|
|
5419
5426
|
height: el.height
|
|
5420
5427
|
}));
|
|
5421
|
-
const snapResult =
|
|
5428
|
+
const snapResult = chunk3PKYNJJG_js.computeSnapToShape(
|
|
5422
5429
|
targetX,
|
|
5423
5430
|
targetY,
|
|
5424
5431
|
primaryEl.width,
|
|
@@ -5492,8 +5499,8 @@ function processResizeMove(e, rs, editorScale, snapToGrid, gridSpacingPx, live)
|
|
|
5492
5499
|
rs.lastY = geo.y;
|
|
5493
5500
|
rs.lastWidth = geo.width;
|
|
5494
5501
|
rs.lastHeight = geo.height;
|
|
5495
|
-
const width = Math.max(geo.width,
|
|
5496
|
-
const height = Math.max(geo.height,
|
|
5502
|
+
const width = Math.max(geo.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
|
|
5503
|
+
const height = Math.max(geo.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE);
|
|
5497
5504
|
if (rs.domEl) {
|
|
5498
5505
|
rs.domEl.style.left = `${geo.x}px`;
|
|
5499
5506
|
rs.domEl.style.top = `${geo.y}px`;
|
|
@@ -5586,13 +5593,13 @@ function processPointerUp(input) {
|
|
|
5586
5593
|
if (i !== activeSlideIndex) {
|
|
5587
5594
|
return s;
|
|
5588
5595
|
}
|
|
5589
|
-
const rerouted =
|
|
5596
|
+
const rerouted = chunk3PKYNJJG_js.rerouteConnectorsForMovedElements(s.elements, movedIds);
|
|
5590
5597
|
if (rerouted.length === 0) {
|
|
5591
5598
|
return s;
|
|
5592
5599
|
}
|
|
5593
5600
|
return {
|
|
5594
5601
|
...s,
|
|
5595
|
-
elements:
|
|
5602
|
+
elements: chunk3PKYNJJG_js.applyReroutedConnectors(s.elements, rerouted)
|
|
5596
5603
|
};
|
|
5597
5604
|
})
|
|
5598
5605
|
);
|
|
@@ -5644,8 +5651,8 @@ function commitDrag(drag, editTemplateMode, activeSlide, activeSlideIndex, setTe
|
|
|
5644
5651
|
}
|
|
5645
5652
|
return { ...el, x: start.x + dx, y: start.y + dy };
|
|
5646
5653
|
});
|
|
5647
|
-
const rerouted =
|
|
5648
|
-
return
|
|
5654
|
+
const rerouted = chunk3PKYNJJG_js.rerouteConnectorsForMovedElements(movedElements, movedIds);
|
|
5655
|
+
return chunk3PKYNJJG_js.applyReroutedConnectors(movedElements, rerouted);
|
|
5649
5656
|
};
|
|
5650
5657
|
if (editTemplateMode) {
|
|
5651
5658
|
const slideId = activeSlide?.id;
|
|
@@ -5833,7 +5840,7 @@ function useCanvasInteractions(input) {
|
|
|
5833
5840
|
return;
|
|
5834
5841
|
}
|
|
5835
5842
|
const el = elementLookup.get(editId);
|
|
5836
|
-
if (el && (0,
|
|
5843
|
+
if (el && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el)) {
|
|
5837
5844
|
const reader = inlineEditingReaderRef?.current;
|
|
5838
5845
|
const read = reader?.elementId === editId ? reader.read() : void 0;
|
|
5839
5846
|
if (read?.kind === "unsupported") {
|
|
@@ -5880,7 +5887,7 @@ function useCanvasInteractions(input) {
|
|
|
5880
5887
|
wasEditable.current = canEdit;
|
|
5881
5888
|
}, [canEdit]);
|
|
5882
5889
|
const openEquationEditorForElement = (el) => {
|
|
5883
|
-
if (!(0,
|
|
5890
|
+
if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el)) {
|
|
5884
5891
|
return false;
|
|
5885
5892
|
}
|
|
5886
5893
|
const eqSeg = el.textSegments?.find((seg) => seg.equationXml);
|
|
@@ -5913,7 +5920,7 @@ function useCanvasInteractions(input) {
|
|
|
5913
5920
|
justInteractedRef.current = false;
|
|
5914
5921
|
} else {
|
|
5915
5922
|
const el = elementLookup.get(elementId);
|
|
5916
|
-
if (el && (0,
|
|
5923
|
+
if (el && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
|
|
5917
5924
|
if (!openEquationEditorForElement(el)) {
|
|
5918
5925
|
pptx.setPendingCaretPoint(e);
|
|
5919
5926
|
setInlineEditingElementId(elementId);
|
|
@@ -5939,7 +5946,7 @@ function useCanvasInteractions(input) {
|
|
|
5939
5946
|
if (openEquationEditorForElement(el)) {
|
|
5940
5947
|
return;
|
|
5941
5948
|
}
|
|
5942
|
-
if ((0,
|
|
5949
|
+
if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) && pptx.canInteractWithElement(el, "textEdit")) {
|
|
5943
5950
|
setInlineEditingElementId(elementId);
|
|
5944
5951
|
setInlineEditingText(el.text ?? "");
|
|
5945
5952
|
}
|
|
@@ -6404,7 +6411,7 @@ function createStructuredElementHandlers(deps) {
|
|
|
6404
6411
|
return;
|
|
6405
6412
|
}
|
|
6406
6413
|
const resolved = resolveHyperlinkEditResult(data);
|
|
6407
|
-
if (resolved.url && !
|
|
6414
|
+
if (resolved.url && !chunk3PKYNJJG_js.isUrlSafe(resolved.url)) {
|
|
6408
6415
|
return;
|
|
6409
6416
|
}
|
|
6410
6417
|
const actionClick = {
|
|
@@ -6450,11 +6457,11 @@ function createStructuredElementHandlers(deps) {
|
|
|
6450
6457
|
if (!activeSlide) {
|
|
6451
6458
|
return;
|
|
6452
6459
|
}
|
|
6453
|
-
const preset =
|
|
6460
|
+
const preset = chunk3PKYNJJG_js.ACTION_BUTTON_PRESETS.find((p) => p.shapeType === shapeType);
|
|
6454
6461
|
if (!preset) {
|
|
6455
6462
|
return;
|
|
6456
6463
|
}
|
|
6457
|
-
const defaultPptxAction = (0,
|
|
6464
|
+
const defaultPptxAction = (0, chunk3PKYNJJG_js.dist_exports.elementActionToPptxAction)({
|
|
6458
6465
|
trigger: "click",
|
|
6459
6466
|
type: preset.defaultAction
|
|
6460
6467
|
});
|
|
@@ -6537,7 +6544,7 @@ function useInsertElements(input) {
|
|
|
6537
6544
|
width: 300,
|
|
6538
6545
|
height: 60,
|
|
6539
6546
|
text: "",
|
|
6540
|
-
textStyle: { fontSize:
|
|
6547
|
+
textStyle: { fontSize: chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE }
|
|
6541
6548
|
});
|
|
6542
6549
|
};
|
|
6543
6550
|
const handleAddShape = () => {
|
|
@@ -6559,7 +6566,7 @@ function useInsertElements(input) {
|
|
|
6559
6566
|
}
|
|
6560
6567
|
});
|
|
6561
6568
|
};
|
|
6562
|
-
const handleAddTable = (rows =
|
|
6569
|
+
const handleAddTable = (rows = chunk3PKYNJJG_js.DEFAULT_TABLE_ROWS, columns = chunk3PKYNJJG_js.DEFAULT_TABLE_COLUMNS) => {
|
|
6563
6570
|
if (!activeSlide) {
|
|
6564
6571
|
return;
|
|
6565
6572
|
}
|
|
@@ -6733,7 +6740,7 @@ function useGroupAlignLayerHandlers(input) {
|
|
|
6733
6740
|
history
|
|
6734
6741
|
} = input;
|
|
6735
6742
|
const updateElementsOwning = (elementId, updater) => {
|
|
6736
|
-
if (editTemplateMode && !
|
|
6743
|
+
if (editTemplateMode && !chunk3PKYNJJG_js.isTemplateElementId(elementId)) {
|
|
6737
6744
|
ops.updateSlides(
|
|
6738
6745
|
(prev) => prev.map(
|
|
6739
6746
|
(slide, index) => index === activeSlideIndex ? { ...slide, elements: updater(slide.elements) } : slide
|
|
@@ -6767,9 +6774,9 @@ function useGroupAlignLayerHandlers(input) {
|
|
|
6767
6774
|
return;
|
|
6768
6775
|
}
|
|
6769
6776
|
const group = selectedElement;
|
|
6770
|
-
const intoTemplate =
|
|
6777
|
+
const intoTemplate = chunk3PKYNJJG_js.isTemplateElementId(group.id);
|
|
6771
6778
|
const childIds = group.children.map(
|
|
6772
|
-
(child) => intoTemplate ?
|
|
6779
|
+
(child) => intoTemplate ? chunk3PKYNJJG_js.makeCloneId(true, child.id || group.id) : child.id || pptx.generateElementId()
|
|
6773
6780
|
);
|
|
6774
6781
|
const { elements, childIds: usedIds } = pptx.ungroupElements(
|
|
6775
6782
|
ops.activeElements,
|
|
@@ -7101,7 +7108,7 @@ function useSlideManagement(input) {
|
|
|
7101
7108
|
if (!src) {
|
|
7102
7109
|
continue;
|
|
7103
7110
|
}
|
|
7104
|
-
const clone = { ...(0,
|
|
7111
|
+
const clone = { ...(0, chunk3PKYNJJG_js.dist_exports.duplicateSlide)(src, next.length + 1), id: pptx.makeSlideId() };
|
|
7105
7112
|
next.splice(i + offset + 1, 0, clone);
|
|
7106
7113
|
offset++;
|
|
7107
7114
|
}
|
|
@@ -7205,7 +7212,7 @@ function createTableMergeHandlers(input) {
|
|
|
7205
7212
|
if (!nextCell || nextCell.hMerge || nextCell.vMerge) {
|
|
7206
7213
|
return;
|
|
7207
7214
|
}
|
|
7208
|
-
const newTableData =
|
|
7215
|
+
const newTableData = chunk3PKYNJJG_js.mergeCells(
|
|
7209
7216
|
[
|
|
7210
7217
|
{ row: rowIndex, col: columnIndex },
|
|
7211
7218
|
{ row: rowIndex, col: nextColIdx }
|
|
@@ -7213,7 +7220,7 @@ function createTableMergeHandlers(input) {
|
|
|
7213
7220
|
td
|
|
7214
7221
|
);
|
|
7215
7222
|
const updates = { tableData: newTableData };
|
|
7216
|
-
const newRawXml = (0,
|
|
7223
|
+
const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
|
|
7217
7224
|
if (newRawXml) {
|
|
7218
7225
|
updates.rawXml = newRawXml;
|
|
7219
7226
|
}
|
|
@@ -7239,7 +7246,7 @@ function createTableMergeHandlers(input) {
|
|
|
7239
7246
|
if (!targetNextCell || targetNextCell.hMerge || targetNextCell.vMerge) {
|
|
7240
7247
|
return;
|
|
7241
7248
|
}
|
|
7242
|
-
const newTableData =
|
|
7249
|
+
const newTableData = chunk3PKYNJJG_js.mergeCells(
|
|
7243
7250
|
[
|
|
7244
7251
|
{ row: rowIndex, col: columnIndex },
|
|
7245
7252
|
{ row: targetNextRowIdx, col: columnIndex }
|
|
@@ -7247,7 +7254,7 @@ function createTableMergeHandlers(input) {
|
|
|
7247
7254
|
td
|
|
7248
7255
|
);
|
|
7249
7256
|
const updates = { tableData: newTableData };
|
|
7250
|
-
const newRawXml = (0,
|
|
7257
|
+
const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
|
|
7251
7258
|
if (newRawXml) {
|
|
7252
7259
|
updates.rawXml = newRawXml;
|
|
7253
7260
|
}
|
|
@@ -7262,9 +7269,9 @@ function createTableMergeHandlers(input) {
|
|
|
7262
7269
|
return;
|
|
7263
7270
|
}
|
|
7264
7271
|
const td = selectedElement.tableData;
|
|
7265
|
-
const newTableData =
|
|
7272
|
+
const newTableData = chunk3PKYNJJG_js.mergeCells(ts.selectedCells, td);
|
|
7266
7273
|
const updates = { tableData: newTableData };
|
|
7267
|
-
const newRawXml = (0,
|
|
7274
|
+
const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
|
|
7268
7275
|
if (newRawXml) {
|
|
7269
7276
|
updates.rawXml = newRawXml;
|
|
7270
7277
|
}
|
|
@@ -7281,9 +7288,9 @@ function createTableMergeHandlers(input) {
|
|
|
7281
7288
|
}
|
|
7282
7289
|
const { rowIndex, columnIndex } = ts;
|
|
7283
7290
|
const td = selectedElement.tableData;
|
|
7284
|
-
const newTableData =
|
|
7291
|
+
const newTableData = chunk3PKYNJJG_js.splitCell(rowIndex, columnIndex, td);
|
|
7285
7292
|
const updates = { tableData: newTableData };
|
|
7286
|
-
const newRawXml = (0,
|
|
7293
|
+
const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateMergeAttrsInRawXml)(selectedElement, newTableData);
|
|
7287
7294
|
if (newRawXml) {
|
|
7288
7295
|
updates.rawXml = newRawXml;
|
|
7289
7296
|
}
|
|
@@ -7318,7 +7325,7 @@ function createTableStructHandlers(input) {
|
|
|
7318
7325
|
updates.tableData = pptx.setCellText(el, rowIndex, colIndex, text).tableData;
|
|
7319
7326
|
}
|
|
7320
7327
|
if (el.rawXml) {
|
|
7321
|
-
const newRawXml = (0,
|
|
7328
|
+
const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateCellTextInRawXml)(el, rowIndex, colIndex, text);
|
|
7322
7329
|
if (newRawXml) {
|
|
7323
7330
|
updates.rawXml = newRawXml;
|
|
7324
7331
|
}
|
|
@@ -7342,7 +7349,7 @@ function createTableStructHandlers(input) {
|
|
|
7342
7349
|
const { rowIndex, columnIndex: colIndex } = ts;
|
|
7343
7350
|
const updates = {};
|
|
7344
7351
|
if (selectedElement.rawXml) {
|
|
7345
|
-
const newRawXml = (0,
|
|
7352
|
+
const newRawXml = (0, chunk3PKYNJJG_js.dist_exports.updateCellTextStyleInRawXml)(
|
|
7346
7353
|
selectedElement,
|
|
7347
7354
|
rowIndex,
|
|
7348
7355
|
colIndex,
|
|
@@ -7509,7 +7516,7 @@ function useExportSaveAs(input) {
|
|
|
7509
7516
|
const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
|
|
7510
7517
|
const slideSize = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
|
|
7511
7518
|
const data = {
|
|
7512
|
-
slides:
|
|
7519
|
+
slides: chunk3PKYNJJG_js.buildSaveSlides(slides, templateElementsBySlideId),
|
|
7513
7520
|
width: canvasSize.width,
|
|
7514
7521
|
height: canvasSize.height,
|
|
7515
7522
|
widthEmu: slideSize.widthEmu,
|
|
@@ -7667,7 +7674,7 @@ async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActi
|
|
|
7667
7674
|
}
|
|
7668
7675
|
function tilesToPdfPage(tilesResult) {
|
|
7669
7676
|
return tilesResult.tiles.map((tile) => ({
|
|
7670
|
-
image:
|
|
7677
|
+
image: chunk3PKYNJJG_js.canvasToJpegData(tile.canvas),
|
|
7671
7678
|
placement: pptx.placeTileOnPage(
|
|
7672
7679
|
tile,
|
|
7673
7680
|
tilesResult.fullWidth,
|
|
@@ -7700,7 +7707,7 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
|
|
|
7700
7707
|
if (pages.length === 0) {
|
|
7701
7708
|
throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesPdf"]);
|
|
7702
7709
|
}
|
|
7703
|
-
const pdfBlobUrl =
|
|
7710
|
+
const pdfBlobUrl = chunk3PKYNJJG_js.buildPdfFromTiledImageData(pages);
|
|
7704
7711
|
pptx.downloadDataUrl(pdfBlobUrl, filename);
|
|
7705
7712
|
}
|
|
7706
7713
|
async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, slideNotes, filename = "presentation-notes.pdf", options = {}) {
|
|
@@ -7730,7 +7737,7 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
|
|
|
7730
7737
|
if (pages.length === 0) {
|
|
7731
7738
|
throw new Error(i18n.translationsEn["pptx.export.errorNoSlidesNotesPdf"]);
|
|
7732
7739
|
}
|
|
7733
|
-
const pdfDataUrl =
|
|
7740
|
+
const pdfDataUrl = chunk3PKYNJJG_js.buildNotesPdf(pages);
|
|
7734
7741
|
pptx.downloadDataUrl(pdfDataUrl, filename);
|
|
7735
7742
|
}
|
|
7736
7743
|
async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
|
|
@@ -7925,7 +7932,7 @@ function exportAllSlidesToSvg(data, options = {}) {
|
|
|
7925
7932
|
continue;
|
|
7926
7933
|
}
|
|
7927
7934
|
onProgress?.(processedCount, data.slides.length);
|
|
7928
|
-
let svg =
|
|
7935
|
+
let svg = chunk3PKYNJJG_js.dist_exports.SvgExporter.exportSlide(slide, data.width, data.height, svgOptions);
|
|
7929
7936
|
if (embedFonts && fontFaces?.length) {
|
|
7930
7937
|
svg = injectFontFaces(svg, fontFaces);
|
|
7931
7938
|
}
|
|
@@ -8514,10 +8521,10 @@ async function applyThemeEditorEdit(input, { colorScheme, fontScheme, name }) {
|
|
|
8514
8521
|
return;
|
|
8515
8522
|
}
|
|
8516
8523
|
await handler.applyTheme(colorScheme, fontScheme, name);
|
|
8517
|
-
const previousMap = theme?.colorScheme ? (0,
|
|
8524
|
+
const previousMap = theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
|
|
8518
8525
|
bumpHistory();
|
|
8519
8526
|
setSlides(
|
|
8520
|
-
(slides) => (0,
|
|
8527
|
+
(slides) => (0, chunk3PKYNJJG_js.dist_exports.applyThemeToData)(
|
|
8521
8528
|
{ slides, theme, themeColorMap: previousMap },
|
|
8522
8529
|
colorScheme,
|
|
8523
8530
|
fontScheme,
|
|
@@ -8528,8 +8535,8 @@ async function applyThemeEditorEdit(input, { colorScheme, fontScheme, name }) {
|
|
|
8528
8535
|
(prev) => Object.fromEntries(
|
|
8529
8536
|
Object.entries(prev).map(([id, elements]) => [
|
|
8530
8537
|
id,
|
|
8531
|
-
(0,
|
|
8532
|
-
(0,
|
|
8538
|
+
(0, chunk3PKYNJJG_js.dist_exports.reResolveElementFonts)(
|
|
8539
|
+
(0, chunk3PKYNJJG_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme),
|
|
8533
8540
|
theme?.fontScheme,
|
|
8534
8541
|
fontScheme
|
|
8535
8542
|
)
|
|
@@ -8587,13 +8594,13 @@ function useThemeHandlers(input) {
|
|
|
8587
8594
|
return;
|
|
8588
8595
|
}
|
|
8589
8596
|
await handler.updateThemeColorScheme(colorScheme);
|
|
8590
|
-
const previousMap = theme?.colorScheme ? (0,
|
|
8591
|
-
setSlides((prev) => (0,
|
|
8597
|
+
const previousMap = theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(theme.colorScheme) : {};
|
|
8598
|
+
setSlides((prev) => (0, chunk3PKYNJJG_js.dist_exports.reResolveSlideColors)(prev, previousMap, colorScheme));
|
|
8592
8599
|
if (Object.keys(templateElementsBySlideId).length > 0) {
|
|
8593
8600
|
setTemplateElementsBySlideId((prev) => {
|
|
8594
8601
|
const next = {};
|
|
8595
8602
|
for (const [slideId, elements] of Object.entries(prev)) {
|
|
8596
|
-
next[slideId] = (0,
|
|
8603
|
+
next[slideId] = (0, chunk3PKYNJJG_js.dist_exports.reResolveElementColors)(elements, previousMap, colorScheme);
|
|
8597
8604
|
}
|
|
8598
8605
|
return next;
|
|
8599
8606
|
});
|
|
@@ -8704,7 +8711,7 @@ function useThemeSwitching(input) {
|
|
|
8704
8711
|
}
|
|
8705
8712
|
try {
|
|
8706
8713
|
await handler.applyTheme(preset.colorScheme, preset.fontScheme, preset.name);
|
|
8707
|
-
const newData = (0,
|
|
8714
|
+
const newData = (0, chunk3PKYNJJG_js.dist_exports.applyThemeToData)(data, preset.colorScheme, preset.fontScheme, preset.name);
|
|
8708
8715
|
onDataChange(newData);
|
|
8709
8716
|
onThemeChanged?.(preset);
|
|
8710
8717
|
} catch (error) {
|
|
@@ -8721,7 +8728,7 @@ function useThemeSwitching(input) {
|
|
|
8721
8728
|
}
|
|
8722
8729
|
try {
|
|
8723
8730
|
await handler.applyTheme(colorScheme, fontScheme ?? {}, themeName);
|
|
8724
|
-
const newData = (0,
|
|
8731
|
+
const newData = (0, chunk3PKYNJJG_js.dist_exports.applyThemeToData)(data, colorScheme, fontScheme, themeName);
|
|
8725
8732
|
onDataChange(newData);
|
|
8726
8733
|
} catch (error) {
|
|
8727
8734
|
console.error("Failed to switch to custom theme:", error);
|
|
@@ -8733,12 +8740,12 @@ function useThemeSwitching(input) {
|
|
|
8733
8740
|
if (!data?.theme?.colorScheme) {
|
|
8734
8741
|
return void 0;
|
|
8735
8742
|
}
|
|
8736
|
-
return
|
|
8737
|
-
(p) => (0,
|
|
8743
|
+
return chunk3PKYNJJG_js.dist_exports.THEME_PRESETS.find(
|
|
8744
|
+
(p) => (0, chunk3PKYNJJG_js.dist_exports.themeColorSchemesEqual)(data.theme?.colorScheme, p.colorScheme)
|
|
8738
8745
|
);
|
|
8739
8746
|
}, [data?.theme?.colorScheme]);
|
|
8740
8747
|
return {
|
|
8741
|
-
presets:
|
|
8748
|
+
presets: chunk3PKYNJJG_js.dist_exports.THEME_PRESETS,
|
|
8742
8749
|
switchToPreset,
|
|
8743
8750
|
switchToCustom,
|
|
8744
8751
|
currentPreset
|
|
@@ -8815,7 +8822,7 @@ function usePropertyHandlers(input) {
|
|
|
8815
8822
|
}
|
|
8816
8823
|
try {
|
|
8817
8824
|
const ab = await file.arrayBuffer();
|
|
8818
|
-
const h = new
|
|
8825
|
+
const h = new chunk3PKYNJJG_js.dist_exports.PptxHandler();
|
|
8819
8826
|
const other = await h.load(ab);
|
|
8820
8827
|
if (!other) {
|
|
8821
8828
|
return;
|
|
@@ -8825,7 +8832,7 @@ function usePropertyHandlers(input) {
|
|
|
8825
8832
|
width: canvasSize.width,
|
|
8826
8833
|
height: canvasSize.height
|
|
8827
8834
|
};
|
|
8828
|
-
setCompareResult(
|
|
8835
|
+
setCompareResult(chunk3PKYNJJG_js.comparePresentation(cur, other));
|
|
8829
8836
|
setIsComparePanelOpen(true);
|
|
8830
8837
|
} catch (err) {
|
|
8831
8838
|
console.warn("Compare failed:", err);
|
|
@@ -9178,7 +9185,7 @@ function useViewerDialogs(input) {
|
|
|
9178
9185
|
};
|
|
9179
9186
|
}
|
|
9180
9187
|
function computeGridSpacingPx(documentGridSpacing) {
|
|
9181
|
-
return pptx.computeGridSpacingPx(documentGridSpacing,
|
|
9188
|
+
return pptx.computeGridSpacingPx(documentGridSpacing, chunk3PKYNJJG_js.GRID_SIZE);
|
|
9182
9189
|
}
|
|
9183
9190
|
function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, presentationProperties) {
|
|
9184
9191
|
const activeShow = activeCustomShowId ? customShows.find((show) => show.id === activeCustomShowId) : void 0;
|
|
@@ -9187,7 +9194,7 @@ function computeVisibleSlideIndexes(slides, activeCustomShowId, customShows, pre
|
|
|
9187
9194
|
}
|
|
9188
9195
|
function computeSlideSectionGroups(slides, sections) {
|
|
9189
9196
|
return pptx.groupSlidesBySection(sections, slides).map((group) => ({
|
|
9190
|
-
id: group.section?.id ?? (sections.length > 0 ?
|
|
9197
|
+
id: group.section?.id ?? (sections.length > 0 ? chunk3PKYNJJG_js.UNGROUPED_SECTION_ID : chunk3PKYNJJG_js.DEFAULT_SECTION_GROUP_ID),
|
|
9191
9198
|
label: group.section?.name ?? (sections.length > 0 ? "Ungrouped Slides" : "Slides"),
|
|
9192
9199
|
slideIndexes: group.slideIndexes,
|
|
9193
9200
|
...group.section?.color !== void 0 ? { color: group.section.color } : {},
|
|
@@ -9232,10 +9239,10 @@ function useDerivedSlideState(input) {
|
|
|
9232
9239
|
);
|
|
9233
9240
|
const slideSectionGroups = React17.useMemo(
|
|
9234
9241
|
() => computeSlideSectionGroups(slides, sections).map((group) => {
|
|
9235
|
-
if (group.id ===
|
|
9242
|
+
if (group.id === chunk3PKYNJJG_js.UNGROUPED_SECTION_ID && group.label === "Ungrouped Slides") {
|
|
9236
9243
|
return { ...group, label: t("pptx.slides.ungroupedSlides") };
|
|
9237
9244
|
}
|
|
9238
|
-
if (group.id ===
|
|
9245
|
+
if (group.id === chunk3PKYNJJG_js.DEFAULT_SECTION_GROUP_ID && group.label === "Slides") {
|
|
9239
9246
|
return { ...group, label: t("pptx.sections.slides") };
|
|
9240
9247
|
}
|
|
9241
9248
|
return group;
|
|
@@ -9342,7 +9349,7 @@ function useAnnotationHandlers(input) {
|
|
|
9342
9349
|
if (nextMode === "present") {
|
|
9343
9350
|
presentation.enterPresentMode();
|
|
9344
9351
|
} else if (mode === "present" && annotations.hasAnyAnnotations) {
|
|
9345
|
-
|
|
9352
|
+
chunk3PKYNJJG_js.stopAllPersistentAudio();
|
|
9346
9353
|
if (promptKeepInkAnnotations) {
|
|
9347
9354
|
pendingModeAfterAnnotationsRef.current = nextMode;
|
|
9348
9355
|
setShowKeepAnnotationsDialog(true);
|
|
@@ -9352,7 +9359,7 @@ function useAnnotationHandlers(input) {
|
|
|
9352
9359
|
}
|
|
9353
9360
|
} else {
|
|
9354
9361
|
if (mode === "present") {
|
|
9355
|
-
|
|
9362
|
+
chunk3PKYNJJG_js.stopAllPersistentAudio();
|
|
9356
9363
|
}
|
|
9357
9364
|
setMode(nextMode);
|
|
9358
9365
|
}
|
|
@@ -9423,7 +9430,7 @@ function overlayPendingInlineEdit(document2, elementId, text, snapshot, transfor
|
|
|
9423
9430
|
(slide) => !elementId ? slide : {
|
|
9424
9431
|
...slide,
|
|
9425
9432
|
elements: slide.elements.map(
|
|
9426
|
-
(element) => element.id === elementId && (0,
|
|
9433
|
+
(element) => element.id === elementId && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) ? {
|
|
9427
9434
|
...element,
|
|
9428
9435
|
text,
|
|
9429
9436
|
textSegments: pptx.remapTextToSegments(
|
|
@@ -9465,6 +9472,7 @@ function useSerialize(input) {
|
|
|
9465
9472
|
notesMaster,
|
|
9466
9473
|
handoutMaster,
|
|
9467
9474
|
handlerRef,
|
|
9475
|
+
heldDeckRef,
|
|
9468
9476
|
inlineEditingElementIdRef,
|
|
9469
9477
|
inlineEditingTextRef,
|
|
9470
9478
|
inlineEditingSnapshotRef,
|
|
@@ -9490,8 +9498,8 @@ function useSerialize(input) {
|
|
|
9490
9498
|
const pendingSnapshot = read?.snapshot ?? inlineEditingSnapshotRef?.current;
|
|
9491
9499
|
const pending = overlayPendingInlineEdit(
|
|
9492
9500
|
{
|
|
9493
|
-
slides,
|
|
9494
|
-
templateElementsBySlideId,
|
|
9501
|
+
slides: heldDeckRef?.current?.slides ?? slides,
|
|
9502
|
+
templateElementsBySlideId: heldDeckRef?.current?.templateElementsBySlideId ?? templateElementsBySlideId,
|
|
9495
9503
|
activeSlideIndex,
|
|
9496
9504
|
editTemplateMode,
|
|
9497
9505
|
masterViewTarget,
|
|
@@ -9511,14 +9519,14 @@ function useSerialize(input) {
|
|
|
9511
9519
|
const pptxGuides = guides.map((g) => ({
|
|
9512
9520
|
id: g.id,
|
|
9513
9521
|
orientation: g.axis === "h" ? "horz" : "vert",
|
|
9514
|
-
positionEmu: (0,
|
|
9522
|
+
positionEmu: (0, chunk3PKYNJJG_js.dist_exports.guidePxToEmu)(g.position)
|
|
9515
9523
|
}));
|
|
9516
9524
|
return {
|
|
9517
9525
|
...slide,
|
|
9518
9526
|
guides: pptxGuides.length > 0 ? pptxGuides : void 0
|
|
9519
9527
|
};
|
|
9520
9528
|
});
|
|
9521
|
-
const slidesToSave =
|
|
9529
|
+
const slidesToSave = chunk3PKYNJJG_js.buildSaveSlides(slidesWithGuides, pending.templateElementsBySlideId);
|
|
9522
9530
|
const saveOptions = pptx.buildDeckSaveOptions({
|
|
9523
9531
|
// Without this the Slide Size card edited a viewer-only pixel value and
|
|
9524
9532
|
// the saved `p:sldSz` never moved: passing `slideSize` is the only way a
|
|
@@ -9699,7 +9707,7 @@ function usePresentationSetup(input) {
|
|
|
9699
9707
|
return;
|
|
9700
9708
|
}
|
|
9701
9709
|
if (mode === "present" && nextMode !== "present") {
|
|
9702
|
-
|
|
9710
|
+
chunk3PKYNJJG_js.stopAllPersistentAudio();
|
|
9703
9711
|
stopAnimationSound();
|
|
9704
9712
|
const exitHandler = exitModeHandlerRef.current;
|
|
9705
9713
|
if (exitHandler) {
|
|
@@ -9820,12 +9828,12 @@ function useCanvasImagePaste(input) {
|
|
|
9820
9828
|
);
|
|
9821
9829
|
}
|
|
9822
9830
|
function formatPatchFor(element, format) {
|
|
9823
|
-
const updated =
|
|
9831
|
+
const updated = chunk3PKYNJJG_js.applyFormatToElement(element, format);
|
|
9824
9832
|
const updates = {};
|
|
9825
|
-
if ((0,
|
|
9833
|
+
if ((0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(updated)) {
|
|
9826
9834
|
updates.shapeStyle = updated.shapeStyle;
|
|
9827
9835
|
}
|
|
9828
|
-
if ((0,
|
|
9836
|
+
if ((0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(updated)) {
|
|
9829
9837
|
updates.textStyle = updated.textStyle;
|
|
9830
9838
|
}
|
|
9831
9839
|
return updates;
|
|
@@ -9843,7 +9851,7 @@ function useFormatPainterEditing(input) {
|
|
|
9843
9851
|
const prevFormatPainterRef = React17.useRef(false);
|
|
9844
9852
|
React17.useEffect(() => {
|
|
9845
9853
|
if (formatPainterActive && !prevFormatPainterRef.current && selectedElement) {
|
|
9846
|
-
copiedFormatRef.current =
|
|
9854
|
+
copiedFormatRef.current = chunk3PKYNJJG_js.copyFormatFromElement(selectedElement);
|
|
9847
9855
|
} else if (!formatPainterActive) {
|
|
9848
9856
|
copiedFormatRef.current = null;
|
|
9849
9857
|
}
|
|
@@ -10621,6 +10629,7 @@ function useContentLifecycle(input) {
|
|
|
10621
10629
|
notesMaster: state.notesMaster,
|
|
10622
10630
|
handoutMaster: state.handoutMaster,
|
|
10623
10631
|
handlerRef,
|
|
10632
|
+
heldDeckRef: state.deckStyleHeldRef,
|
|
10624
10633
|
inlineEditingElementIdRef: state.inlineEditingElementIdRef,
|
|
10625
10634
|
inlineEditingTextRef: state.inlineEditingTextRef,
|
|
10626
10635
|
inlineEditingSnapshotRef: state.inlineEditingSnapshotRef,
|
|
@@ -10933,7 +10942,7 @@ function useKeyboardShortcutWiring(input) {
|
|
|
10933
10942
|
}
|
|
10934
10943
|
function stepSelectedFontSize(state, ops, direction) {
|
|
10935
10944
|
const selected = state.selectedElement;
|
|
10936
|
-
const currentPx = (selected && (0,
|
|
10945
|
+
const currentPx = (selected && (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(selected) ? selected.textStyle?.fontSize : void 0) ?? pptx.textFontSizePtToPx(18);
|
|
10937
10946
|
const nextPt = pptx.stepFontSizePt(pptx.textFontSizePxToPt(currentPx), direction);
|
|
10938
10947
|
ops.updateSelectedTextStyle({ fontSize: pptx.textFontSizePtToPx(nextPt) });
|
|
10939
10948
|
}
|
|
@@ -11490,7 +11499,7 @@ function useCollaborationWriteBack(input) {
|
|
|
11490
11499
|
getSourceBytes: () => latest.current.getSourceBytes?.() ?? null,
|
|
11491
11500
|
getSaveOptions: () => latest.current.getSaveOptions?.(),
|
|
11492
11501
|
getTemplateElements: () => latest.current.templateElementsBySlideId,
|
|
11493
|
-
mergeTemplateElements:
|
|
11502
|
+
mergeTemplateElements: chunk3PKYNJJG_js.buildSaveSlides
|
|
11494
11503
|
}),
|
|
11495
11504
|
[latest]
|
|
11496
11505
|
);
|
|
@@ -12043,8 +12052,8 @@ function useTouchGestures(input) {
|
|
|
12043
12052
|
}
|
|
12044
12053
|
const recognizer = pptx.createTouchGestureRecognizer({
|
|
12045
12054
|
getScale: () => scaleRef.current,
|
|
12046
|
-
minScale:
|
|
12047
|
-
maxScale:
|
|
12055
|
+
minScale: chunk3PKYNJJG_js.MIN_ZOOM_SCALE,
|
|
12056
|
+
maxScale: chunk3PKYNJJG_js.MAX_ZOOM_SCALE,
|
|
12048
12057
|
callbacks: {
|
|
12049
12058
|
onPinchZoom: (newScale) => callbacksRef.current.onPinchZoom?.(newScale),
|
|
12050
12059
|
onSwipe: (direction) => callbacksRef.current.onSwipe?.(direction),
|
|
@@ -12168,7 +12177,7 @@ function buildCanvasProps(input) {
|
|
|
12168
12177
|
if (pptx.shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
|
|
12169
12178
|
return;
|
|
12170
12179
|
}
|
|
12171
|
-
|
|
12180
|
+
chunk3PKYNJJG_js.safeOpenUrl(url, target);
|
|
12172
12181
|
};
|
|
12173
12182
|
const handleActionClick = (elementId, action) => {
|
|
12174
12183
|
if (mode === "present") {
|
|
@@ -12183,9 +12192,9 @@ function buildCanvasProps(input) {
|
|
|
12183
12192
|
}
|
|
12184
12193
|
};
|
|
12185
12194
|
const handleHyperlinkClick = (url, target) => {
|
|
12186
|
-
if (
|
|
12195
|
+
if (chunk3PKYNJJG_js.isPpactionUrl(url)) {
|
|
12187
12196
|
if (mode === "present") {
|
|
12188
|
-
const parsed =
|
|
12197
|
+
const parsed = chunk3PKYNJJG_js.parsePpactionUrl(url);
|
|
12189
12198
|
if (parsed) {
|
|
12190
12199
|
presentation.handlePresentationAction({
|
|
12191
12200
|
action: parsed.action,
|
|
@@ -12611,7 +12620,7 @@ function buildToolbarProps(input) {
|
|
|
12611
12620
|
markDirty: history.markDirty
|
|
12612
12621
|
}),
|
|
12613
12622
|
formatPainterActive: s.formatPainterActive,
|
|
12614
|
-
canActivateFormatPainter:
|
|
12623
|
+
canActivateFormatPainter: chunk3PKYNJJG_js.hasCopyableFormat(selectedElement),
|
|
12615
12624
|
onToggleFormatPainter: () => s.setFormatPainterActive((p) => !p),
|
|
12616
12625
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
12617
12626
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -12934,7 +12943,7 @@ function useViewerBuildingBlocksCore(input) {
|
|
|
12934
12943
|
documentGridSpacing: state.viewProperties?.gridSpacing
|
|
12935
12944
|
});
|
|
12936
12945
|
const themeColorMap = React17.useMemo(
|
|
12937
|
-
() => state.theme?.colorScheme ? (0,
|
|
12946
|
+
() => state.theme?.colorScheme ? (0, chunk3PKYNJJG_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
|
|
12938
12947
|
[state.theme?.colorScheme]
|
|
12939
12948
|
);
|
|
12940
12949
|
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = usePresentationSetup({
|
|
@@ -13509,23 +13518,23 @@ function ColorChangedImage({
|
|
|
13509
13518
|
className,
|
|
13510
13519
|
alt
|
|
13511
13520
|
}) {
|
|
13512
|
-
const tolerance = tolerancePct ??
|
|
13513
|
-
const cacheKey =
|
|
13521
|
+
const tolerance = tolerancePct ?? chunk3PKYNJJG_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
|
|
13522
|
+
const cacheKey = chunk3PKYNJJG_js.buildCacheKey(
|
|
13514
13523
|
src,
|
|
13515
13524
|
clrChange.clrFrom,
|
|
13516
13525
|
clrChange.clrTo,
|
|
13517
13526
|
tolerance,
|
|
13518
13527
|
Boolean(clrChange.clrToTransparent)
|
|
13519
13528
|
);
|
|
13520
|
-
const cached =
|
|
13529
|
+
const cached = chunk3PKYNJJG_js.getCachedResult(cacheKey);
|
|
13521
13530
|
const [processedSrc, setProcessedSrc] = React17.useState(cached ?? null);
|
|
13522
13531
|
React17.useEffect(() => {
|
|
13523
|
-
if (
|
|
13524
|
-
setProcessedSrc(
|
|
13532
|
+
if (chunk3PKYNJJG_js.getCachedResult(cacheKey)) {
|
|
13533
|
+
setProcessedSrc(chunk3PKYNJJG_js.getCachedResult(cacheKey) ?? null);
|
|
13525
13534
|
return;
|
|
13526
13535
|
}
|
|
13527
13536
|
let cancelled = false;
|
|
13528
|
-
|
|
13537
|
+
chunk3PKYNJJG_js.applyColorChange(
|
|
13529
13538
|
src,
|
|
13530
13539
|
clrChange.clrFrom,
|
|
13531
13540
|
clrChange.clrTo,
|
|
@@ -13533,7 +13542,7 @@ function ColorChangedImage({
|
|
|
13533
13542
|
Boolean(clrChange.clrToTransparent)
|
|
13534
13543
|
).then((result) => {
|
|
13535
13544
|
if (!cancelled) {
|
|
13536
|
-
|
|
13545
|
+
chunk3PKYNJJG_js.setCachedResult(cacheKey, result.dataUrl);
|
|
13537
13546
|
setProcessedSrc(result.dataUrl);
|
|
13538
13547
|
}
|
|
13539
13548
|
return void 0;
|
|
@@ -13625,7 +13634,7 @@ function TiledImageLayer({
|
|
|
13625
13634
|
cancelled = true;
|
|
13626
13635
|
};
|
|
13627
13636
|
}, [src]);
|
|
13628
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...
|
|
13637
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...chunk3PKYNJJG_js.getImageTilingStyle(element, nativeSize), ...style } });
|
|
13629
13638
|
}
|
|
13630
13639
|
function renderImageEffectDefinitions(element, excludeDuotone = false) {
|
|
13631
13640
|
return pptx.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -13694,7 +13703,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
13694
13703
|
...filter ? { filter } : {},
|
|
13695
13704
|
...opacity !== void 0 ? { opacity } : {}
|
|
13696
13705
|
};
|
|
13697
|
-
if (
|
|
13706
|
+
if (chunk3PKYNJJG_js.isImageTiled(el)) {
|
|
13698
13707
|
const tileSrc = imgSrc(el);
|
|
13699
13708
|
if (!tileSrc) {
|
|
13700
13709
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: "Image" });
|
|
@@ -13713,12 +13722,12 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
13713
13722
|
] });
|
|
13714
13723
|
}
|
|
13715
13724
|
const colorWash = pptx.getImageColorWashStyle(
|
|
13716
|
-
(0,
|
|
13725
|
+
(0, chunk3PKYNJJG_js.dist_exports.isImageLikeElement)(el) ? el.imageEffects?.colorWash : void 0
|
|
13717
13726
|
);
|
|
13718
13727
|
const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
|
|
13719
|
-
const duotoneColors =
|
|
13728
|
+
const duotoneColors = chunk3PKYNJJG_js.getDuotoneColors(el);
|
|
13720
13729
|
const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
|
|
13721
|
-
const filterForImg = useDuotoneCanvas ?
|
|
13730
|
+
const filterForImg = useDuotoneCanvas ? chunk3PKYNJJG_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
|
|
13722
13731
|
const canvasEffectStyles = {
|
|
13723
13732
|
...filterForImg ? { filter: filterForImg } : {},
|
|
13724
13733
|
...opacity !== void 0 ? { opacity } : {}
|
|
@@ -13794,10 +13803,10 @@ function SlideBackgroundImageLayer({
|
|
|
13794
13803
|
style: { zIndex: 0 },
|
|
13795
13804
|
children: renderImg(
|
|
13796
13805
|
backgroundElement,
|
|
13797
|
-
|
|
13798
|
-
|
|
13806
|
+
chunk3PKYNJJG_js.getImageRenderStyle(backgroundElement),
|
|
13807
|
+
chunk3PKYNJJG_js.getImageEffectsFilter(backgroundElement),
|
|
13799
13808
|
"",
|
|
13800
|
-
|
|
13809
|
+
chunk3PKYNJJG_js.getImageEffectsOpacity(backgroundElement)
|
|
13801
13810
|
)
|
|
13802
13811
|
}
|
|
13803
13812
|
);
|
|
@@ -14060,6 +14069,7 @@ function ChartElementView({
|
|
|
14060
14069
|
onUpdateElement,
|
|
14061
14070
|
animationState
|
|
14062
14071
|
}) {
|
|
14072
|
+
const { t } = reactI18next.useTranslation();
|
|
14063
14073
|
const wrapperRef = React17.useRef(null);
|
|
14064
14074
|
const { selection, setSelection } = useChartPartSelection();
|
|
14065
14075
|
const [titleDraft, setTitleDraft] = React17.useState(null);
|
|
@@ -14074,7 +14084,7 @@ function ChartElementView({
|
|
|
14074
14084
|
pptx.getBarFacePicturePixelSampleVersion
|
|
14075
14085
|
);
|
|
14076
14086
|
const viewModel = React17.useMemo(() => {
|
|
14077
|
-
return canEdit ?
|
|
14087
|
+
return canEdit ? chunk3PKYNJJG_js.buildReactChartViewModel(element) : null;
|
|
14078
14088
|
}, [canEdit, element, barFacePictureSampleVersion]);
|
|
14079
14089
|
React17.useEffect(pptx.ensureChartInteractionStyles, []);
|
|
14080
14090
|
React17.useEffect(() => {
|
|
@@ -14179,9 +14189,9 @@ function ChartElementView({
|
|
|
14179
14189
|
textStyle: animationState?.textStyle,
|
|
14180
14190
|
onSelect: chart3D.onSelect,
|
|
14181
14191
|
onDrag: chart3D.onDrag,
|
|
14182
|
-
children:
|
|
14192
|
+
children: chunk3PKYNJJG_js.renderChartElement(renderedElement, (key) => t(key))
|
|
14183
14193
|
}
|
|
14184
|
-
) :
|
|
14194
|
+
) : chunk3PKYNJJG_js.renderChartElement(renderedElement, (key) => t(key)),
|
|
14185
14195
|
dragValue !== null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1 right-1 z-10 rounded bg-primary/90 px-1.5 py-0.5 text-[10px] font-medium text-white pointer-events-none", children: pptx.formatAxisValue(dragValue) }),
|
|
14186
14196
|
titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14187
14197
|
"input",
|
|
@@ -14511,7 +14521,7 @@ function ResizeHandles({
|
|
|
14511
14521
|
"aria-label": t("pptx.selectionOverlay.resize", { handle }),
|
|
14512
14522
|
"data-pptx-handle-kind": "resize",
|
|
14513
14523
|
"data-pptx-compact": true,
|
|
14514
|
-
className:
|
|
14524
|
+
className: chunk3PKYNJJG_js.cn(
|
|
14515
14525
|
"absolute z-10 group border-0 bg-transparent p-0",
|
|
14516
14526
|
RESIZE_DEFAULT_CLASSES,
|
|
14517
14527
|
posClass,
|
|
@@ -14537,7 +14547,7 @@ function ResizeHandles({
|
|
|
14537
14547
|
"div",
|
|
14538
14548
|
{
|
|
14539
14549
|
"data-pptx-handle-hit": true,
|
|
14540
|
-
className:
|
|
14550
|
+
className: chunk3PKYNJJG_js.cn(
|
|
14541
14551
|
"absolute -inset-px pointer-events-auto [--pptx-handle-hit-inset:-1px]",
|
|
14542
14552
|
corner ? "max-md:-inset-1.5 max-md:[--pptx-handle-hit-inset:-6px]" : "max-md:-inset-2 max-md:[--pptx-handle-hit-inset:-8px]"
|
|
14543
14553
|
),
|
|
@@ -14558,7 +14568,7 @@ function ResizeHandles({
|
|
|
14558
14568
|
"aria-label": t("pptx.selectionOverlay.rotate"),
|
|
14559
14569
|
"data-pptx-handle-kind": "rotate",
|
|
14560
14570
|
"data-pptx-compact": true,
|
|
14561
|
-
className:
|
|
14571
|
+
className: chunk3PKYNJJG_js.cn(
|
|
14562
14572
|
"absolute left-1/2 top-0 -translate-x-1/2 -translate-y-1/2 z-20 border-0 bg-transparent p-0 cursor-grab active:cursor-grabbing",
|
|
14563
14573
|
ROTATE_DEFAULT_CLASSES
|
|
14564
14574
|
),
|
|
@@ -14628,17 +14638,17 @@ var ConnectorElementRenderer = React17__default.default.memo(
|
|
|
14628
14638
|
animationState,
|
|
14629
14639
|
textStyleOverrideCss
|
|
14630
14640
|
}) {
|
|
14631
|
-
const shapeEl = (0,
|
|
14641
|
+
const shapeEl = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(el) ? el : void 0;
|
|
14632
14642
|
const viewWidth = Math.max(el.width, 0);
|
|
14633
14643
|
const viewHeight = Math.max(el.height, 0);
|
|
14634
14644
|
const svgWidth = Math.max(el.width, 1);
|
|
14635
14645
|
const svgHeight = Math.max(el.height, 1);
|
|
14636
14646
|
const ss = shapeEl?.shapeStyle;
|
|
14637
14647
|
const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
|
|
14638
|
-
const strokeColor =
|
|
14639
|
-
const strokePaint =
|
|
14640
|
-
const dashType =
|
|
14641
|
-
const dashArray =
|
|
14648
|
+
const strokeColor = chunk3PKYNJJG_js.normalizeHexColor(ss?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR);
|
|
14649
|
+
const strokePaint = chunk3PKYNJJG_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
|
|
14650
|
+
const dashType = chunk3PKYNJJG_js.normalizeStrokeDashType(ss?.strokeDash);
|
|
14651
|
+
const dashArray = chunk3PKYNJJG_js.getSvgStrokeDasharray(
|
|
14642
14652
|
dashType,
|
|
14643
14653
|
Math.max(strokeWidth, 1),
|
|
14644
14654
|
ss?.customDashSegments
|
|
@@ -14649,14 +14659,14 @@ var ConnectorElementRenderer = React17__default.default.memo(
|
|
|
14649
14659
|
const markerSeed = el.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
|
|
14650
14660
|
const startMarkerId = `${markerSeed}-sel-start`;
|
|
14651
14661
|
const endMarkerId = `${markerSeed}-sel-end`;
|
|
14652
|
-
const compoundOffsets =
|
|
14653
|
-
const compoundWidths =
|
|
14662
|
+
const compoundOffsets = chunk3PKYNJJG_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
14663
|
+
const compoundWidths = chunk3PKYNJJG_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
14654
14664
|
const strokeCap = pptx.svgLineCap(ss?.lineCap);
|
|
14655
|
-
const textEl = (0,
|
|
14665
|
+
const textEl = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el : void 0;
|
|
14656
14666
|
const connectorText = textEl?.text?.trim() ?? "";
|
|
14657
14667
|
const connectorTextSegments = textEl?.textSegments;
|
|
14658
14668
|
const connectorTextStyle = textEl?.textStyle;
|
|
14659
|
-
const pathGeometry = shapeEl ?
|
|
14669
|
+
const pathGeometry = shapeEl ? chunk3PKYNJJG_js.getConnectorPathGeometry(shapeEl) : {
|
|
14660
14670
|
pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
|
|
14661
14671
|
startX: 0,
|
|
14662
14672
|
startY: 0,
|
|
@@ -14665,16 +14675,16 @@ var ConnectorElementRenderer = React17__default.default.memo(
|
|
|
14665
14675
|
};
|
|
14666
14676
|
const hitTargetWidth = Math.max(strokeWidth * 3, 14);
|
|
14667
14677
|
const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
|
|
14668
|
-
const lineShadow =
|
|
14669
|
-
const lineGlow =
|
|
14678
|
+
const lineShadow = chunk3PKYNJJG_js.buildLineShadowCss(el);
|
|
14679
|
+
const lineGlow = chunk3PKYNJJG_js.buildLineGlowFilter(el);
|
|
14670
14680
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14671
14681
|
"div",
|
|
14672
14682
|
{
|
|
14673
14683
|
"data-pptx-element": "true",
|
|
14674
14684
|
"data-element-id": el.id,
|
|
14675
|
-
role:
|
|
14676
|
-
"aria-label":
|
|
14677
|
-
"aria-roledescription":
|
|
14685
|
+
role: chunk3PKYNJJG_js.getAriaRole(el, { actionable: false }),
|
|
14686
|
+
"aria-label": chunk3PKYNJJG_js.getAriaLabel(el),
|
|
14687
|
+
"aria-roledescription": chunk3PKYNJJG_js.getAriaRoleDescription(el),
|
|
14678
14688
|
"aria-selected": isSelected ? true : void 0,
|
|
14679
14689
|
className: "absolute",
|
|
14680
14690
|
style: {
|
|
@@ -14707,14 +14717,14 @@ var ConnectorElementRenderer = React17__default.default.memo(
|
|
|
14707
14717
|
style: { overflow: "visible", pointerEvents: "none" },
|
|
14708
14718
|
children: [
|
|
14709
14719
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
14710
|
-
|
|
14720
|
+
chunk3PKYNJJG_js.renderConnectorMarker(
|
|
14711
14721
|
startMarkerId,
|
|
14712
14722
|
startArrow,
|
|
14713
14723
|
strokePaint,
|
|
14714
14724
|
ss?.connectorStartArrowWidth,
|
|
14715
14725
|
ss?.connectorStartArrowLength
|
|
14716
14726
|
),
|
|
14717
|
-
|
|
14727
|
+
chunk3PKYNJJG_js.renderConnectorMarker(
|
|
14718
14728
|
endMarkerId,
|
|
14719
14729
|
endArrow,
|
|
14720
14730
|
strokePaint,
|
|
@@ -14920,14 +14930,14 @@ function getElementInteractionProps({
|
|
|
14920
14930
|
};
|
|
14921
14931
|
}
|
|
14922
14932
|
function renderDagDuotoneFilterForElement(el) {
|
|
14923
|
-
if (!
|
|
14933
|
+
if (!chunk3PKYNJJG_js.hasDagDuotoneEffect(el)) {
|
|
14924
14934
|
return null;
|
|
14925
14935
|
}
|
|
14926
14936
|
const duotone = el.shapeStyle?.dagDuotone;
|
|
14927
14937
|
if (!duotone) {
|
|
14928
14938
|
return null;
|
|
14929
14939
|
}
|
|
14930
|
-
return
|
|
14940
|
+
return chunk3PKYNJJG_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
|
|
14931
14941
|
}
|
|
14932
14942
|
function getContainerStyle({
|
|
14933
14943
|
el,
|
|
@@ -14940,7 +14950,7 @@ function getContainerStyle({
|
|
|
14940
14950
|
has3DExtrusion,
|
|
14941
14951
|
templateEditing
|
|
14942
14952
|
}) {
|
|
14943
|
-
const ss = (0,
|
|
14953
|
+
const ss = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
|
|
14944
14954
|
const isPicture = el.type === "picture" || el.type === "image";
|
|
14945
14955
|
const blurGrowVisible = Boolean(
|
|
14946
14956
|
ss?.blurGrow && typeof ss.blurRadius === "number" && ss.blurRadius > 0
|
|
@@ -14954,10 +14964,10 @@ function getContainerStyle({
|
|
|
14954
14964
|
top: isFullscreenMedia ? fs.top : el.y,
|
|
14955
14965
|
width: isFullscreenMedia ? fs.width : painted.width,
|
|
14956
14966
|
...heightStyle,
|
|
14957
|
-
transform: isFullscreenMedia ? fs.transform :
|
|
14967
|
+
transform: isFullscreenMedia ? fs.transform : chunk3PKYNJJG_js.getElementTransform(el),
|
|
14958
14968
|
transformOrigin: "center",
|
|
14959
14969
|
overflow: overflowValue,
|
|
14960
|
-
clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ?
|
|
14970
|
+
clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunk3PKYNJJG_js.getCropShapeClipPath(el) : void 0,
|
|
14961
14971
|
zIndex: isFullscreenMedia ? fs.zIndex : zIndex,
|
|
14962
14972
|
visibility: animationState?.visible === false ? "hidden" : "visible",
|
|
14963
14973
|
animation: animationState?.cssAnimation,
|
|
@@ -14992,11 +15002,11 @@ function getContainerStyle({
|
|
|
14992
15002
|
};
|
|
14993
15003
|
}
|
|
14994
15004
|
function shapeParams(element) {
|
|
14995
|
-
const style = (0,
|
|
15005
|
+
const style = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
|
|
14996
15006
|
const strokeWidth = pptx.paintedStrokeWidth(style);
|
|
14997
|
-
const strokeColor =
|
|
14998
|
-
const fillColor =
|
|
14999
|
-
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(
|
|
15007
|
+
const strokeColor = chunk3PKYNJJG_js.normalizeHexColor(style?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR);
|
|
15008
|
+
const fillColor = chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR);
|
|
15009
|
+
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk3PKYNJJG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
15000
15010
|
return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
|
|
15001
15011
|
}
|
|
15002
15012
|
var Extrusion3DOverlay = React17__default.default.memo(
|
|
@@ -15101,7 +15111,7 @@ function ShapeEffectOverlay({
|
|
|
15101
15111
|
const fillOverlayStyle = overlay ? {
|
|
15102
15112
|
position: "absolute",
|
|
15103
15113
|
inset: 0,
|
|
15104
|
-
...(0,
|
|
15114
|
+
...(0, chunk3PKYNJJG_js.dist_exports.isImageLikeElement)(element) ? chunk3PKYNJJG_js.getImageSurfaceMaskStyle(element) : {},
|
|
15105
15115
|
background: overlay.color,
|
|
15106
15116
|
mixBlendMode: overlay.blendMode,
|
|
15107
15117
|
pointerEvents: "none"
|
|
@@ -15305,10 +15315,10 @@ var ElementRenderer = React17__default.default.memo(
|
|
|
15305
15315
|
const backgroundAnimationState = pptx.getBackgroundAnimationState(el, presentationElementStates);
|
|
15306
15316
|
const effectPlacement = pptx.getShapeEffectLayerPlacement(el);
|
|
15307
15317
|
const visualAnimationState = backgroundAnimationState ?? animationState;
|
|
15308
|
-
const isTxt =
|
|
15309
|
-
const txtSE = (0,
|
|
15318
|
+
const isTxt = chunk3PKYNJJG_js.isEditableTextElement(el) && allow.textEditable;
|
|
15319
|
+
const txtSE = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el.textStyle : void 0;
|
|
15310
15320
|
const textStyleOverrideCss = pptx.buildTextStyleOverrideCss(el.id, visualAnimationState?.textStyle);
|
|
15311
|
-
const ss =
|
|
15321
|
+
const ss = chunk3PKYNJJG_js.getShapeVisualStyle(
|
|
15312
15322
|
el,
|
|
15313
15323
|
hf,
|
|
15314
15324
|
fc,
|
|
@@ -15317,9 +15327,9 @@ var ElementRenderer = React17__default.default.memo(
|
|
|
15317
15327
|
visualAnimationState?.animatesFill,
|
|
15318
15328
|
visualAnimationState?.animatesStroke
|
|
15319
15329
|
);
|
|
15320
|
-
const ts =
|
|
15330
|
+
const ts = chunk3PKYNJJG_js.getTextStyleForElement(el, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR);
|
|
15321
15331
|
const isImg = el.type === "picture" || el.type === "image";
|
|
15322
|
-
const vs =
|
|
15332
|
+
const vs = chunk3PKYNJJG_js.renderVectorShape(
|
|
15323
15333
|
el,
|
|
15324
15334
|
isImg ? false : hf,
|
|
15325
15335
|
fc,
|
|
@@ -15329,10 +15339,10 @@ var ElementRenderer = React17__default.default.memo(
|
|
|
15329
15339
|
visualAnimationState?.animatesStroke
|
|
15330
15340
|
);
|
|
15331
15341
|
const isModel3D = el.type === "model3d";
|
|
15332
|
-
const isConn =
|
|
15333
|
-
const shapeStyle3d = (0,
|
|
15342
|
+
const isConn = chunk3PKYNJJG_js.isConnectorOrLineElement(el);
|
|
15343
|
+
const shapeStyle3d = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(el) ? el.shapeStyle : void 0;
|
|
15334
15344
|
const extrusionData = React17.useMemo(
|
|
15335
|
-
() =>
|
|
15345
|
+
() => chunk3PKYNJJG_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
|
|
15336
15346
|
[shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
|
|
15337
15347
|
);
|
|
15338
15348
|
const actionAffordance = useActionAffordance(el, canInteract);
|
|
@@ -15422,7 +15432,7 @@ var ElementRenderer = React17__default.default.memo(
|
|
|
15422
15432
|
"aria-hidden": aria.hidden ? true : void 0,
|
|
15423
15433
|
"aria-selected": isSelected ? true : void 0,
|
|
15424
15434
|
tabIndex: isFocusable ? 0 : -1,
|
|
15425
|
-
className:
|
|
15435
|
+
className: chunk3PKYNJJG_js.cn(
|
|
15426
15436
|
"absolute",
|
|
15427
15437
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
|
|
15428
15438
|
cur,
|
|
@@ -15495,9 +15505,9 @@ var ElementRenderer = React17__default.default.memo(
|
|
|
15495
15505
|
txtSE,
|
|
15496
15506
|
txtS: ts,
|
|
15497
15507
|
vecShape: backgroundAnimationState && !isImg ? null : vs,
|
|
15498
|
-
imgStyle:
|
|
15499
|
-
imgFilter:
|
|
15500
|
-
imgOpacity:
|
|
15508
|
+
imgStyle: chunk3PKYNJJG_js.getImageRenderStyle(el),
|
|
15509
|
+
imgFilter: chunk3PKYNJJG_js.getImageEffectsFilter(el),
|
|
15510
|
+
imgOpacity: chunk3PKYNJJG_js.getImageEffectsOpacity(el),
|
|
15501
15511
|
imgAlt: imageAltText,
|
|
15502
15512
|
isTxtEl: isTxt,
|
|
15503
15513
|
media: mediaDataUrls,
|
|
@@ -15634,10 +15644,10 @@ function renderStrokeView(view, pressureSensitive, replayStyle, key) {
|
|
|
15634
15644
|
}
|
|
15635
15645
|
function renderInk(el, options) {
|
|
15636
15646
|
const replay = options?.replay ?? false;
|
|
15637
|
-
const strokes =
|
|
15647
|
+
const strokes = chunk3PKYNJJG_js.buildInkGroupStrokes(el, { color: "#000", width: 3 });
|
|
15638
15648
|
strokes.some((s) => s.circles || s.nibMarks);
|
|
15639
15649
|
const pressureSensitive = options?.pressureSensitive;
|
|
15640
|
-
const replayStyles = replay ?
|
|
15650
|
+
const replayStyles = replay ? chunk3PKYNJJG_js.getInkReplayStyles(el, options?.replayConfig) : null;
|
|
15641
15651
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15642
15652
|
"svg",
|
|
15643
15653
|
{
|
|
@@ -15645,7 +15655,7 @@ function renderInk(el, options) {
|
|
|
15645
15655
|
viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
|
|
15646
15656
|
preserveAspectRatio: "none",
|
|
15647
15657
|
children: [
|
|
15648
|
-
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
15658
|
+
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3PKYNJJG_js.INK_REPLAY_KEYFRAMES }),
|
|
15649
15659
|
strokes.map(
|
|
15650
15660
|
(s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-ink-${i}`)
|
|
15651
15661
|
)
|
|
@@ -15656,7 +15666,7 @@ function renderInk(el, options) {
|
|
|
15656
15666
|
function renderGroup(children, parentGroupFill) {
|
|
15657
15667
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: pptx.filterRenderedElements(children).map((c, childIndex) => {
|
|
15658
15668
|
const { hf, fc, sw, sc } = shapeParams(c);
|
|
15659
|
-
const baseSs =
|
|
15669
|
+
const baseSs = chunk3PKYNJJG_js.getShapeVisualStyle(c, hf, fc, sw, sc);
|
|
15660
15670
|
const inheritedFill = pptx.resolveGroupChildFill(c, parentGroupFill);
|
|
15661
15671
|
const ss = inheritedFill ? {
|
|
15662
15672
|
...baseSs,
|
|
@@ -15667,9 +15677,9 @@ function renderGroup(children, parentGroupFill) {
|
|
|
15667
15677
|
backgroundPosition: inheritedFill.backgroundPosition
|
|
15668
15678
|
} : baseSs;
|
|
15669
15679
|
const isI = c.type === "picture" || c.type === "image";
|
|
15670
|
-
const vs =
|
|
15671
|
-
const ts =
|
|
15672
|
-
const isTxt =
|
|
15680
|
+
const vs = chunk3PKYNJJG_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
|
|
15681
|
+
const ts = chunk3PKYNJJG_js.getTextStyleForElement(c, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR);
|
|
15682
|
+
const isTxt = chunk3PKYNJJG_js.isEditableTextElement(c);
|
|
15673
15683
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15674
15684
|
"div",
|
|
15675
15685
|
{
|
|
@@ -15678,9 +15688,9 @@ function renderGroup(children, parentGroupFill) {
|
|
|
15678
15688
|
style: {
|
|
15679
15689
|
left: c.x,
|
|
15680
15690
|
top: c.y,
|
|
15681
|
-
width: Math.max(c.width,
|
|
15682
|
-
height: Math.max(c.height,
|
|
15683
|
-
transform:
|
|
15691
|
+
width: Math.max(c.width, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE),
|
|
15692
|
+
height: Math.max(c.height, chunk3PKYNJJG_js.MIN_ELEMENT_SIZE),
|
|
15693
|
+
transform: chunk3PKYNJJG_js.getElementTransform(c),
|
|
15684
15694
|
transformOrigin: "center",
|
|
15685
15695
|
...ss,
|
|
15686
15696
|
...isI ? {
|
|
@@ -15705,8 +15715,8 @@ function renderGroup(children, parentGroupFill) {
|
|
|
15705
15715
|
// A nested group: recurse, chaining the inherited fill so a
|
|
15706
15716
|
// `grpFill` shape under a fill-less sub-group still paints.
|
|
15707
15717
|
renderGroup(c.children, pptx.getGroupChildParentFill(c, parentGroupFill))
|
|
15708
|
-
) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style:
|
|
15709
|
-
|
|
15718
|
+
) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk3PKYNJJG_js.getImageSurfaceStyle(c), children: [
|
|
15719
|
+
chunk3PKYNJJG_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
15710
15720
|
TiledImageLayer,
|
|
15711
15721
|
{
|
|
15712
15722
|
element: c,
|
|
@@ -15719,7 +15729,7 @@ function renderGroup(children, parentGroupFill) {
|
|
|
15719
15729
|
src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
|
|
15720
15730
|
alt: i18n.translationsEn["pptx.ink.groupChildAlt"],
|
|
15721
15731
|
className: "pointer-events-none select-none",
|
|
15722
|
-
style:
|
|
15732
|
+
style: chunk3PKYNJJG_js.getImageRenderStyle(c),
|
|
15723
15733
|
draggable: false
|
|
15724
15734
|
}
|
|
15725
15735
|
),
|
|
@@ -15731,7 +15741,7 @@ function renderGroup(children, parentGroupFill) {
|
|
|
15731
15741
|
{
|
|
15732
15742
|
className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
|
|
15733
15743
|
style: ts,
|
|
15734
|
-
children:
|
|
15744
|
+
children: chunk3PKYNJJG_js.renderTextSegments(c, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR)
|
|
15735
15745
|
}
|
|
15736
15746
|
) : null
|
|
15737
15747
|
] })
|
|
@@ -15745,8 +15755,8 @@ function renderContentPart(el, options) {
|
|
|
15745
15755
|
if (el.inkStrokes && el.inkStrokes.length > 0) {
|
|
15746
15756
|
const replay = options?.replay ?? false;
|
|
15747
15757
|
const pressureSensitive = options?.pressureSensitive ?? true;
|
|
15748
|
-
const strokes =
|
|
15749
|
-
const replayStyles = replay ?
|
|
15758
|
+
const strokes = chunk3PKYNJJG_js.buildContentPartStrokes(el);
|
|
15759
|
+
const replayStyles = replay ? chunk3PKYNJJG_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
|
|
15750
15760
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15751
15761
|
"svg",
|
|
15752
15762
|
{
|
|
@@ -15754,7 +15764,7 @@ function renderContentPart(el, options) {
|
|
|
15754
15764
|
viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
|
|
15755
15765
|
preserveAspectRatio: "none",
|
|
15756
15766
|
children: [
|
|
15757
|
-
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
15767
|
+
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunk3PKYNJJG_js.INK_REPLAY_KEYFRAMES }),
|
|
15758
15768
|
strokes.map(
|
|
15759
15769
|
(s, i) => renderStrokeView(s, pressureSensitive, replayStyles?.[i], `${el.id}-cp-ink-${i}`)
|
|
15760
15770
|
)
|
|
@@ -15981,9 +15991,9 @@ function useInlineListEditor(element, rootRef, onChange, onModelReplacement) {
|
|
|
15981
15991
|
collaboration: connected,
|
|
15982
15992
|
model: pptx.createInlineListModelObserver(element),
|
|
15983
15993
|
activationSelection,
|
|
15984
|
-
children: seed && !connected ?
|
|
15994
|
+
children: seed && !connected ? chunk3PKYNJJG_js.renderTextSegments(
|
|
15985
15995
|
element,
|
|
15986
|
-
|
|
15996
|
+
chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR,
|
|
15987
15997
|
void 0,
|
|
15988
15998
|
void 0,
|
|
15989
15999
|
void 0,
|
|
@@ -16153,7 +16163,7 @@ function InlineTextEditor({
|
|
|
16153
16163
|
seedRef.current = {
|
|
16154
16164
|
initialText,
|
|
16155
16165
|
hasRichSegments: Boolean(
|
|
16156
|
-
(0,
|
|
16166
|
+
(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) && element.textSegments && element.textSegments.length > 0
|
|
16157
16167
|
)
|
|
16158
16168
|
};
|
|
16159
16169
|
}
|
|
@@ -16219,8 +16229,8 @@ function InlineTextEditor({
|
|
|
16219
16229
|
pending.endOffset
|
|
16220
16230
|
);
|
|
16221
16231
|
});
|
|
16222
|
-
const warpStyle =
|
|
16223
|
-
const compensationTransform =
|
|
16232
|
+
const warpStyle = chunk3PKYNJJG_js.getTextWarpStyle(textStyleRaw);
|
|
16233
|
+
const compensationTransform = chunk3PKYNJJG_js.getTextCompensationTransform(element);
|
|
16224
16234
|
const warpTransform = warpStyle?.transform;
|
|
16225
16235
|
const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
|
|
16226
16236
|
const wrapperStyle = {
|
|
@@ -16231,7 +16241,7 @@ function InlineTextEditor({
|
|
|
16231
16241
|
transformOrigin: warpStyle?.transformOrigin || "center"
|
|
16232
16242
|
};
|
|
16233
16243
|
const nextInlineStyleValue = (property) => {
|
|
16234
|
-
if (!(0,
|
|
16244
|
+
if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
|
|
16235
16245
|
return true;
|
|
16236
16246
|
}
|
|
16237
16247
|
const result = pptx.getInlineEditorSelectionResult(element.textSegments);
|
|
@@ -16308,7 +16318,7 @@ function InlineTextEditor({
|
|
|
16308
16318
|
const text = e.clipboardData.getData("text/plain");
|
|
16309
16319
|
document.execCommand("insertText", false, text);
|
|
16310
16320
|
},
|
|
16311
|
-
children: list.seed ? list.children : seed.hasRichSegments ?
|
|
16321
|
+
children: list.seed ? list.children : seed.hasRichSegments ? chunk3PKYNJJG_js.renderTextSegments(element, chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR) : seed.initialText
|
|
16312
16322
|
},
|
|
16313
16323
|
list.seed?.paragraphs[0].token ?? "plain"
|
|
16314
16324
|
);
|
|
@@ -17245,7 +17255,7 @@ function SmartArtRendererImpl({
|
|
|
17245
17255
|
if (!onUpdateElement || !pptx.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
|
|
17246
17256
|
return;
|
|
17247
17257
|
}
|
|
17248
|
-
const updated = (0,
|
|
17258
|
+
const updated = (0, chunk3PKYNJJG_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text);
|
|
17249
17259
|
const box = { width: element.width, height: element.height };
|
|
17250
17260
|
const reflowed = pptx.rebuildDrawingShapesIfCleared(
|
|
17251
17261
|
updated,
|
|
@@ -17261,7 +17271,7 @@ function SmartArtRendererImpl({
|
|
|
17261
17271
|
if (!onUpdateElement) {
|
|
17262
17272
|
return;
|
|
17263
17273
|
}
|
|
17264
|
-
const next = (0,
|
|
17274
|
+
const next = (0, chunk3PKYNJJG_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, { fillColor: fill });
|
|
17265
17275
|
if (next !== smartArtData) {
|
|
17266
17276
|
const box = { width: element.width, height: element.height };
|
|
17267
17277
|
const reflowed = pptx.rebuildDrawingShapesIfCleared(
|
|
@@ -17455,7 +17465,7 @@ function groupIntoParagraphs(element, fieldContext) {
|
|
|
17455
17465
|
element,
|
|
17456
17466
|
fieldContext ? (seg) => {
|
|
17457
17467
|
if (seg.fieldType) {
|
|
17458
|
-
const substituted =
|
|
17468
|
+
const substituted = chunk3PKYNJJG_js.substituteFieldText(
|
|
17459
17469
|
seg.text,
|
|
17460
17470
|
seg.fieldType,
|
|
17461
17471
|
fieldContext,
|
|
@@ -17490,13 +17500,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
|
|
|
17490
17500
|
if (s.strikethrough) {
|
|
17491
17501
|
decos.push("line-through");
|
|
17492
17502
|
}
|
|
17493
|
-
const fill = s.hyperlink ?
|
|
17503
|
+
const fill = s.hyperlink ? chunk3PKYNJJG_js.normalizeHexColor(s.color || element.textStyle?.color, chunk3PKYNJJG_js.HYPERLINK_COLOR) : chunk3PKYNJJG_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
|
|
17494
17504
|
return {
|
|
17495
17505
|
fill,
|
|
17496
|
-
fontSize: s.fontSize ?? element.textStyle?.fontSize ??
|
|
17506
|
+
fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE,
|
|
17497
17507
|
fontWeight: s.bold ? 700 : 400,
|
|
17498
17508
|
fontStyle: s.italic ? "italic" : void 0,
|
|
17499
|
-
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? (0,
|
|
17509
|
+
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? (0, chunk3PKYNJJG_js.dist_exports.getSubstituteFontFamily)(s.fontFamily || element.textStyle?.fontFamily || "") : chunk3PKYNJJG_js.DEFAULT_FONT_FAMILY,
|
|
17500
17510
|
textDecoration: decos.length > 0 ? decos.join(" ") : void 0
|
|
17501
17511
|
};
|
|
17502
17512
|
}
|
|
@@ -17504,8 +17514,8 @@ function resolveSegmentFont(segment, element) {
|
|
|
17504
17514
|
const s = segment.style || {};
|
|
17505
17515
|
const family = s.fontFamily || element.textStyle?.fontFamily;
|
|
17506
17516
|
return {
|
|
17507
|
-
fontFamily: family ? (0,
|
|
17508
|
-
fontSizePx: s.fontSize ?? element.textStyle?.fontSize ??
|
|
17517
|
+
fontFamily: family ? (0, chunk3PKYNJJG_js.dist_exports.getSubstituteFontFamily)(family) : chunk3PKYNJJG_js.DEFAULT_FONT_FAMILY,
|
|
17518
|
+
fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE,
|
|
17509
17519
|
bold: s.bold ?? element.textStyle?.bold,
|
|
17510
17520
|
italic: s.italic ?? element.textStyle?.italic
|
|
17511
17521
|
};
|
|
@@ -17571,7 +17581,7 @@ function WarpedText({
|
|
|
17571
17581
|
fallbackColor,
|
|
17572
17582
|
fieldContext
|
|
17573
17583
|
}) {
|
|
17574
|
-
if (!(0,
|
|
17584
|
+
if (!(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element)) {
|
|
17575
17585
|
return null;
|
|
17576
17586
|
}
|
|
17577
17587
|
const textEl = element;
|
|
@@ -17589,9 +17599,9 @@ function WarpedText({
|
|
|
17589
17599
|
const warpAdj2 = textEl.textStyle?.textWarpAdj2;
|
|
17590
17600
|
const align = textEl.textStyle?.align ?? "center";
|
|
17591
17601
|
const { startOffset, textAnchor } = getAlignmentProps(align);
|
|
17592
|
-
const baseFontSize = textEl.textStyle?.fontSize ??
|
|
17593
|
-
const baseFontFamily = textEl.textStyle?.fontFamily ? (0,
|
|
17594
|
-
const baseFill =
|
|
17602
|
+
const baseFontSize = textEl.textStyle?.fontSize ?? chunk3PKYNJJG_js.DEFAULT_TEXT_FONT_SIZE;
|
|
17603
|
+
const baseFontFamily = textEl.textStyle?.fontFamily ? (0, chunk3PKYNJJG_js.dist_exports.getSubstituteFontFamily)(textEl.textStyle.fontFamily) : chunk3PKYNJJG_js.DEFAULT_FONT_FAMILY;
|
|
17604
|
+
const baseFill = chunk3PKYNJJG_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
|
|
17595
17605
|
if (pptx.hasGlyphEnvelope(preset)) {
|
|
17596
17606
|
const perLine = pptx.buildGlyphEnvelopeBlock(
|
|
17597
17607
|
preset,
|
|
@@ -17691,7 +17701,7 @@ function WarpedText({
|
|
|
17691
17701
|
);
|
|
17692
17702
|
}
|
|
17693
17703
|
var GLYPH_BY_SHAPE = Object.fromEntries(
|
|
17694
|
-
|
|
17704
|
+
chunk3PKYNJJG_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
|
|
17695
17705
|
);
|
|
17696
17706
|
GLYPH_BY_SHAPE["actionButtonForwardOrNext"] = GLYPH_BY_SHAPE["actionButtonForwardNext"];
|
|
17697
17707
|
GLYPH_BY_SHAPE["actionButtonBackOrPrevious"] = GLYPH_BY_SHAPE["actionButtonBackPrevious"];
|
|
@@ -17761,11 +17771,11 @@ function renderTextElementBody(options) {
|
|
|
17761
17771
|
const isLinkedTextBox = pptx.isLinkedTextBox(el);
|
|
17762
17772
|
const linkedSegments = pptx.getOverflowSegments(el, slideElements);
|
|
17763
17773
|
const useSvgWarp = pptx.shouldUseSvgWarp(
|
|
17764
|
-
(0,
|
|
17774
|
+
(0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? el.textStyle?.textWarpPreset : void 0
|
|
17765
17775
|
);
|
|
17766
|
-
const scene3dStyle = (0,
|
|
17776
|
+
const scene3dStyle = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(el) ? chunk3PKYNJJG_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
|
|
17767
17777
|
const rotationTransform = pptx.getTextBodyRotationTransform(el);
|
|
17768
|
-
const composedTransform = [rotationTransform,
|
|
17778
|
+
const composedTransform = [rotationTransform, chunk3PKYNJJG_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
17769
17779
|
const transformStyle = {
|
|
17770
17780
|
transform: composedTransform,
|
|
17771
17781
|
// A COM-measured homography (`scene3dStyle.transformOrigin === '0 0'`)
|
|
@@ -17795,18 +17805,18 @@ function renderTextElementBody(options) {
|
|
|
17795
17805
|
shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
17796
17806
|
"div",
|
|
17797
17807
|
{
|
|
17798
|
-
className:
|
|
17808
|
+
className: chunk3PKYNJJG_js.cn(
|
|
17799
17809
|
"relative z-10 w-full h-full",
|
|
17800
17810
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
17801
17811
|
),
|
|
17802
|
-
style: { ...
|
|
17812
|
+
style: { ...chunk3PKYNJJG_js.getTextLayoutStyle(el), ...transformStyle },
|
|
17803
17813
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17804
17814
|
WarpedText,
|
|
17805
17815
|
{
|
|
17806
17816
|
element: el,
|
|
17807
17817
|
width: el.width,
|
|
17808
17818
|
height: el.height,
|
|
17809
|
-
fallbackColor:
|
|
17819
|
+
fallbackColor: chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR,
|
|
17810
17820
|
findHighlights: findHl,
|
|
17811
17821
|
fieldContext
|
|
17812
17822
|
}
|
|
@@ -17815,19 +17825,19 @@ function renderTextElementBody(options) {
|
|
|
17815
17825
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
17816
17826
|
"div",
|
|
17817
17827
|
{
|
|
17818
|
-
className:
|
|
17828
|
+
className: chunk3PKYNJJG_js.cn(
|
|
17819
17829
|
"relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
|
|
17820
17830
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
17821
17831
|
),
|
|
17822
17832
|
style: {
|
|
17823
|
-
...
|
|
17833
|
+
...chunk3PKYNJJG_js.getTextLayoutStyle(el),
|
|
17824
17834
|
...txtS,
|
|
17825
|
-
...
|
|
17835
|
+
...chunk3PKYNJJG_js.getTextWarpStyle(txtSE),
|
|
17826
17836
|
...transformStyle
|
|
17827
17837
|
},
|
|
17828
|
-
children:
|
|
17838
|
+
children: chunk3PKYNJJG_js.renderTextSegments(
|
|
17829
17839
|
el,
|
|
17830
|
-
|
|
17840
|
+
chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR,
|
|
17831
17841
|
void 0,
|
|
17832
17842
|
findHl,
|
|
17833
17843
|
onHyperlinkClick,
|
|
@@ -18146,7 +18156,7 @@ function renderBody(options) {
|
|
|
18146
18156
|
);
|
|
18147
18157
|
}
|
|
18148
18158
|
if (isImg) {
|
|
18149
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style:
|
|
18159
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk3PKYNJJG_js.getImageSurfaceStyle(el), children: [
|
|
18150
18160
|
renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity),
|
|
18151
18161
|
vecShape ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0", children: vecShape }) : null
|
|
18152
18162
|
] });
|
|
@@ -18163,7 +18173,7 @@ function renderBody(options) {
|
|
|
18163
18173
|
textDirection: txtSE?.textDirection,
|
|
18164
18174
|
textStyle: txtS,
|
|
18165
18175
|
textStyleRaw: txtSE,
|
|
18166
|
-
layoutStyle:
|
|
18176
|
+
layoutStyle: chunk3PKYNJJG_js.getTextLayoutStyle(el),
|
|
18167
18177
|
element: el,
|
|
18168
18178
|
onCommit,
|
|
18169
18179
|
onCancel,
|
|
@@ -18174,7 +18184,7 @@ function renderBody(options) {
|
|
|
18174
18184
|
] });
|
|
18175
18185
|
}
|
|
18176
18186
|
if (el.type === "table") {
|
|
18177
|
-
return
|
|
18187
|
+
return chunk3PKYNJJG_js.renderTableElement(el, txtS, {
|
|
18178
18188
|
editable: isSel,
|
|
18179
18189
|
selectedCell: isSel ? tableSt : null,
|
|
18180
18190
|
onSelectCell: onCellSel,
|
|
@@ -18207,7 +18217,7 @@ function renderBody(options) {
|
|
|
18207
18217
|
);
|
|
18208
18218
|
}
|
|
18209
18219
|
if (el.type === "media") {
|
|
18210
|
-
return
|
|
18220
|
+
return chunk3PKYNJJG_js.renderMediaElement(el, media, {
|
|
18211
18221
|
// Present mode autoplays every media element on the active slide,
|
|
18212
18222
|
// not only ones persisted with their own `autoPlay` flag (matching
|
|
18213
18223
|
// the other four bindings' unconditional `presenting`-gated
|
|
@@ -18230,7 +18240,7 @@ function renderBody(options) {
|
|
|
18230
18240
|
onPlayStateChange: handleMediaPlayStateChange
|
|
18231
18241
|
});
|
|
18232
18242
|
}
|
|
18233
|
-
if (doInk && (0,
|
|
18243
|
+
if (doInk && (0, chunk3PKYNJJG_js.dist_exports.isInkElement)(el)) {
|
|
18234
18244
|
return renderInk(el, {
|
|
18235
18245
|
replay: isPresentationPassive,
|
|
18236
18246
|
pressureSensitive: true
|
|
@@ -18259,27 +18269,27 @@ function renderBody(options) {
|
|
|
18259
18269
|
}
|
|
18260
18270
|
return renderGroup(el.children, pptx.getGroupChildParentFill(el));
|
|
18261
18271
|
}
|
|
18262
|
-
if (
|
|
18263
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
18272
|
+
if (chunk3PKYNJJG_js.shouldRenderFallbackLabel(el, isTxtEl)) {
|
|
18273
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3PKYNJJG_js.getElementLabel(el) });
|
|
18264
18274
|
}
|
|
18265
18275
|
return renderTextElementBody(options);
|
|
18266
18276
|
}
|
|
18267
18277
|
function defaultTextColorForFill(fillColor) {
|
|
18268
18278
|
const hex = String(fillColor ?? "").replace(/^#/u, "");
|
|
18269
18279
|
if (!/^[0-9a-f]{6}$/iu.test(hex)) {
|
|
18270
|
-
return
|
|
18280
|
+
return chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR;
|
|
18271
18281
|
}
|
|
18272
18282
|
const channels = [0, 2, 4].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16) / 255).map((channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4);
|
|
18273
18283
|
const luminance = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722;
|
|
18274
|
-
return luminance > 0.179 ?
|
|
18284
|
+
return luminance > 0.179 ? chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR : "#ffffff";
|
|
18275
18285
|
}
|
|
18276
18286
|
function getStaticElementVisualState(element, parentGroupFill) {
|
|
18277
|
-
const style = (0,
|
|
18278
|
-
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(
|
|
18279
|
-
const fill =
|
|
18287
|
+
const style = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(element) ? element.shapeStyle : void 0;
|
|
18288
|
+
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk3PKYNJJG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
18289
|
+
const fill = chunk3PKYNJJG_js.normalizeHexColor(style?.fillColor, chunk3PKYNJJG_js.DEFAULT_FILL_COLOR);
|
|
18280
18290
|
const strokeWidth = pptx.paintedStrokeWidth(style);
|
|
18281
|
-
const stroke =
|
|
18282
|
-
const baseVisualStyle =
|
|
18291
|
+
const stroke = chunk3PKYNJJG_js.normalizeHexColor(style?.strokeColor, chunk3PKYNJJG_js.DEFAULT_STROKE_COLOR);
|
|
18292
|
+
const baseVisualStyle = chunk3PKYNJJG_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
|
|
18283
18293
|
const inheritedFill = pptx.resolveGroupChildFill(element, parentGroupFill);
|
|
18284
18294
|
const visualStyle = inheritedFill ? {
|
|
18285
18295
|
...baseVisualStyle,
|
|
@@ -18289,13 +18299,13 @@ function getStaticElementVisualState(element, parentGroupFill) {
|
|
|
18289
18299
|
backgroundSize: inheritedFill.backgroundSize,
|
|
18290
18300
|
backgroundPosition: inheritedFill.backgroundPosition
|
|
18291
18301
|
} : baseVisualStyle;
|
|
18292
|
-
const textStyle =
|
|
18302
|
+
const textStyle = chunk3PKYNJJG_js.getTextStyleForElement(
|
|
18293
18303
|
element,
|
|
18294
|
-
element.type === "shape" && hasFill ? defaultTextColorForFill(fill) :
|
|
18304
|
+
element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunk3PKYNJJG_js.DEFAULT_TEXT_COLOR
|
|
18295
18305
|
);
|
|
18296
18306
|
const isImage = element.type === "picture" || element.type === "image";
|
|
18297
|
-
const letsTextOverflow = (0,
|
|
18298
|
-
const shapeType = (0,
|
|
18307
|
+
const letsTextOverflow = (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
|
|
18308
|
+
const shapeType = (0, chunk3PKYNJJG_js.dist_exports.hasShapeProperties)(element) ? element.shapeType : void 0;
|
|
18299
18309
|
const isCallout = pptx.isWedgeCalloutPresetShape(shapeType) || String(shapeType ?? "").toLowerCase().includes("callout");
|
|
18300
18310
|
return {
|
|
18301
18311
|
hasFill,
|
|
@@ -18316,7 +18326,7 @@ function getStaticElementInteractionState(element, hasActionHandler, exposeEleme
|
|
|
18316
18326
|
return { action, isActionable, contractRole };
|
|
18317
18327
|
}
|
|
18318
18328
|
function getStaticElementWrapperClassName(element, visual, positioned, isActionable) {
|
|
18319
|
-
const overflowClass = visual.isImage || element.type === "group" ||
|
|
18329
|
+
const overflowClass = visual.isImage || element.type === "group" || chunk3PKYNJJG_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
|
|
18320
18330
|
const pointerClass = isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none";
|
|
18321
18331
|
return `${positioned ? "absolute" : "relative"} ${overflowClass} ${pointerClass}`;
|
|
18322
18332
|
}
|
|
@@ -18399,7 +18409,7 @@ function StaticElementRendererImpl({
|
|
|
18399
18409
|
top: positioned ? element.y : void 0,
|
|
18400
18410
|
width: positioned ? Math.max(element.width, 1) : "100%",
|
|
18401
18411
|
height: positioned ? Math.max(element.height, 1) : "100%",
|
|
18402
|
-
transform: positioned ?
|
|
18412
|
+
transform: positioned ? chunk3PKYNJJG_js.getElementTransform(element) : void 0,
|
|
18403
18413
|
transformOrigin: "center",
|
|
18404
18414
|
zIndex,
|
|
18405
18415
|
...visualStyle,
|
|
@@ -18440,20 +18450,20 @@ function StaticElementRendererImpl({
|
|
|
18440
18450
|
isEditing: false,
|
|
18441
18451
|
editText: "",
|
|
18442
18452
|
spellCheck: false,
|
|
18443
|
-
txtSE: (0,
|
|
18453
|
+
txtSE: (0, chunk3PKYNJJG_js.dist_exports.hasTextProperties)(element) ? element.textStyle : void 0,
|
|
18444
18454
|
txtS: textStyle,
|
|
18445
|
-
vecShape:
|
|
18455
|
+
vecShape: chunk3PKYNJJG_js.renderVectorShape(
|
|
18446
18456
|
element,
|
|
18447
18457
|
isImage ? false : hasFill,
|
|
18448
18458
|
fill,
|
|
18449
18459
|
strokeWidth,
|
|
18450
18460
|
stroke
|
|
18451
18461
|
),
|
|
18452
|
-
imgStyle: imageAnimation ? { ...
|
|
18453
|
-
imgFilter:
|
|
18454
|
-
imgOpacity:
|
|
18462
|
+
imgStyle: imageAnimation ? { ...chunk3PKYNJJG_js.getImageRenderStyle(element), animation: imageAnimation } : chunk3PKYNJJG_js.getImageRenderStyle(element),
|
|
18463
|
+
imgFilter: chunk3PKYNJJG_js.getImageEffectsFilter(element),
|
|
18464
|
+
imgOpacity: chunk3PKYNJJG_js.getImageEffectsOpacity(element),
|
|
18455
18465
|
imgAlt: "",
|
|
18456
|
-
isTxtEl:
|
|
18466
|
+
isTxtEl: chunk3PKYNJJG_js.isEditableTextElement(element),
|
|
18457
18467
|
media: mediaDataUrls,
|
|
18458
18468
|
tableSt: null,
|
|
18459
18469
|
isSel: false,
|
|
@@ -18499,7 +18509,7 @@ function SlideLayer({
|
|
|
18499
18509
|
style: {
|
|
18500
18510
|
width: safeWidth,
|
|
18501
18511
|
height: safeHeight,
|
|
18502
|
-
backgroundColor: slide.backgroundColor ?
|
|
18512
|
+
backgroundColor: slide.backgroundColor ? chunk3PKYNJJG_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
|
|
18503
18513
|
backgroundImage: slide.backgroundImage ? `url(${slide.backgroundImage})` : slide.backgroundGradient ? slide.backgroundGradient : void 0,
|
|
18504
18514
|
backgroundSize: slide.backgroundImage ? "cover" : void 0,
|
|
18505
18515
|
backgroundPosition: slide.backgroundImage ? "center" : void 0
|