pptx-react-viewer 3.17.0 → 3.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/{AiChatPanel-VWVGQ5DD.js → AiChatPanel-GYH43XWW.js} +10 -10
- package/dist/AiChatPanel-GYH43XWW.js.br +0 -0
- package/dist/AiChatPanel-GYH43XWW.js.gz +0 -0
- package/dist/{AiChatPanel-4LKH44IE.mjs → AiChatPanel-SINEEZBW.mjs} +2 -2
- package/dist/AiChatPanel-SINEEZBW.mjs.br +0 -0
- package/dist/AiChatPanel-SINEEZBW.mjs.gz +0 -0
- package/dist/{chunk-3AJ54EAB.js → chunk-64FUV37N.js} +9 -0
- package/dist/chunk-64FUV37N.js.br +0 -0
- package/dist/{chunk-3AJ54EAB.js.gz → chunk-64FUV37N.js.gz} +0 -0
- package/dist/{chunk-NJ3WCYYG.js → chunk-7FBKS7OS.js} +9 -9
- package/dist/chunk-7FBKS7OS.js.br +0 -0
- package/dist/chunk-7FBKS7OS.js.gz +0 -0
- package/dist/{chunk-3UGVURWU.js → chunk-E55VEC37.js} +40 -40
- package/dist/chunk-E55VEC37.js.br +0 -0
- package/dist/chunk-E55VEC37.js.gz +0 -0
- package/dist/{chunk-72LYFUGL.js → chunk-IRG7SIUX.js} +359 -362
- package/dist/chunk-IRG7SIUX.js.br +0 -0
- package/dist/chunk-IRG7SIUX.js.gz +0 -0
- package/dist/{chunk-EDMJYVCS.mjs → chunk-IXKAIIA2.mjs} +23 -26
- package/dist/chunk-IXKAIIA2.mjs.br +0 -0
- package/dist/chunk-IXKAIIA2.mjs.gz +0 -0
- package/dist/{chunk-HMX3MQR7.mjs → chunk-LAU34UMB.mjs} +9 -1
- package/dist/chunk-LAU34UMB.mjs.br +0 -0
- package/dist/{chunk-HMX3MQR7.mjs.gz → chunk-LAU34UMB.mjs.gz} +0 -0
- package/dist/{chunk-7YOA4HNP.mjs → chunk-OAKDJYYT.mjs} +2 -2
- package/dist/chunk-OAKDJYYT.mjs.br +0 -0
- package/dist/chunk-OAKDJYYT.mjs.gz +0 -0
- package/dist/{chunk-23PW4Y4R.mjs → chunk-VYSMTC5C.mjs} +1 -1
- package/dist/chunk-VYSMTC5C.mjs.br +0 -0
- package/dist/chunk-VYSMTC5C.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.js +15 -15
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +75 -75
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -3
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.js +17 -17
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +4 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-4LKH44IE.mjs.br +0 -0
- package/dist/AiChatPanel-4LKH44IE.mjs.gz +0 -0
- package/dist/AiChatPanel-VWVGQ5DD.js.br +0 -0
- package/dist/AiChatPanel-VWVGQ5DD.js.gz +0 -0
- package/dist/chunk-23PW4Y4R.mjs.br +0 -0
- package/dist/chunk-23PW4Y4R.mjs.gz +0 -0
- package/dist/chunk-3AJ54EAB.js.br +0 -0
- package/dist/chunk-3UGVURWU.js.br +0 -0
- package/dist/chunk-3UGVURWU.js.gz +0 -0
- package/dist/chunk-72LYFUGL.js.br +0 -0
- package/dist/chunk-72LYFUGL.js.gz +0 -0
- package/dist/chunk-7YOA4HNP.mjs.br +0 -0
- package/dist/chunk-7YOA4HNP.mjs.gz +0 -0
- package/dist/chunk-EDMJYVCS.mjs.br +0 -0
- package/dist/chunk-EDMJYVCS.mjs.gz +0 -0
- package/dist/chunk-HMX3MQR7.mjs.br +0 -0
- package/dist/chunk-NJ3WCYYG.js.br +0 -0
- package/dist/chunk-NJ3WCYYG.js.gz +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkKVXB22D3_js = require('./chunk-KVXB22D3.js');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkE55VEC37_js = require('./chunk-E55VEC37.js');
|
|
5
|
+
var chunk7FBKS7OS_js = require('./chunk-7FBKS7OS.js');
|
|
6
6
|
var chunk4SPZ5IZN_js = require('./chunk-4SPZ5IZN.js');
|
|
7
|
-
var
|
|
7
|
+
var chunk64FUV37N_js = require('./chunk-64FUV37N.js');
|
|
8
8
|
var React20 = require('react');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
var reactI18next = require('react-i18next');
|
|
@@ -43,7 +43,7 @@ function CollaborationProvider({
|
|
|
43
43
|
canvasHeight,
|
|
44
44
|
children
|
|
45
45
|
}) {
|
|
46
|
-
const value =
|
|
46
|
+
const value = chunkE55VEC37_js.useCollaborativeState({
|
|
47
47
|
config,
|
|
48
48
|
canvasWidth,
|
|
49
49
|
canvasHeight
|
|
@@ -497,7 +497,7 @@ function LoadingState({ className }) {
|
|
|
497
497
|
role: "status",
|
|
498
498
|
"aria-live": "polite",
|
|
499
499
|
"aria-atomic": "true",
|
|
500
|
-
className:
|
|
500
|
+
className: chunk7FBKS7OS_js.cn(
|
|
501
501
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
502
502
|
className
|
|
503
503
|
),
|
|
@@ -565,7 +565,7 @@ function Area3DChartRenderer({
|
|
|
565
565
|
() => chunk4SPZ5IZN_js.buildAreaChart3DDataForElement(element, { width: element.width, height: element.height }),
|
|
566
566
|
[element]
|
|
567
567
|
);
|
|
568
|
-
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
568
|
+
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk7FBKS7OS_js.renderChartElement(element) });
|
|
569
569
|
if (!options || threeAvailable === false) {
|
|
570
570
|
return svgFallback;
|
|
571
571
|
}
|
|
@@ -634,7 +634,7 @@ function Bar3DChartRenderer({
|
|
|
634
634
|
() => chunk4SPZ5IZN_js.buildBarChart3DDataForElement(element, { width: element.width, height: element.height }),
|
|
635
635
|
[element]
|
|
636
636
|
);
|
|
637
|
-
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
637
|
+
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk7FBKS7OS_js.renderChartElement(element) });
|
|
638
638
|
if (!options || threeAvailable === false) {
|
|
639
639
|
return svgFallback;
|
|
640
640
|
}
|
|
@@ -737,7 +737,7 @@ function Line3DChartRenderer({
|
|
|
737
737
|
() => chunk4SPZ5IZN_js.buildLineChart3DDataForElement(element, { width: element.width, height: element.height }),
|
|
738
738
|
[element]
|
|
739
739
|
);
|
|
740
|
-
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
740
|
+
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk7FBKS7OS_js.renderChartElement(element) });
|
|
741
741
|
if (!options || threeAvailable === false) {
|
|
742
742
|
return svgFallback;
|
|
743
743
|
}
|
|
@@ -805,7 +805,7 @@ function PieChart3DRenderer({
|
|
|
805
805
|
() => chunk4SPZ5IZN_js.buildPieChart3DDataForElement(element, { width: element.width, height: element.height }),
|
|
806
806
|
[element]
|
|
807
807
|
);
|
|
808
|
-
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
808
|
+
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk7FBKS7OS_js.renderChartElement(element) });
|
|
809
809
|
if (!options || threeAvailable === false) {
|
|
810
810
|
return svgFallback;
|
|
811
811
|
}
|
|
@@ -873,7 +873,7 @@ function SurfaceChart3DRenderer({
|
|
|
873
873
|
() => chunk4SPZ5IZN_js.buildSurfaceChart3DDataForElement(element, { width: element.width, height: element.height }),
|
|
874
874
|
[element]
|
|
875
875
|
);
|
|
876
|
-
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
876
|
+
const svgFallback = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunk7FBKS7OS_js.renderChartElement(element) });
|
|
877
877
|
if (!options || threeAvailable === false) {
|
|
878
878
|
return svgFallback;
|
|
879
879
|
}
|
|
@@ -1057,7 +1057,7 @@ function ChartElementView({
|
|
|
1057
1057
|
chunk4SPZ5IZN_js.getBarFacePicturePixelSampleVersion
|
|
1058
1058
|
);
|
|
1059
1059
|
const viewModel = React20.useMemo(() => {
|
|
1060
|
-
return canEdit ?
|
|
1060
|
+
return canEdit ? chunk7FBKS7OS_js.buildReactChartViewModel(element) : null;
|
|
1061
1061
|
}, [canEdit, element, barFacePictureSampleVersion]);
|
|
1062
1062
|
React20.useEffect(chunk4SPZ5IZN_js.ensureChartInteractionStyles, []);
|
|
1063
1063
|
React20.useEffect(() => {
|
|
@@ -1171,7 +1171,7 @@ function ChartElementView({
|
|
|
1171
1171
|
interaction: chart3DInteraction,
|
|
1172
1172
|
selectedPart
|
|
1173
1173
|
}
|
|
1174
|
-
) :
|
|
1174
|
+
) : chunk7FBKS7OS_js.renderChartElement(renderedElement),
|
|
1175
1175
|
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: chunk4SPZ5IZN_js.formatAxisValue(dragValue) }),
|
|
1176
1176
|
titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1177
1177
|
"input",
|
|
@@ -1358,7 +1358,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
1358
1358
|
] });
|
|
1359
1359
|
}
|
|
1360
1360
|
}
|
|
1361
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children:
|
|
1361
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: chunk64FUV37N_js.translationsEn["pptx.elementType.image"] });
|
|
1362
1362
|
}
|
|
1363
1363
|
const effectStyles = {
|
|
1364
1364
|
...filter ? { filter } : {},
|
|
@@ -1375,7 +1375,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
1375
1375
|
"div",
|
|
1376
1376
|
{
|
|
1377
1377
|
className: "pointer-events-none select-none w-full h-full",
|
|
1378
|
-
style: { ...
|
|
1378
|
+
style: { ...chunk7FBKS7OS_js.getImageTilingStyle(el), ...effectStyles }
|
|
1379
1379
|
}
|
|
1380
1380
|
)
|
|
1381
1381
|
] });
|
|
@@ -1384,7 +1384,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
1384
1384
|
chunk4SPZ5IZN_js.isImageLikeElement(el) ? el.imageEffects?.colorWash : void 0
|
|
1385
1385
|
);
|
|
1386
1386
|
const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
|
|
1387
|
-
const duotoneColors =
|
|
1387
|
+
const duotoneColors = chunk7FBKS7OS_js.getDuotoneColors(el);
|
|
1388
1388
|
const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
|
|
1389
1389
|
const filterForImg = useDuotoneCanvas ? chunk4SPZ5IZN_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
|
|
1390
1390
|
const canvasEffectStyles = {
|
|
@@ -1613,7 +1613,7 @@ function ResizeHandles({
|
|
|
1613
1613
|
last = deg;
|
|
1614
1614
|
const transform = `rotate(${deg}deg)${base}`;
|
|
1615
1615
|
wrapper.style.transform = transform;
|
|
1616
|
-
|
|
1616
|
+
chunkE55VEC37_js.syncSelectionHandleOverlay(wrapper, elementId, { transform });
|
|
1617
1617
|
};
|
|
1618
1618
|
const onPointerMove = (ev) => apply(ev.clientX, ev.clientY, ev.shiftKey);
|
|
1619
1619
|
const end = () => {
|
|
@@ -1634,7 +1634,7 @@ function ResizeHandles({
|
|
|
1634
1634
|
{
|
|
1635
1635
|
type: "button",
|
|
1636
1636
|
"aria-label": t("pptx.selectionOverlay.resize", { handle }),
|
|
1637
|
-
className:
|
|
1637
|
+
className: chunk7FBKS7OS_js.cn("absolute z-10 group", posClass, cursor),
|
|
1638
1638
|
style: peStyle,
|
|
1639
1639
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
1640
1640
|
onMouseDown: (e) => {
|
|
@@ -1653,7 +1653,7 @@ function ResizeHandles({
|
|
|
1653
1653
|
{
|
|
1654
1654
|
type: "button",
|
|
1655
1655
|
"aria-label": t("pptx.selectionOverlay.resize", { handle }),
|
|
1656
|
-
className:
|
|
1656
|
+
className: chunk7FBKS7OS_js.cn("absolute z-10", posClass, cursor),
|
|
1657
1657
|
style: peStyle,
|
|
1658
1658
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
1659
1659
|
onMouseDown: (e) => {
|
|
@@ -1661,7 +1661,7 @@ function ResizeHandles({
|
|
|
1661
1661
|
onResizePointerDown(elementId, e, handle);
|
|
1662
1662
|
},
|
|
1663
1663
|
children: [
|
|
1664
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
1664
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7FBKS7OS_js.cn(sizeClass, "border border-white bg-primary shadow") }),
|
|
1665
1665
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-2 max-md:-inset-1" })
|
|
1666
1666
|
]
|
|
1667
1667
|
},
|
|
@@ -1742,13 +1742,13 @@ var ConnectorElementRenderer = React20__default.default.memo(
|
|
|
1742
1742
|
textStyleOverrideCss
|
|
1743
1743
|
}) {
|
|
1744
1744
|
const shapeEl = chunk4SPZ5IZN_js.hasShapeProperties(el) ? el : void 0;
|
|
1745
|
-
const boxWidth = Math.max(el.width,
|
|
1746
|
-
const boxHeight = Math.max(el.height,
|
|
1745
|
+
const boxWidth = Math.max(el.width, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE);
|
|
1746
|
+
const boxHeight = Math.max(el.height, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE);
|
|
1747
1747
|
const viewWidth = Math.max(el.width, 0);
|
|
1748
1748
|
const viewHeight = Math.max(el.height, 0);
|
|
1749
1749
|
const ss = shapeEl?.shapeStyle;
|
|
1750
1750
|
const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
|
|
1751
|
-
const strokeColor = chunk4SPZ5IZN_js.normalizeHexColor(ss?.strokeColor,
|
|
1751
|
+
const strokeColor = chunk4SPZ5IZN_js.normalizeHexColor(ss?.strokeColor, chunk7FBKS7OS_js.DEFAULT_STROKE_COLOR);
|
|
1752
1752
|
const strokePaint = chunk4SPZ5IZN_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
|
|
1753
1753
|
const dashType = chunk4SPZ5IZN_js.normalizeStrokeDashType(ss?.strokeDash);
|
|
1754
1754
|
const dashArray = chunk4SPZ5IZN_js.getSvgStrokeDasharray(
|
|
@@ -1769,7 +1769,7 @@ var ConnectorElementRenderer = React20__default.default.memo(
|
|
|
1769
1769
|
const connectorText = textEl?.text?.trim() ?? "";
|
|
1770
1770
|
const connectorTextSegments = textEl?.textSegments;
|
|
1771
1771
|
const connectorTextStyle = textEl?.textStyle;
|
|
1772
|
-
const pathGeometry = shapeEl ?
|
|
1772
|
+
const pathGeometry = shapeEl ? chunk7FBKS7OS_js.getConnectorPathGeometry(shapeEl) : {
|
|
1773
1773
|
pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
|
|
1774
1774
|
startX: 0,
|
|
1775
1775
|
startY: 0,
|
|
@@ -1778,8 +1778,8 @@ var ConnectorElementRenderer = React20__default.default.memo(
|
|
|
1778
1778
|
};
|
|
1779
1779
|
const hitTargetWidth = Math.max(strokeWidth * 3, 14);
|
|
1780
1780
|
const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
|
|
1781
|
-
const lineShadow =
|
|
1782
|
-
const lineGlow =
|
|
1781
|
+
const lineShadow = chunk7FBKS7OS_js.buildLineShadowCss(el);
|
|
1782
|
+
const lineGlow = chunk7FBKS7OS_js.buildLineGlowFilter(el);
|
|
1783
1783
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1784
1784
|
"div",
|
|
1785
1785
|
{
|
|
@@ -1817,14 +1817,14 @@ var ConnectorElementRenderer = React20__default.default.memo(
|
|
|
1817
1817
|
style: { overflow: "visible", pointerEvents: "none" },
|
|
1818
1818
|
children: [
|
|
1819
1819
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
1820
|
-
|
|
1820
|
+
chunk7FBKS7OS_js.renderConnectorMarker(
|
|
1821
1821
|
startMarkerId,
|
|
1822
1822
|
startArrow,
|
|
1823
1823
|
strokePaint,
|
|
1824
1824
|
ss?.connectorStartArrowWidth,
|
|
1825
1825
|
ss?.connectorStartArrowLength
|
|
1826
1826
|
),
|
|
1827
|
-
|
|
1827
|
+
chunk7FBKS7OS_js.renderConnectorMarker(
|
|
1828
1828
|
endMarkerId,
|
|
1829
1829
|
endArrow,
|
|
1830
1830
|
strokePaint,
|
|
@@ -2030,14 +2030,14 @@ function getElementInteractionProps({
|
|
|
2030
2030
|
|
|
2031
2031
|
// src/viewer/components/elements/element-renderer-helpers.tsx
|
|
2032
2032
|
function renderDagDuotoneFilterForElement(el) {
|
|
2033
|
-
if (!
|
|
2033
|
+
if (!chunk7FBKS7OS_js.hasDagDuotoneEffect(el)) {
|
|
2034
2034
|
return null;
|
|
2035
2035
|
}
|
|
2036
2036
|
const duotone = el.shapeStyle?.dagDuotone;
|
|
2037
2037
|
if (!duotone) {
|
|
2038
2038
|
return null;
|
|
2039
2039
|
}
|
|
2040
|
-
return
|
|
2040
|
+
return chunk7FBKS7OS_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
|
|
2041
2041
|
}
|
|
2042
2042
|
function getContainerStyle({
|
|
2043
2043
|
el,
|
|
@@ -2059,12 +2059,12 @@ function getContainerStyle({
|
|
|
2059
2059
|
return {
|
|
2060
2060
|
left: isFullscreenMedia ? 0 : el.x,
|
|
2061
2061
|
top: isFullscreenMedia ? 0 : el.y,
|
|
2062
|
-
width: isFullscreenMedia ? "100%" : Math.max(el.width,
|
|
2063
|
-
height: isFullscreenMedia ? "100%" : Math.max(el.height,
|
|
2062
|
+
width: isFullscreenMedia ? "100%" : Math.max(el.width, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE),
|
|
2063
|
+
height: isFullscreenMedia ? "100%" : Math.max(el.height, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE),
|
|
2064
2064
|
transform: isFullscreenMedia ? "none" : chunk4SPZ5IZN_js.getElementTransform(el),
|
|
2065
2065
|
transformOrigin: "center",
|
|
2066
2066
|
overflow: overflowValue,
|
|
2067
|
-
clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ?
|
|
2067
|
+
clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? chunk7FBKS7OS_js.getCropShapeClipPath(el) : void 0,
|
|
2068
2068
|
zIndex: isFullscreenMedia ? 20 : zIndex,
|
|
2069
2069
|
visibility: animationState?.visible === false ? "hidden" : "visible",
|
|
2070
2070
|
animation: animationState?.cssAnimation,
|
|
@@ -2100,8 +2100,8 @@ function getContainerStyle({
|
|
|
2100
2100
|
function shapeParams(element) {
|
|
2101
2101
|
const style = chunk4SPZ5IZN_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
2102
2102
|
const strokeWidth = chunk4SPZ5IZN_js.paintedStrokeWidth(style);
|
|
2103
|
-
const strokeColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.strokeColor,
|
|
2104
|
-
const fillColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
2103
|
+
const strokeColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.strokeColor, chunk7FBKS7OS_js.DEFAULT_STROKE_COLOR);
|
|
2104
|
+
const fillColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR);
|
|
2105
2105
|
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk4SPZ5IZN_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
2106
2106
|
return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
|
|
2107
2107
|
}
|
|
@@ -2207,7 +2207,7 @@ function ShapeEffectOverlay({
|
|
|
2207
2207
|
const fillOverlayStyle = overlay ? {
|
|
2208
2208
|
position: "absolute",
|
|
2209
2209
|
inset: 0,
|
|
2210
|
-
...chunk4SPZ5IZN_js.isImageLikeElement(element) ?
|
|
2210
|
+
...chunk4SPZ5IZN_js.isImageLikeElement(element) ? chunk7FBKS7OS_js.getImageSurfaceMaskStyle(element) : {},
|
|
2211
2211
|
background: overlay.color,
|
|
2212
2212
|
mixBlendMode: overlay.blendMode,
|
|
2213
2213
|
pointerEvents: "none"
|
|
@@ -2405,7 +2405,7 @@ var ElementRenderer = React20__default.default.memo(
|
|
|
2405
2405
|
const isTxt = chunk4SPZ5IZN_js.isEditableTextElement(el) && allow.textEditable;
|
|
2406
2406
|
const txtSE = chunk4SPZ5IZN_js.hasTextProperties(el) ? el.textStyle : void 0;
|
|
2407
2407
|
const textStyleOverrideCss = chunk4SPZ5IZN_js.buildTextStyleOverrideCss(el.id, visualAnimationState?.textStyle);
|
|
2408
|
-
const ss =
|
|
2408
|
+
const ss = chunk7FBKS7OS_js.getShapeVisualStyle(
|
|
2409
2409
|
el,
|
|
2410
2410
|
hf,
|
|
2411
2411
|
fc,
|
|
@@ -2414,9 +2414,9 @@ var ElementRenderer = React20__default.default.memo(
|
|
|
2414
2414
|
visualAnimationState?.animatesFill,
|
|
2415
2415
|
visualAnimationState?.animatesStroke
|
|
2416
2416
|
);
|
|
2417
|
-
const ts =
|
|
2417
|
+
const ts = chunk7FBKS7OS_js.getTextStyleForElement(el, chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR);
|
|
2418
2418
|
const isImg = el.type === "picture" || el.type === "image";
|
|
2419
|
-
const vs =
|
|
2419
|
+
const vs = chunk7FBKS7OS_js.renderVectorShape(
|
|
2420
2420
|
el,
|
|
2421
2421
|
isImg ? false : hf,
|
|
2422
2422
|
fc,
|
|
@@ -2426,10 +2426,10 @@ var ElementRenderer = React20__default.default.memo(
|
|
|
2426
2426
|
visualAnimationState?.animatesStroke
|
|
2427
2427
|
);
|
|
2428
2428
|
const isModel3D = el.type === "model3d";
|
|
2429
|
-
const isConn =
|
|
2429
|
+
const isConn = chunk7FBKS7OS_js.isConnectorOrLineElement(el);
|
|
2430
2430
|
const shapeStyle3d = chunk4SPZ5IZN_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
|
|
2431
2431
|
const extrusionData = React20.useMemo(
|
|
2432
|
-
() =>
|
|
2432
|
+
() => chunk7FBKS7OS_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
|
|
2433
2433
|
[shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
|
|
2434
2434
|
);
|
|
2435
2435
|
const actionAffordance = useActionAffordance(el, canInteract);
|
|
@@ -2499,7 +2499,7 @@ var ElementRenderer = React20__default.default.memo(
|
|
|
2499
2499
|
"aria-hidden": aria.hidden ? true : void 0,
|
|
2500
2500
|
"aria-selected": isSelected ? true : void 0,
|
|
2501
2501
|
tabIndex: isFocusable ? 0 : -1,
|
|
2502
|
-
className:
|
|
2502
|
+
className: chunk7FBKS7OS_js.cn(
|
|
2503
2503
|
"absolute",
|
|
2504
2504
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
|
|
2505
2505
|
cur,
|
|
@@ -2586,7 +2586,7 @@ var ElementRenderer = React20__default.default.memo(
|
|
|
2586
2586
|
txtSE,
|
|
2587
2587
|
txtS: ts,
|
|
2588
2588
|
vecShape: backgroundAnimationState && !isImg ? null : vs,
|
|
2589
|
-
imgStyle:
|
|
2589
|
+
imgStyle: chunk7FBKS7OS_js.getImageRenderStyle(el),
|
|
2590
2590
|
imgFilter: chunk4SPZ5IZN_js.getImageEffectsFilter(el),
|
|
2591
2591
|
imgOpacity: chunk4SPZ5IZN_js.getImageEffectsOpacity(el),
|
|
2592
2592
|
imgAlt: imageAltText,
|
|
@@ -2717,7 +2717,7 @@ function renderInk(el, options) {
|
|
|
2717
2717
|
function renderGroup(children, parentGroupFill) {
|
|
2718
2718
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: chunk4SPZ5IZN_js.filterRenderedElements(children).map((c, childIndex) => {
|
|
2719
2719
|
const { hf, fc, sw, sc } = shapeParams(c);
|
|
2720
|
-
const baseSs =
|
|
2720
|
+
const baseSs = chunk7FBKS7OS_js.getShapeVisualStyle(c, hf, fc, sw, sc);
|
|
2721
2721
|
const inheritedFill = chunk4SPZ5IZN_js.resolveGroupChildFill(c, parentGroupFill);
|
|
2722
2722
|
const ss = inheritedFill ? {
|
|
2723
2723
|
...baseSs,
|
|
@@ -2728,8 +2728,8 @@ function renderGroup(children, parentGroupFill) {
|
|
|
2728
2728
|
backgroundPosition: inheritedFill.backgroundPosition
|
|
2729
2729
|
} : baseSs;
|
|
2730
2730
|
const isI = c.type === "picture" || c.type === "image";
|
|
2731
|
-
const vs =
|
|
2732
|
-
const ts =
|
|
2731
|
+
const vs = chunk7FBKS7OS_js.renderVectorShape(c, isI ? false : hf, fc, sw, sc);
|
|
2732
|
+
const ts = chunk7FBKS7OS_js.getTextStyleForElement(c, chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR);
|
|
2733
2733
|
const isTxt = chunk4SPZ5IZN_js.isEditableTextElement(c);
|
|
2734
2734
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2735
2735
|
"div",
|
|
@@ -2739,8 +2739,8 @@ function renderGroup(children, parentGroupFill) {
|
|
|
2739
2739
|
style: {
|
|
2740
2740
|
left: c.x,
|
|
2741
2741
|
top: c.y,
|
|
2742
|
-
width: Math.max(c.width,
|
|
2743
|
-
height: Math.max(c.height,
|
|
2742
|
+
width: Math.max(c.width, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE),
|
|
2743
|
+
height: Math.max(c.height, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE),
|
|
2744
2744
|
transform: chunk4SPZ5IZN_js.getElementTransform(c),
|
|
2745
2745
|
transformOrigin: "center",
|
|
2746
2746
|
...ss,
|
|
@@ -2766,20 +2766,20 @@ function renderGroup(children, parentGroupFill) {
|
|
|
2766
2766
|
// A nested group: recurse, chaining the inherited fill so a
|
|
2767
2767
|
// `grpFill` shape under a fill-less sub-group still paints.
|
|
2768
2768
|
renderGroup(c.children, chunk4SPZ5IZN_js.getGroupChildParentFill(c, parentGroupFill))
|
|
2769
|
-
) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style:
|
|
2769
|
+
) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk7FBKS7OS_js.getImageSurfaceStyle(c), children: [
|
|
2770
2770
|
chunk4SPZ5IZN_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2771
2771
|
"div",
|
|
2772
2772
|
{
|
|
2773
2773
|
className: "pointer-events-none select-none w-full h-full",
|
|
2774
|
-
style:
|
|
2774
|
+
style: chunk7FBKS7OS_js.getImageTilingStyle(c)
|
|
2775
2775
|
}
|
|
2776
2776
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2777
2777
|
"img",
|
|
2778
2778
|
{
|
|
2779
2779
|
src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
|
|
2780
|
-
alt:
|
|
2780
|
+
alt: chunk64FUV37N_js.translationsEn["pptx.ink.groupChildAlt"],
|
|
2781
2781
|
className: "pointer-events-none select-none",
|
|
2782
|
-
style:
|
|
2782
|
+
style: chunk7FBKS7OS_js.getImageRenderStyle(c),
|
|
2783
2783
|
draggable: false
|
|
2784
2784
|
}
|
|
2785
2785
|
),
|
|
@@ -2791,7 +2791,7 @@ function renderGroup(children, parentGroupFill) {
|
|
|
2791
2791
|
{
|
|
2792
2792
|
className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
|
|
2793
2793
|
style: ts,
|
|
2794
|
-
children:
|
|
2794
|
+
children: chunk7FBKS7OS_js.renderTextSegments(c, chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR)
|
|
2795
2795
|
}
|
|
2796
2796
|
) : null
|
|
2797
2797
|
] })
|
|
@@ -2822,7 +2822,7 @@ function renderContentPart(el, options) {
|
|
|
2822
2822
|
}
|
|
2823
2823
|
);
|
|
2824
2824
|
}
|
|
2825
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
2825
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk64FUV37N_js.translationsEn["pptx.ink.contentPartFallback"] });
|
|
2826
2826
|
}
|
|
2827
2827
|
function ExcelIcon(color, size = 32) {
|
|
2828
2828
|
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", children: [
|
|
@@ -2880,7 +2880,7 @@ function PdfIcon(color, size = 32) {
|
|
|
2880
2880
|
fill: "none"
|
|
2881
2881
|
}
|
|
2882
2882
|
),
|
|
2883
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children:
|
|
2883
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children: chunk64FUV37N_js.translationsEn["pptx.file.pdf"] })
|
|
2884
2884
|
] });
|
|
2885
2885
|
}
|
|
2886
2886
|
function VisioIcon(color, size = 32) {
|
|
@@ -3094,7 +3094,7 @@ function InlineTextEditor({
|
|
|
3094
3094
|
pending.endOffset
|
|
3095
3095
|
);
|
|
3096
3096
|
});
|
|
3097
|
-
const warpStyle =
|
|
3097
|
+
const warpStyle = chunk7FBKS7OS_js.getTextWarpStyle(textStyleRaw);
|
|
3098
3098
|
const compensationTransform = chunk4SPZ5IZN_js.getTextCompensationTransform(element);
|
|
3099
3099
|
const warpTransform = warpStyle?.transform;
|
|
3100
3100
|
const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
|
|
@@ -3177,7 +3177,7 @@ function InlineTextEditor({
|
|
|
3177
3177
|
const text = e.clipboardData.getData("text/plain");
|
|
3178
3178
|
document.execCommand("insertText", false, text);
|
|
3179
3179
|
},
|
|
3180
|
-
children: seed.hasRichSegments ?
|
|
3180
|
+
children: seed.hasRichSegments ? chunk7FBKS7OS_js.renderTextSegments(element, chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR) : seed.initialText
|
|
3181
3181
|
}
|
|
3182
3182
|
);
|
|
3183
3183
|
}
|
|
@@ -4412,13 +4412,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
|
|
|
4412
4412
|
if (s.strikethrough) {
|
|
4413
4413
|
decos.push("line-through");
|
|
4414
4414
|
}
|
|
4415
|
-
const fill = s.hyperlink ? chunk4SPZ5IZN_js.normalizeHexColor(s.color || element.textStyle?.color,
|
|
4415
|
+
const fill = s.hyperlink ? chunk4SPZ5IZN_js.normalizeHexColor(s.color || element.textStyle?.color, chunk7FBKS7OS_js.HYPERLINK_COLOR) : chunk4SPZ5IZN_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
|
|
4416
4416
|
return {
|
|
4417
4417
|
fill,
|
|
4418
|
-
fontSize: s.fontSize ?? element.textStyle?.fontSize ??
|
|
4418
|
+
fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunk7FBKS7OS_js.DEFAULT_TEXT_FONT_SIZE,
|
|
4419
4419
|
fontWeight: s.bold ? 700 : 400,
|
|
4420
4420
|
fontStyle: s.italic ? "italic" : void 0,
|
|
4421
|
-
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunk4SPZ5IZN_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") :
|
|
4421
|
+
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunk4SPZ5IZN_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunk7FBKS7OS_js.DEFAULT_FONT_FAMILY,
|
|
4422
4422
|
textDecoration: decos.length > 0 ? decos.join(" ") : void 0
|
|
4423
4423
|
};
|
|
4424
4424
|
}
|
|
@@ -4426,8 +4426,8 @@ function resolveSegmentFont(segment, element) {
|
|
|
4426
4426
|
const s = segment.style || {};
|
|
4427
4427
|
const family = s.fontFamily || element.textStyle?.fontFamily;
|
|
4428
4428
|
return {
|
|
4429
|
-
fontFamily: family ? chunk4SPZ5IZN_js.getSubstituteFontFamily(family) :
|
|
4430
|
-
fontSizePx: s.fontSize ?? element.textStyle?.fontSize ??
|
|
4429
|
+
fontFamily: family ? chunk4SPZ5IZN_js.getSubstituteFontFamily(family) : chunk7FBKS7OS_js.DEFAULT_FONT_FAMILY,
|
|
4430
|
+
fontSizePx: s.fontSize ?? element.textStyle?.fontSize ?? chunk7FBKS7OS_js.DEFAULT_TEXT_FONT_SIZE,
|
|
4431
4431
|
bold: s.bold ?? element.textStyle?.bold,
|
|
4432
4432
|
italic: s.italic ?? element.textStyle?.italic
|
|
4433
4433
|
};
|
|
@@ -4511,8 +4511,8 @@ function WarpedText({
|
|
|
4511
4511
|
const warpAdj2 = textEl.textStyle?.textWarpAdj2;
|
|
4512
4512
|
const align = textEl.textStyle?.align ?? "center";
|
|
4513
4513
|
const { startOffset, textAnchor } = getAlignmentProps(align);
|
|
4514
|
-
const baseFontSize = textEl.textStyle?.fontSize ??
|
|
4515
|
-
const baseFontFamily = textEl.textStyle?.fontFamily ? chunk4SPZ5IZN_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) :
|
|
4514
|
+
const baseFontSize = textEl.textStyle?.fontSize ?? chunk7FBKS7OS_js.DEFAULT_TEXT_FONT_SIZE;
|
|
4515
|
+
const baseFontFamily = textEl.textStyle?.fontFamily ? chunk4SPZ5IZN_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunk7FBKS7OS_js.DEFAULT_FONT_FAMILY;
|
|
4516
4516
|
const baseFill = chunk4SPZ5IZN_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
|
|
4517
4517
|
if (chunk4SPZ5IZN_js.hasGlyphEnvelope(preset)) {
|
|
4518
4518
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4540,7 +4540,7 @@ function WarpedText({
|
|
|
4540
4540
|
warpAdj2,
|
|
4541
4541
|
paraIdx,
|
|
4542
4542
|
lineCount,
|
|
4543
|
-
|
|
4543
|
+
chunkE55VEC37_js.getGlyphOutline
|
|
4544
4544
|
);
|
|
4545
4545
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4546
4546
|
EnvelopeLine,
|
|
@@ -4685,7 +4685,7 @@ function renderTextElementBody(options) {
|
|
|
4685
4685
|
const useSvgWarp = chunk4SPZ5IZN_js.shouldUseSvgWarp(
|
|
4686
4686
|
chunk4SPZ5IZN_js.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
|
|
4687
4687
|
);
|
|
4688
|
-
const scene3dStyle = chunk4SPZ5IZN_js.hasTextProperties(el) ?
|
|
4688
|
+
const scene3dStyle = chunk4SPZ5IZN_js.hasTextProperties(el) ? chunk7FBKS7OS_js.buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
|
|
4689
4689
|
const rotationTransform = chunk4SPZ5IZN_js.getTextBodyRotationTransform(el);
|
|
4690
4690
|
const composedTransform = [rotationTransform, chunk4SPZ5IZN_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
4691
4691
|
const transformStyle = {
|
|
@@ -4717,18 +4717,18 @@ function renderTextElementBody(options) {
|
|
|
4717
4717
|
shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4718
4718
|
"div",
|
|
4719
4719
|
{
|
|
4720
|
-
className:
|
|
4720
|
+
className: chunk7FBKS7OS_js.cn(
|
|
4721
4721
|
"relative z-10 w-full h-full",
|
|
4722
4722
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
4723
4723
|
),
|
|
4724
|
-
style: { ...
|
|
4724
|
+
style: { ...chunk7FBKS7OS_js.getTextLayoutStyle(el), ...transformStyle },
|
|
4725
4725
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4726
4726
|
WarpedText,
|
|
4727
4727
|
{
|
|
4728
4728
|
element: el,
|
|
4729
4729
|
width: el.width,
|
|
4730
4730
|
height: el.height,
|
|
4731
|
-
fallbackColor:
|
|
4731
|
+
fallbackColor: chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR,
|
|
4732
4732
|
findHighlights: findHl,
|
|
4733
4733
|
fieldContext
|
|
4734
4734
|
}
|
|
@@ -4737,19 +4737,19 @@ function renderTextElementBody(options) {
|
|
|
4737
4737
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4738
4738
|
"div",
|
|
4739
4739
|
{
|
|
4740
|
-
className:
|
|
4740
|
+
className: chunk7FBKS7OS_js.cn(
|
|
4741
4741
|
"relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
|
|
4742
4742
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
4743
4743
|
),
|
|
4744
4744
|
style: {
|
|
4745
|
-
...
|
|
4745
|
+
...chunk7FBKS7OS_js.getTextLayoutStyle(el),
|
|
4746
4746
|
...txtS,
|
|
4747
|
-
...
|
|
4747
|
+
...chunk7FBKS7OS_js.getTextWarpStyle(txtSE),
|
|
4748
4748
|
...transformStyle
|
|
4749
4749
|
},
|
|
4750
|
-
children:
|
|
4750
|
+
children: chunk7FBKS7OS_js.renderTextSegments(
|
|
4751
4751
|
el,
|
|
4752
|
-
|
|
4752
|
+
chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR,
|
|
4753
4753
|
void 0,
|
|
4754
4754
|
findHl,
|
|
4755
4755
|
onHyperlinkClick,
|
|
@@ -5045,7 +5045,7 @@ function renderBody(options) {
|
|
|
5045
5045
|
);
|
|
5046
5046
|
}
|
|
5047
5047
|
if (isImg) {
|
|
5048
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style:
|
|
5048
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none", style: chunk7FBKS7OS_js.getImageSurfaceStyle(el), children: [
|
|
5049
5049
|
renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity),
|
|
5050
5050
|
vecShape ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0", children: vecShape }) : null
|
|
5051
5051
|
] });
|
|
@@ -5062,7 +5062,7 @@ function renderBody(options) {
|
|
|
5062
5062
|
textDirection: txtSE?.textDirection,
|
|
5063
5063
|
textStyle: txtS,
|
|
5064
5064
|
textStyleRaw: txtSE,
|
|
5065
|
-
layoutStyle:
|
|
5065
|
+
layoutStyle: chunk7FBKS7OS_js.getTextLayoutStyle(el),
|
|
5066
5066
|
element: el,
|
|
5067
5067
|
onCommit,
|
|
5068
5068
|
onCancel,
|
|
@@ -5073,7 +5073,7 @@ function renderBody(options) {
|
|
|
5073
5073
|
] });
|
|
5074
5074
|
}
|
|
5075
5075
|
if (el.type === "table") {
|
|
5076
|
-
return
|
|
5076
|
+
return chunk7FBKS7OS_js.renderTableElement(el, txtS, {
|
|
5077
5077
|
editable: isSel,
|
|
5078
5078
|
selectedCell: isSel ? tableSt : null,
|
|
5079
5079
|
onSelectCell: onCellSel,
|
|
@@ -5106,7 +5106,7 @@ function renderBody(options) {
|
|
|
5106
5106
|
);
|
|
5107
5107
|
}
|
|
5108
5108
|
if (el.type === "media") {
|
|
5109
|
-
return
|
|
5109
|
+
return chunk7FBKS7OS_js.renderMediaElement(el, media, {
|
|
5110
5110
|
// Present mode autoplays every media element on the active slide,
|
|
5111
5111
|
// not only ones persisted with their own `autoPlay` flag (matching
|
|
5112
5112
|
// the other four bindings' unconditional `presenting`-gated
|
|
@@ -5149,7 +5149,7 @@ function renderBody(options) {
|
|
|
5149
5149
|
}
|
|
5150
5150
|
return renderGroup(el.children, chunk4SPZ5IZN_js.getGroupChildParentFill(el));
|
|
5151
5151
|
}
|
|
5152
|
-
if (
|
|
5152
|
+
if (chunk7FBKS7OS_js.shouldRenderFallbackLabel(el, isTxtEl)) {
|
|
5153
5153
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk4SPZ5IZN_js.getElementLabel(el) });
|
|
5154
5154
|
}
|
|
5155
5155
|
return renderTextElementBody(options);
|
|
@@ -5159,19 +5159,19 @@ function renderBody(options) {
|
|
|
5159
5159
|
function defaultTextColorForFill(fillColor) {
|
|
5160
5160
|
const hex = String(fillColor ?? "").replace(/^#/u, "");
|
|
5161
5161
|
if (!/^[0-9a-f]{6}$/iu.test(hex)) {
|
|
5162
|
-
return
|
|
5162
|
+
return chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR;
|
|
5163
5163
|
}
|
|
5164
5164
|
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);
|
|
5165
5165
|
const luminance = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722;
|
|
5166
|
-
return luminance > 0.179 ?
|
|
5166
|
+
return luminance > 0.179 ? chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR : "#ffffff";
|
|
5167
5167
|
}
|
|
5168
5168
|
function getStaticElementVisualState(element, parentGroupFill) {
|
|
5169
5169
|
const style = chunk4SPZ5IZN_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
5170
5170
|
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunk4SPZ5IZN_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
5171
|
-
const fill = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
5171
|
+
const fill = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR);
|
|
5172
5172
|
const strokeWidth = chunk4SPZ5IZN_js.paintedStrokeWidth(style);
|
|
5173
|
-
const stroke = chunk4SPZ5IZN_js.normalizeHexColor(style?.strokeColor,
|
|
5174
|
-
const baseVisualStyle =
|
|
5173
|
+
const stroke = chunk4SPZ5IZN_js.normalizeHexColor(style?.strokeColor, chunk7FBKS7OS_js.DEFAULT_STROKE_COLOR);
|
|
5174
|
+
const baseVisualStyle = chunk7FBKS7OS_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
|
|
5175
5175
|
const inheritedFill = chunk4SPZ5IZN_js.resolveGroupChildFill(element, parentGroupFill);
|
|
5176
5176
|
const visualStyle = inheritedFill ? {
|
|
5177
5177
|
...baseVisualStyle,
|
|
@@ -5181,9 +5181,9 @@ function getStaticElementVisualState(element, parentGroupFill) {
|
|
|
5181
5181
|
backgroundSize: inheritedFill.backgroundSize,
|
|
5182
5182
|
backgroundPosition: inheritedFill.backgroundPosition
|
|
5183
5183
|
} : baseVisualStyle;
|
|
5184
|
-
const textStyle =
|
|
5184
|
+
const textStyle = chunk7FBKS7OS_js.getTextStyleForElement(
|
|
5185
5185
|
element,
|
|
5186
|
-
element.type === "shape" && hasFill ? defaultTextColorForFill(fill) :
|
|
5186
|
+
element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : chunk7FBKS7OS_js.DEFAULT_TEXT_COLOR
|
|
5187
5187
|
);
|
|
5188
5188
|
const isImage = element.type === "picture" || element.type === "image";
|
|
5189
5189
|
const letsTextOverflow = chunk4SPZ5IZN_js.hasTextProperties(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
|
|
@@ -5208,7 +5208,7 @@ function getStaticElementInteractionState(element, hasActionHandler, exposeEleme
|
|
|
5208
5208
|
return { action, isActionable, contractRole };
|
|
5209
5209
|
}
|
|
5210
5210
|
function getStaticElementWrapperClassName(element, visual, positioned, isActionable) {
|
|
5211
|
-
const overflowClass = visual.isImage || element.type === "group" ||
|
|
5211
|
+
const overflowClass = visual.isImage || element.type === "group" || chunk7FBKS7OS_js.isConnectorOrLineElement(element) || visual.isCallout || visual.letsTextOverflow ? "" : "overflow-hidden";
|
|
5212
5212
|
const pointerClass = isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none";
|
|
5213
5213
|
return `${positioned ? "absolute" : "relative"} ${overflowClass} ${pointerClass}`;
|
|
5214
5214
|
}
|
|
@@ -5334,14 +5334,14 @@ function StaticElementRendererImpl({
|
|
|
5334
5334
|
spellCheck: false,
|
|
5335
5335
|
txtSE: chunk4SPZ5IZN_js.hasTextProperties(element) ? element.textStyle : void 0,
|
|
5336
5336
|
txtS: textStyle,
|
|
5337
|
-
vecShape:
|
|
5337
|
+
vecShape: chunk7FBKS7OS_js.renderVectorShape(
|
|
5338
5338
|
element,
|
|
5339
5339
|
isImage ? false : hasFill,
|
|
5340
5340
|
fill,
|
|
5341
5341
|
strokeWidth,
|
|
5342
5342
|
stroke
|
|
5343
5343
|
),
|
|
5344
|
-
imgStyle: imageAnimation ? { ...
|
|
5344
|
+
imgStyle: imageAnimation ? { ...chunk7FBKS7OS_js.getImageRenderStyle(element), animation: imageAnimation } : chunk7FBKS7OS_js.getImageRenderStyle(element),
|
|
5345
5345
|
imgFilter: chunk4SPZ5IZN_js.getImageEffectsFilter(element),
|
|
5346
5346
|
imgOpacity: chunk4SPZ5IZN_js.getImageEffectsOpacity(element),
|
|
5347
5347
|
imgAlt: "",
|
|
@@ -5457,7 +5457,7 @@ function SlideTemplateGalleryDialog({
|
|
|
5457
5457
|
scheme
|
|
5458
5458
|
}) {
|
|
5459
5459
|
const { t } = reactI18next.useTranslation();
|
|
5460
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
5460
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
5461
5461
|
const [selected, setSelected] = React20.useState(null);
|
|
5462
5462
|
const dialogRef = React20.useRef(null);
|
|
5463
5463
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -5540,7 +5540,7 @@ function SlideTemplateGalleryDialog({
|
|
|
5540
5540
|
onInsert(spec.id);
|
|
5541
5541
|
onClose();
|
|
5542
5542
|
},
|
|
5543
|
-
className:
|
|
5543
|
+
className: chunk7FBKS7OS_js.cn(
|
|
5544
5544
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
5545
5545
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
5546
5546
|
),
|
|
@@ -5569,7 +5569,7 @@ function SlideTemplateGalleryDialog({
|
|
|
5569
5569
|
type: "button",
|
|
5570
5570
|
onClick: handleInsert,
|
|
5571
5571
|
disabled: !selected,
|
|
5572
|
-
className:
|
|
5572
|
+
className: chunk7FBKS7OS_js.cn(
|
|
5573
5573
|
"px-3 py-1.5 text-xs rounded transition-colors",
|
|
5574
5574
|
selected ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
5575
5575
|
),
|
|
@@ -5686,7 +5686,7 @@ function RibbonGroup({
|
|
|
5686
5686
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5687
5687
|
"section",
|
|
5688
5688
|
{
|
|
5689
|
-
className:
|
|
5689
|
+
className: chunk7FBKS7OS_js.cn(
|
|
5690
5690
|
"relative flex min-h-[78px] shrink-0 items-start gap-1 border-r border-border/60 px-2 pb-4 pt-1 last:border-r-0",
|
|
5691
5691
|
className
|
|
5692
5692
|
),
|
|
@@ -5716,7 +5716,7 @@ function RibbonCommand({
|
|
|
5716
5716
|
disabled,
|
|
5717
5717
|
title: title ?? label,
|
|
5718
5718
|
"aria-pressed": pressed,
|
|
5719
|
-
className:
|
|
5719
|
+
className: chunk7FBKS7OS_js.cn(
|
|
5720
5720
|
"inline-flex rounded-sm text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-35",
|
|
5721
5721
|
active && "bg-primary/15 text-primary ring-1 ring-primary/35",
|
|
5722
5722
|
compact ? "h-[26px] min-w-[88px] items-center gap-1.5 px-1.5 text-left text-[10px] leading-3" : "h-[58px] min-w-[54px] max-w-[72px] flex-col items-center justify-start gap-0.5 px-1 py-1 text-center text-[9px] leading-[11px]"
|
|
@@ -5725,7 +5725,7 @@ function RibbonCommand({
|
|
|
5725
5725
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5726
5726
|
"span",
|
|
5727
5727
|
{
|
|
5728
|
-
className:
|
|
5728
|
+
className: chunk7FBKS7OS_js.cn(
|
|
5729
5729
|
"grid shrink-0 place-items-center text-primary",
|
|
5730
5730
|
compact ? "h-4 w-4 [&>svg]:h-4 [&>svg]:w-4" : "h-7 w-7 [&>svg]:h-6 [&>svg]:w-6"
|
|
5731
5731
|
),
|
|
@@ -5754,7 +5754,7 @@ function RibbonToggle({
|
|
|
5754
5754
|
"label",
|
|
5755
5755
|
{
|
|
5756
5756
|
title,
|
|
5757
|
-
className:
|
|
5757
|
+
className: chunk7FBKS7OS_js.cn(
|
|
5758
5758
|
"flex h-[19px] items-center gap-1 whitespace-nowrap rounded-sm px-1 text-[10px] text-foreground",
|
|
5759
5759
|
checked && "bg-primary/15 text-primary"
|
|
5760
5760
|
),
|
|
@@ -6148,7 +6148,7 @@ function ArrangeSection(p) {
|
|
|
6148
6148
|
onClick: () => p.onAlignElements(a.k),
|
|
6149
6149
|
disabled: !canMut,
|
|
6150
6150
|
className: i < arr.length - 1 ? gB : gL,
|
|
6151
|
-
title: t(
|
|
6151
|
+
title: t(chunk64FUV37N_js.ALIGNMENT_LABEL_KEYS[a.k]),
|
|
6152
6152
|
children: a.el
|
|
6153
6153
|
},
|
|
6154
6154
|
a.k
|
|
@@ -6173,7 +6173,7 @@ function ArrangeSection(p) {
|
|
|
6173
6173
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
6174
6174
|
"data-testid": "format-painter-toggle",
|
|
6175
6175
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
6176
|
-
className:
|
|
6176
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6177
6177
|
pill,
|
|
6178
6178
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
6179
6179
|
),
|
|
@@ -6341,7 +6341,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
|
|
|
6341
6341
|
}
|
|
6342
6342
|
const asset = chunk4SPZ5IZN_js.getEffectSoundAsset(stockSoundId);
|
|
6343
6343
|
if (asset) {
|
|
6344
|
-
|
|
6344
|
+
chunkE55VEC37_js.playAnimationSound(asset.dataUrl);
|
|
6345
6345
|
}
|
|
6346
6346
|
}, [stockSoundId]);
|
|
6347
6347
|
return {
|
|
@@ -6392,7 +6392,7 @@ function TransitionsSection(p) {
|
|
|
6392
6392
|
type: "button",
|
|
6393
6393
|
disabled: !canEdit,
|
|
6394
6394
|
onClick: () => commit({ type: preset.type }),
|
|
6395
|
-
className:
|
|
6395
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6396
6396
|
"flex-shrink-0 px-2 py-1 max-md:min-h-[44px] rounded border text-[11px] leading-tight transition-colors",
|
|
6397
6397
|
draft.type === preset.type ? "border-primary bg-primary/10 text-primary font-medium" : "border-border bg-muted hover:bg-accent text-foreground"
|
|
6398
6398
|
),
|
|
@@ -6530,7 +6530,7 @@ function TransitionsSection(p) {
|
|
|
6530
6530
|
{
|
|
6531
6531
|
type: "button",
|
|
6532
6532
|
onClick: p.onToggleInspector,
|
|
6533
|
-
className:
|
|
6533
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6534
6534
|
pill,
|
|
6535
6535
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
6536
6536
|
),
|
|
@@ -6551,7 +6551,7 @@ function DesignSection(p) {
|
|
|
6551
6551
|
{
|
|
6552
6552
|
onClick: p.onToggleThemeGallery,
|
|
6553
6553
|
disabled: !p.canEdit,
|
|
6554
|
-
className:
|
|
6554
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6555
6555
|
pill,
|
|
6556
6556
|
p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
6557
6557
|
),
|
|
@@ -6567,7 +6567,7 @@ function DesignSection(p) {
|
|
|
6567
6567
|
{
|
|
6568
6568
|
onClick: p.onToggleThemeEditor,
|
|
6569
6569
|
disabled: !p.canEdit,
|
|
6570
|
-
className:
|
|
6570
|
+
className: chunk7FBKS7OS_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
6571
6571
|
title: t("pptx.ribbon.editThemeTitle"),
|
|
6572
6572
|
children: [
|
|
6573
6573
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuPencil, { className: ics }),
|
|
@@ -6592,7 +6592,7 @@ function DesignSection(p) {
|
|
|
6592
6592
|
"button",
|
|
6593
6593
|
{
|
|
6594
6594
|
onClick: p.onToggleInspector,
|
|
6595
|
-
className:
|
|
6595
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6596
6596
|
pill,
|
|
6597
6597
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
6598
6598
|
),
|
|
@@ -6634,7 +6634,7 @@ function DrawSection(p) {
|
|
|
6634
6634
|
{
|
|
6635
6635
|
type: "button",
|
|
6636
6636
|
onClick: () => p.onSetActiveTool(tool.id),
|
|
6637
|
-
className:
|
|
6637
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6638
6638
|
i < a.length - 1 ? gB : gL,
|
|
6639
6639
|
p.activeTool === tool.id ? tool.ac ?? "bg-accent text-foreground" : ""
|
|
6640
6640
|
),
|
|
@@ -6719,7 +6719,7 @@ function AccountPage() {
|
|
|
6719
6719
|
return void 0;
|
|
6720
6720
|
});
|
|
6721
6721
|
};
|
|
6722
|
-
const version = "3.
|
|
6722
|
+
const version = "3.17.0" ;
|
|
6723
6723
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
6724
6724
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
6725
6725
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -6759,7 +6759,7 @@ function AccountPage() {
|
|
|
6759
6759
|
"aria-label": color,
|
|
6760
6760
|
"aria-pressed": profile.avatarColor === color,
|
|
6761
6761
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
6762
|
-
className:
|
|
6762
|
+
className: chunk7FBKS7OS_js.cn(
|
|
6763
6763
|
"size-7 rounded-full border-2 transition-transform",
|
|
6764
6764
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
6765
6765
|
),
|
|
@@ -6977,7 +6977,7 @@ function FileSection(p) {
|
|
|
6977
6977
|
const [page, setPage] = React20.useState("home");
|
|
6978
6978
|
const [query, setQuery] = React20.useState("");
|
|
6979
6979
|
const [recent, setRecent] = React20.useState([]);
|
|
6980
|
-
const { isHidden } =
|
|
6980
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(p.hiddenActions);
|
|
6981
6981
|
const exportHidden = isHidden("export");
|
|
6982
6982
|
React20.useEffect(() => {
|
|
6983
6983
|
void chunk4SPZ5IZN_js.listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
|
|
@@ -7144,7 +7144,7 @@ function RibbonMenu({
|
|
|
7144
7144
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7145
7145
|
"div",
|
|
7146
7146
|
{
|
|
7147
|
-
className:
|
|
7147
|
+
className: chunk7FBKS7OS_js.cn("fixed z-50", className),
|
|
7148
7148
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
7149
7149
|
children
|
|
7150
7150
|
}
|
|
@@ -7227,7 +7227,7 @@ function LayoutGalleryMenu(p) {
|
|
|
7227
7227
|
type: "button",
|
|
7228
7228
|
"aria-current": isCurrent ? "true" : void 0,
|
|
7229
7229
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
7230
|
-
className:
|
|
7230
|
+
className: chunk7FBKS7OS_js.cn(
|
|
7231
7231
|
"relative flex min-w-0 flex-col items-center gap-1 rounded border-2 p-1 text-xs text-foreground transition-colors hover:bg-muted",
|
|
7232
7232
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
7233
7233
|
),
|
|
@@ -7352,7 +7352,7 @@ function SlidesGroup(p) {
|
|
|
7352
7352
|
type: "button",
|
|
7353
7353
|
onClick: handleNewSlide,
|
|
7354
7354
|
disabled: !p.canEdit || p.layoutOptions.length === 0,
|
|
7355
|
-
className:
|
|
7355
|
+
className: chunk7FBKS7OS_js.cn(
|
|
7356
7356
|
pill,
|
|
7357
7357
|
"whitespace-nowrap",
|
|
7358
7358
|
p.layoutOptions.length > 0 ? "rounded-r-none" : ""
|
|
@@ -7460,7 +7460,7 @@ function SlidesGroup(p) {
|
|
|
7460
7460
|
}
|
|
7461
7461
|
)
|
|
7462
7462
|
] }),
|
|
7463
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: "
|
|
7463
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.slides") })
|
|
7464
7464
|
] }),
|
|
7465
7465
|
sep,
|
|
7466
7466
|
p.onInsertSlideFromTemplate && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7550,7 +7550,7 @@ function HomeSection(p) {
|
|
|
7550
7550
|
setTimeout(() => setCutFeedback(false), 600);
|
|
7551
7551
|
},
|
|
7552
7552
|
disabled: !p.canEdit || !hasSelection,
|
|
7553
|
-
className:
|
|
7553
|
+
className: chunk7FBKS7OS_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
|
|
7554
7554
|
title: t("pptx.arrange.cut"),
|
|
7555
7555
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuScissors, { className: ic })
|
|
7556
7556
|
}
|
|
@@ -7565,7 +7565,7 @@ function HomeSection(p) {
|
|
|
7565
7565
|
setTimeout(() => setCopiedFeedback(false), 600);
|
|
7566
7566
|
},
|
|
7567
7567
|
disabled: !hasSelection,
|
|
7568
|
-
className:
|
|
7568
|
+
className: chunk7FBKS7OS_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
|
|
7569
7569
|
title: t("pptx.arrange.copy"),
|
|
7570
7570
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuCopy, { className: ic })
|
|
7571
7571
|
}
|
|
@@ -7578,7 +7578,7 @@ function HomeSection(p) {
|
|
|
7578
7578
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
7579
7579
|
"data-testid": "format-painter-toggle",
|
|
7580
7580
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
7581
|
-
className:
|
|
7581
|
+
className: chunk7FBKS7OS_js.cn(
|
|
7582
7582
|
gL,
|
|
7583
7583
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
7584
7584
|
),
|
|
@@ -7666,7 +7666,7 @@ function HomeSection(p) {
|
|
|
7666
7666
|
)) }) })
|
|
7667
7667
|
] })
|
|
7668
7668
|
] }),
|
|
7669
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: "
|
|
7669
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.font") })
|
|
7670
7670
|
] }),
|
|
7671
7671
|
sep
|
|
7672
7672
|
] });
|
|
@@ -7779,7 +7779,7 @@ function InsertSection(p) {
|
|
|
7779
7779
|
onChange: (e) => p.onSetNewShapeType(e.target.value),
|
|
7780
7780
|
className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
|
|
7781
7781
|
title: t("pptx.insert.shapeType"),
|
|
7782
|
-
children:
|
|
7782
|
+
children: chunk7FBKS7OS_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
|
|
7783
7783
|
}
|
|
7784
7784
|
),
|
|
7785
7785
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -7790,7 +7790,7 @@ function InsertSection(p) {
|
|
|
7790
7790
|
className: "inline-flex items-center gap-1.5 px-2.5 py-1.5 border-l border-border hover:bg-accent transition-colors text-xs",
|
|
7791
7791
|
title: t("pptx.insert.addShape"),
|
|
7792
7792
|
children: [
|
|
7793
|
-
|
|
7793
|
+
chunk7FBKS7OS_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic }),
|
|
7794
7794
|
t("pptx.insert.shape")
|
|
7795
7795
|
]
|
|
7796
7796
|
}
|
|
@@ -8074,7 +8074,7 @@ function InsertSection(p) {
|
|
|
8074
8074
|
{
|
|
8075
8075
|
type: "button",
|
|
8076
8076
|
disabled: !canEdit,
|
|
8077
|
-
className:
|
|
8077
|
+
className: chunk7FBKS7OS_js.cn(pill, "whitespace-nowrap"),
|
|
8078
8078
|
onClick: p.onOpenHeaderFooter,
|
|
8079
8079
|
children: t("pptx.headerFooter.title")
|
|
8080
8080
|
}
|
|
@@ -8370,7 +8370,7 @@ function CustomShowsControls({
|
|
|
8370
8370
|
{
|
|
8371
8371
|
type: "button",
|
|
8372
8372
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
8373
|
-
className:
|
|
8373
|
+
className: chunk7FBKS7OS_js.cn(
|
|
8374
8374
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
8375
8375
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
8376
8376
|
),
|
|
@@ -8401,7 +8401,7 @@ function CustomShowsControls({
|
|
|
8401
8401
|
}
|
|
8402
8402
|
function SlideShowSection(p) {
|
|
8403
8403
|
const { t } = reactI18next.useTranslation();
|
|
8404
|
-
const { isHidden } =
|
|
8404
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(p.hiddenActions);
|
|
8405
8405
|
const [showsOpen, setShowsOpen] = React20.useState(false);
|
|
8406
8406
|
const showsRef = React20.useRef(null);
|
|
8407
8407
|
React20.useEffect(() => {
|
|
@@ -9324,7 +9324,7 @@ function TextSection(p) {
|
|
|
9324
9324
|
] }) })
|
|
9325
9325
|
] })
|
|
9326
9326
|
] }),
|
|
9327
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: "
|
|
9327
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.font") })
|
|
9328
9328
|
] }),
|
|
9329
9329
|
sep,
|
|
9330
9330
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-0.5", children: [
|
|
@@ -9446,7 +9446,7 @@ function TextSection(p) {
|
|
|
9446
9446
|
}
|
|
9447
9447
|
)
|
|
9448
9448
|
] }),
|
|
9449
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: "
|
|
9449
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.paragraph") })
|
|
9450
9450
|
] })
|
|
9451
9451
|
] });
|
|
9452
9452
|
}
|
|
@@ -9652,7 +9652,7 @@ function MobileSheet({
|
|
|
9652
9652
|
headerRight
|
|
9653
9653
|
}) {
|
|
9654
9654
|
const sheetRef = React20.useRef(null);
|
|
9655
|
-
const { dragY, dragging, handlers } =
|
|
9655
|
+
const { dragY, dragging, handlers } = chunkE55VEC37_js.useSheetDismissDrag(onClose);
|
|
9656
9656
|
useModalFocus(open, sheetRef, onClose);
|
|
9657
9657
|
if (!open) {
|
|
9658
9658
|
return null;
|
|
@@ -9676,7 +9676,7 @@ function MobileSheet({
|
|
|
9676
9676
|
"aria-modal": "true",
|
|
9677
9677
|
"aria-label": typeof title === "string" ? title : "Mobile panel",
|
|
9678
9678
|
tabIndex: -1,
|
|
9679
|
-
className:
|
|
9679
|
+
className: chunk7FBKS7OS_js.cn(
|
|
9680
9680
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
9681
9681
|
"animate-in slide-in-from-bottom duration-200",
|
|
9682
9682
|
className
|
|
@@ -9740,14 +9740,14 @@ function MobileMenuSheet(props) {
|
|
|
9740
9740
|
const { t } = reactI18next.useTranslation();
|
|
9741
9741
|
const { open, onClose } = props;
|
|
9742
9742
|
const [active, setActive] = React20.useState("home");
|
|
9743
|
-
const { isTabVisible } =
|
|
9743
|
+
const { isTabVisible } = chunkE55VEC37_js.useToolbarVisibility(props.hiddenActions);
|
|
9744
9744
|
return /* @__PURE__ */ jsxRuntime.jsx(MobileSheet, { open, onClose, autoHeight: true, title: t("pptx.mobileToolbar.menu"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
9745
9745
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-0 z-10 bg-background border-b border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5 px-3 py-2", children: MENU_ITEMS.filter(({ key }) => isTabVisible(key)).map(({ key, label, icon: Icon }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9746
9746
|
"button",
|
|
9747
9747
|
{
|
|
9748
9748
|
type: "button",
|
|
9749
9749
|
onClick: () => setActive(active === key ? null : key),
|
|
9750
|
-
className:
|
|
9750
|
+
className: chunk7FBKS7OS_js.cn(
|
|
9751
9751
|
"inline-flex items-center gap-1.5 shrink-0 px-3 py-2 rounded-full text-[12px] font-medium border transition-colors min-h-[36px]",
|
|
9752
9752
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
9753
9753
|
),
|
|
@@ -10005,7 +10005,7 @@ function MobileToolbar(props) {
|
|
|
10005
10005
|
const { t } = reactI18next.useTranslation();
|
|
10006
10006
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
10007
10007
|
const [menuOpen, setMenuOpen] = React20.useState(false);
|
|
10008
|
-
const { isHidden } =
|
|
10008
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(props.hiddenActions);
|
|
10009
10009
|
const showEdit = mode === "edit" || mode === "master";
|
|
10010
10010
|
const btn = "inline-flex items-center justify-center min-w-[44px] min-h-[44px] rounded-md text-foreground/80 hover:bg-accent/60 disabled:opacity-40 disabled:cursor-not-allowed active:scale-95 transition-transform";
|
|
10011
10011
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -10056,7 +10056,7 @@ function MobileToolbar(props) {
|
|
|
10056
10056
|
{
|
|
10057
10057
|
type: "button",
|
|
10058
10058
|
onClick: props.onToggleAiPanel,
|
|
10059
|
-
className:
|
|
10059
|
+
className: chunk7FBKS7OS_js.cn(btn, props.isAiPanelOpen ? "text-primary" : void 0),
|
|
10060
10060
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
10061
10061
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
10062
10062
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: "w-5 h-5" })
|
|
@@ -10078,7 +10078,7 @@ function MobileToolbar(props) {
|
|
|
10078
10078
|
{
|
|
10079
10079
|
type: "button",
|
|
10080
10080
|
onClick: () => onSetMode("present"),
|
|
10081
|
-
className:
|
|
10081
|
+
className: chunk7FBKS7OS_js.cn(btn, "text-primary"),
|
|
10082
10082
|
title: t("pptx.toolbar.present"),
|
|
10083
10083
|
"aria-label": t("pptx.toolbar.present"),
|
|
10084
10084
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-5 h-5" })
|
|
@@ -10089,7 +10089,7 @@ function MobileToolbar(props) {
|
|
|
10089
10089
|
{
|
|
10090
10090
|
type: "button",
|
|
10091
10091
|
onClick: props.onOpenShareDialog,
|
|
10092
|
-
className:
|
|
10092
|
+
className: chunk7FBKS7OS_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
|
|
10093
10093
|
title: t("pptx.toolbar.share"),
|
|
10094
10094
|
"aria-label": t("pptx.toolbar.share"),
|
|
10095
10095
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuShare2, { className: "w-4 h-4" })
|
|
@@ -10162,7 +10162,7 @@ function ShapeColorPopover({
|
|
|
10162
10162
|
] }) })
|
|
10163
10163
|
] });
|
|
10164
10164
|
}
|
|
10165
|
-
var TOP_SHAPES =
|
|
10165
|
+
var TOP_SHAPES = chunk7FBKS7OS_js.SHAPE_PRESETS.slice(0, 12);
|
|
10166
10166
|
function DrawingGroup(p) {
|
|
10167
10167
|
const { t } = reactI18next.useTranslation();
|
|
10168
10168
|
const { pushColor } = useRecentColors();
|
|
@@ -10245,7 +10245,7 @@ function DrawingGroup(p) {
|
|
|
10245
10245
|
"button",
|
|
10246
10246
|
{
|
|
10247
10247
|
type: "button",
|
|
10248
|
-
className:
|
|
10248
|
+
className: chunk7FBKS7OS_js.cn(
|
|
10249
10249
|
"flex items-center gap-2 w-full px-3 py-1.5 text-xs text-foreground hover:bg-muted transition-colors",
|
|
10250
10250
|
p.newShapeType === s.type && "bg-accent"
|
|
10251
10251
|
),
|
|
@@ -10379,7 +10379,7 @@ function DrawingGroup(p) {
|
|
|
10379
10379
|
}
|
|
10380
10380
|
)
|
|
10381
10381
|
] }),
|
|
10382
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: "
|
|
10382
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.groupDrawing") })
|
|
10383
10383
|
] }),
|
|
10384
10384
|
sep
|
|
10385
10385
|
] });
|
|
@@ -10455,7 +10455,7 @@ function EditingSection(p) {
|
|
|
10455
10455
|
) }) })
|
|
10456
10456
|
] })
|
|
10457
10457
|
] }),
|
|
10458
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: "
|
|
10458
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.editing") })
|
|
10459
10459
|
] })
|
|
10460
10460
|
] });
|
|
10461
10461
|
}
|
|
@@ -10515,7 +10515,7 @@ function TabRowActions(p) {
|
|
|
10515
10515
|
const { t } = reactI18next.useTranslation();
|
|
10516
10516
|
const collab = useCollaboration();
|
|
10517
10517
|
const isCollaborating = collab && collab.status === "connected";
|
|
10518
|
-
const { isHidden } =
|
|
10518
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(p.hiddenActions);
|
|
10519
10519
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 pr-1", children: [
|
|
10520
10520
|
p.onEnterRehearsalMode && !isHidden("record") && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10521
10521
|
"button",
|
|
@@ -10536,7 +10536,7 @@ function TabRowActions(p) {
|
|
|
10536
10536
|
{
|
|
10537
10537
|
type: "button",
|
|
10538
10538
|
onClick: p.onOpenShareDialog,
|
|
10539
|
-
className:
|
|
10539
|
+
className: chunk7FBKS7OS_js.cn(
|
|
10540
10540
|
"relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
|
|
10541
10541
|
isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
|
|
10542
10542
|
),
|
|
@@ -10607,7 +10607,7 @@ function PresentDropdown({
|
|
|
10607
10607
|
{
|
|
10608
10608
|
type: "button",
|
|
10609
10609
|
onClick: onPresent,
|
|
10610
|
-
className:
|
|
10610
|
+
className: chunk7FBKS7OS_js.cn(
|
|
10611
10611
|
"px-2 py-1 transition-colors",
|
|
10612
10612
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
10613
10613
|
),
|
|
@@ -10620,7 +10620,7 @@ function PresentDropdown({
|
|
|
10620
10620
|
{
|
|
10621
10621
|
type: "button",
|
|
10622
10622
|
onClick: () => setOpen((prev) => !prev),
|
|
10623
|
-
className:
|
|
10623
|
+
className: chunk7FBKS7OS_js.cn(
|
|
10624
10624
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
10625
10625
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
10626
10626
|
),
|
|
@@ -10808,7 +10808,7 @@ function OverflowMenu(p) {
|
|
|
10808
10808
|
{
|
|
10809
10809
|
type: "button",
|
|
10810
10810
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
10811
|
-
className:
|
|
10811
|
+
className: chunk7FBKS7OS_js.cn(
|
|
10812
10812
|
"p-1.5 rounded transition-colors",
|
|
10813
10813
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
10814
10814
|
),
|
|
@@ -10863,7 +10863,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10863
10863
|
{
|
|
10864
10864
|
type: "button",
|
|
10865
10865
|
onClick: onToggleSidebar,
|
|
10866
|
-
className:
|
|
10866
|
+
className: chunk7FBKS7OS_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
10867
10867
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
10868
10868
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
10869
10869
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -10875,7 +10875,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10875
10875
|
{
|
|
10876
10876
|
type: "button",
|
|
10877
10877
|
onClick: p.onToggleComments,
|
|
10878
|
-
className:
|
|
10878
|
+
className: chunk7FBKS7OS_js.cn(
|
|
10879
10879
|
qab,
|
|
10880
10880
|
"relative max-md:hidden",
|
|
10881
10881
|
p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
|
|
@@ -10942,7 +10942,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10942
10942
|
{
|
|
10943
10943
|
type: "button",
|
|
10944
10944
|
onClick: onToggleInspector,
|
|
10945
|
-
className:
|
|
10945
|
+
className: chunk7FBKS7OS_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
10946
10946
|
title: t("pptx.toolbar.toggleInspector"),
|
|
10947
10947
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
10948
10948
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -10953,7 +10953,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10953
10953
|
{
|
|
10954
10954
|
type: "button",
|
|
10955
10955
|
onClick: p.onToggleAiPanel,
|
|
10956
|
-
className:
|
|
10956
|
+
className: chunk7FBKS7OS_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
10957
10957
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
10958
10958
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
10959
10959
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -10964,7 +10964,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
10964
10964
|
{
|
|
10965
10965
|
type: "button",
|
|
10966
10966
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
10967
|
-
className:
|
|
10967
|
+
className: chunk7FBKS7OS_js.cn(qab, "text-muted-foreground"),
|
|
10968
10968
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
10969
10969
|
"aria-label": t("pptx.toolbar.settings"),
|
|
10970
10970
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -10986,8 +10986,8 @@ function ToolbarPrimaryRow(p) {
|
|
|
10986
10986
|
function Toolbar(p) {
|
|
10987
10987
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
10988
10988
|
const { t } = reactI18next.useTranslation();
|
|
10989
|
-
const { isTabVisible } =
|
|
10990
|
-
const viewerOptions =
|
|
10989
|
+
const { isTabVisible } = chunkE55VEC37_js.useToolbarVisibility(p.hiddenActions);
|
|
10990
|
+
const viewerOptions = chunkE55VEC37_js.useViewerOptionsContext();
|
|
10991
10991
|
if (isNarrowViewport && mode !== "present") {
|
|
10992
10992
|
return /* @__PURE__ */ jsxRuntime.jsx(MobileToolbar, { ...p });
|
|
10993
10993
|
}
|
|
@@ -11020,7 +11020,7 @@ function Toolbar(p) {
|
|
|
11020
11020
|
role: "tablist",
|
|
11021
11021
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
11022
11022
|
children: [
|
|
11023
|
-
|
|
11023
|
+
chunk7FBKS7OS_js.TOOLBAR_SECTIONS.filter((s) => isTabVisible(s.id)).map((s) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11024
11024
|
"button",
|
|
11025
11025
|
{
|
|
11026
11026
|
type: "button",
|
|
@@ -11028,7 +11028,7 @@ function Toolbar(p) {
|
|
|
11028
11028
|
"aria-selected": toolbarSection === s.id,
|
|
11029
11029
|
title: chunk4SPZ5IZN_js.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
11030
11030
|
onClick: () => onSetToolbarSection(s.id),
|
|
11031
|
-
className:
|
|
11031
|
+
className: chunk7FBKS7OS_js.cn(
|
|
11032
11032
|
"relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
|
|
11033
11033
|
toolbarSection === s.id ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : "text-foreground after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary" : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
11034
11034
|
),
|
|
@@ -11050,7 +11050,7 @@ function Toolbar(p) {
|
|
|
11050
11050
|
{
|
|
11051
11051
|
type: "button",
|
|
11052
11052
|
onClick: p.onToggleCompactToolbar,
|
|
11053
|
-
className:
|
|
11053
|
+
className: chunk7FBKS7OS_js.cn(
|
|
11054
11054
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
11055
11055
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
11056
11056
|
),
|
|
@@ -11073,7 +11073,7 @@ function Toolbar(p) {
|
|
|
11073
11073
|
showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11074
11074
|
"div",
|
|
11075
11075
|
{
|
|
11076
|
-
className:
|
|
11076
|
+
className: chunk7FBKS7OS_js.cn(
|
|
11077
11077
|
/*
|
|
11078
11078
|
* `items-stretch` (not `items-center`): `RibbonGroup` pins its
|
|
11079
11079
|
* caption to `bottom-0.5` of ITS OWN box (`position: relative`), so
|
|
@@ -11743,7 +11743,7 @@ function DrawingOverlaySvg({
|
|
|
11743
11743
|
}
|
|
11744
11744
|
);
|
|
11745
11745
|
}
|
|
11746
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
11746
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk7FBKS7OS_js.GRID_SIZE, visible }) {
|
|
11747
11747
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
11748
11748
|
const patternId = React20.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
11749
11749
|
if (!visible) {
|
|
@@ -12183,8 +12183,8 @@ function SelectionHandleOverlay({
|
|
|
12183
12183
|
position: "absolute",
|
|
12184
12184
|
left: element.x,
|
|
12185
12185
|
top: element.y,
|
|
12186
|
-
width: Math.max(element.width,
|
|
12187
|
-
height: Math.max(element.height,
|
|
12186
|
+
width: Math.max(element.width, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE),
|
|
12187
|
+
height: Math.max(element.height, chunk7FBKS7OS_js.MIN_ELEMENT_SIZE),
|
|
12188
12188
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
12189
12189
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
12190
12190
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -12927,7 +12927,7 @@ function SlideBackgroundImageLayer({
|
|
|
12927
12927
|
style: { zIndex: 0 },
|
|
12928
12928
|
children: renderImg(
|
|
12929
12929
|
backgroundElement,
|
|
12930
|
-
|
|
12930
|
+
chunk7FBKS7OS_js.getImageRenderStyle(backgroundElement),
|
|
12931
12931
|
chunk4SPZ5IZN_js.getImageEffectsFilter(backgroundElement),
|
|
12932
12932
|
"",
|
|
12933
12933
|
opacity
|
|
@@ -13271,7 +13271,7 @@ function SlideCanvas({
|
|
|
13271
13271
|
},
|
|
13272
13272
|
element.id
|
|
13273
13273
|
)),
|
|
13274
|
-
selectedElement && chunk4SPZ5IZN_js.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
13274
|
+
selectedElement && chunk4SPZ5IZN_js.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk7FBKS7OS_js.isConnectorOrLineElement(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
13275
13275
|
SelectionHandleOverlay,
|
|
13276
13276
|
{
|
|
13277
13277
|
element: selectedElement,
|
|
@@ -13360,7 +13360,7 @@ function ErrorState({ className, error }) {
|
|
|
13360
13360
|
{
|
|
13361
13361
|
role: "alert",
|
|
13362
13362
|
"aria-live": "assertive",
|
|
13363
|
-
className:
|
|
13363
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13364
13364
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
13365
13365
|
className
|
|
13366
13366
|
),
|
|
@@ -13391,7 +13391,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
13391
13391
|
}
|
|
13392
13392
|
)
|
|
13393
13393
|
] }),
|
|
13394
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
13394
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk7FBKS7OS_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13395
13395
|
"div",
|
|
13396
13396
|
{
|
|
13397
13397
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -13451,14 +13451,14 @@ function AccessibilityPanel({
|
|
|
13451
13451
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
13452
13452
|
"aria-checked": reducedMotion ?? false,
|
|
13453
13453
|
onClick: onToggleReducedMotion,
|
|
13454
|
-
className:
|
|
13454
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13455
13455
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
13456
13456
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
13457
13457
|
),
|
|
13458
13458
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13459
13459
|
"span",
|
|
13460
13460
|
{
|
|
13461
|
-
className:
|
|
13461
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13462
13462
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
13463
13463
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
13464
13464
|
)
|
|
@@ -13477,7 +13477,7 @@ function AccessibilityPanel({
|
|
|
13477
13477
|
"div",
|
|
13478
13478
|
{
|
|
13479
13479
|
role: "listitem",
|
|
13480
|
-
className:
|
|
13480
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13481
13481
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
13482
13482
|
/* Severity-based background and text colouring */
|
|
13483
13483
|
issue.severity === "error" ? "bg-red-900/30 text-red-300" : issue.severity === "warning" ? "bg-amber-900/30 text-amber-300" : "bg-muted/50 text-muted-foreground"
|
|
@@ -13593,7 +13593,7 @@ function StatusBar({
|
|
|
13593
13593
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13594
13594
|
"div",
|
|
13595
13595
|
{
|
|
13596
|
-
className:
|
|
13596
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13597
13597
|
"w-full px-2 py-0.5 border-t border-border bg-secondary/50 text-[10px] text-muted-foreground flex items-center gap-1",
|
|
13598
13598
|
// Pins the row height to the shared metric instead of letting it fall
|
|
13599
13599
|
// out of the padding + button box, which is how the Vanilla and Svelte
|
|
@@ -13611,7 +13611,7 @@ function StatusBar({
|
|
|
13611
13611
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13612
13612
|
"span",
|
|
13613
13613
|
{
|
|
13614
|
-
className:
|
|
13614
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13615
13615
|
"shrink-0 max-md:hidden",
|
|
13616
13616
|
autosaveStatus?.state === "error" ? "text-red-400" : autosaveStatus?.state === "saving" ? "text-yellow-400" : ""
|
|
13617
13617
|
),
|
|
@@ -13624,7 +13624,7 @@ function StatusBar({
|
|
|
13624
13624
|
{
|
|
13625
13625
|
type: "button",
|
|
13626
13626
|
onClick: onToggleNotes,
|
|
13627
|
-
className:
|
|
13627
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13628
13628
|
vb,
|
|
13629
13629
|
"flex items-center gap-1 text-[10px]",
|
|
13630
13630
|
isNotesExpanded && "text-primary"
|
|
@@ -13644,7 +13644,7 @@ function StatusBar({
|
|
|
13644
13644
|
{
|
|
13645
13645
|
type: "button",
|
|
13646
13646
|
onClick: () => onSetMode("edit"),
|
|
13647
|
-
className:
|
|
13647
|
+
className: chunk7FBKS7OS_js.cn(vb, mode === "edit" && "text-primary"),
|
|
13648
13648
|
title: t("pptx.statusBar.normalView"),
|
|
13649
13649
|
"aria-label": t("pptx.statusBar.normalView"),
|
|
13650
13650
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMonitor, { className: "w-3.5 h-3.5" })
|
|
@@ -13666,7 +13666,7 @@ function StatusBar({
|
|
|
13666
13666
|
{
|
|
13667
13667
|
type: "button",
|
|
13668
13668
|
onClick: () => onSetMode("present"),
|
|
13669
|
-
className:
|
|
13669
|
+
className: chunk7FBKS7OS_js.cn(vb, mode === "present" && "text-primary"),
|
|
13670
13670
|
title: t("pptx.statusBar.slideShow"),
|
|
13671
13671
|
"aria-label": t("pptx.statusBar.slideShow"),
|
|
13672
13672
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-3.5 h-3.5" })
|
|
@@ -13758,7 +13758,7 @@ function ResizeHandle({
|
|
|
13758
13758
|
{
|
|
13759
13759
|
role: "separator",
|
|
13760
13760
|
"aria-orientation": direction,
|
|
13761
|
-
className:
|
|
13761
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13762
13762
|
// Outer container: generous hit area for easy clicking.
|
|
13763
13763
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
13764
13764
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -13769,7 +13769,7 @@ function ResizeHandle({
|
|
|
13769
13769
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13770
13770
|
"div",
|
|
13771
13771
|
{
|
|
13772
|
-
className:
|
|
13772
|
+
className: chunk7FBKS7OS_js.cn(
|
|
13773
13773
|
"absolute transition-colors",
|
|
13774
13774
|
direction === "horizontal" ? "top-0 bottom-0 left-1/2 -translate-x-1/2 w-0.5 group-hover:w-1 group-hover:bg-primary/40 group-active:w-1 group-active:bg-primary/60" : "left-0 right-0 top-1/2 -translate-y-1/2 h-0.5 group-hover:h-1 group-hover:bg-primary/40 group-active:h-1 group-active:bg-primary/60"
|
|
13775
13775
|
)
|
|
@@ -13787,7 +13787,7 @@ function SlideThumbnailImpl({
|
|
|
13787
13787
|
}) {
|
|
13788
13788
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
13789
13789
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
13790
|
-
const scale =
|
|
13790
|
+
const scale = chunk7FBKS7OS_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
13791
13791
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
13792
13792
|
const previewElements = chunk4SPZ5IZN_js.buildPreviewElements(slide, templateElements);
|
|
13793
13793
|
const slideFieldContext = chunk4SPZ5IZN_js.deriveSlideFieldContext(fieldContext, slide);
|
|
@@ -14316,7 +14316,7 @@ function SectionHeader({
|
|
|
14316
14316
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14317
14317
|
lu.LuChevronDown,
|
|
14318
14318
|
{
|
|
14319
|
-
className:
|
|
14319
|
+
className: chunk7FBKS7OS_js.cn(
|
|
14320
14320
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
14321
14321
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
14322
14322
|
)
|
|
@@ -14429,7 +14429,7 @@ function LazyThumbnailInner({
|
|
|
14429
14429
|
className: "relative w-full overflow-hidden rounded border border-border bg-muted/30 animate-pulse",
|
|
14430
14430
|
style: {
|
|
14431
14431
|
height: previewHeight,
|
|
14432
|
-
minWidth:
|
|
14432
|
+
minWidth: chunk7FBKS7OS_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
14433
14433
|
}
|
|
14434
14434
|
}
|
|
14435
14435
|
) });
|
|
@@ -14466,7 +14466,7 @@ function buildFlatPaneItems(sectionGroups, showSectionHeaders, collapsedSections
|
|
|
14466
14466
|
function estimateSlideItemHeight(canvasWidth, canvasHeight) {
|
|
14467
14467
|
const safeW = Math.max(canvasWidth, 1);
|
|
14468
14468
|
const safeH = Math.max(canvasHeight, 1);
|
|
14469
|
-
const scale =
|
|
14469
|
+
const scale = chunk7FBKS7OS_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
|
|
14470
14470
|
const previewHeight = Math.max(56, Math.round(safeH * scale));
|
|
14471
14471
|
return previewHeight + 30;
|
|
14472
14472
|
}
|
|
@@ -14507,7 +14507,7 @@ function SlideItemInner({
|
|
|
14507
14507
|
);
|
|
14508
14508
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
14509
14509
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
14510
|
-
const scale =
|
|
14510
|
+
const scale = chunk7FBKS7OS_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
14511
14511
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
14512
14512
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14513
14513
|
"button",
|
|
@@ -14518,7 +14518,7 @@ function SlideItemInner({
|
|
|
14518
14518
|
"aria-current": isActive ? "true" : void 0,
|
|
14519
14519
|
"aria-describedby": cue.labelId,
|
|
14520
14520
|
"data-pptx-slide-hidden": cue.marker,
|
|
14521
|
-
className:
|
|
14521
|
+
className: chunk7FBKS7OS_js.cn(
|
|
14522
14522
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
14523
14523
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
14524
14524
|
isHidden && "opacity-50"
|
|
@@ -14534,7 +14534,7 @@ function SlideItemInner({
|
|
|
14534
14534
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14535
14535
|
"span",
|
|
14536
14536
|
{
|
|
14537
|
-
className:
|
|
14537
|
+
className: chunk7FBKS7OS_js.cn(
|
|
14538
14538
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
14539
14539
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
14540
14540
|
),
|
|
@@ -14555,7 +14555,7 @@ function SlideItemInner({
|
|
|
14555
14555
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14556
14556
|
"div",
|
|
14557
14557
|
{
|
|
14558
|
-
className:
|
|
14558
|
+
className: chunk7FBKS7OS_js.cn(
|
|
14559
14559
|
"relative flex-1 overflow-hidden border transition-colors bg-white",
|
|
14560
14560
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
14561
14561
|
),
|
|
@@ -14747,7 +14747,7 @@ function SlidesPaneSidebar({
|
|
|
14747
14747
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height),
|
|
14748
14748
|
[canvasSize.width, canvasSize.height]
|
|
14749
14749
|
);
|
|
14750
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
14750
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk7FBKS7OS_js.DEFAULT_SECTION_GROUP_ID);
|
|
14751
14751
|
const {
|
|
14752
14752
|
collapsedSections,
|
|
14753
14753
|
renamingSectionId,
|
|
@@ -14779,7 +14779,7 @@ function SlidesPaneSidebar({
|
|
|
14779
14779
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
14780
14780
|
);
|
|
14781
14781
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
14782
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
14782
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkE55VEC37_js.useVirtualizedSlides({
|
|
14783
14783
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
14784
14784
|
itemHeight: estimatedItemHeight
|
|
14785
14785
|
});
|
|
@@ -15013,7 +15013,7 @@ function HandoutMasterPanel({
|
|
|
15013
15013
|
{
|
|
15014
15014
|
type: "button",
|
|
15015
15015
|
"aria-pressed": slidesPerPage === count,
|
|
15016
|
-
className:
|
|
15016
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15017
15017
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
15018
15018
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
15019
15019
|
),
|
|
@@ -15131,7 +15131,7 @@ function SlideMastersList({
|
|
|
15131
15131
|
ref: isMasterActive ? activeRef : void 0,
|
|
15132
15132
|
"aria-pressed": isMasterActive,
|
|
15133
15133
|
"aria-label": master.name || t("pptx.master.master"),
|
|
15134
|
-
className:
|
|
15134
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15135
15135
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
15136
15136
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
15137
15137
|
),
|
|
@@ -15148,7 +15148,7 @@ function SlideMastersList({
|
|
|
15148
15148
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15149
15149
|
"span",
|
|
15150
15150
|
{
|
|
15151
|
-
className:
|
|
15151
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15152
15152
|
"text-[10px] font-medium",
|
|
15153
15153
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
15154
15154
|
),
|
|
@@ -15167,7 +15167,7 @@ function SlideMastersList({
|
|
|
15167
15167
|
ref: isLayoutActive ? activeRef : void 0,
|
|
15168
15168
|
"aria-pressed": isLayoutActive,
|
|
15169
15169
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
15170
|
-
className:
|
|
15170
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15171
15171
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
15172
15172
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
15173
15173
|
),
|
|
@@ -15184,7 +15184,7 @@ function SlideMastersList({
|
|
|
15184
15184
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15185
15185
|
"span",
|
|
15186
15186
|
{
|
|
15187
|
-
className:
|
|
15187
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15188
15188
|
"text-[9px]",
|
|
15189
15189
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
15190
15190
|
),
|
|
@@ -15276,7 +15276,7 @@ function MasterViewSidebar({
|
|
|
15276
15276
|
type: "button",
|
|
15277
15277
|
role: "tab",
|
|
15278
15278
|
"aria-selected": masterViewTab === tab.key,
|
|
15279
|
-
className:
|
|
15279
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15280
15280
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
15281
15281
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
15282
15282
|
),
|
|
@@ -15779,7 +15779,7 @@ function SectionBlock({
|
|
|
15779
15779
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15780
15780
|
lu.LuChevronDown,
|
|
15781
15781
|
{
|
|
15782
|
-
className:
|
|
15782
|
+
className: chunk7FBKS7OS_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
15783
15783
|
}
|
|
15784
15784
|
),
|
|
15785
15785
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -15828,7 +15828,7 @@ function SlideCardImpl({
|
|
|
15828
15828
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15829
15829
|
"div",
|
|
15830
15830
|
{
|
|
15831
|
-
className:
|
|
15831
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15832
15832
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
15833
15833
|
isDragTarget ? "border-primary bg-primary/20" : isSelected ? "border-primary bg-primary/10 ring-1 ring-primary/50" : isActive ? "border-primary/50 bg-primary/5" : "border-border bg-background/50 hover:border-border",
|
|
15834
15834
|
slide.hidden && "opacity-40"
|
|
@@ -15849,7 +15849,7 @@ function SlideCardImpl({
|
|
|
15849
15849
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15850
15850
|
"span",
|
|
15851
15851
|
{
|
|
15852
|
-
className:
|
|
15852
|
+
className: chunk7FBKS7OS_js.cn(
|
|
15853
15853
|
"text-[11px] font-medium px-0.5",
|
|
15854
15854
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
15855
15855
|
),
|
|
@@ -17502,7 +17502,7 @@ function SlideNotesPanel({
|
|
|
17502
17502
|
});
|
|
17503
17503
|
const hasNotes = draft.trim().length > 0;
|
|
17504
17504
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
17505
|
-
const { dragY, handlers: dragHandlers } =
|
|
17505
|
+
const { dragY, handlers: dragHandlers } = chunkE55VEC37_js.useSheetDismissDrag(onToggle);
|
|
17506
17506
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17507
17507
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17508
17508
|
"button",
|
|
@@ -17516,7 +17516,7 @@ function SlideNotesPanel({
|
|
|
17516
17516
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
17517
17517
|
"div",
|
|
17518
17518
|
{
|
|
17519
|
-
className:
|
|
17519
|
+
className: chunk7FBKS7OS_js.cn(
|
|
17520
17520
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
17521
17521
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
17522
17522
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -17883,7 +17883,7 @@ function SlideDiffRow({
|
|
|
17883
17883
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17884
17884
|
"div",
|
|
17885
17885
|
{
|
|
17886
|
-
className:
|
|
17886
|
+
className: chunk7FBKS7OS_js.cn(
|
|
17887
17887
|
"rounded-lg border transition-colors",
|
|
17888
17888
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
17889
17889
|
),
|
|
@@ -17897,7 +17897,7 @@ function SlideDiffRow({
|
|
|
17897
17897
|
children: [
|
|
17898
17898
|
expanded ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronRight, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }),
|
|
17899
17899
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
17900
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
17900
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk7FBKS7OS_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
17901
17901
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
17902
17902
|
diff.changes.length,
|
|
17903
17903
|
" ",
|
|
@@ -17907,7 +17907,7 @@ function SlideDiffRow({
|
|
|
17907
17907
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17908
17908
|
"span",
|
|
17909
17909
|
{
|
|
17910
|
-
className:
|
|
17910
|
+
className: chunk7FBKS7OS_js.cn(
|
|
17911
17911
|
"text-[10px] font-medium",
|
|
17912
17912
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
17913
17913
|
),
|
|
@@ -17935,7 +17935,7 @@ function SlideDiffRow({
|
|
|
17935
17935
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17936
17936
|
"div",
|
|
17937
17937
|
{
|
|
17938
|
-
className:
|
|
17938
|
+
className: chunk7FBKS7OS_js.cn(
|
|
17939
17939
|
"rounded border overflow-hidden",
|
|
17940
17940
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
17941
17941
|
),
|
|
@@ -18647,7 +18647,7 @@ function DocumentPropertiesDialog({
|
|
|
18647
18647
|
const handleClose = React20.useCallback(() => {
|
|
18648
18648
|
onClose();
|
|
18649
18649
|
}, [onClose]);
|
|
18650
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
18650
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(handleClose);
|
|
18651
18651
|
if (!isOpen) {
|
|
18652
18652
|
return null;
|
|
18653
18653
|
}
|
|
@@ -20433,7 +20433,7 @@ function SelectionPane({
|
|
|
20433
20433
|
setDragIndex(null);
|
|
20434
20434
|
setDragOverIndex(null);
|
|
20435
20435
|
},
|
|
20436
|
-
className:
|
|
20436
|
+
className: chunk7FBKS7OS_js.cn(
|
|
20437
20437
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
20438
20438
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
20439
20439
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -20487,13 +20487,13 @@ function SelectionPane({
|
|
|
20487
20487
|
}
|
|
20488
20488
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
20489
20489
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
20490
|
-
var ENTRANCE_PRESETS =
|
|
20490
|
+
var ENTRANCE_PRESETS = chunk7FBKS7OS_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
20491
20491
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
20492
20492
|
);
|
|
20493
|
-
var EXIT_PRESETS =
|
|
20493
|
+
var EXIT_PRESETS = chunk7FBKS7OS_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
20494
20494
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
20495
20495
|
);
|
|
20496
|
-
var EMPHASIS_PRESETS =
|
|
20496
|
+
var EMPHASIS_PRESETS = chunk7FBKS7OS_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
20497
20497
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
20498
20498
|
);
|
|
20499
20499
|
var TRIGGER_OPTIONS = [
|
|
@@ -20645,7 +20645,7 @@ function AnimationTimelineSection({
|
|
|
20645
20645
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
20646
20646
|
"div",
|
|
20647
20647
|
{
|
|
20648
|
-
className:
|
|
20648
|
+
className: chunk7FBKS7OS_js.cn(
|
|
20649
20649
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
20650
20650
|
animationTypeColor(bar.anim),
|
|
20651
20651
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -20674,7 +20674,7 @@ function AnimationTimelineSection({
|
|
|
20674
20674
|
onDragLeave: handleDragLeave,
|
|
20675
20675
|
onDrop: (e) => handleDrop(index, e),
|
|
20676
20676
|
title: t("pptx.animation.nativeEffectHint"),
|
|
20677
|
-
className:
|
|
20677
|
+
className: chunk7FBKS7OS_js.cn(
|
|
20678
20678
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
20679
20679
|
"bg-muted/20 text-muted-foreground/70",
|
|
20680
20680
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -20713,7 +20713,7 @@ function AnimationTimelineSection({
|
|
|
20713
20713
|
onDragEnd: handleDragEnd,
|
|
20714
20714
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
20715
20715
|
onMouseLeave: handleAnimationHoverEnd,
|
|
20716
|
-
className:
|
|
20716
|
+
className: chunk7FBKS7OS_js.cn(
|
|
20717
20717
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
20718
20718
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
20719
20719
|
isDragging && "opacity-40",
|
|
@@ -20814,7 +20814,7 @@ function EffectSoundRow({
|
|
|
20814
20814
|
}
|
|
20815
20815
|
const asset = chunk4SPZ5IZN_js.getEffectSoundAsset(soundState.catalogueId);
|
|
20816
20816
|
if (asset) {
|
|
20817
|
-
|
|
20817
|
+
chunkE55VEC37_js.playAnimationSound(asset.dataUrl);
|
|
20818
20818
|
}
|
|
20819
20819
|
};
|
|
20820
20820
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -20989,7 +20989,7 @@ function useAnimationPreview({
|
|
|
20989
20989
|
}) {
|
|
20990
20990
|
const handleAnimationHover = React20.useCallback((anim) => {
|
|
20991
20991
|
if (anim.motionPath) {
|
|
20992
|
-
|
|
20992
|
+
chunk7FBKS7OS_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
20993
20993
|
durationMs: anim.durationMs,
|
|
20994
20994
|
delayMs: anim.delayMs,
|
|
20995
20995
|
timingCurve: anim.timingCurve
|
|
@@ -21000,19 +21000,19 @@ function useAnimationPreview({
|
|
|
21000
21000
|
if (!preset || preset === "none") {
|
|
21001
21001
|
return;
|
|
21002
21002
|
}
|
|
21003
|
-
|
|
21003
|
+
chunk7FBKS7OS_js.startPreviewAnimation(anim.elementId, preset, {
|
|
21004
21004
|
direction: anim.direction,
|
|
21005
21005
|
durationMs: anim.durationMs ?? 500,
|
|
21006
21006
|
timingCurve: anim.timingCurve
|
|
21007
21007
|
});
|
|
21008
21008
|
}, []);
|
|
21009
|
-
const handleAnimationHoverEnd = React20.useCallback(() =>
|
|
21009
|
+
const handleAnimationHoverEnd = React20.useCallback(() => chunk7FBKS7OS_js.stopPreviewAnimation(), []);
|
|
21010
21010
|
const handlePreviewClick = React20.useCallback(() => {
|
|
21011
21011
|
if (!selectedElementAnimation) {
|
|
21012
21012
|
return;
|
|
21013
21013
|
}
|
|
21014
21014
|
if (selectedElementAnimation.motionPath) {
|
|
21015
|
-
|
|
21015
|
+
chunk7FBKS7OS_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
21016
21016
|
durationMs: selectedElementAnimation.durationMs,
|
|
21017
21017
|
delayMs: selectedElementAnimation.delayMs,
|
|
21018
21018
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -21023,7 +21023,7 @@ function useAnimationPreview({
|
|
|
21023
21023
|
if (!preset || preset === "none") {
|
|
21024
21024
|
return;
|
|
21025
21025
|
}
|
|
21026
|
-
|
|
21026
|
+
chunk7FBKS7OS_js.startPreviewAnimation(selectedElementId, preset, {
|
|
21027
21027
|
direction: selectedElementAnimation.direction,
|
|
21028
21028
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
21029
21029
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -21322,7 +21322,7 @@ function AnimationPanel({
|
|
|
21322
21322
|
onUpdateSlide
|
|
21323
21323
|
}) {
|
|
21324
21324
|
const { t } = reactI18next.useTranslation();
|
|
21325
|
-
const { viewportWidth } =
|
|
21325
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
21326
21326
|
const directionBtnPx = Math.max(28, chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth));
|
|
21327
21327
|
const fieldStyle = { minHeight: chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth) };
|
|
21328
21328
|
const handlers = useAnimationHandlers({
|
|
@@ -21447,7 +21447,7 @@ function AnimationPanel({
|
|
|
21447
21447
|
type: "button",
|
|
21448
21448
|
disabled: !canEdit,
|
|
21449
21449
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
21450
|
-
className:
|
|
21450
|
+
className: chunk7FBKS7OS_js.cn(
|
|
21451
21451
|
"flex items-center justify-center rounded border transition-colors",
|
|
21452
21452
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
21453
21453
|
),
|
|
@@ -21622,9 +21622,9 @@ function AnimationPanel({
|
|
|
21622
21622
|
] });
|
|
21623
21623
|
}
|
|
21624
21624
|
var INSPECTOR_TABS = [
|
|
21625
|
-
{ key: "elements",
|
|
21626
|
-
{ key: "properties",
|
|
21627
|
-
{ key: "comments",
|
|
21625
|
+
{ key: "elements", labelKey: "pptx.documentProperties.statistics.elements", icon: lu.LuLayers },
|
|
21626
|
+
{ key: "properties", labelKey: "pptx.inspector.properties", icon: lu.LuSettings2 },
|
|
21627
|
+
{ key: "comments", labelKey: "pptx.toolbar.comments", icon: lu.LuMessageSquare }
|
|
21628
21628
|
];
|
|
21629
21629
|
var HEADING = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
21630
21630
|
var CARD = "rounded border border-border bg-card p-2 space-y-2";
|
|
@@ -21662,7 +21662,7 @@ function ActionTargetFields({
|
|
|
21662
21662
|
type: "text",
|
|
21663
21663
|
disabled: !canEdit,
|
|
21664
21664
|
"aria-label": t(urlLabelKey),
|
|
21665
|
-
className:
|
|
21665
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-full"),
|
|
21666
21666
|
placeholder: "https://...",
|
|
21667
21667
|
value: url ?? "",
|
|
21668
21668
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -21676,7 +21676,7 @@ function ActionTargetFields({
|
|
|
21676
21676
|
type: "number",
|
|
21677
21677
|
disabled: !canEdit,
|
|
21678
21678
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
21679
|
-
className:
|
|
21679
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-full"),
|
|
21680
21680
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
21681
21681
|
min: 1,
|
|
21682
21682
|
max: slideCount,
|
|
@@ -21698,7 +21698,7 @@ function ActionTargetFields({
|
|
|
21698
21698
|
"data-testid": "pptx-action-custom-show",
|
|
21699
21699
|
disabled: !canEdit,
|
|
21700
21700
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
21701
|
-
className:
|
|
21701
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-full"),
|
|
21702
21702
|
value: customShowId ?? "",
|
|
21703
21703
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
21704
21704
|
children: [
|
|
@@ -21821,7 +21821,7 @@ function ActionTriggerSection({
|
|
|
21821
21821
|
{
|
|
21822
21822
|
disabled: !canEdit,
|
|
21823
21823
|
"aria-label": label,
|
|
21824
|
-
className:
|
|
21824
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-full"),
|
|
21825
21825
|
value: effectiveType,
|
|
21826
21826
|
onChange: (e) => changeType(e.target.value),
|
|
21827
21827
|
children: chunk4SPZ5IZN_js.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -22342,7 +22342,7 @@ function ChartDataGrid({
|
|
|
22342
22342
|
}) {
|
|
22343
22343
|
const { t } = reactI18next.useTranslation();
|
|
22344
22344
|
const highlightRef = React20.useRef(null);
|
|
22345
|
-
const { viewportWidth } =
|
|
22345
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
22346
22346
|
const gridPlan = chunk4SPZ5IZN_js.getDenseGridLayoutPlan(viewportWidth);
|
|
22347
22347
|
const touchTargetPx = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
22348
22348
|
const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
|
|
@@ -23711,7 +23711,7 @@ function ChartUserShapeOptions({
|
|
|
23711
23711
|
}
|
|
23712
23712
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
23713
23713
|
const chartData = selectedElement.chartData;
|
|
23714
|
-
const followDataPoint =
|
|
23714
|
+
const followDataPoint = chunkE55VEC37_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
23715
23715
|
const { selection: partSelection } = useChartPartSelection();
|
|
23716
23716
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
23717
23717
|
const title = chartData?.title;
|
|
@@ -24468,7 +24468,7 @@ function ConnectorArrowsSection({
|
|
|
24468
24468
|
},
|
|
24469
24469
|
disabled: !canEdit,
|
|
24470
24470
|
className: SELECT_CLS2,
|
|
24471
|
-
children:
|
|
24471
|
+
children: chunk7FBKS7OS_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
24472
24472
|
}
|
|
24473
24473
|
)
|
|
24474
24474
|
] }, end);
|
|
@@ -24492,7 +24492,7 @@ function ConnectorArrowsSection({
|
|
|
24492
24492
|
},
|
|
24493
24493
|
disabled: !canEdit,
|
|
24494
24494
|
className: SELECT_CLS2,
|
|
24495
|
-
children:
|
|
24495
|
+
children: chunk7FBKS7OS_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
24496
24496
|
}
|
|
24497
24497
|
)
|
|
24498
24498
|
] }),
|
|
@@ -24511,7 +24511,7 @@ function ConnectorArrowsSection({
|
|
|
24511
24511
|
},
|
|
24512
24512
|
disabled: !canEdit,
|
|
24513
24513
|
className: SELECT_CLS2,
|
|
24514
|
-
children:
|
|
24514
|
+
children: chunk7FBKS7OS_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
24515
24515
|
}
|
|
24516
24516
|
)
|
|
24517
24517
|
] })
|
|
@@ -24602,7 +24602,7 @@ function OlePropertiesPanel({
|
|
|
24602
24602
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24603
24603
|
"span",
|
|
24604
24604
|
{
|
|
24605
|
-
className:
|
|
24605
|
+
className: chunk7FBKS7OS_js.cn(
|
|
24606
24606
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
24607
24607
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
24608
24608
|
),
|
|
@@ -24670,7 +24670,7 @@ function LayerOrderButtons({
|
|
|
24670
24670
|
"button",
|
|
24671
24671
|
{
|
|
24672
24672
|
type: "button",
|
|
24673
|
-
className:
|
|
24673
|
+
className: chunk7FBKS7OS_js.cn("flex-1", BTN),
|
|
24674
24674
|
disabled: !canEdit,
|
|
24675
24675
|
onClick: () => onMoveLayer("forward"),
|
|
24676
24676
|
children: "\u2191 Forward"
|
|
@@ -24680,7 +24680,7 @@ function LayerOrderButtons({
|
|
|
24680
24680
|
"button",
|
|
24681
24681
|
{
|
|
24682
24682
|
type: "button",
|
|
24683
|
-
className:
|
|
24683
|
+
className: chunk7FBKS7OS_js.cn("flex-1", BTN),
|
|
24684
24684
|
disabled: !canEdit,
|
|
24685
24685
|
onClick: () => onMoveLayer("backward"),
|
|
24686
24686
|
children: "\u2193 Backward"
|
|
@@ -24704,7 +24704,7 @@ function ArtisticEffectsGallery({
|
|
|
24704
24704
|
{
|
|
24705
24705
|
type: "button",
|
|
24706
24706
|
disabled: !canEdit,
|
|
24707
|
-
className:
|
|
24707
|
+
className: chunk7FBKS7OS_js.cn(
|
|
24708
24708
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
24709
24709
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
24710
24710
|
),
|
|
@@ -25128,10 +25128,7 @@ function ImageCropSection({
|
|
|
25128
25128
|
CROP_SIDES.map((side) => {
|
|
25129
25129
|
const key = `crop${side}`;
|
|
25130
25130
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
25131
|
-
/* @__PURE__ */ jsxRuntime.
|
|
25132
|
-
"Crop ",
|
|
25133
|
-
side
|
|
25134
|
-
] }),
|
|
25131
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t(`pptx.image.crop${side}`) }),
|
|
25135
25132
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25136
25133
|
"input",
|
|
25137
25134
|
{
|
|
@@ -25209,7 +25206,7 @@ function ImagePropertiesPanel({
|
|
|
25209
25206
|
{
|
|
25210
25207
|
rows: 2,
|
|
25211
25208
|
disabled: !canEdit,
|
|
25212
|
-
className:
|
|
25209
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "resize-none text-[11px]"),
|
|
25213
25210
|
value: selectedElement.altText ?? "",
|
|
25214
25211
|
onChange: (e) => onUpdateElement({
|
|
25215
25212
|
altText: e.target.value
|
|
@@ -25264,7 +25261,7 @@ function ImagePropertiesPanel({
|
|
|
25264
25261
|
),
|
|
25265
25262
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
|
|
25266
25263
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
25267
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "
|
|
25264
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.grayscale") }),
|
|
25268
25265
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25269
25266
|
"input",
|
|
25270
25267
|
{
|
|
@@ -26170,7 +26167,7 @@ function AccessibilityTextSection({
|
|
|
26170
26167
|
rows: 2,
|
|
26171
26168
|
disabled: !canEdit,
|
|
26172
26169
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
26173
|
-
className:
|
|
26170
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "resize-none text-[11px]"),
|
|
26174
26171
|
value: fields.altText,
|
|
26175
26172
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
26176
26173
|
}
|
|
@@ -26184,7 +26181,7 @@ function AccessibilityTextSection({
|
|
|
26184
26181
|
type: "text",
|
|
26185
26182
|
disabled: !canEdit,
|
|
26186
26183
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
26187
|
-
className:
|
|
26184
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "text-[11px]"),
|
|
26188
26185
|
value: fields.title,
|
|
26189
26186
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
26190
26187
|
}
|
|
@@ -27107,7 +27104,7 @@ function FillAdvancedControls({
|
|
|
27107
27104
|
onClick: () => onUpdateGradientStops([
|
|
27108
27105
|
...gradientStops,
|
|
27109
27106
|
{
|
|
27110
|
-
color: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
27107
|
+
color: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR),
|
|
27111
27108
|
position: 50,
|
|
27112
27109
|
opacity: 1
|
|
27113
27110
|
}
|
|
@@ -27121,7 +27118,7 @@ function FillAdvancedControls({
|
|
|
27121
27118
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
27122
27119
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL2, children: "Pattern" }),
|
|
27123
27120
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS2.map((opt) => {
|
|
27124
|
-
const fgColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
27121
|
+
const fgColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR);
|
|
27125
27122
|
const bgColor = chunk4SPZ5IZN_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
27126
27123
|
const svgPattern = chunk4SPZ5IZN_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
27127
27124
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
@@ -27156,7 +27153,7 @@ function FillAdvancedControls({
|
|
|
27156
27153
|
{
|
|
27157
27154
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
27158
27155
|
prefix: "pattern-fg",
|
|
27159
|
-
value: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
27156
|
+
value: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR),
|
|
27160
27157
|
disabled: isLine,
|
|
27161
27158
|
onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
|
|
27162
27159
|
}
|
|
@@ -27233,7 +27230,7 @@ function QuickStylesGallery({
|
|
|
27233
27230
|
onUpdateShapeStyle
|
|
27234
27231
|
}) {
|
|
27235
27232
|
const { t } = reactI18next.useTranslation();
|
|
27236
|
-
const { viewportWidth } =
|
|
27233
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
27237
27234
|
const swatchMinHeight = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
27238
27235
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
27239
27236
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL2, children: t("pptx.shape.quickStyles") }),
|
|
@@ -27264,7 +27261,7 @@ function StrokeEffectsSection({
|
|
|
27264
27261
|
{
|
|
27265
27262
|
label: t("pptx.inspector.stroke"),
|
|
27266
27263
|
prefix: "stroke",
|
|
27267
|
-
value: chunk4SPZ5IZN_js.normalizeHexColor(style?.strokeColor,
|
|
27264
|
+
value: chunk4SPZ5IZN_js.normalizeHexColor(style?.strokeColor, chunk7FBKS7OS_js.DEFAULT_STROKE_COLOR),
|
|
27268
27265
|
selectedRef: style?.strokeColorRef,
|
|
27269
27266
|
onChange: onSetStrokeColor
|
|
27270
27267
|
}
|
|
@@ -27327,7 +27324,7 @@ function StrokeEffectsSection({
|
|
|
27327
27324
|
strokeDash: e.target.value
|
|
27328
27325
|
}),
|
|
27329
27326
|
className: SEL2,
|
|
27330
|
-
children:
|
|
27327
|
+
children: chunk7FBKS7OS_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
27331
27328
|
}
|
|
27332
27329
|
)
|
|
27333
27330
|
] }),
|
|
@@ -27421,7 +27418,7 @@ function FillStrokeProperties({
|
|
|
27421
27418
|
const existing = chunk4SPZ5IZN_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
27422
27419
|
const stops = existing.length >= 2 ? existing : [
|
|
27423
27420
|
{
|
|
27424
|
-
color: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
27421
|
+
color: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR),
|
|
27425
27422
|
position: 0,
|
|
27426
27423
|
opacity: 1
|
|
27427
27424
|
},
|
|
@@ -27446,7 +27443,7 @@ function FillStrokeProperties({
|
|
|
27446
27443
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
27447
27444
|
};
|
|
27448
27445
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
27449
|
-
{ color:
|
|
27446
|
+
{ color: chunk7FBKS7OS_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
27450
27447
|
{ color: "#ffffff", position: 100 }
|
|
27451
27448
|
];
|
|
27452
27449
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -27473,7 +27470,7 @@ function FillStrokeProperties({
|
|
|
27473
27470
|
{
|
|
27474
27471
|
label: t("pptx.fill.fill"),
|
|
27475
27472
|
prefix: "fill",
|
|
27476
|
-
value: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor,
|
|
27473
|
+
value: chunk4SPZ5IZN_js.normalizeHexColor(style?.fillColor, chunk7FBKS7OS_js.DEFAULT_FILL_COLOR),
|
|
27477
27474
|
selectedRef: style?.fillColorRef,
|
|
27478
27475
|
disabled: line,
|
|
27479
27476
|
onChange: onSetFillColor
|
|
@@ -28306,11 +28303,11 @@ function ShapeTextPanels({
|
|
|
28306
28303
|
{
|
|
28307
28304
|
value: selectedElement.shapeType || "rect",
|
|
28308
28305
|
disabled: !canEdit,
|
|
28309
|
-
className:
|
|
28306
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-full"),
|
|
28310
28307
|
onChange: (e) => onUpdateElement({
|
|
28311
28308
|
shapeType: e.target.value
|
|
28312
28309
|
}),
|
|
28313
|
-
children:
|
|
28310
|
+
children: chunk7FBKS7OS_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
28314
28311
|
}
|
|
28315
28312
|
)
|
|
28316
28313
|
] }),
|
|
@@ -28450,7 +28447,7 @@ function TextFormatToggle({
|
|
|
28450
28447
|
{
|
|
28451
28448
|
type: "button",
|
|
28452
28449
|
disabled,
|
|
28453
|
-
className:
|
|
28450
|
+
className: chunk7FBKS7OS_js.cn(
|
|
28454
28451
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
28455
28452
|
italic && "italic",
|
|
28456
28453
|
underline && "underline",
|
|
@@ -28644,7 +28641,7 @@ function SmartArtLayoutSwitcher({
|
|
|
28644
28641
|
type: "button",
|
|
28645
28642
|
"data-testid": `smartart-layout-${type}`,
|
|
28646
28643
|
disabled: !canEdit,
|
|
28647
|
-
className:
|
|
28644
|
+
className: chunk7FBKS7OS_js.cn(
|
|
28648
28645
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
28649
28646
|
"text-[9px] leading-tight",
|
|
28650
28647
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -28723,7 +28720,7 @@ function SmartArtNodeStyleControls({
|
|
|
28723
28720
|
disabled: !canEdit,
|
|
28724
28721
|
"aria-label": `Bold ${label}`,
|
|
28725
28722
|
"aria-pressed": bold,
|
|
28726
|
-
className:
|
|
28723
|
+
className: chunk7FBKS7OS_js.cn(
|
|
28727
28724
|
EMPHASIS_BTN,
|
|
28728
28725
|
"font-bold",
|
|
28729
28726
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -28739,7 +28736,7 @@ function SmartArtNodeStyleControls({
|
|
|
28739
28736
|
disabled: !canEdit,
|
|
28740
28737
|
"aria-label": `Italic ${label}`,
|
|
28741
28738
|
"aria-pressed": italic,
|
|
28742
|
-
className:
|
|
28739
|
+
className: chunk7FBKS7OS_js.cn(
|
|
28743
28740
|
EMPHASIS_BTN,
|
|
28744
28741
|
"italic",
|
|
28745
28742
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -28778,7 +28775,7 @@ function SmartArtNodeRow({
|
|
|
28778
28775
|
"div",
|
|
28779
28776
|
{
|
|
28780
28777
|
role: "listitem",
|
|
28781
|
-
className:
|
|
28778
|
+
className: chunk7FBKS7OS_js.cn(
|
|
28782
28779
|
"rounded border bg-background/60 p-1.5",
|
|
28783
28780
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
28784
28781
|
),
|
|
@@ -28793,7 +28790,7 @@ function SmartArtNodeRow({
|
|
|
28793
28790
|
"data-testid": "smartart-node-text",
|
|
28794
28791
|
disabled: !canEdit,
|
|
28795
28792
|
"aria-label": label,
|
|
28796
|
-
className:
|
|
28793
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
|
|
28797
28794
|
value: text,
|
|
28798
28795
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
28799
28796
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -28842,7 +28839,7 @@ function SmartArtNodeRow({
|
|
|
28842
28839
|
{
|
|
28843
28840
|
type: "button",
|
|
28844
28841
|
disabled: !canEdit || removeDisabled,
|
|
28845
|
-
className:
|
|
28842
|
+
className: chunk7FBKS7OS_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
28846
28843
|
onClick: () => onRemove(nodeId),
|
|
28847
28844
|
"aria-label": `Remove ${label}`,
|
|
28848
28845
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -28885,7 +28882,7 @@ function SmartArtStyleControls({
|
|
|
28885
28882
|
disabled: !canEdit,
|
|
28886
28883
|
"data-testid": "smartart-color-scheme",
|
|
28887
28884
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
28888
|
-
className:
|
|
28885
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-full"),
|
|
28889
28886
|
value: colorScheme,
|
|
28890
28887
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
28891
28888
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: chunk4SPZ5IZN_js.schemaLabel(chunk4SPZ5IZN_js.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -28900,7 +28897,7 @@ function SmartArtStyleControls({
|
|
|
28900
28897
|
type: "button",
|
|
28901
28898
|
disabled: !canEdit,
|
|
28902
28899
|
"aria-pressed": style === s,
|
|
28903
|
-
className:
|
|
28900
|
+
className: chunk7FBKS7OS_js.cn(
|
|
28904
28901
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
28905
28902
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
28906
28903
|
),
|
|
@@ -29135,7 +29132,7 @@ function TableDataGrid({
|
|
|
29135
29132
|
}) {
|
|
29136
29133
|
const { t } = reactI18next.useTranslation();
|
|
29137
29134
|
const grid = chunk4SPZ5IZN_js.buildTableDataGrid(tableElement);
|
|
29138
|
-
const { viewportWidth } =
|
|
29135
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
29139
29136
|
const gridPlan = chunk4SPZ5IZN_js.getDenseGridLayoutPlan(viewportWidth);
|
|
29140
29137
|
const touchTargetPx = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
29141
29138
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -29663,7 +29660,7 @@ function TableCellFormattingPanel({
|
|
|
29663
29660
|
{
|
|
29664
29661
|
type: "button",
|
|
29665
29662
|
disabled: !canEdit,
|
|
29666
|
-
className:
|
|
29663
|
+
className: chunk7FBKS7OS_js.cn(
|
|
29667
29664
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
29668
29665
|
cls,
|
|
29669
29666
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -29682,7 +29679,7 @@ function TableCellFormattingPanel({
|
|
|
29682
29679
|
{
|
|
29683
29680
|
type: "button",
|
|
29684
29681
|
disabled: !canEdit,
|
|
29685
|
-
className:
|
|
29682
|
+
className: chunk7FBKS7OS_js.cn(
|
|
29686
29683
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
29687
29684
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
29688
29685
|
),
|
|
@@ -29700,7 +29697,7 @@ function TableCellFormattingPanel({
|
|
|
29700
29697
|
{
|
|
29701
29698
|
type: "button",
|
|
29702
29699
|
disabled: !canEdit,
|
|
29703
|
-
className:
|
|
29700
|
+
className: chunk7FBKS7OS_js.cn(
|
|
29704
29701
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
29705
29702
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
29706
29703
|
),
|
|
@@ -29733,7 +29730,7 @@ function TableCellFormattingPanel({
|
|
|
29733
29730
|
{
|
|
29734
29731
|
type: "number",
|
|
29735
29732
|
disabled: !canEdit,
|
|
29736
|
-
className:
|
|
29733
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-14"),
|
|
29737
29734
|
min: 0,
|
|
29738
29735
|
max: 10,
|
|
29739
29736
|
value: cs[widthKey] ?? 1,
|
|
@@ -29749,7 +29746,7 @@ function TableCellFormattingPanel({
|
|
|
29749
29746
|
{
|
|
29750
29747
|
type: "button",
|
|
29751
29748
|
disabled: !canEdit,
|
|
29752
|
-
className:
|
|
29749
|
+
className: chunk7FBKS7OS_js.cn(BTN, "text-center"),
|
|
29753
29750
|
onClick: () => {
|
|
29754
29751
|
const newRows = chunk4SPZ5IZN_js.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
29755
29752
|
if (newRows) {
|
|
@@ -29764,7 +29761,7 @@ function TableCellFormattingPanel({
|
|
|
29764
29761
|
{
|
|
29765
29762
|
type: "button",
|
|
29766
29763
|
disabled: !canEdit,
|
|
29767
|
-
className:
|
|
29764
|
+
className: chunk7FBKS7OS_js.cn(BTN, "text-center"),
|
|
29768
29765
|
onClick: () => {
|
|
29769
29766
|
const newRows = chunk4SPZ5IZN_js.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
29770
29767
|
if (newRows) {
|
|
@@ -29779,7 +29776,7 @@ function TableCellFormattingPanel({
|
|
|
29779
29776
|
{
|
|
29780
29777
|
type: "button",
|
|
29781
29778
|
disabled: !canEdit,
|
|
29782
|
-
className:
|
|
29779
|
+
className: chunk7FBKS7OS_js.cn(BTN, "text-center"),
|
|
29783
29780
|
onClick: () => {
|
|
29784
29781
|
const newRows = chunk4SPZ5IZN_js.computeSplitCell(td, rowIndex, columnIndex);
|
|
29785
29782
|
if (newRows) {
|
|
@@ -30513,7 +30510,7 @@ function CommentMentionTextarea({
|
|
|
30513
30510
|
"data-testid": "pptx-comment-mention-option",
|
|
30514
30511
|
role: "option",
|
|
30515
30512
|
"aria-selected": index === safeHighlighted,
|
|
30516
|
-
className:
|
|
30513
|
+
className: chunk7FBKS7OS_js.cn(
|
|
30517
30514
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
30518
30515
|
index === safeHighlighted && "bg-accent"
|
|
30519
30516
|
),
|
|
@@ -30636,7 +30633,7 @@ function InspectorCommentRow({
|
|
|
30636
30633
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30637
30634
|
"div",
|
|
30638
30635
|
{
|
|
30639
|
-
className:
|
|
30636
|
+
className: chunk7FBKS7OS_js.cn(
|
|
30640
30637
|
"rounded border border-border bg-card p-2",
|
|
30641
30638
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
30642
30639
|
),
|
|
@@ -30731,7 +30728,7 @@ function InspectorCommentRow({
|
|
|
30731
30728
|
"button",
|
|
30732
30729
|
{
|
|
30733
30730
|
type: "button",
|
|
30734
|
-
className:
|
|
30731
|
+
className: chunk7FBKS7OS_js.cn(
|
|
30735
30732
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
30736
30733
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
30737
30734
|
),
|
|
@@ -30898,7 +30895,7 @@ function InspectorCommentsSection({
|
|
|
30898
30895
|
type: "button",
|
|
30899
30896
|
onClick: onAddComment,
|
|
30900
30897
|
disabled: !commentDraft.trim(),
|
|
30901
|
-
className:
|
|
30898
|
+
className: chunk7FBKS7OS_js.cn(
|
|
30902
30899
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors max-md:min-h-[44px]!",
|
|
30903
30900
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
30904
30901
|
),
|
|
@@ -30939,13 +30936,13 @@ function InspectorElementsTab({
|
|
|
30939
30936
|
};
|
|
30940
30937
|
if (!activeSlide) {
|
|
30941
30938
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
30942
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
30939
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7FBKS7OS_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
30943
30940
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
30944
30941
|
] });
|
|
30945
30942
|
}
|
|
30946
30943
|
const elements = activeSlide.elements || [];
|
|
30947
30944
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
30948
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
30945
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7FBKS7OS_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
30949
30946
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
30950
30947
|
const index = elements.length - 1 - reversedIndex;
|
|
30951
30948
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -30953,7 +30950,7 @@ function InspectorElementsTab({
|
|
|
30953
30950
|
"div",
|
|
30954
30951
|
{
|
|
30955
30952
|
title: `${el.type} - ${el.id}`,
|
|
30956
|
-
className:
|
|
30953
|
+
className: chunk7FBKS7OS_js.cn(
|
|
30957
30954
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
30958
30955
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
30959
30956
|
),
|
|
@@ -30990,24 +30987,24 @@ function InspectorPaneHeader({
|
|
|
30990
30987
|
onClose
|
|
30991
30988
|
}) {
|
|
30992
30989
|
const { t } = reactI18next.useTranslation();
|
|
30993
|
-
const { viewportWidth } =
|
|
30990
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
30994
30991
|
const touchTargetPx = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
30995
30992
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
30996
30993
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 px-3 py-2 border-b border-border", children: [
|
|
30997
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 rounded bg-muted p-0.5", children: INSPECTOR_TABS.map(({ key,
|
|
30994
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 rounded bg-muted p-0.5", children: INSPECTOR_TABS.map(({ key, labelKey, icon: Icon }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30998
30995
|
"button",
|
|
30999
30996
|
{
|
|
31000
30997
|
type: "button",
|
|
31001
|
-
title:
|
|
30998
|
+
title: t(labelKey),
|
|
31002
30999
|
style: touchBtnStyle,
|
|
31003
|
-
className:
|
|
31000
|
+
className: chunk7FBKS7OS_js.cn(
|
|
31004
31001
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
31005
31002
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
31006
31003
|
),
|
|
31007
31004
|
onClick: () => onSetActiveTab(key),
|
|
31008
31005
|
children: [
|
|
31009
31006
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "w-3.5 h-3.5" }),
|
|
31010
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children:
|
|
31007
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: t(labelKey) })
|
|
31011
31008
|
]
|
|
31012
31009
|
},
|
|
31013
31010
|
key
|
|
@@ -31110,7 +31107,7 @@ function CustomPropertiesBlock({
|
|
|
31110
31107
|
"button",
|
|
31111
31108
|
{
|
|
31112
31109
|
type: "button",
|
|
31113
|
-
className:
|
|
31110
|
+
className: chunk7FBKS7OS_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
31114
31111
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
31115
31112
|
children: "\xD7"
|
|
31116
31113
|
}
|
|
@@ -31378,7 +31375,7 @@ function PresentationSettingsCard({
|
|
|
31378
31375
|
{
|
|
31379
31376
|
"aria-label": t("pptx.presentationSettings.showType"),
|
|
31380
31377
|
disabled: !canEdit,
|
|
31381
|
-
className:
|
|
31378
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-28"),
|
|
31382
31379
|
value: presentationProperties.showType ?? "presented",
|
|
31383
31380
|
onChange: (e) => onUpdate({
|
|
31384
31381
|
showType: e.target.value
|
|
@@ -31438,7 +31435,7 @@ function PresentationSettingsCard({
|
|
|
31438
31435
|
min: 1,
|
|
31439
31436
|
max: 16,
|
|
31440
31437
|
disabled: !canEdit,
|
|
31441
|
-
className:
|
|
31438
|
+
className: chunk7FBKS7OS_js.cn(INPUT, "w-20"),
|
|
31442
31439
|
value: chunk4SPZ5IZN_js.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
31443
31440
|
onChange: (e) => onUpdate({
|
|
31444
31441
|
printProperties: chunk4SPZ5IZN_js.withSlidesPerPage(
|
|
@@ -31977,7 +31974,7 @@ function TagsSection({
|
|
|
31977
31974
|
"button",
|
|
31978
31975
|
{
|
|
31979
31976
|
type: "button",
|
|
31980
|
-
className:
|
|
31977
|
+
className: chunk7FBKS7OS_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
31981
31978
|
title: t("pptx.tags.deleteTag"),
|
|
31982
31979
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
31983
31980
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -32106,7 +32103,7 @@ function PresentationPropertiesPanel({
|
|
|
32106
32103
|
canEdit
|
|
32107
32104
|
}
|
|
32108
32105
|
),
|
|
32109
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
32106
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7FBKS7OS_js.cn(CARD, "space-y-1"), children: [
|
|
32110
32107
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Slide" }),
|
|
32111
32108
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
32112
32109
|
activeSlide.elements?.length ?? 0,
|
|
@@ -32127,10 +32124,10 @@ function SlideBackgroundPanel({
|
|
|
32127
32124
|
const { t } = reactI18next.useTranslation();
|
|
32128
32125
|
const bgImageInputRef = React20.useRef(null);
|
|
32129
32126
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32130
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
32131
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "
|
|
32127
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7FBKS7OS_js.cn(CARD, "space-y-2"), children: [
|
|
32128
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.viewer.background") }),
|
|
32132
32129
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
32133
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "
|
|
32130
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
32134
32131
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32135
32132
|
DebouncedColorInput,
|
|
32136
32133
|
{
|
|
@@ -32144,7 +32141,7 @@ function SlideBackgroundPanel({
|
|
|
32144
32141
|
] }),
|
|
32145
32142
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
32146
32143
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
32147
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "
|
|
32144
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.image") }),
|
|
32148
32145
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32149
32146
|
"input",
|
|
32150
32147
|
{
|
|
@@ -32173,7 +32170,7 @@ function SlideBackgroundPanel({
|
|
|
32173
32170
|
"button",
|
|
32174
32171
|
{
|
|
32175
32172
|
type: "button",
|
|
32176
|
-
className:
|
|
32173
|
+
className: chunk7FBKS7OS_js.cn(BTN, "flex-1 text-center"),
|
|
32177
32174
|
disabled: !canEdit,
|
|
32178
32175
|
onClick: () => bgImageInputRef.current?.click(),
|
|
32179
32176
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -32206,7 +32203,7 @@ function SlideBackgroundPanel({
|
|
|
32206
32203
|
"button",
|
|
32207
32204
|
{
|
|
32208
32205
|
type: "button",
|
|
32209
|
-
className:
|
|
32206
|
+
className: chunk7FBKS7OS_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
|
|
32210
32207
|
disabled: !canEdit,
|
|
32211
32208
|
onClick: () => onUpdateSlide({
|
|
32212
32209
|
backgroundColor: void 0,
|
|
@@ -32255,7 +32252,7 @@ function TemplateBackgroundCard({
|
|
|
32255
32252
|
t("pptx.master.layout"),
|
|
32256
32253
|
t("pptx.master.master")
|
|
32257
32254
|
);
|
|
32258
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
32255
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7FBKS7OS_js.cn(CARD, "space-y-2"), children: [
|
|
32259
32256
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
32260
32257
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
32261
32258
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
@@ -32386,7 +32383,7 @@ function InspectorPane(props) {
|
|
|
32386
32383
|
} = props;
|
|
32387
32384
|
const hasSelection = selectedElement !== null;
|
|
32388
32385
|
const { t } = reactI18next.useTranslation();
|
|
32389
|
-
const { dragY, handlers: dragHandlers } =
|
|
32386
|
+
const { dragY, handlers: dragHandlers } = chunkE55VEC37_js.useSheetDismissDrag(onClose);
|
|
32390
32387
|
const {
|
|
32391
32388
|
animationPanelHeight,
|
|
32392
32389
|
effectiveThemeOptions,
|
|
@@ -32407,7 +32404,7 @@ function InspectorPane(props) {
|
|
|
32407
32404
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
32408
32405
|
"div",
|
|
32409
32406
|
{
|
|
32410
|
-
className:
|
|
32407
|
+
className: chunk7FBKS7OS_js.cn(
|
|
32411
32408
|
// Shared styles
|
|
32412
32409
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
32413
32410
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -33056,7 +33053,7 @@ function PresentationTouchControls({
|
|
|
33056
33053
|
hideNavigation = false
|
|
33057
33054
|
}) {
|
|
33058
33055
|
const { t } = reactI18next.useTranslation();
|
|
33059
|
-
const { isTouchDevice } =
|
|
33056
|
+
const { isTouchDevice } = chunkE55VEC37_js.useIsMobile();
|
|
33060
33057
|
if (!isTouchDevice) {
|
|
33061
33058
|
return null;
|
|
33062
33059
|
}
|
|
@@ -34044,12 +34041,12 @@ function PrintDialog({
|
|
|
34044
34041
|
defaultFrameSlides
|
|
34045
34042
|
}) {
|
|
34046
34043
|
const { t } = reactI18next.useTranslation();
|
|
34047
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
34048
|
-
const { viewportWidth } =
|
|
34044
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
34045
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
34049
34046
|
const touchTargetPx = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
34050
34047
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
34051
34048
|
const footerBtnStyle = { minHeight: touchTargetPx };
|
|
34052
|
-
const printOptionDefaults = chunk4SPZ5IZN_js.resolveDefaultPrintSettings(
|
|
34049
|
+
const printOptionDefaults = chunk4SPZ5IZN_js.resolveDefaultPrintSettings(chunkE55VEC37_js.useViewerOptionsContext());
|
|
34053
34050
|
const [printWhat, setPrintWhat] = React20.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
34054
34051
|
const [orientation, setOrientation] = React20.useState("landscape");
|
|
34055
34052
|
const [colorMode, setColorMode] = React20.useState(
|
|
@@ -34592,7 +34589,7 @@ function BroadcastDialog({
|
|
|
34592
34589
|
const [serverUrl, setServerUrl] = React20.useState("");
|
|
34593
34590
|
const [copied, setCopied] = React20.useState(false);
|
|
34594
34591
|
const dialogRef = React20.useRef(null);
|
|
34595
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
34592
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
34596
34593
|
useModalFocus(open, dialogRef, onClose);
|
|
34597
34594
|
React20.useEffect(() => {
|
|
34598
34595
|
if (open && !isBroadcasting) {
|
|
@@ -34901,7 +34898,7 @@ function ActiveSessionView({
|
|
|
34901
34898
|
onCopyRoomId,
|
|
34902
34899
|
onStopCollaboration
|
|
34903
34900
|
}) {
|
|
34904
|
-
const { t } = reactI18next.useTranslation(), viewerOptions =
|
|
34901
|
+
const { t } = reactI18next.useTranslation(), viewerOptions = chunkE55VEC37_js.useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" }), sessionUsers = chunk4SPZ5IZN_js.buildActiveSessionUsers({
|
|
34905
34902
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
34906
34903
|
localUserInitials: viewerOptions.general.userInitials,
|
|
34907
34904
|
localUserColor: collab.config.userColor,
|
|
@@ -35000,7 +34997,7 @@ function StartSessionForm({
|
|
|
35000
34997
|
onRetry
|
|
35001
34998
|
}) {
|
|
35002
34999
|
const { t } = reactI18next.useTranslation();
|
|
35003
|
-
const { viewportWidth } =
|
|
35000
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
35004
35001
|
const tabBtnStyle = { minHeight: chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth) };
|
|
35005
35002
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
35006
35003
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -35144,9 +35141,9 @@ function ShareDialog({
|
|
|
35144
35141
|
const [invitation, setInvitation] = React20.useState("");
|
|
35145
35142
|
const [copied, setCopied] = React20.useState(false);
|
|
35146
35143
|
const dialogRef = React20.useRef(null);
|
|
35147
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
35144
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
35148
35145
|
useModalFocus(open, dialogRef, onClose);
|
|
35149
|
-
const { viewportWidth, viewportHeight } =
|
|
35146
|
+
const { viewportWidth, viewportHeight } = chunkE55VEC37_js.useIsMobile();
|
|
35150
35147
|
const touchTargetPx = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
35151
35148
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
35152
35149
|
const stickyFooterClass = chunk4SPZ5IZN_js.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -35432,12 +35429,12 @@ function HyperlinkEditDialog({
|
|
|
35432
35429
|
onCancel
|
|
35433
35430
|
}) {
|
|
35434
35431
|
const { t } = reactI18next.useTranslation();
|
|
35435
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
35432
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onCancel);
|
|
35436
35433
|
const inputRef = React20.useRef(null);
|
|
35437
|
-
const detectedType =
|
|
35438
|
-
const emailParts =
|
|
35439
|
-
const detectedSlide =
|
|
35440
|
-
const detectedVerb = initialAction ?
|
|
35434
|
+
const detectedType = chunkE55VEC37_js.detectTargetType(initialUrl, initialAction);
|
|
35435
|
+
const emailParts = chunkE55VEC37_js.parseEmailUrl(initialUrl || "");
|
|
35436
|
+
const detectedSlide = chunkE55VEC37_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
35437
|
+
const detectedVerb = initialAction ? chunkE55VEC37_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
35441
35438
|
const [targetType, setTargetType] = React20.useState(detectedType);
|
|
35442
35439
|
const [url, setUrl] = React20.useState(
|
|
35443
35440
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -35468,7 +35465,7 @@ function HyperlinkEditDialog({
|
|
|
35468
35465
|
actionVerb
|
|
35469
35466
|
});
|
|
35470
35467
|
};
|
|
35471
|
-
const tabCls = (active) =>
|
|
35468
|
+
const tabCls = (active) => chunk7FBKS7OS_js.cn(
|
|
35472
35469
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
35473
35470
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
35474
35471
|
);
|
|
@@ -35714,7 +35711,7 @@ function ViewerBottomPanels({
|
|
|
35714
35711
|
hiddenActions,
|
|
35715
35712
|
notesStyle
|
|
35716
35713
|
}) {
|
|
35717
|
-
const { isHidden } =
|
|
35714
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(hiddenActions);
|
|
35718
35715
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
35719
35716
|
onResizeBottom && !isSlideNotesCollapsed && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "vertical", onResize: onResizeBottom }),
|
|
35720
35717
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -35907,8 +35904,8 @@ function ViewerInspector({
|
|
|
35907
35904
|
function TitleBar(p) {
|
|
35908
35905
|
const { t } = reactI18next.useTranslation();
|
|
35909
35906
|
const editing = (p.mode === "edit" || p.mode === "master") && p.canEdit;
|
|
35910
|
-
const { isHidden } =
|
|
35911
|
-
const quickAccess =
|
|
35907
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(p.hiddenActions);
|
|
35908
|
+
const quickAccess = chunkE55VEC37_js.useViewerOptionsContext().quickAccess;
|
|
35912
35909
|
const [searchQuery, setSearchQuery] = React20.useState("");
|
|
35913
35910
|
const [searchFocused, setSearchFocused] = React20.useState(false);
|
|
35914
35911
|
const searchRef = React20.useRef(null);
|
|
@@ -35964,7 +35961,7 @@ function TitleBar(p) {
|
|
|
35964
35961
|
role: "switch",
|
|
35965
35962
|
"aria-checked": p.autosaveEnabled,
|
|
35966
35963
|
onClick: p.onToggleAutosave,
|
|
35967
|
-
className:
|
|
35964
|
+
className: chunk7FBKS7OS_js.cn(
|
|
35968
35965
|
chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.toggleTrack,
|
|
35969
35966
|
p.autosaveEnabled ? chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.toggleTrackOn : chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.toggleTrackOff
|
|
35970
35967
|
),
|
|
@@ -35973,7 +35970,7 @@ function TitleBar(p) {
|
|
|
35973
35970
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35974
35971
|
"span",
|
|
35975
35972
|
{
|
|
35976
|
-
className:
|
|
35973
|
+
className: chunk7FBKS7OS_js.cn(
|
|
35977
35974
|
chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.toggleKnob,
|
|
35978
35975
|
p.autosaveEnabled ? chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.toggleKnobOn : chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.toggleKnobOff
|
|
35979
35976
|
)
|
|
@@ -36029,7 +36026,7 @@ function TitleBar(p) {
|
|
|
36029
36026
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36030
36027
|
"span",
|
|
36031
36028
|
{
|
|
36032
|
-
className:
|
|
36029
|
+
className: chunk7FBKS7OS_js.cn(
|
|
36033
36030
|
chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.statusText,
|
|
36034
36031
|
p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.statusError,
|
|
36035
36032
|
p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.statusSaving
|
|
@@ -36043,7 +36040,7 @@ function TitleBar(p) {
|
|
|
36043
36040
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
36044
36041
|
"div",
|
|
36045
36042
|
{
|
|
36046
|
-
className:
|
|
36043
|
+
className: chunk7FBKS7OS_js.cn(
|
|
36047
36044
|
chunk4SPZ5IZN_js.TITLE_BAR_CLASSES.searchBox,
|
|
36048
36045
|
(searchFocused || p.findReplaceOpen) && "text-foreground bg-background"
|
|
36049
36046
|
),
|
|
@@ -36208,7 +36205,7 @@ function ViewerToolbarSection(props) {
|
|
|
36208
36205
|
[activeSlide, propertyHandlers]
|
|
36209
36206
|
);
|
|
36210
36207
|
const scopedLayoutOptions = React20__default.default.useMemo(
|
|
36211
|
-
() =>
|
|
36208
|
+
() => chunkE55VEC37_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
36212
36209
|
[s.layoutOptions, activeSlide]
|
|
36213
36210
|
);
|
|
36214
36211
|
const handleResetSlide = React20.useCallback(() => {
|
|
@@ -36689,7 +36686,7 @@ function EquationEditorDialog({
|
|
|
36689
36686
|
existingOmml
|
|
36690
36687
|
}) {
|
|
36691
36688
|
const { t } = reactI18next.useTranslation();
|
|
36692
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
36689
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
36693
36690
|
const initialLatex = React20.useMemo(() => {
|
|
36694
36691
|
if (!existingOmml) {
|
|
36695
36692
|
return "";
|
|
@@ -36811,7 +36808,7 @@ function EquationEditorDialog({
|
|
|
36811
36808
|
{
|
|
36812
36809
|
type: "button",
|
|
36813
36810
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
36814
|
-
className:
|
|
36811
|
+
className: chunk7FBKS7OS_js.cn(
|
|
36815
36812
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
36816
36813
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
36817
36814
|
),
|
|
@@ -36895,7 +36892,7 @@ function InsertSmartArtDialog({
|
|
|
36895
36892
|
onInsert
|
|
36896
36893
|
}) {
|
|
36897
36894
|
const { t } = reactI18next.useTranslation();
|
|
36898
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
36895
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
36899
36896
|
const [activeCategory, setActiveCategory] = React20.useState("list");
|
|
36900
36897
|
const [selectedLayout, setSelectedLayout] = React20.useState(null);
|
|
36901
36898
|
const dialogRef = React20.useRef(null);
|
|
@@ -36976,7 +36973,7 @@ function InsertSmartArtDialog({
|
|
|
36976
36973
|
setActiveCategory(cat.id);
|
|
36977
36974
|
setSelectedLayout(null);
|
|
36978
36975
|
},
|
|
36979
|
-
className:
|
|
36976
|
+
className: chunk7FBKS7OS_js.cn(
|
|
36980
36977
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
36981
36978
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
36982
36979
|
),
|
|
@@ -37004,7 +37001,7 @@ function InsertSmartArtDialog({
|
|
|
37004
37001
|
onInsert(preset.layout, preset.defaultItems);
|
|
37005
37002
|
onClose();
|
|
37006
37003
|
},
|
|
37007
|
-
className:
|
|
37004
|
+
className: chunk7FBKS7OS_js.cn(
|
|
37008
37005
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
37009
37006
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
37010
37007
|
),
|
|
@@ -37034,7 +37031,7 @@ function InsertSmartArtDialog({
|
|
|
37034
37031
|
type: "button",
|
|
37035
37032
|
onClick: handleInsert,
|
|
37036
37033
|
disabled: !selectedLayout,
|
|
37037
|
-
className:
|
|
37034
|
+
className: chunk7FBKS7OS_js.cn(
|
|
37038
37035
|
"px-3 py-1.5 text-xs rounded transition-colors",
|
|
37039
37036
|
selectedLayout ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
37040
37037
|
),
|
|
@@ -37607,8 +37604,8 @@ function ViewerCanvasArea(props) {
|
|
|
37607
37604
|
aiCanvasActive = false
|
|
37608
37605
|
} = props;
|
|
37609
37606
|
const { t } = reactI18next.useTranslation();
|
|
37610
|
-
const { isHidden } =
|
|
37611
|
-
const viewerOptions =
|
|
37607
|
+
const { isHidden } = chunkE55VEC37_js.useToolbarVisibility(hiddenActions);
|
|
37608
|
+
const viewerOptions = chunkE55VEC37_js.useViewerOptionsContext();
|
|
37612
37609
|
const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
|
|
37613
37610
|
const effectiveTemplateElements = mode === "master" ? [] : templateElements;
|
|
37614
37611
|
const fieldContext = React20.useMemo(
|
|
@@ -37740,7 +37737,7 @@ ${url}`)) {
|
|
|
37740
37737
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
37741
37738
|
}
|
|
37742
37739
|
}, [mode, presentation, s]);
|
|
37743
|
-
const swipe =
|
|
37740
|
+
const swipe = chunkE55VEC37_js.useSwipeNavigation({
|
|
37744
37741
|
enabled: swipeEnabled,
|
|
37745
37742
|
onNext: handleSwipeNext,
|
|
37746
37743
|
onPrev: handleSwipePrev
|
|
@@ -38068,7 +38065,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
38068
38065
|
var AiChatPanel = React20.lazy(async () => {
|
|
38069
38066
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
38070
38067
|
import('@ai-sdk/react'),
|
|
38071
|
-
import('./AiChatPanel-
|
|
38068
|
+
import('./AiChatPanel-GYH43XWW.js')
|
|
38072
38069
|
]);
|
|
38073
38070
|
function BoundAiChatPanel(props) {
|
|
38074
38071
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -38538,7 +38535,7 @@ function MobileDismissSheet({
|
|
|
38538
38535
|
className,
|
|
38539
38536
|
children
|
|
38540
38537
|
}) {
|
|
38541
|
-
const { dragY, handlers } =
|
|
38538
|
+
const { dragY, handlers } = chunkE55VEC37_js.useSheetDismissDrag(onClose);
|
|
38542
38539
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
38543
38540
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
38544
38541
|
"button",
|
|
@@ -38807,7 +38804,7 @@ function ThemeThumbnail({
|
|
|
38807
38804
|
{
|
|
38808
38805
|
type: "button",
|
|
38809
38806
|
onClick,
|
|
38810
|
-
className:
|
|
38807
|
+
className: chunk7FBKS7OS_js.cn(
|
|
38811
38808
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
38812
38809
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
38813
38810
|
),
|
|
@@ -39725,7 +39722,7 @@ function MobileBottomBar({
|
|
|
39725
39722
|
type: "button",
|
|
39726
39723
|
onClick,
|
|
39727
39724
|
disabled,
|
|
39728
|
-
className:
|
|
39725
|
+
className: chunk7FBKS7OS_js.cn(
|
|
39729
39726
|
"relative flex flex-col items-center justify-center gap-0.5 flex-1 min-h-[56px] py-1.5 text-[10px] font-medium transition-colors active:scale-95 disabled:opacity-40 disabled:pointer-events-none",
|
|
39730
39727
|
active ? "text-primary" : "text-muted-foreground hover:text-foreground"
|
|
39731
39728
|
),
|
|
@@ -39776,7 +39773,7 @@ function MobileChromeOverlay(props) {
|
|
|
39776
39773
|
slideSectionGroups,
|
|
39777
39774
|
canEdit,
|
|
39778
39775
|
commentCount
|
|
39779
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
39776
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkE55VEC37_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
39780
39777
|
s.setIsSlidesPaneOpen(false);
|
|
39781
39778
|
s.setIsInspectorPaneOpen(false);
|
|
39782
39779
|
s.setIsSlideNotesCollapsed(true);
|
|
@@ -40042,7 +40039,7 @@ function AddinTable({
|
|
|
40042
40039
|
"tr",
|
|
40043
40040
|
{
|
|
40044
40041
|
onClick: () => onSelect(row.id),
|
|
40045
|
-
className:
|
|
40042
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40046
40043
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
40047
40044
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
40048
40045
|
),
|
|
@@ -40108,15 +40105,15 @@ function ControlRow({
|
|
|
40108
40105
|
onOptionChange
|
|
40109
40106
|
}) {
|
|
40110
40107
|
const { t } = reactI18next.useTranslation();
|
|
40111
|
-
const { viewportWidth } =
|
|
40108
|
+
const { viewportWidth } = chunkE55VEC37_js.useIsMobile();
|
|
40112
40109
|
const fieldMinHeight = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
40113
40110
|
const value = readValue(options, control);
|
|
40114
40111
|
const label = t(control.labelKey);
|
|
40115
40112
|
const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
|
|
40116
|
-
const rowClass =
|
|
40113
|
+
const rowClass = chunk7FBKS7OS_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
|
|
40117
40114
|
const rowStyle = { minHeight: fieldMinHeight };
|
|
40118
40115
|
if (control.kind === "toggle") {
|
|
40119
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className:
|
|
40116
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunk7FBKS7OS_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
|
|
40120
40117
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
|
|
40121
40118
|
label,
|
|
40122
40119
|
info
|
|
@@ -40254,7 +40251,7 @@ function CommandList({
|
|
|
40254
40251
|
role: "option",
|
|
40255
40252
|
"aria-selected": selectedId === id,
|
|
40256
40253
|
onClick: () => onSelect(id),
|
|
40257
|
-
className:
|
|
40254
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40258
40255
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
40259
40256
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
40260
40257
|
),
|
|
@@ -40398,7 +40395,7 @@ function OptionsRibbonPane({
|
|
|
40398
40395
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
40399
40396
|
"label",
|
|
40400
40397
|
{
|
|
40401
|
-
className:
|
|
40398
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40402
40399
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
40403
40400
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
40404
40401
|
),
|
|
@@ -40434,7 +40431,7 @@ function OptionsRibbonPane({
|
|
|
40434
40431
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunk4SPZ5IZN_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
40435
40432
|
"div",
|
|
40436
40433
|
{
|
|
40437
|
-
className:
|
|
40434
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40438
40435
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
40439
40436
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
40440
40437
|
),
|
|
@@ -40566,7 +40563,7 @@ function SettingsAppearanceTab({
|
|
|
40566
40563
|
type: "button",
|
|
40567
40564
|
onClick: () => onSelectTheme(entry.key),
|
|
40568
40565
|
"aria-pressed": isActive,
|
|
40569
|
-
className:
|
|
40566
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40570
40567
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
40571
40568
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
40572
40569
|
),
|
|
@@ -40583,7 +40580,7 @@ function SettingsAppearanceTab({
|
|
|
40583
40580
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
40584
40581
|
"span",
|
|
40585
40582
|
{
|
|
40586
|
-
className:
|
|
40583
|
+
className: chunk7FBKS7OS_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
40587
40584
|
children: t(entry.labelKey)
|
|
40588
40585
|
}
|
|
40589
40586
|
)
|
|
@@ -40663,7 +40660,7 @@ function SettingsLanguageTab({
|
|
|
40663
40660
|
type: "button",
|
|
40664
40661
|
onClick: () => onSelectLocale(locale.code),
|
|
40665
40662
|
"aria-pressed": isActive,
|
|
40666
|
-
className:
|
|
40663
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40667
40664
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
40668
40665
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
40669
40666
|
),
|
|
@@ -40702,8 +40699,8 @@ function SettingsDialog({
|
|
|
40702
40699
|
}) {
|
|
40703
40700
|
const [activeTabId, setActiveTabId] = React20.useState("general");
|
|
40704
40701
|
const { t } = reactI18next.useTranslation();
|
|
40705
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
40706
|
-
const { viewportWidth, viewportHeight } =
|
|
40702
|
+
const { panelStyle, handlers: dragHandlers } = chunkE55VEC37_js.useModalDismissDrag(onClose);
|
|
40703
|
+
const { viewportWidth, viewportHeight } = chunkE55VEC37_js.useIsMobile();
|
|
40707
40704
|
const touchTargetPx = chunk4SPZ5IZN_js.getDensePanelTouchTargetPx(viewportWidth);
|
|
40708
40705
|
const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
|
|
40709
40706
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
@@ -40807,7 +40804,7 @@ function SettingsDialog({
|
|
|
40807
40804
|
onClick: () => setActiveTabId(tab.id),
|
|
40808
40805
|
"aria-current": activeTabId === tab.id,
|
|
40809
40806
|
style: navBtnStyle,
|
|
40810
|
-
className:
|
|
40807
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40811
40808
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
40812
40809
|
activeTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
40813
40810
|
),
|
|
@@ -40822,7 +40819,7 @@ function SettingsDialog({
|
|
|
40822
40819
|
onClick: () => setActiveTabId(AI_TAB_ID),
|
|
40823
40820
|
"aria-current": activeTabId === AI_TAB_ID,
|
|
40824
40821
|
style: navBtnStyle,
|
|
40825
|
-
className:
|
|
40822
|
+
className: chunk7FBKS7OS_js.cn(
|
|
40826
40823
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
40827
40824
|
activeTabId === AI_TAB_ID ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
40828
40825
|
),
|
|
@@ -41248,7 +41245,7 @@ function useMasterViewCrud(input) {
|
|
|
41248
41245
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
41249
41246
|
const master = slideMasters[target.masterIndex];
|
|
41250
41247
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
41251
|
-
const next =
|
|
41248
|
+
const next = chunkE55VEC37_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
41252
41249
|
if (!next) {
|
|
41253
41250
|
return;
|
|
41254
41251
|
}
|
|
@@ -41421,7 +41418,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41421
41418
|
}
|
|
41422
41419
|
const registeredCodes = i18n.options.resources ? Object.keys(i18n.options.resources) : i18n.languages ?? ["en"];
|
|
41423
41420
|
return registeredCodes.map(
|
|
41424
|
-
(code) =>
|
|
41421
|
+
(code) => chunk64FUV37N_js.LOCALE_CATALOG.find((entry) => entry.code === code) ?? {
|
|
41425
41422
|
code,
|
|
41426
41423
|
label: code,
|
|
41427
41424
|
nativeLabel: code
|
|
@@ -41468,7 +41465,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41468
41465
|
}
|
|
41469
41466
|
})();
|
|
41470
41467
|
}, []);
|
|
41471
|
-
const { optionsStore, options: viewerOptions } =
|
|
41468
|
+
const { optionsStore, options: viewerOptions } = chunkE55VEC37_js.useViewerOptions();
|
|
41472
41469
|
const [protectedViewOverridden, setProtectedViewOverridden] = React20.useState(false);
|
|
41473
41470
|
React20.useEffect(() => {
|
|
41474
41471
|
setProtectedViewOverridden(false);
|
|
@@ -41477,8 +41474,8 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41477
41474
|
const handleEnableEditing = React20.useCallback(() => {
|
|
41478
41475
|
setProtectedViewOverridden(true);
|
|
41479
41476
|
}, []);
|
|
41480
|
-
const readOnlyRec =
|
|
41481
|
-
const compatToastsState =
|
|
41477
|
+
const readOnlyRec = chunkE55VEC37_js.useReadOnlyRecommendationState(content);
|
|
41478
|
+
const compatToastsState = chunkE55VEC37_js.useCompatibilityToastsState();
|
|
41482
41479
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
41483
41480
|
const canEdit = hostCanEdit && !isProtectedView && !readOnlyRec.locked;
|
|
41484
41481
|
const [isSettingsOpen, setIsSettingsOpen] = React20.useState(false);
|
|
@@ -41491,8 +41488,8 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41491
41488
|
filePath
|
|
41492
41489
|
});
|
|
41493
41490
|
const [isShareDialogOpen, setIsShareDialogOpen] = React20.useState(false);
|
|
41494
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
41495
|
-
const state =
|
|
41491
|
+
const { reducedMotion, toggleReducedMotion } = chunkE55VEC37_js.useReducedMotion();
|
|
41492
|
+
const state = chunkE55VEC37_js.useViewerState({ content, canEdit });
|
|
41496
41493
|
const {
|
|
41497
41494
|
containerRef,
|
|
41498
41495
|
mode,
|
|
@@ -41630,16 +41627,16 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41630
41627
|
clearIfRequested();
|
|
41631
41628
|
};
|
|
41632
41629
|
}, [viewerOptions, handleClearOptionsCache]);
|
|
41633
|
-
const mobile =
|
|
41630
|
+
const mobile = chunkE55VEC37_js.useIsMobile();
|
|
41634
41631
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
41635
|
-
const resizablePanels =
|
|
41632
|
+
const resizablePanels = chunkE55VEC37_js.useResizablePanels();
|
|
41636
41633
|
const {
|
|
41637
41634
|
gridSpacingPx,
|
|
41638
41635
|
visibleSlideIndexes,
|
|
41639
41636
|
slideSectionGroups,
|
|
41640
41637
|
masterPseudoSlide,
|
|
41641
41638
|
authoredRange
|
|
41642
|
-
} =
|
|
41639
|
+
} = chunkE55VEC37_js.useDerivedSlideState({
|
|
41643
41640
|
slides,
|
|
41644
41641
|
sections: state.sections,
|
|
41645
41642
|
customShows: state.customShows,
|
|
@@ -41663,7 +41660,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41663
41660
|
state.isDrawingRef
|
|
41664
41661
|
]
|
|
41665
41662
|
);
|
|
41666
|
-
const zoom =
|
|
41663
|
+
const zoom = chunkE55VEC37_js.useZoomViewport({
|
|
41667
41664
|
canvasSize,
|
|
41668
41665
|
selectedElements: state.selectedElements,
|
|
41669
41666
|
fitPadding: props.fitPadding,
|
|
@@ -41673,7 +41670,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41673
41670
|
const markDocumentDirty = React20.useCallback(() => {
|
|
41674
41671
|
setIsDirty(true);
|
|
41675
41672
|
}, [setIsDirty]);
|
|
41676
|
-
const history =
|
|
41673
|
+
const history = chunkE55VEC37_js.useEditorHistory({
|
|
41677
41674
|
slides,
|
|
41678
41675
|
canvasSize,
|
|
41679
41676
|
activeSlideIndex,
|
|
@@ -41699,7 +41696,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41699
41696
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
41700
41697
|
setHeaderFooter: state.setHeaderFooter
|
|
41701
41698
|
});
|
|
41702
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
41699
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkE55VEC37_js.usePresentationSetup({
|
|
41703
41700
|
mode,
|
|
41704
41701
|
slides,
|
|
41705
41702
|
visibleSlideIndexes,
|
|
@@ -41735,7 +41732,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41735
41732
|
onSetActiveCustomShowId: state.setActiveCustomShowId,
|
|
41736
41733
|
onAddRunProgramNotice: runProgramNoticesState.addNotice
|
|
41737
41734
|
});
|
|
41738
|
-
|
|
41735
|
+
chunkE55VEC37_js.useTouchGestures({
|
|
41739
41736
|
targetRef: zoom.canvasViewportRef,
|
|
41740
41737
|
currentScale: zoom.scale,
|
|
41741
41738
|
callbacks: {
|
|
@@ -41757,7 +41754,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41757
41754
|
},
|
|
41758
41755
|
enabled: isTouchDevice
|
|
41759
41756
|
});
|
|
41760
|
-
const dialogs =
|
|
41757
|
+
const dialogs = chunkE55VEC37_js.useViewerDialogs({
|
|
41761
41758
|
mode,
|
|
41762
41759
|
slides,
|
|
41763
41760
|
activeSlide,
|
|
@@ -41799,7 +41796,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41799
41796
|
zoom.handleZoomToFit();
|
|
41800
41797
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
41801
41798
|
}, [mode]);
|
|
41802
|
-
const editorOps =
|
|
41799
|
+
const editorOps = chunkE55VEC37_js.useEditorOperations({
|
|
41803
41800
|
state,
|
|
41804
41801
|
history,
|
|
41805
41802
|
zoom,
|
|
@@ -41839,7 +41836,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41839
41836
|
setIsEncryptedDialogOpen,
|
|
41840
41837
|
handlerRef,
|
|
41841
41838
|
loadVersion
|
|
41842
|
-
} =
|
|
41839
|
+
} = chunkE55VEC37_js.useViewerIntegration({
|
|
41843
41840
|
state,
|
|
41844
41841
|
zoom,
|
|
41845
41842
|
history,
|
|
@@ -41897,7 +41894,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41897
41894
|
onSelectionChange,
|
|
41898
41895
|
onSlideCountChange
|
|
41899
41896
|
});
|
|
41900
|
-
const viewPreferencesSync =
|
|
41897
|
+
const viewPreferencesSync = chunkE55VEC37_js.useViewPreferencesSync({
|
|
41901
41898
|
loadVersion,
|
|
41902
41899
|
viewProperties: state.viewProperties,
|
|
41903
41900
|
setViewProperties: state.setViewProperties,
|
|
@@ -41934,7 +41931,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
41934
41931
|
},
|
|
41935
41932
|
[state]
|
|
41936
41933
|
);
|
|
41937
|
-
const layoutSwitching =
|
|
41934
|
+
const layoutSwitching = chunkE55VEC37_js.useLayoutSwitching({
|
|
41938
41935
|
handler: handlerRef.current,
|
|
41939
41936
|
slides,
|
|
41940
41937
|
activeSlideIndex,
|
|
@@ -42028,7 +42025,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
42028
42025
|
style: themeStyle,
|
|
42029
42026
|
"data-pptx-viewer": "",
|
|
42030
42027
|
"aria-busy": loading,
|
|
42031
|
-
className:
|
|
42028
|
+
className: chunk7FBKS7OS_js.cn(
|
|
42032
42029
|
"h-full w-full bg-background text-foreground relative",
|
|
42033
42030
|
...chunk4SPZ5IZN_js.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
42034
42031
|
),
|
|
@@ -42389,7 +42386,7 @@ var PowerPointViewer = React20.forwardRef(
|
|
|
42389
42386
|
// Nothing previously provided it, so every one of those consumers was
|
|
42390
42387
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
42391
42388
|
// the user changed in the Options dialog.
|
|
42392
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42389
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkE55VEC37_js.ViewerOptionsContext.Provider, { value: viewerOptions, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(SmartArt3DContext.Provider, { value: effective3D.smartArt3D, children: /* @__PURE__ */ jsxRuntime.jsx(SurfaceChart3DContext.Provider, { value: effective3D.surfaceChart3D, children: /* @__PURE__ */ jsxRuntime.jsx(BarChart3DContext.Provider, { value: effective3D.barChart3D, children: /* @__PURE__ */ jsxRuntime.jsx(LineChart3DContext.Provider, { value: effective3D.lineChart3D, children: /* @__PURE__ */ jsxRuntime.jsx(AreaChart3DContext.Provider, { value: effective3D.areaChart3D, children: /* @__PURE__ */ jsxRuntime.jsx(PieChart3DContext.Provider, { value: effective3D.pieChart3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42393
42390
|
CollaborationProvider,
|
|
42394
42391
|
{
|
|
42395
42392
|
config: collaboration,
|
|
@@ -42485,7 +42482,7 @@ function CollaborationDocumentSync({
|
|
|
42485
42482
|
const deckSaveStateRef = React20.useRef(deckSaveState);
|
|
42486
42483
|
deckSaveStateRef.current = deckSaveState;
|
|
42487
42484
|
const getSaveOptions = React20.useCallback(() => chunk4SPZ5IZN_js.buildDeckSaveOptions(deckSaveStateRef.current), []);
|
|
42488
|
-
|
|
42485
|
+
chunkE55VEC37_js.useYjsDocumentSync({
|
|
42489
42486
|
doc: collab?.doc ?? null,
|
|
42490
42487
|
slides,
|
|
42491
42488
|
templateElementsBySlideId,
|
|
@@ -42498,7 +42495,7 @@ function CollaborationDocumentSync({
|
|
|
42498
42495
|
loadVersion,
|
|
42499
42496
|
loadOrigin
|
|
42500
42497
|
});
|
|
42501
|
-
|
|
42498
|
+
chunkE55VEC37_js.useCollaborationLivePatch({
|
|
42502
42499
|
patcher: livePatcher,
|
|
42503
42500
|
doc: collab?.doc ?? null,
|
|
42504
42501
|
isConnected: collab?.status === "connected",
|
|
@@ -42512,13 +42509,13 @@ function CollaborationFollowLayer({
|
|
|
42512
42509
|
slideCount
|
|
42513
42510
|
}) {
|
|
42514
42511
|
const collab = useCollaboration();
|
|
42515
|
-
const { followedClientId, followUser } =
|
|
42512
|
+
const { followedClientId, followUser } = chunkE55VEC37_js.useFollowMode({
|
|
42516
42513
|
collab,
|
|
42517
42514
|
activeSlideIndex,
|
|
42518
42515
|
setActiveSlideIndex,
|
|
42519
42516
|
slideCount
|
|
42520
42517
|
});
|
|
42521
|
-
|
|
42518
|
+
chunkE55VEC37_js.useBroadcastFollower({
|
|
42522
42519
|
collab,
|
|
42523
42520
|
activeSlideIndex,
|
|
42524
42521
|
setActiveSlideIndex,
|