pptx-react-viewer 4.1.6 → 4.3.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 +38 -0
- package/dist/{AiChatPanel-DRCY3T2Z.js → AiChatPanel-7UQA25FA.js} +28 -28
- package/dist/AiChatPanel-7UQA25FA.js.br +0 -0
- package/dist/AiChatPanel-7UQA25FA.js.gz +0 -0
- package/dist/{AiChatPanel-Y2RKSHOO.mjs → AiChatPanel-UCEK3ZTD.mjs} +4 -4
- package/dist/AiChatPanel-UCEK3ZTD.mjs.br +0 -0
- package/dist/AiChatPanel-UCEK3ZTD.mjs.gz +0 -0
- package/dist/{Model3DScene-ITHRMCLT.mjs → Model3DScene-AI2JTBQM.mjs} +1 -1
- package/dist/Model3DScene-AI2JTBQM.mjs.br +0 -0
- package/dist/Model3DScene-AI2JTBQM.mjs.gz +0 -0
- package/dist/{Model3DScene-VJZS726S.js → Model3DScene-X3DS3ELB.js} +2 -2
- package/dist/Model3DScene-X3DS3ELB.js.br +0 -0
- package/dist/Model3DScene-X3DS3ELB.js.gz +0 -0
- package/dist/{chunk-IXS7DALE.js → OrbitControls-4TDJCTBA.js} +1 -0
- package/dist/OrbitControls-4TDJCTBA.js.br +0 -0
- package/dist/OrbitControls-4TDJCTBA.js.gz +0 -0
- package/dist/{chunk-MV2GCDBR.mjs → OrbitControls-WCOIJFFL.mjs} +1 -0
- package/dist/OrbitControls-WCOIJFFL.mjs.br +0 -0
- package/dist/OrbitControls-WCOIJFFL.mjs.gz +0 -0
- package/dist/{chunk-FT3MMIXW.mjs → chunk-3UWJWJCR.mjs} +69243 -56884
- package/dist/chunk-3UWJWJCR.mjs.br +0 -0
- package/dist/chunk-3UWJWJCR.mjs.gz +0 -0
- package/dist/{chunk-LNSYROED.js → chunk-42XEZVUQ.js} +1322 -1216
- package/dist/chunk-42XEZVUQ.js.br +0 -0
- package/dist/chunk-42XEZVUQ.js.gz +0 -0
- package/dist/{chunk-P5LF34BT.js → chunk-E7O4HTS5.js} +195 -187
- package/dist/chunk-E7O4HTS5.js.br +0 -0
- package/dist/chunk-E7O4HTS5.js.gz +0 -0
- package/dist/{chunk-2O66VMWK.js → chunk-KAO5USPE.js} +5 -5
- package/dist/chunk-KAO5USPE.js.br +0 -0
- package/dist/chunk-KAO5USPE.js.gz +0 -0
- package/dist/{chunk-PC7H3C5W.mjs → chunk-OBQ453H6.mjs} +2 -2
- package/dist/chunk-OBQ453H6.mjs.br +0 -0
- package/dist/chunk-OBQ453H6.mjs.gz +0 -0
- package/dist/{chunk-KDTE5JOW.mjs → chunk-PLDG3CXW.mjs} +18 -10
- package/dist/chunk-PLDG3CXW.mjs.br +0 -0
- package/dist/chunk-PLDG3CXW.mjs.gz +0 -0
- package/dist/{chunk-YHTDDCSC.mjs → chunk-RXYLPESV.mjs} +265 -159
- package/dist/chunk-RXYLPESV.mjs.br +0 -0
- package/dist/chunk-RXYLPESV.mjs.gz +0 -0
- package/dist/{chunk-OFSKGB3W.mjs → chunk-SKTZSG7Q.mjs} +531 -748
- package/dist/chunk-SKTZSG7Q.mjs.br +0 -0
- package/dist/chunk-SKTZSG7Q.mjs.gz +0 -0
- package/dist/{chunk-QMSSDBKN.js → chunk-UTI4CLYJ.js} +69255 -56897
- package/dist/chunk-UTI4CLYJ.js.br +0 -0
- package/dist/chunk-UTI4CLYJ.js.gz +0 -0
- package/dist/{chunk-NXGUR2DO.js → chunk-W5KLLGVH.js} +2 -2
- package/dist/chunk-W5KLLGVH.js.br +0 -0
- package/dist/chunk-W5KLLGVH.js.gz +0 -0
- package/dist/{chunk-VWGJXNMR.js → chunk-Y7LI2JIR.js} +1992 -2215
- package/dist/chunk-Y7LI2JIR.js.br +0 -0
- package/dist/chunk-Y7LI2JIR.js.gz +0 -0
- package/dist/{chunk-QEYWSHNE.mjs → chunk-YQJOCGOK.mjs} +1 -1
- package/dist/chunk-YQJOCGOK.mjs.br +0 -0
- package/dist/chunk-YQJOCGOK.mjs.gz +0 -0
- package/dist/i18n/de.cjs +2 -2
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +2 -2
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +2 -2
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +2 -2
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +2 -2
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +2 -2
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +2 -2
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +2 -2
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +310 -22
- package/dist/index.js +49 -49
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +358 -22
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +278 -3
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-DRCY3T2Z.js.br +0 -0
- package/dist/AiChatPanel-DRCY3T2Z.js.gz +0 -0
- package/dist/AiChatPanel-Y2RKSHOO.mjs.br +0 -0
- package/dist/AiChatPanel-Y2RKSHOO.mjs.gz +0 -0
- package/dist/Area3DChartScene-J4LMNSGM.js +0 -64
- package/dist/Area3DChartScene-J4LMNSGM.js.br +0 -0
- package/dist/Area3DChartScene-J4LMNSGM.js.gz +0 -0
- package/dist/Area3DChartScene-TDACCSOI.mjs +0 -62
- package/dist/Area3DChartScene-TDACCSOI.mjs.br +0 -0
- package/dist/Area3DChartScene-TDACCSOI.mjs.gz +0 -0
- package/dist/Bar3DChartScene-AD72DLBJ.mjs +0 -62
- package/dist/Bar3DChartScene-AD72DLBJ.mjs.br +0 -0
- package/dist/Bar3DChartScene-AD72DLBJ.mjs.gz +0 -0
- package/dist/Bar3DChartScene-T7334CTK.js +0 -64
- package/dist/Bar3DChartScene-T7334CTK.js.br +0 -0
- package/dist/Bar3DChartScene-T7334CTK.js.gz +0 -0
- package/dist/Line3DChartScene-2ZQSCHK3.mjs +0 -62
- package/dist/Line3DChartScene-2ZQSCHK3.mjs.br +0 -0
- package/dist/Line3DChartScene-2ZQSCHK3.mjs.gz +0 -0
- package/dist/Line3DChartScene-ELVKCFJZ.js +0 -64
- package/dist/Line3DChartScene-ELVKCFJZ.js.br +0 -0
- package/dist/Line3DChartScene-ELVKCFJZ.js.gz +0 -0
- package/dist/Model3DScene-ITHRMCLT.mjs.br +0 -0
- package/dist/Model3DScene-ITHRMCLT.mjs.gz +0 -0
- package/dist/Model3DScene-VJZS726S.js.br +0 -0
- package/dist/Model3DScene-VJZS726S.js.gz +0 -0
- package/dist/OrbitControls-2XOMWUVE.mjs +0 -3
- package/dist/OrbitControls-2XOMWUVE.mjs.br +0 -0
- package/dist/OrbitControls-2XOMWUVE.mjs.gz +0 -0
- package/dist/OrbitControls-CGYUF3BY.js +0 -12
- package/dist/OrbitControls-CGYUF3BY.js.br +0 -0
- package/dist/OrbitControls-CGYUF3BY.js.gz +0 -0
- package/dist/PieChart3DScene-N3DM33FW.js +0 -58
- package/dist/PieChart3DScene-N3DM33FW.js.br +0 -0
- package/dist/PieChart3DScene-N3DM33FW.js.gz +0 -0
- package/dist/PieChart3DScene-PYHOA7BO.mjs +0 -56
- package/dist/PieChart3DScene-PYHOA7BO.mjs.br +0 -0
- package/dist/PieChart3DScene-PYHOA7BO.mjs.gz +0 -0
- package/dist/SmartArt3DScene-D4VNNPHS.mjs +0 -500
- package/dist/SmartArt3DScene-D4VNNPHS.mjs.br +0 -0
- package/dist/SmartArt3DScene-D4VNNPHS.mjs.gz +0 -0
- package/dist/SmartArt3DScene-NHD7CZJ5.js +0 -502
- package/dist/SmartArt3DScene-NHD7CZJ5.js.br +0 -0
- package/dist/SmartArt3DScene-NHD7CZJ5.js.gz +0 -0
- package/dist/SurfaceChart3DScene-IFBUOLNB.mjs +0 -62
- package/dist/SurfaceChart3DScene-IFBUOLNB.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-IFBUOLNB.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-PUWIMT7V.js +0 -64
- package/dist/SurfaceChart3DScene-PUWIMT7V.js.br +0 -0
- package/dist/SurfaceChart3DScene-PUWIMT7V.js.gz +0 -0
- package/dist/chunk-2O66VMWK.js.br +0 -0
- package/dist/chunk-2O66VMWK.js.gz +0 -0
- package/dist/chunk-DNR6CH6I.js +0 -30
- package/dist/chunk-DNR6CH6I.js.br +0 -0
- package/dist/chunk-DNR6CH6I.js.gz +0 -0
- package/dist/chunk-FT3MMIXW.mjs.br +0 -0
- package/dist/chunk-FT3MMIXW.mjs.gz +0 -0
- package/dist/chunk-IXS7DALE.js.br +0 -0
- package/dist/chunk-IXS7DALE.js.gz +0 -0
- package/dist/chunk-KDTE5JOW.mjs.br +0 -0
- package/dist/chunk-KDTE5JOW.mjs.gz +0 -0
- package/dist/chunk-LNSYROED.js.br +0 -0
- package/dist/chunk-LNSYROED.js.gz +0 -0
- package/dist/chunk-MV2GCDBR.mjs.br +0 -0
- package/dist/chunk-MV2GCDBR.mjs.gz +0 -0
- package/dist/chunk-NXGUR2DO.js.br +0 -0
- package/dist/chunk-NXGUR2DO.js.gz +0 -0
- package/dist/chunk-OFSKGB3W.mjs.br +0 -0
- package/dist/chunk-OFSKGB3W.mjs.gz +0 -0
- package/dist/chunk-P5LF34BT.js.br +0 -0
- package/dist/chunk-P5LF34BT.js.gz +0 -0
- package/dist/chunk-PC7H3C5W.mjs.br +0 -0
- package/dist/chunk-PC7H3C5W.mjs.gz +0 -0
- package/dist/chunk-QEYWSHNE.mjs.br +0 -0
- package/dist/chunk-QEYWSHNE.mjs.gz +0 -0
- package/dist/chunk-QMSSDBKN.js.br +0 -0
- package/dist/chunk-QMSSDBKN.js.gz +0 -0
- package/dist/chunk-T6GFCLSM.mjs +0 -27
- package/dist/chunk-T6GFCLSM.mjs.br +0 -4
- package/dist/chunk-T6GFCLSM.mjs.gz +0 -0
- package/dist/chunk-VWGJXNMR.js.br +0 -0
- package/dist/chunk-VWGJXNMR.js.gz +0 -0
- package/dist/chunk-YHTDDCSC.mjs.br +0 -0
- package/dist/chunk-YHTDDCSC.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkUTI4CLYJ_js = require('./chunk-UTI4CLYJ.js');
|
|
4
|
+
var chunkW5KLLGVH_js = require('./chunk-W5KLLGVH.js');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var React7 = require('react');
|
|
@@ -15,7 +15,7 @@ var React7__default = /*#__PURE__*/_interopDefault(React7);
|
|
|
15
15
|
|
|
16
16
|
// src/viewer/utils/animation-effects.ts
|
|
17
17
|
function getAnimationInitialStyle2(preset, nativeAnimation) {
|
|
18
|
-
return
|
|
18
|
+
return chunkUTI4CLYJ_js.getAnimationInitialStyle(preset, nativeAnimation);
|
|
19
19
|
}
|
|
20
20
|
function cn(...inputs) {
|
|
21
21
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
@@ -23,7 +23,7 @@ function cn(...inputs) {
|
|
|
23
23
|
|
|
24
24
|
// src/viewer/utils/clone.ts
|
|
25
25
|
function cloneHistorySnapshot2(snapshot) {
|
|
26
|
-
return
|
|
26
|
+
return chunkUTI4CLYJ_js.cloneHistorySnapshot(snapshot);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// src/viewer/constants/scalar.ts
|
|
@@ -61,7 +61,7 @@ var TOOLBAR_SECTIONS = [
|
|
|
61
61
|
{ id: "view", labelKey: "pptx.ribbon.tab.view" },
|
|
62
62
|
{ id: "help", labelKey: "pptx.ribbon.tab.help" }
|
|
63
63
|
];
|
|
64
|
-
var SHORTCUT_REFERENCE_ITEMS =
|
|
64
|
+
var SHORTCUT_REFERENCE_ITEMS = chunkUTI4CLYJ_js.VIEWER_SHORTCUT_REFERENCE;
|
|
65
65
|
|
|
66
66
|
// src/viewer/constants/transitions-animations.ts
|
|
67
67
|
var ANIMATION_PRESET_OPTIONS = [
|
|
@@ -89,7 +89,7 @@ var GLYPH_COMPONENTS = {
|
|
|
89
89
|
plus: lu.LuPlus,
|
|
90
90
|
triangle: lu.LuTriangle
|
|
91
91
|
};
|
|
92
|
-
var SHAPE_PRESETS =
|
|
92
|
+
var SHAPE_PRESETS = chunkUTI4CLYJ_js.SHAPE_PRESET_DEFS.map(
|
|
93
93
|
(def) => ({
|
|
94
94
|
type: def.type,
|
|
95
95
|
label: def.label,
|
|
@@ -114,7 +114,7 @@ var ARROW_SIZE_OPTIONS = [
|
|
|
114
114
|
{ value: "med", label: "Medium", i18nKey: "pptx.connectorOptions.sizeMedium" },
|
|
115
115
|
{ value: "lg", label: "Large", i18nKey: "pptx.connectorOptions.sizeLarge" }
|
|
116
116
|
];
|
|
117
|
-
var STROKE_DASH_OPTIONS2 =
|
|
117
|
+
var STROKE_DASH_OPTIONS2 = chunkUTI4CLYJ_js.STROKE_DASH_OPTIONS;
|
|
118
118
|
|
|
119
119
|
// src/viewer/utils/shape-types.tsx
|
|
120
120
|
function getShapeType(shapeType) {
|
|
@@ -223,7 +223,7 @@ function isConnectorOrLineElement(element) {
|
|
|
223
223
|
if (element.type === "connector") {
|
|
224
224
|
return true;
|
|
225
225
|
}
|
|
226
|
-
if (!
|
|
226
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
227
227
|
return false;
|
|
228
228
|
}
|
|
229
229
|
const st = getShapeType(element.shapeType);
|
|
@@ -232,18 +232,18 @@ function isConnectorOrLineElement(element) {
|
|
|
232
232
|
|
|
233
233
|
// src/viewer/utils/image-style.ts
|
|
234
234
|
function getImageMaskStyle(element) {
|
|
235
|
-
if (!
|
|
235
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
236
236
|
return void 0;
|
|
237
237
|
}
|
|
238
|
-
const geometry =
|
|
238
|
+
const geometry = chunkUTI4CLYJ_js.resolveShapeGeometry(element);
|
|
239
239
|
if (geometry.kind === "borderRadius") {
|
|
240
240
|
return { borderRadius: geometry.radius };
|
|
241
241
|
}
|
|
242
242
|
return geometry.kind === "clipPath" ? { clipPath: geometry.clipPath } : void 0;
|
|
243
243
|
}
|
|
244
244
|
function getImageRenderStyle(element) {
|
|
245
|
-
const fit =
|
|
246
|
-
const counterTransform =
|
|
245
|
+
const fit = chunkUTI4CLYJ_js.getImageFitStyle(element);
|
|
246
|
+
const counterTransform = chunkUTI4CLYJ_js.getImageFillCounterTransform(element, Boolean(fit.transform));
|
|
247
247
|
return {
|
|
248
248
|
// A translated/scaled crop, or a rotWithShape=false counter-transform,
|
|
249
249
|
// must be masked by the stationary wrapper, not by the moving/counter-
|
|
@@ -262,7 +262,7 @@ function getImageSurfaceMaskStyle(element) {
|
|
|
262
262
|
};
|
|
263
263
|
}
|
|
264
264
|
function getImageSurfaceStyle(element) {
|
|
265
|
-
const fill =
|
|
265
|
+
const fill = chunkUTI4CLYJ_js.hasShapeProperties(element) ? chunkUTI4CLYJ_js.getComputedFillStyle(element) : void 0;
|
|
266
266
|
return {
|
|
267
267
|
position: "absolute",
|
|
268
268
|
inset: 0,
|
|
@@ -275,13 +275,13 @@ function getImageSurfaceStyle(element) {
|
|
|
275
275
|
};
|
|
276
276
|
}
|
|
277
277
|
function getCropShapeClipPath2(element) {
|
|
278
|
-
if (!
|
|
278
|
+
if (!chunkUTI4CLYJ_js.isImageLikeElement(element)) {
|
|
279
279
|
return void 0;
|
|
280
280
|
}
|
|
281
|
-
return
|
|
281
|
+
return chunkUTI4CLYJ_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
|
|
282
282
|
}
|
|
283
|
-
function getImageTilingStyle2(element) {
|
|
284
|
-
return
|
|
283
|
+
function getImageTilingStyle2(element, nativeSize) {
|
|
284
|
+
return chunkUTI4CLYJ_js.getImageTilingStyle(element, nativeSize);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
// src/viewer/utils/geometry-image.ts
|
|
@@ -413,7 +413,7 @@ function VideoWithMetadata({
|
|
|
413
413
|
{
|
|
414
414
|
ref: mediaRef,
|
|
415
415
|
className: "w-full h-full pointer-events-auto",
|
|
416
|
-
style: isFullScreen ? { objectFit: "cover" } :
|
|
416
|
+
style: isFullScreen ? { objectFit: "cover" } : chunkUTI4CLYJ_js.getImageFitStyle(element),
|
|
417
417
|
controls: showTransport,
|
|
418
418
|
preload: "metadata",
|
|
419
419
|
playsInline: true,
|
|
@@ -470,7 +470,7 @@ function PresentationMediaController({
|
|
|
470
470
|
const [isMediaPlaying, setIsMediaPlaying] = React7.useState(false);
|
|
471
471
|
const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
|
|
472
472
|
const hideWhenNotPlaying = isPresentationMode && element.hideWhenNotPlaying === true;
|
|
473
|
-
const { volume: playbackVolume, playbackRate } =
|
|
473
|
+
const { volume: playbackVolume, playbackRate } = chunkUTI4CLYJ_js.mediaPlaybackAttributes({
|
|
474
474
|
loop: element.loop,
|
|
475
475
|
volume: element.volume,
|
|
476
476
|
playbackSpeed: element.playbackSpeed
|
|
@@ -518,7 +518,7 @@ function PresentationMediaController({
|
|
|
518
518
|
if (!el || !isPresentationMode) {
|
|
519
519
|
return;
|
|
520
520
|
}
|
|
521
|
-
return
|
|
521
|
+
return chunkUTI4CLYJ_js.scheduleMediaTrimAndFade(el, {
|
|
522
522
|
trimStartMs: element.trimStartMs,
|
|
523
523
|
trimEndMs: element.trimEndMs,
|
|
524
524
|
fadeInDuration: element.fadeInDuration,
|
|
@@ -539,7 +539,7 @@ function PresentationMediaController({
|
|
|
539
539
|
}
|
|
540
540
|
if (element.playAcrossSlides && element.mediaType === "audio") {
|
|
541
541
|
const dataUrl = element.mediaData ?? resolvedDataUrl;
|
|
542
|
-
if (
|
|
542
|
+
if (chunkUTI4CLYJ_js.registerCrossSlideAudio(element, dataUrl)) {
|
|
543
543
|
return;
|
|
544
544
|
}
|
|
545
545
|
}
|
|
@@ -571,7 +571,11 @@ function PresentationMediaController({
|
|
|
571
571
|
}, []);
|
|
572
572
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full", style: wrapperStyle, children: [
|
|
573
573
|
children({ mediaRef, onPlay: noopOnPlay, isMediaPlaying }),
|
|
574
|
-
|
|
574
|
+
chunkUTI4CLYJ_js.shouldShowMediaFullscreenStopButton({
|
|
575
|
+
fullScreen: isFullScreen,
|
|
576
|
+
presenting: isPresentationMode,
|
|
577
|
+
playing: isMediaPlaying
|
|
578
|
+
}) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
575
579
|
"button",
|
|
576
580
|
{
|
|
577
581
|
type: "button",
|
|
@@ -584,7 +588,7 @@ function PresentationMediaController({
|
|
|
584
588
|
] });
|
|
585
589
|
}
|
|
586
590
|
function label(key) {
|
|
587
|
-
return key === void 0 ? void 0 :
|
|
591
|
+
return key === void 0 ? void 0 : chunkW5KLLGVH_js.translationsEn[key];
|
|
588
592
|
}
|
|
589
593
|
function FallbackIcon({
|
|
590
594
|
paths,
|
|
@@ -620,17 +624,17 @@ function Badge({
|
|
|
620
624
|
"div",
|
|
621
625
|
{
|
|
622
626
|
className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
|
|
623
|
-
...{ [
|
|
627
|
+
...{ [chunkUTI4CLYJ_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
|
|
624
628
|
children: [
|
|
625
629
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
626
630
|
FallbackIcon,
|
|
627
631
|
{
|
|
628
|
-
paths:
|
|
632
|
+
paths: chunkUTI4CLYJ_js.mediaFallbackIcon(visual, element.mediaType),
|
|
629
633
|
size: isMissing ? 32 : 48,
|
|
630
634
|
className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
|
|
631
635
|
}
|
|
632
636
|
),
|
|
633
|
-
isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(
|
|
637
|
+
isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkUTI4CLYJ_js.mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
634
638
|
]
|
|
635
639
|
}
|
|
636
640
|
);
|
|
@@ -647,17 +651,17 @@ function Placeholder({
|
|
|
647
651
|
"div",
|
|
648
652
|
{
|
|
649
653
|
className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
|
|
650
|
-
...{ [
|
|
654
|
+
...{ [chunkUTI4CLYJ_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
|
|
651
655
|
children: [
|
|
652
656
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
653
657
|
FallbackIcon,
|
|
654
658
|
{
|
|
655
|
-
paths:
|
|
659
|
+
paths: chunkUTI4CLYJ_js.mediaFallbackIcon(visual, element.mediaType),
|
|
656
660
|
size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
|
|
657
661
|
className: isMissing ? "text-white/50" : "text-white/70"
|
|
658
662
|
}
|
|
659
663
|
),
|
|
660
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(
|
|
664
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkUTI4CLYJ_js.mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
661
665
|
]
|
|
662
666
|
}
|
|
663
667
|
);
|
|
@@ -667,7 +671,7 @@ function renderMediaFallback({
|
|
|
667
671
|
posterUrl,
|
|
668
672
|
surface
|
|
669
673
|
}) {
|
|
670
|
-
const visual =
|
|
674
|
+
const visual = chunkUTI4CLYJ_js.mediaFallbackVisual(surface, {
|
|
671
675
|
hasPoster: Boolean(posterUrl),
|
|
672
676
|
missing: element.mediaMissing === true
|
|
673
677
|
});
|
|
@@ -677,9 +681,9 @@ function renderMediaFallback({
|
|
|
677
681
|
"img",
|
|
678
682
|
{
|
|
679
683
|
src: posterUrl,
|
|
680
|
-
alt: visual.dimPoster ?
|
|
684
|
+
alt: visual.dimPoster ? chunkW5KLLGVH_js.translationsEn["pptx.media.posterAlt"] : chunkW5KLLGVH_js.translationsEn["pptx.media.videoPosterAlt"],
|
|
681
685
|
className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
|
|
682
|
-
style:
|
|
686
|
+
style: chunkUTI4CLYJ_js.getImageFitStyle(element)
|
|
683
687
|
}
|
|
684
688
|
),
|
|
685
689
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
|
|
@@ -689,7 +693,7 @@ function renderMediaFallback({
|
|
|
689
693
|
}
|
|
690
694
|
function renderMediaElement(element, mediaDataUrls, options) {
|
|
691
695
|
if (element.type !== "media") {
|
|
692
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
696
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.media.title"] });
|
|
693
697
|
}
|
|
694
698
|
const mediaType = element.mediaType;
|
|
695
699
|
const mediaPath = element.mediaPath;
|
|
@@ -697,7 +701,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
697
701
|
const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
|
|
698
702
|
const trimFragment = buildTrimFragment(element);
|
|
699
703
|
const posterUrl = element.posterFrameData ?? void 0;
|
|
700
|
-
const shouldLoop =
|
|
704
|
+
const shouldLoop = chunkUTI4CLYJ_js.mediaPlaybackAttributes(element).loop;
|
|
701
705
|
const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
|
|
702
706
|
const isFullScreen = options?.fullScreen === true;
|
|
703
707
|
const isPresentationMode = options?.isPresentationMode === true;
|
|
@@ -775,42 +779,42 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
775
779
|
if (surface.presenting || surface.preview) {
|
|
776
780
|
return null;
|
|
777
781
|
}
|
|
778
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
782
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.media.title"] });
|
|
779
783
|
}
|
|
780
784
|
|
|
781
785
|
// src/viewer/utils/text-utils.tsx
|
|
782
786
|
function getTextStyleForElement(element, fallbackColor) {
|
|
783
|
-
return
|
|
787
|
+
return chunkUTI4CLYJ_js.buildTextBlockStyle(element, { fallbackColor });
|
|
784
788
|
}
|
|
785
789
|
|
|
786
790
|
// src/viewer/utils/text-layout.tsx
|
|
787
791
|
function getTextLayoutStyle(element) {
|
|
788
|
-
if (!
|
|
792
|
+
if (!chunkUTI4CLYJ_js.hasTextProperties(element)) {
|
|
789
793
|
return {};
|
|
790
794
|
}
|
|
791
|
-
const writingMode =
|
|
792
|
-
const textOrientation =
|
|
793
|
-
const verticalDirection =
|
|
795
|
+
const writingMode = chunkUTI4CLYJ_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
796
|
+
const textOrientation = chunkUTI4CLYJ_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
797
|
+
const verticalDirection = chunkUTI4CLYJ_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
794
798
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
795
799
|
const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
|
|
796
|
-
const hasParagraphIndents =
|
|
800
|
+
const hasParagraphIndents = chunkUTI4CLYJ_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
797
801
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
798
802
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
799
803
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
800
804
|
const textIndent = !hasParagraphIndents && typeof paragraphIndent === "number" && paragraphIndent !== 0 ? paragraphIndent : void 0;
|
|
801
805
|
const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
|
|
802
806
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
807
|
+
const bodyLayoutStyle = chunkUTI4CLYJ_js.buildTextBodyLayoutStyle(element);
|
|
803
808
|
return {
|
|
804
|
-
|
|
805
|
-
...chunkQMSSDBKN_js.buildTextBodyLayoutStyle(element),
|
|
809
|
+
...bodyLayoutStyle,
|
|
806
810
|
// Body inset only. Paragraph spacing (spcBef/spcAft) is applied
|
|
807
811
|
// per-paragraph by the paragraph renderer, not collapsed here.
|
|
808
812
|
paddingTop: bodyTop,
|
|
809
813
|
paddingBottom: bodyBottom,
|
|
810
814
|
writingMode,
|
|
811
815
|
textOrientation,
|
|
812
|
-
direction: verticalDirection,
|
|
813
|
-
marginLeft,
|
|
816
|
+
direction: verticalDirection ?? bodyLayoutStyle.direction,
|
|
817
|
+
marginLeft: marginLeft ?? bodyLayoutStyle.marginLeft,
|
|
814
818
|
textIndent,
|
|
815
819
|
...shapeAutoFitTextBox ? {
|
|
816
820
|
width: textWrapNone ? "max-content" : "100%",
|
|
@@ -830,7 +834,7 @@ function getTextLayoutStyle(element) {
|
|
|
830
834
|
|
|
831
835
|
// src/viewer/utils/text-effects.tsx
|
|
832
836
|
function buildTextBody3DSceneStyle2(textStyle, elementSize) {
|
|
833
|
-
return
|
|
837
|
+
return chunkUTI4CLYJ_js.buildTextBody3DSceneStyle(textStyle, elementSize);
|
|
834
838
|
}
|
|
835
839
|
|
|
836
840
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1015,13 +1019,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1015
1019
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1016
1020
|
return renderedSegments;
|
|
1017
1021
|
}
|
|
1018
|
-
const paraKey = `${elementId}${
|
|
1022
|
+
const paraKey = `${elementId}${chunkUTI4CLYJ_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1019
1023
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1020
1024
|
if (paraState) {
|
|
1021
1025
|
const style = buildAnimStyle(paraState);
|
|
1022
1026
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1023
1027
|
}
|
|
1024
|
-
const spec =
|
|
1028
|
+
const spec = chunkUTI4CLYJ_js.buildTextBuildSpec(
|
|
1025
1029
|
elementId,
|
|
1026
1030
|
paraIndex,
|
|
1027
1031
|
paraRuns.map((run) => ({ text: run.text, style: run })),
|
|
@@ -1039,7 +1043,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1039
1043
|
"span",
|
|
1040
1044
|
{
|
|
1041
1045
|
"data-anim-id": span.animId,
|
|
1042
|
-
style:
|
|
1046
|
+
style: chunkUTI4CLYJ_js.textBuildSpanStyle(span),
|
|
1043
1047
|
children: content
|
|
1044
1048
|
},
|
|
1045
1049
|
span.animId
|
|
@@ -1050,13 +1054,13 @@ function renderUnderlineWords(text, isUnderlineWords, wordDecoration, metric, ke
|
|
|
1050
1054
|
if (!isUnderlineWords || !text) {
|
|
1051
1055
|
return inner(text, keyPrefix, metric);
|
|
1052
1056
|
}
|
|
1053
|
-
const pieces =
|
|
1057
|
+
const pieces = chunkUTI4CLYJ_js.splitWordsForUnderline(text);
|
|
1054
1058
|
if (pieces.length === 0) {
|
|
1055
1059
|
return inner(text, keyPrefix, metric);
|
|
1056
1060
|
}
|
|
1057
1061
|
const gapMetric = metric ? {
|
|
1058
1062
|
...metric,
|
|
1059
|
-
nestedStyle: metric.nestedStyle ?
|
|
1063
|
+
nestedStyle: metric.nestedStyle ? chunkUTI4CLYJ_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
|
|
1060
1064
|
} : void 0;
|
|
1061
1065
|
return pieces.map((piece, i) => {
|
|
1062
1066
|
const key = `${keyPrefix}-u${i}`;
|
|
@@ -1089,7 +1093,7 @@ function makeSegmentPieceRenderer(needsScriptFonts, scriptFonts, baseFontFamily,
|
|
|
1089
1093
|
);
|
|
1090
1094
|
}
|
|
1091
1095
|
function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underlineWords = false) {
|
|
1092
|
-
const [lineLayout] =
|
|
1096
|
+
const [lineLayout] = chunkUTI4CLYJ_js.buildRunTabLines(
|
|
1093
1097
|
line,
|
|
1094
1098
|
ctx,
|
|
1095
1099
|
nestedStyle,
|
|
@@ -1108,7 +1112,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1108
1112
|
if (!needsScriptFonts || !text) {
|
|
1109
1113
|
return text;
|
|
1110
1114
|
}
|
|
1111
|
-
const pieces =
|
|
1115
|
+
const pieces = chunkUTI4CLYJ_js.splitRunByScriptFont(
|
|
1112
1116
|
text,
|
|
1113
1117
|
scriptFonts,
|
|
1114
1118
|
baseFontFamily,
|
|
@@ -1125,7 +1129,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
|
1125
1129
|
if (!metric || !text) {
|
|
1126
1130
|
return inner(text, keyPrefix);
|
|
1127
1131
|
}
|
|
1128
|
-
const pieces =
|
|
1132
|
+
const pieces = chunkUTI4CLYJ_js.splitRunForMetrics(text, metric.font);
|
|
1129
1133
|
if (pieces.length <= 1) {
|
|
1130
1134
|
return inner(text, keyPrefix);
|
|
1131
1135
|
}
|
|
@@ -1134,7 +1138,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
|
1134
1138
|
{
|
|
1135
1139
|
style: {
|
|
1136
1140
|
...metric.nestedStyle,
|
|
1137
|
-
letterSpacing:
|
|
1141
|
+
letterSpacing: chunkUTI4CLYJ_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
|
|
1138
1142
|
},
|
|
1139
1143
|
children: inner(piece.text, `${keyPrefix}-w${i}`)
|
|
1140
1144
|
},
|
|
@@ -1210,8 +1214,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1210
1214
|
});
|
|
1211
1215
|
}
|
|
1212
1216
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1213
|
-
const mathml =
|
|
1214
|
-
const safeMathml = mathml ?
|
|
1217
|
+
const mathml = chunkUTI4CLYJ_js.convertOmmlToMathMl(equationXml);
|
|
1218
|
+
const safeMathml = mathml ? chunkUTI4CLYJ_js.sanitizeMathMl(mathml) : "";
|
|
1215
1219
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1216
1220
|
"span",
|
|
1217
1221
|
{
|
|
@@ -1221,7 +1225,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1221
1225
|
},
|
|
1222
1226
|
dangerouslySetInnerHTML: { __html: safeMathml }
|
|
1223
1227
|
}
|
|
1224
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children:
|
|
1228
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkW5KLLGVH_js.translationsEn["pptx.textSegment.equationFallback"] });
|
|
1225
1229
|
if (equationNumber) {
|
|
1226
1230
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1227
1231
|
"span",
|
|
@@ -1344,7 +1348,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1344
1348
|
const segmentStyle = segment?.style ?? {};
|
|
1345
1349
|
const textValue = run.text;
|
|
1346
1350
|
const lines = textValue.split("\n");
|
|
1347
|
-
const resolvedSegmentColor =
|
|
1351
|
+
const resolvedSegmentColor = chunkUTI4CLYJ_js.normalizeHexColor(
|
|
1348
1352
|
segmentStyle.color || element.textStyle?.color,
|
|
1349
1353
|
run.hyperlink ? HYPERLINK_COLOR : fallbackColor
|
|
1350
1354
|
);
|
|
@@ -1352,16 +1356,19 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1352
1356
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
1353
1357
|
const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
|
|
1354
1358
|
const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
1355
|
-
const baseFontSize = rawFontSize *
|
|
1359
|
+
const baseFontSize = rawFontSize * chunkUTI4CLYJ_js.resolveAutoFitFontScale(element.textStyle);
|
|
1356
1360
|
const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
|
|
1357
|
-
const fontKerning =
|
|
1361
|
+
const fontKerning = chunkUTI4CLYJ_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
|
|
1362
|
+
const scriptFallbackWins = Boolean(
|
|
1363
|
+
segmentStyle.scriptFallbackFont && segmentStyle.fontFamilyIsCascadeDefault
|
|
1364
|
+
);
|
|
1358
1365
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1359
|
-
const baseFontFamily = rawFontFamily ?
|
|
1366
|
+
const baseFontFamily = scriptFallbackWins ? chunkUTI4CLYJ_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunkUTI4CLYJ_js.getSubstituteFontFamily(
|
|
1360
1367
|
rawFontFamily,
|
|
1361
|
-
|
|
1368
|
+
chunkUTI4CLYJ_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
|
|
1362
1369
|
) : DEFAULT_FONT_FAMILY2;
|
|
1363
|
-
const scriptFonts =
|
|
1364
|
-
const needsScriptFonts =
|
|
1370
|
+
const scriptFonts = chunkUTI4CLYJ_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
|
|
1371
|
+
const needsScriptFonts = chunkUTI4CLYJ_js.hasDistinctScriptFonts(scriptFonts);
|
|
1365
1372
|
const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
|
|
1366
1373
|
const metricFont = {
|
|
1367
1374
|
fontFamily: baseFontFamily,
|
|
@@ -1369,7 +1376,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1369
1376
|
bold: Boolean(segmentStyle.bold),
|
|
1370
1377
|
italic: Boolean(segmentStyle.italic)
|
|
1371
1378
|
};
|
|
1372
|
-
const nestedStyle =
|
|
1379
|
+
const nestedStyle = chunkUTI4CLYJ_js.nestedTextDecorationStyle(run.style);
|
|
1373
1380
|
const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
|
|
1374
1381
|
const spanStyle = { ...run.style };
|
|
1375
1382
|
spanStyle.color = resolvedSegmentColor;
|
|
@@ -1377,11 +1384,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1377
1384
|
spanStyle.fontFamily = baseFontFamily;
|
|
1378
1385
|
spanStyle.verticalAlign = baselineShift;
|
|
1379
1386
|
spanStyle.fontKerning = fontKerning;
|
|
1380
|
-
spanStyle.letterSpacing =
|
|
1387
|
+
spanStyle.letterSpacing = chunkUTI4CLYJ_js.pieceLetterSpacing(
|
|
1381
1388
|
authoredLetterSpacing,
|
|
1382
|
-
|
|
1389
|
+
chunkUTI4CLYJ_js.resolveMetricTrackingPx(textValue, metricFont)
|
|
1383
1390
|
);
|
|
1384
|
-
const hollow =
|
|
1391
|
+
const hollow = chunkUTI4CLYJ_js.hollowTextFillStyle(segmentStyle, {
|
|
1385
1392
|
color: resolvedSegmentColor,
|
|
1386
1393
|
textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
|
|
1387
1394
|
});
|
|
@@ -1396,7 +1403,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1396
1403
|
const isUnderlineWords = Boolean(segmentStyle.underline) && segmentStyle.underlineStyle === "words";
|
|
1397
1404
|
const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
|
|
1398
1405
|
if (isUnderlineWords) {
|
|
1399
|
-
const stripped =
|
|
1406
|
+
const stripped = chunkUTI4CLYJ_js.stripUnderlineDecoration(spanStyle);
|
|
1400
1407
|
spanStyle.textDecoration = stripped.textDecoration;
|
|
1401
1408
|
delete spanStyle.textDecorationStyle;
|
|
1402
1409
|
delete spanStyle.textDecorationThickness;
|
|
@@ -1412,7 +1419,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1412
1419
|
scriptFonts,
|
|
1413
1420
|
baseFontFamily,
|
|
1414
1421
|
findHighlights,
|
|
1415
|
-
|
|
1422
|
+
chunkUTI4CLYJ_js.buildTabContext(
|
|
1416
1423
|
element.textStyle?.tabStops,
|
|
1417
1424
|
element.textStyle?.defaultTabSize,
|
|
1418
1425
|
baseFontSize,
|
|
@@ -1444,14 +1451,14 @@ function renderSeededListRun(seed, runs, segments, context) {
|
|
|
1444
1451
|
const segment = sourceRun ? segments[seed.segmentIndex] : { text: seed.text, style: seed.style };
|
|
1445
1452
|
const resolvedSegment = {
|
|
1446
1453
|
...segment,
|
|
1447
|
-
style:
|
|
1454
|
+
style: chunkUTI4CLYJ_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
|
|
1448
1455
|
};
|
|
1449
|
-
const decorationCss =
|
|
1456
|
+
const decorationCss = chunkUTI4CLYJ_js.segmentStyleToCss(
|
|
1450
1457
|
resolvedSegment,
|
|
1451
|
-
|
|
1458
|
+
chunkUTI4CLYJ_js.resolveAutoFitFontScale(context.element.textStyle)
|
|
1452
1459
|
);
|
|
1453
|
-
|
|
1454
|
-
const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...
|
|
1460
|
+
chunkUTI4CLYJ_js.applyUnderlineVariant(decorationCss, resolvedSegment);
|
|
1461
|
+
const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkUTI4CLYJ_js.nestedTextDecorationStyle(decorationCss) } } : {
|
|
1455
1462
|
text: seed.text,
|
|
1456
1463
|
style: decorationCss,
|
|
1457
1464
|
segmentIndex: seed.segmentIndex
|
|
@@ -1466,7 +1473,7 @@ function renderSeededListRun(seed, runs, segments, context) {
|
|
|
1466
1473
|
});
|
|
1467
1474
|
}
|
|
1468
1475
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt, inlineListSeed) {
|
|
1469
|
-
if (!
|
|
1476
|
+
if (!chunkUTI4CLYJ_js.hasTextProperties(element)) {
|
|
1470
1477
|
return emptyFallback || null;
|
|
1471
1478
|
}
|
|
1472
1479
|
const segments = segmentOverrides ?? element.textSegments;
|
|
@@ -1476,7 +1483,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
1476
1483
|
}
|
|
1477
1484
|
return element.text || emptyFallback || "";
|
|
1478
1485
|
}
|
|
1479
|
-
const paragraphs =
|
|
1486
|
+
const paragraphs = chunkUTI4CLYJ_js.buildParagraphs(
|
|
1480
1487
|
element,
|
|
1481
1488
|
fieldContext,
|
|
1482
1489
|
segmentOverrides,
|
|
@@ -1622,13 +1629,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
|
|
|
1622
1629
|
);
|
|
1623
1630
|
}
|
|
1624
1631
|
function getDuotoneColors(element) {
|
|
1625
|
-
if (!
|
|
1632
|
+
if (!chunkUTI4CLYJ_js.isImageLikeElement(element)) {
|
|
1626
1633
|
return void 0;
|
|
1627
1634
|
}
|
|
1628
1635
|
return element.imageEffects?.duotone;
|
|
1629
1636
|
}
|
|
1630
1637
|
function buildLineShadowCss(element) {
|
|
1631
|
-
if (!
|
|
1638
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
1632
1639
|
return void 0;
|
|
1633
1640
|
}
|
|
1634
1641
|
const ss = element.shapeStyle;
|
|
@@ -1639,13 +1646,13 @@ function buildLineShadowCss(element) {
|
|
|
1639
1646
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
1640
1647
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
1641
1648
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
1642
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
1643
|
-
|
|
1649
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkUTI4CLYJ_js.colorWithOpacity(
|
|
1650
|
+
chunkUTI4CLYJ_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
1644
1651
|
opacity
|
|
1645
1652
|
)}`;
|
|
1646
1653
|
}
|
|
1647
1654
|
function buildLineGlowFilter(element) {
|
|
1648
|
-
if (!
|
|
1655
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
1649
1656
|
return void 0;
|
|
1650
1657
|
}
|
|
1651
1658
|
const ss = element.shapeStyle;
|
|
@@ -1654,22 +1661,22 @@ function buildLineGlowFilter(element) {
|
|
|
1654
1661
|
}
|
|
1655
1662
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
1656
1663
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
1657
|
-
const glowCol =
|
|
1664
|
+
const glowCol = chunkUTI4CLYJ_js.colorWithOpacity(chunkUTI4CLYJ_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
1658
1665
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
1659
1666
|
}
|
|
1660
1667
|
function getDagDuotoneFilterId(elementId) {
|
|
1661
1668
|
return `dag-duotone-${elementId}`;
|
|
1662
1669
|
}
|
|
1663
1670
|
function hasDagDuotoneEffect(element) {
|
|
1664
|
-
if (!
|
|
1671
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
1665
1672
|
return false;
|
|
1666
1673
|
}
|
|
1667
1674
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
1668
1675
|
}
|
|
1669
1676
|
function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
1670
1677
|
const filterId = getDagDuotoneFilterId(elementId);
|
|
1671
|
-
const c1 =
|
|
1672
|
-
const c2 =
|
|
1678
|
+
const c1 = chunkUTI4CLYJ_js.hexToRgbUnit(color1);
|
|
1679
|
+
const c2 = chunkUTI4CLYJ_js.hexToRgbUnit(color2);
|
|
1673
1680
|
const grayscaleMatrix = [
|
|
1674
1681
|
0.2126,
|
|
1675
1682
|
0.7152,
|
|
@@ -1713,7 +1720,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
|
1713
1720
|
|
|
1714
1721
|
// src/viewer/utils/shape-visual-3d.ts
|
|
1715
1722
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
1716
|
-
return
|
|
1723
|
+
return chunkUTI4CLYJ_js.build3DExtrusionData(
|
|
1717
1724
|
shape3d,
|
|
1718
1725
|
scene3d,
|
|
1719
1726
|
fillColor,
|
|
@@ -1722,7 +1729,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
1722
1729
|
);
|
|
1723
1730
|
}
|
|
1724
1731
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback, elementSize, elementId) {
|
|
1725
|
-
|
|
1732
|
+
chunkUTI4CLYJ_js.apply3dEffects(
|
|
1726
1733
|
base,
|
|
1727
1734
|
scene3d,
|
|
1728
1735
|
shape3d,
|
|
@@ -1737,11 +1744,11 @@ function rendersCustomVectorPath(element) {
|
|
|
1737
1744
|
return (element.type === "shape" || element.type === "image" || element.type === "picture") && Boolean(element.pathData) && typeof element.pathWidth === "number" && element.pathWidth > 0 && typeof element.pathHeight === "number" && element.pathHeight > 0;
|
|
1738
1745
|
}
|
|
1739
1746
|
function rendersWedgeCalloutVector(element) {
|
|
1740
|
-
return element.type === "shape" &&
|
|
1747
|
+
return element.type === "shape" && chunkUTI4CLYJ_js.isWedgeCalloutPresetShape(element.shapeType);
|
|
1741
1748
|
}
|
|
1742
1749
|
function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
|
|
1743
1750
|
if (element.type === "group") {
|
|
1744
|
-
const fx2 =
|
|
1751
|
+
const fx2 = chunkUTI4CLYJ_js.getComputedEffectStyle(element);
|
|
1745
1752
|
const groupStyle = {};
|
|
1746
1753
|
if (fx2.filter) {
|
|
1747
1754
|
groupStyle.filter = fx2.filter;
|
|
@@ -1751,13 +1758,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1751
1758
|
}
|
|
1752
1759
|
return groupStyle;
|
|
1753
1760
|
}
|
|
1754
|
-
if (!
|
|
1761
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
1755
1762
|
return {};
|
|
1756
1763
|
}
|
|
1757
1764
|
const ss = element.shapeStyle;
|
|
1758
|
-
const fill = animatesFill ? void 0 :
|
|
1759
|
-
const fx =
|
|
1760
|
-
const stroke =
|
|
1765
|
+
const fill = animatesFill ? void 0 : chunkUTI4CLYJ_js.getComputedFillStyle(element, parentGroupFill);
|
|
1766
|
+
const fx = chunkUTI4CLYJ_js.getComputedEffectStyle(element);
|
|
1767
|
+
const stroke = chunkUTI4CLYJ_js.getComputedStrokeStyle(element);
|
|
1761
1768
|
const base = {
|
|
1762
1769
|
// A gradient fill REPLACES the solid fill, it does not sit on top of it;
|
|
1763
1770
|
// the whole precedence lives in shared's `getComputedFillStyle`.
|
|
@@ -1796,7 +1803,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1796
1803
|
};
|
|
1797
1804
|
Object.assign(
|
|
1798
1805
|
base,
|
|
1799
|
-
|
|
1806
|
+
chunkUTI4CLYJ_js.getAnimationColorBaseStyle(element, {
|
|
1800
1807
|
animatesFill,
|
|
1801
1808
|
animatesStroke,
|
|
1802
1809
|
parentGroupFill
|
|
@@ -1818,7 +1825,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1818
1825
|
},
|
|
1819
1826
|
element.id
|
|
1820
1827
|
);
|
|
1821
|
-
if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) ||
|
|
1828
|
+
if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkUTI4CLYJ_js.isStrokeOnlyPresetElement(element)) {
|
|
1822
1829
|
base.backgroundColor = "transparent";
|
|
1823
1830
|
base.backgroundImage = void 0;
|
|
1824
1831
|
base.borderWidth = void 0;
|
|
@@ -1832,7 +1839,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1832
1839
|
if (rendersWedgeCalloutVector(element)) {
|
|
1833
1840
|
return base;
|
|
1834
1841
|
}
|
|
1835
|
-
const geometry =
|
|
1842
|
+
const geometry = chunkUTI4CLYJ_js.resolveShapeGeometry(element);
|
|
1836
1843
|
switch (geometry.kind) {
|
|
1837
1844
|
case "bare":
|
|
1838
1845
|
return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
|
|
@@ -1856,7 +1863,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1856
1863
|
}
|
|
1857
1864
|
}
|
|
1858
1865
|
function getConnectorPathGeometry2(element) {
|
|
1859
|
-
return
|
|
1866
|
+
return chunkUTI4CLYJ_js.getConnectorPathGeometry(element);
|
|
1860
1867
|
}
|
|
1861
1868
|
var ARROW_SIZE_SCALE = {
|
|
1862
1869
|
sm: 0.6,
|
|
@@ -1925,11 +1932,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
1925
1932
|
strokePaint,
|
|
1926
1933
|
strokeWidth,
|
|
1927
1934
|
dashArray,
|
|
1928
|
-
lineCap:
|
|
1935
|
+
lineCap: chunkUTI4CLYJ_js.svgLineCap(shapeStyle?.lineCap),
|
|
1929
1936
|
lineJoin,
|
|
1930
1937
|
miterLimit,
|
|
1931
|
-
offsets:
|
|
1932
|
-
widths:
|
|
1938
|
+
offsets: chunkUTI4CLYJ_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
1939
|
+
widths: chunkUTI4CLYJ_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
1933
1940
|
};
|
|
1934
1941
|
}
|
|
1935
1942
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -1952,12 +1959,12 @@ function strokeStrands(d, keyBase, ctx) {
|
|
|
1952
1959
|
}
|
|
1953
1960
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
|
|
1954
1961
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
1955
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
1962
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkUTI4CLYJ_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
1956
1963
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
1957
|
-
const gradientPaint = gradient ?
|
|
1964
|
+
const gradientPaint = gradient ? chunkUTI4CLYJ_js.svgGradientFillRef(gradient) : void 0;
|
|
1958
1965
|
const nodes = [];
|
|
1959
1966
|
if (subpaths && needsPerSubpath) {
|
|
1960
|
-
const paints =
|
|
1967
|
+
const paints = chunkUTI4CLYJ_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
|
|
1961
1968
|
paints.forEach((paint, idx) => {
|
|
1962
1969
|
if (paint.fill !== "none") {
|
|
1963
1970
|
const mode = subpaths[idx]?.fillMode;
|
|
@@ -1986,7 +1993,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
1986
1993
|
"path",
|
|
1987
1994
|
{
|
|
1988
1995
|
d: pathData,
|
|
1989
|
-
fill: animatesFill ? "inherit" : gradientPaint ??
|
|
1996
|
+
fill: animatesFill ? "inherit" : gradientPaint ?? chunkUTI4CLYJ_js.colorWithOpacity(fillColor, fillOpacity),
|
|
1990
1997
|
stroke: "none",
|
|
1991
1998
|
vectorEffect: "non-scaling-stroke"
|
|
1992
1999
|
},
|
|
@@ -2012,14 +2019,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2012
2019
|
);
|
|
2013
2020
|
}
|
|
2014
2021
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2015
|
-
if (!
|
|
2022
|
+
if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
|
|
2016
2023
|
return null;
|
|
2017
2024
|
}
|
|
2018
2025
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2019
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2020
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2021
|
-
const dashType =
|
|
2022
|
-
const dashArray =
|
|
2026
|
+
const fillPaint = animatesFill ? "inherit" : chunkUTI4CLYJ_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2027
|
+
const strokePaint = animatesStroke ? "inherit" : chunkUTI4CLYJ_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2028
|
+
const dashType = chunkUTI4CLYJ_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2029
|
+
const dashArray = chunkUTI4CLYJ_js.getSvgStrokeDasharray(
|
|
2023
2030
|
dashType,
|
|
2024
2031
|
Math.max(strokeWidth, 1),
|
|
2025
2032
|
element.shapeStyle?.customDashSegments
|
|
@@ -2100,13 +2107,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2100
2107
|
// container's `background-image` is suppressed for custom geometry, so
|
|
2101
2108
|
// without this the shape fell back to the parser's representative solid
|
|
2102
2109
|
// and lost every fade (issue #132).
|
|
2103
|
-
|
|
2110
|
+
chunkUTI4CLYJ_js.buildSvgGradientDef(element.shapeStyle, element.id)
|
|
2104
2111
|
);
|
|
2105
2112
|
}
|
|
2106
|
-
if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !
|
|
2113
|
+
if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkUTI4CLYJ_js.buildStrokeOutline(element)) {
|
|
2107
2114
|
const width = Math.max(element.width, 1);
|
|
2108
2115
|
const height = Math.max(element.height, 1);
|
|
2109
|
-
const geometry =
|
|
2116
|
+
const geometry = chunkUTI4CLYJ_js.getPresetShapeVectorGeometry(
|
|
2110
2117
|
element.shapeType || "rect",
|
|
2111
2118
|
width,
|
|
2112
2119
|
height,
|
|
@@ -2134,18 +2141,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2134
2141
|
);
|
|
2135
2142
|
}
|
|
2136
2143
|
}
|
|
2137
|
-
if (element.type === "shape" &&
|
|
2144
|
+
if (element.type === "shape" && chunkUTI4CLYJ_js.isWedgeCalloutPresetShape(element.shapeType)) {
|
|
2138
2145
|
const width = Math.max(element.width, 1);
|
|
2139
2146
|
const height = Math.max(element.height, 1);
|
|
2140
|
-
const geometry =
|
|
2147
|
+
const geometry = chunkUTI4CLYJ_js.getPresetShapeVectorGeometry(
|
|
2141
2148
|
element.shapeType,
|
|
2142
2149
|
width,
|
|
2143
2150
|
height,
|
|
2144
2151
|
element.shapeAdjustments
|
|
2145
2152
|
);
|
|
2146
2153
|
if (geometry) {
|
|
2147
|
-
const gradient =
|
|
2148
|
-
const gradientPaint = gradient ?
|
|
2154
|
+
const gradient = chunkUTI4CLYJ_js.buildSvgGradientDef(element.shapeStyle, element.id);
|
|
2155
|
+
const gradientPaint = gradient ? chunkUTI4CLYJ_js.svgGradientFillRef(gradient) : void 0;
|
|
2149
2156
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2150
2157
|
"svg",
|
|
2151
2158
|
{
|
|
@@ -2178,18 +2185,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2178
2185
|
);
|
|
2179
2186
|
}
|
|
2180
2187
|
}
|
|
2181
|
-
if (
|
|
2188
|
+
if (chunkUTI4CLYJ_js.isCalloutShape(normalizedType)) {
|
|
2182
2189
|
const width = Math.max(element.width, 1);
|
|
2183
2190
|
const height = Math.max(element.height, 1);
|
|
2184
|
-
const geometry =
|
|
2191
|
+
const geometry = chunkUTI4CLYJ_js.getCalloutLeaderLineGeometry(
|
|
2185
2192
|
normalizedType,
|
|
2186
2193
|
width,
|
|
2187
2194
|
height,
|
|
2188
2195
|
element.shapeAdjustments
|
|
2189
2196
|
);
|
|
2190
2197
|
if (geometry && geometry.points.length >= 2) {
|
|
2191
|
-
const leaderPath =
|
|
2192
|
-
const bounds =
|
|
2198
|
+
const leaderPath = chunkUTI4CLYJ_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2199
|
+
const bounds = chunkUTI4CLYJ_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2193
2200
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2194
2201
|
const offsetLeft = bounds.minX;
|
|
2195
2202
|
const offsetTop = bounds.minY;
|
|
@@ -2252,10 +2259,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2252
2259
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
2253
2260
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
2254
2261
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
2255
|
-
const connectorLineCap =
|
|
2262
|
+
const connectorLineCap = chunkUTI4CLYJ_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
2256
2263
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
2257
|
-
const offsets =
|
|
2258
|
-
const widths =
|
|
2264
|
+
const offsets = chunkUTI4CLYJ_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
2265
|
+
const widths = chunkUTI4CLYJ_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
2259
2266
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2260
2267
|
"svg",
|
|
2261
2268
|
{
|
|
@@ -2322,15 +2329,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
2322
2329
|
}
|
|
2323
2330
|
const rawStops = stops.map((gs) => {
|
|
2324
2331
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
2325
|
-
const color =
|
|
2326
|
-
const opacity =
|
|
2332
|
+
const color = chunkUTI4CLYJ_js.parseDrawingColor(gs) ?? "#888888";
|
|
2333
|
+
const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(gs);
|
|
2327
2334
|
return { position: pos, color, opacity };
|
|
2328
2335
|
}).sort((a, b) => a.position - b.position);
|
|
2329
|
-
const stopStrings = rawStops.map((s) => `${
|
|
2336
|
+
const stopStrings = rawStops.map((s) => `${chunkUTI4CLYJ_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
|
|
2330
2337
|
const lin = gradFill["a:lin"];
|
|
2331
2338
|
if (lin) {
|
|
2332
2339
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
2333
|
-
const angleDeg = Math.round(
|
|
2340
|
+
const angleDeg = Math.round(chunkUTI4CLYJ_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
2334
2341
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
2335
2342
|
}
|
|
2336
2343
|
const path = gradFill["a:path"];
|
|
@@ -2344,7 +2351,7 @@ function parseGradientFillCss(gradFill) {
|
|
|
2344
2351
|
b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
|
|
2345
2352
|
} : void 0;
|
|
2346
2353
|
if (pathType === "rect") {
|
|
2347
|
-
return
|
|
2354
|
+
return chunkUTI4CLYJ_js.buildRectPathGradient(rawStops, void 0, fillToRect);
|
|
2348
2355
|
}
|
|
2349
2356
|
let cx = 50;
|
|
2350
2357
|
let cy = 50;
|
|
@@ -2366,8 +2373,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
2366
2373
|
if (!pattFill) {
|
|
2367
2374
|
return void 0;
|
|
2368
2375
|
}
|
|
2369
|
-
const fgColor =
|
|
2370
|
-
const bgColor =
|
|
2376
|
+
const fgColor = chunkUTI4CLYJ_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
2377
|
+
const bgColor = chunkUTI4CLYJ_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
2371
2378
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
2372
2379
|
switch (preset) {
|
|
2373
2380
|
case "ltHorz":
|
|
@@ -2478,11 +2485,11 @@ function parseCellBorders(cellProperties) {
|
|
|
2478
2485
|
const prstDash = ln["a:prstDash"];
|
|
2479
2486
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
2480
2487
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
2481
|
-
const color =
|
|
2488
|
+
const color = chunkUTI4CLYJ_js.parseDrawingColor(ln["a:solidFill"]);
|
|
2482
2489
|
if (color) {
|
|
2483
|
-
const opacity =
|
|
2490
|
+
const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
2484
2491
|
const key = `${edge.prefix}`;
|
|
2485
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
2492
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkUTI4CLYJ_js.colorWithOpacity(color, opacity)}`;
|
|
2486
2493
|
}
|
|
2487
2494
|
}
|
|
2488
2495
|
return borderStyle;
|
|
@@ -2495,7 +2502,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2495
2502
|
const textShadowParts = [];
|
|
2496
2503
|
const outerShdw = effectLst["a:outerShdw"];
|
|
2497
2504
|
if (outerShdw) {
|
|
2498
|
-
const shdwColor =
|
|
2505
|
+
const shdwColor = chunkUTI4CLYJ_js.parseDrawingColor(outerShdw);
|
|
2499
2506
|
if (shdwColor) {
|
|
2500
2507
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
2501
2508
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -2513,7 +2520,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2513
2520
|
}
|
|
2514
2521
|
const glow = effectLst["a:glow"];
|
|
2515
2522
|
if (glow) {
|
|
2516
|
-
const glowColor =
|
|
2523
|
+
const glowColor = chunkUTI4CLYJ_js.parseDrawingColor(glow);
|
|
2517
2524
|
if (glowColor) {
|
|
2518
2525
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
2519
2526
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -2535,11 +2542,11 @@ function extractCellText(cellXml) {
|
|
|
2535
2542
|
const textParts = [];
|
|
2536
2543
|
const runs = ensureArrayValue(paragraph["a:r"]);
|
|
2537
2544
|
runs.forEach((run) => {
|
|
2538
|
-
textParts.push(
|
|
2545
|
+
textParts.push(chunkUTI4CLYJ_js.xmlText(run["a:t"]) ?? "");
|
|
2539
2546
|
});
|
|
2540
2547
|
const fields = ensureArrayValue(paragraph["a:fld"]);
|
|
2541
2548
|
fields.forEach((field) => {
|
|
2542
|
-
textParts.push(
|
|
2549
|
+
textParts.push(chunkUTI4CLYJ_js.xmlText(field["a:t"]) ?? "");
|
|
2543
2550
|
});
|
|
2544
2551
|
paragraphTexts.push(textParts.join(""));
|
|
2545
2552
|
});
|
|
@@ -2583,10 +2590,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2583
2590
|
if (runProps?.["@_u"] !== void 0) {
|
|
2584
2591
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
2585
2592
|
}
|
|
2586
|
-
const runColor =
|
|
2593
|
+
const runColor = chunkUTI4CLYJ_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkUTI4CLYJ_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
2587
2594
|
if (runColor) {
|
|
2588
|
-
const opacity =
|
|
2589
|
-
cellStyle.color =
|
|
2595
|
+
const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
2596
|
+
cellStyle.color = chunkUTI4CLYJ_js.colorWithOpacity(runColor, opacity);
|
|
2590
2597
|
}
|
|
2591
2598
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
2592
2599
|
if (fontFamily) {
|
|
@@ -2596,15 +2603,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2596
2603
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
2597
2604
|
}
|
|
2598
2605
|
const cellProperties = cellXml["a:tcPr"];
|
|
2599
|
-
const cellFill =
|
|
2606
|
+
const cellFill = chunkUTI4CLYJ_js.parseDrawingColor(
|
|
2600
2607
|
cellProperties?.["a:solidFill"],
|
|
2601
2608
|
schemeColorOverrides
|
|
2602
2609
|
);
|
|
2603
2610
|
if (cellFill) {
|
|
2604
|
-
const opacity =
|
|
2611
|
+
const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(
|
|
2605
2612
|
cellProperties?.["a:solidFill"]
|
|
2606
2613
|
);
|
|
2607
|
-
cellStyle.backgroundColor =
|
|
2614
|
+
cellStyle.backgroundColor = chunkUTI4CLYJ_js.colorWithOpacity(cellFill, opacity);
|
|
2608
2615
|
} else {
|
|
2609
2616
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
2610
2617
|
if (gradCss) {
|
|
@@ -2619,16 +2626,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2619
2626
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
2620
2627
|
Object.assign(cellStyle, edgeBorders);
|
|
2621
2628
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
2622
|
-
const borderColor =
|
|
2629
|
+
const borderColor = chunkUTI4CLYJ_js.parseDrawingColor(
|
|
2623
2630
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
2624
2631
|
schemeColorOverrides
|
|
2625
|
-
) ||
|
|
2632
|
+
) || chunkUTI4CLYJ_js.parseDrawingColor(
|
|
2626
2633
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
2627
2634
|
schemeColorOverrides
|
|
2628
|
-
) ||
|
|
2635
|
+
) || chunkUTI4CLYJ_js.parseDrawingColor(
|
|
2629
2636
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
2630
2637
|
schemeColorOverrides
|
|
2631
|
-
) ||
|
|
2638
|
+
) || chunkUTI4CLYJ_js.parseDrawingColor(
|
|
2632
2639
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
2633
2640
|
schemeColorOverrides
|
|
2634
2641
|
);
|
|
@@ -2700,7 +2707,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
|
|
|
2700
2707
|
if (element.type !== "table") {
|
|
2701
2708
|
return void 0;
|
|
2702
2709
|
}
|
|
2703
|
-
return
|
|
2710
|
+
return chunkUTI4CLYJ_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
|
|
2704
2711
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2705
2712
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2706
2713
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -2780,7 +2787,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
2780
2787
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2781
2788
|
"span",
|
|
2782
2789
|
{
|
|
2783
|
-
style: { position: "relative", ...
|
|
2790
|
+
style: { position: "relative", ...chunkUTI4CLYJ_js.cellRunStyle(run) },
|
|
2784
2791
|
children: run.text
|
|
2785
2792
|
},
|
|
2786
2793
|
`r-${index}`
|
|
@@ -2788,7 +2795,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
2788
2795
|
});
|
|
2789
2796
|
}
|
|
2790
2797
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
2791
|
-
return
|
|
2798
|
+
return chunkUTI4CLYJ_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
2792
2799
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2793
2800
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2794
2801
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -2921,7 +2928,7 @@ function TableResizeOverlay({
|
|
|
2921
2928
|
const containerRef = React7.useRef(null);
|
|
2922
2929
|
const [rowBounds, setRowBounds] = React7.useState([]);
|
|
2923
2930
|
const dragRef = React7.useRef(null);
|
|
2924
|
-
const colBoundaries = React7.useMemo(() =>
|
|
2931
|
+
const colBoundaries = React7.useMemo(() => chunkUTI4CLYJ_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
2925
2932
|
const measureRows = React7.useCallback(() => {
|
|
2926
2933
|
const container = containerRef.current;
|
|
2927
2934
|
if (!container) {
|
|
@@ -2968,11 +2975,11 @@ function TableResizeOverlay({
|
|
|
2968
2975
|
const rect = containerRef.current.getBoundingClientRect();
|
|
2969
2976
|
if (e.clientX !== drag.startPos && drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
2970
2977
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
2971
|
-
onResizeColumns(
|
|
2978
|
+
onResizeColumns(chunkUTI4CLYJ_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
2972
2979
|
} else if (e.clientY !== drag.startPos && drag.type === "row" && onResizeRow) {
|
|
2973
2980
|
const deltaY = e.clientY - drag.startPos;
|
|
2974
|
-
const newHeight =
|
|
2975
|
-
drag.initialRowHeight ??
|
|
2981
|
+
const newHeight = chunkUTI4CLYJ_js.computeResizedRowHeight(
|
|
2982
|
+
drag.initialRowHeight ?? chunkUTI4CLYJ_js.DEFAULT_ROW_HEIGHT,
|
|
2976
2983
|
deltaY
|
|
2977
2984
|
);
|
|
2978
2985
|
onResizeRow(drag.index, newHeight);
|
|
@@ -3010,7 +3017,7 @@ function TableResizeOverlay({
|
|
|
3010
3017
|
e.stopPropagation();
|
|
3011
3018
|
const table = containerRef.current?.querySelector("table");
|
|
3012
3019
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
3013
|
-
const actualHeight = tr?.offsetHeight ??
|
|
3020
|
+
const actualHeight = tr?.offsetHeight ?? chunkUTI4CLYJ_js.DEFAULT_ROW_HEIGHT;
|
|
3014
3021
|
document.body.style.cursor = "row-resize";
|
|
3015
3022
|
document.body.style.userSelect = "none";
|
|
3016
3023
|
dragRef.current = {
|
|
@@ -3050,14 +3057,14 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3050
3057
|
const rowCount = tableData.rows.length;
|
|
3051
3058
|
const columnCount = tableData.columnWidths.length;
|
|
3052
3059
|
const selectedCell = options?.selectedCell || null;
|
|
3053
|
-
const isEditable = Boolean(options?.editable) &&
|
|
3060
|
+
const isEditable = Boolean(options?.editable) && chunkUTI4CLYJ_js.canDrillDown(element);
|
|
3054
3061
|
const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
|
|
3055
3062
|
const sharedCtx = {
|
|
3056
3063
|
tableStyleMap: options?.styleCtx?.tableStyleMap,
|
|
3057
3064
|
colorScheme: options?.styleCtx?.theme?.colorScheme,
|
|
3058
3065
|
fontScheme: options?.styleCtx?.theme?.fontScheme
|
|
3059
3066
|
};
|
|
3060
|
-
const cellCss = (cell, rowIndex, cellIndex) =>
|
|
3067
|
+
const cellCss = (cell, rowIndex, cellIndex) => chunkUTI4CLYJ_js.tableCellCss(
|
|
3061
3068
|
tableData,
|
|
3062
3069
|
cell,
|
|
3063
3070
|
{ rowIndex, cellIndex, rowCount, columnCount },
|
|
@@ -3070,7 +3077,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3070
3077
|
}
|
|
3071
3078
|
const first = selectedCell.selectedCells[0];
|
|
3072
3079
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3073
|
-
return
|
|
3080
|
+
return chunkUTI4CLYJ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
3074
3081
|
})();
|
|
3075
3082
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3076
3083
|
TableResizeOverlay,
|
|
@@ -3091,9 +3098,9 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3091
3098
|
{
|
|
3092
3099
|
className: "w-full h-full border-collapse table-fixed",
|
|
3093
3100
|
style: {
|
|
3094
|
-
fontFamily:
|
|
3101
|
+
fontFamily: chunkUTI4CLYJ_js.DEFAULT_FONT_FAMILY,
|
|
3095
3102
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3096
|
-
...
|
|
3103
|
+
...chunkUTI4CLYJ_js.tableContainerCss(tableData)
|
|
3097
3104
|
},
|
|
3098
3105
|
children: [
|
|
3099
3106
|
tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3112,7 +3119,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3112
3119
|
return null;
|
|
3113
3120
|
}
|
|
3114
3121
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
3115
|
-
const isInMultiSelection =
|
|
3122
|
+
const isInMultiSelection = chunkUTI4CLYJ_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
3116
3123
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
3117
3124
|
const diag = getCellDiagonalBorders2(
|
|
3118
3125
|
cell.style,
|
|
@@ -3141,7 +3148,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3141
3148
|
}
|
|
3142
3149
|
event.stopPropagation();
|
|
3143
3150
|
if (event.shiftKey && selectedCell) {
|
|
3144
|
-
const rect =
|
|
3151
|
+
const rect = chunkUTI4CLYJ_js.computeSelectionRect(
|
|
3145
3152
|
selectedCell.rowIndex,
|
|
3146
3153
|
selectedCell.columnIndex,
|
|
3147
3154
|
rowIndex,
|
|
@@ -3151,7 +3158,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3151
3158
|
options?.onSelectCell?.({
|
|
3152
3159
|
rowIndex: selectedCell.rowIndex,
|
|
3153
3160
|
columnIndex: selectedCell.columnIndex,
|
|
3154
|
-
selectedCells:
|
|
3161
|
+
selectedCells: chunkUTI4CLYJ_js.rectToCells(rect)
|
|
3155
3162
|
});
|
|
3156
3163
|
} else {
|
|
3157
3164
|
options?.onSelectCell?.({
|
|
@@ -3212,10 +3219,10 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3212
3219
|
if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
|
|
3213
3220
|
return renderTableFromTableData(tableEl2, textStyle, options);
|
|
3214
3221
|
}
|
|
3215
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
3222
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.table.title"] });
|
|
3216
3223
|
}
|
|
3217
3224
|
const selectedCell = options?.selectedCell || null;
|
|
3218
|
-
const isEditable = Boolean(options?.editable) &&
|
|
3225
|
+
const isEditable = Boolean(options?.editable) && chunkUTI4CLYJ_js.canDrillDown(element);
|
|
3219
3226
|
const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
|
|
3220
3227
|
const tableEl = element;
|
|
3221
3228
|
const xmlSelectionRect = (() => {
|
|
@@ -3227,7 +3234,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3227
3234
|
}
|
|
3228
3235
|
const first = selectedCell.selectedCells[0];
|
|
3229
3236
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3230
|
-
return
|
|
3237
|
+
return chunkUTI4CLYJ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
3231
3238
|
})();
|
|
3232
3239
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
3233
3240
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3249,9 +3256,9 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3249
3256
|
{
|
|
3250
3257
|
className: "w-full h-full border-collapse table-fixed",
|
|
3251
3258
|
style: {
|
|
3252
|
-
fontFamily:
|
|
3259
|
+
fontFamily: chunkUTI4CLYJ_js.DEFAULT_FONT_FAMILY,
|
|
3253
3260
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3254
|
-
...
|
|
3261
|
+
...chunkUTI4CLYJ_js.tableContainerCss(tableEl.tableData)
|
|
3255
3262
|
},
|
|
3256
3263
|
children: [
|
|
3257
3264
|
parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3308,7 +3315,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3308
3315
|
color: textStyle.color,
|
|
3309
3316
|
...bandStyle,
|
|
3310
3317
|
...xmlCellStyle,
|
|
3311
|
-
...tdCellOverride ?
|
|
3318
|
+
...tdCellOverride ? chunkUTI4CLYJ_js.cellStyleToCss(tdCellOverride) : void 0,
|
|
3312
3319
|
...diag ? { position: "relative" } : void 0
|
|
3313
3320
|
};
|
|
3314
3321
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3318,7 +3325,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3318
3325
|
"border px-1 py-0.5 align-top",
|
|
3319
3326
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
3320
3327
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
3321
|
-
|
|
3328
|
+
chunkUTI4CLYJ_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
3322
3329
|
),
|
|
3323
3330
|
colSpan,
|
|
3324
3331
|
rowSpan: rSpan,
|
|
@@ -3329,7 +3336,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3329
3336
|
}
|
|
3330
3337
|
event.stopPropagation();
|
|
3331
3338
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
3332
|
-
const rect =
|
|
3339
|
+
const rect = chunkUTI4CLYJ_js.computeSelectionRect(
|
|
3333
3340
|
selectedCell.rowIndex,
|
|
3334
3341
|
selectedCell.columnIndex,
|
|
3335
3342
|
rowIndex,
|
|
@@ -3339,7 +3346,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3339
3346
|
options?.onSelectCell?.({
|
|
3340
3347
|
rowIndex: selectedCell.rowIndex,
|
|
3341
3348
|
columnIndex: selectedCell.columnIndex,
|
|
3342
|
-
selectedCells:
|
|
3349
|
+
selectedCells: chunkUTI4CLYJ_js.rectToCells(rect)
|
|
3343
3350
|
});
|
|
3344
3351
|
} else {
|
|
3345
3352
|
options?.onSelectCell?.({
|
|
@@ -3398,23 +3405,23 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3398
3405
|
);
|
|
3399
3406
|
}
|
|
3400
3407
|
function partAttrs(part) {
|
|
3401
|
-
return part ?
|
|
3408
|
+
return part ? chunkUTI4CLYJ_js.chartPartToAttrs(part) : void 0;
|
|
3402
3409
|
}
|
|
3403
3410
|
function resolveReactPalette(chartData) {
|
|
3404
3411
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
3405
3412
|
return chartData.colorPalette;
|
|
3406
3413
|
}
|
|
3407
|
-
return [...
|
|
3414
|
+
return [...chunkUTI4CLYJ_js.getChartStylePalette(chartData.style?.styleId)];
|
|
3408
3415
|
}
|
|
3409
3416
|
function buildReactChartViewModel(element) {
|
|
3410
3417
|
if (element.type !== "chart" || !element.chartData) {
|
|
3411
|
-
return
|
|
3418
|
+
return chunkUTI4CLYJ_js.buildChartViewModel(element);
|
|
3412
3419
|
}
|
|
3413
3420
|
const palette = resolveReactPalette(element.chartData), themedElement = {
|
|
3414
3421
|
...element,
|
|
3415
3422
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
3416
3423
|
};
|
|
3417
|
-
return
|
|
3424
|
+
return chunkUTI4CLYJ_js.buildChartViewModel(themedElement);
|
|
3418
3425
|
}
|
|
3419
3426
|
function renderPrimitive(prim, key) {
|
|
3420
3427
|
switch (prim.kind) {
|
|
@@ -3445,6 +3452,7 @@ function renderPrimitive(prim, key) {
|
|
|
3445
3452
|
fill: p.fill,
|
|
3446
3453
|
stroke: p.stroke ?? "none",
|
|
3447
3454
|
strokeWidth: p.strokeWidth ?? 0,
|
|
3455
|
+
strokeDasharray: p.dashArray,
|
|
3448
3456
|
fillOpacity: p.opacity ?? 1,
|
|
3449
3457
|
...partAttrs(p.part),
|
|
3450
3458
|
children: p.title !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: p.title }) : null
|
|
@@ -3565,7 +3573,7 @@ function renderText(t, key) {
|
|
|
3565
3573
|
);
|
|
3566
3574
|
}
|
|
3567
3575
|
function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
3568
|
-
const legendItems =
|
|
3576
|
+
const legendItems = chunkUTI4CLYJ_js.computeChartLegendLayout(vm);
|
|
3569
3577
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3570
3578
|
"svg",
|
|
3571
3579
|
{
|
|
@@ -3705,17 +3713,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
|
3705
3713
|
}
|
|
3706
3714
|
function renderChartElement(element) {
|
|
3707
3715
|
if (element.type !== "chart") {
|
|
3708
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
3716
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.chart.heading"] });
|
|
3709
3717
|
}
|
|
3710
3718
|
const chartData = element.chartData;
|
|
3711
3719
|
if (!chartData || chartData.series.length === 0) {
|
|
3712
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
3720
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.chart.heading"] });
|
|
3713
3721
|
}
|
|
3714
|
-
const kind =
|
|
3722
|
+
const kind = chunkUTI4CLYJ_js.resolveChartKind(chartData.chartType ?? "bar");
|
|
3715
3723
|
return renderChartViewModel(
|
|
3716
3724
|
element.id,
|
|
3717
3725
|
buildReactChartViewModel(element),
|
|
3718
|
-
|
|
3726
|
+
chunkUTI4CLYJ_js.chartPreserveAspectRatio(kind)
|
|
3719
3727
|
);
|
|
3720
3728
|
}
|
|
3721
3729
|
|
|
@@ -3735,14 +3743,14 @@ function buildNotesPdf(pages) {
|
|
|
3735
3743
|
notes: page.notes,
|
|
3736
3744
|
slideNumber: page.slideNumber
|
|
3737
3745
|
}));
|
|
3738
|
-
const bytes =
|
|
3746
|
+
const bytes = chunkUTI4CLYJ_js.buildNotesPdfBytes(images, meta);
|
|
3739
3747
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3740
3748
|
return URL.createObjectURL(blob);
|
|
3741
3749
|
}
|
|
3742
3750
|
|
|
3743
3751
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
3744
3752
|
function buildPdfFromTiledImageData(pages) {
|
|
3745
|
-
const bytes =
|
|
3753
|
+
const bytes = chunkUTI4CLYJ_js.buildTiledSlidesPdfBytes(pages);
|
|
3746
3754
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3747
3755
|
return URL.createObjectURL(blob);
|
|
3748
3756
|
}
|
|
@@ -3751,7 +3759,7 @@ function buildPdfFromTiledImageData(pages) {
|
|
|
3751
3759
|
var activePreview = null;
|
|
3752
3760
|
function startPreviewAnimation(elementId, preset, options) {
|
|
3753
3761
|
stopPreviewAnimation();
|
|
3754
|
-
const descriptor =
|
|
3762
|
+
const descriptor = chunkUTI4CLYJ_js.buildPreviewAnimation(preset, options);
|
|
3755
3763
|
if (!descriptor) {
|
|
3756
3764
|
return;
|
|
3757
3765
|
}
|
|
@@ -3764,7 +3772,7 @@ function startMotionPathPreview(elementId, path, options) {
|
|
|
3764
3772
|
return;
|
|
3765
3773
|
}
|
|
3766
3774
|
const stage = domEl.offsetParent;
|
|
3767
|
-
const descriptor =
|
|
3775
|
+
const descriptor = chunkUTI4CLYJ_js.buildMotionPathPreview({
|
|
3768
3776
|
path,
|
|
3769
3777
|
slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
|
|
3770
3778
|
slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,
|