pptx-react-viewer 4.62.1 → 4.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +9 -0
- package/dist/{chunk-HNNMNFA2.js → chunk-G5XPJCS5.js} +1 -1
- package/dist/chunk-G5XPJCS5.js.br +0 -0
- package/dist/{chunk-HNNMNFA2.js.gz → chunk-G5XPJCS5.js.gz} +0 -0
- package/dist/{chunk-KHFBKZWP.mjs → chunk-XCOYNPXR.mjs} +1 -1
- package/dist/chunk-XCOYNPXR.mjs.br +0 -0
- package/dist/chunk-XCOYNPXR.mjs.gz +0 -0
- package/dist/index.js +21 -21
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/viewer/index.js +5 -5
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +1 -1
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +5 -4
- package/src/styles/theme.css +205 -0
- package/dist/chunk-HNNMNFA2.js.br +0 -0
- package/dist/chunk-KHFBKZWP.mjs.br +0 -0
- package/dist/chunk-KHFBKZWP.mjs.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ A release listed with no entries carried no Conventional Commit in this package'
|
|
|
7
7
|
scope: scripts/release-plan.mjs releases whenever any published file changes, not only on
|
|
8
8
|
conventional commits.
|
|
9
9
|
|
|
10
|
+
## [4.63.0](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.63.0) - 2026-11-04
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **embedding:** Connect office products to shared onedrive storage ([b8620c1](https://github.com/ChristopherVR/ooxml/commit/b8620c13a4903aa27fed365d113153cad76ed29f))
|
|
15
|
+
- **collab:** Merge concurrent onedrive document edits ([194529b](https://github.com/ChristopherVR/ooxml/commit/194529b06c63f994eed5d1d4b7e82759e17a704b))
|
|
16
|
+
|
|
17
|
+
## [4.62.2](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.62.2) - 2026-11-03
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **release:** Publish pptx-angular-viewer from its built dist ([#240](https://github.com/ChristopherVR/ooxml/issues/240)) ([8015762](https://github.com/ChristopherVR/ooxml/commit/8015762a9eb2852cbaa4bc57bd0e7d6912802bd3))
|
|
22
|
+
|
|
10
23
|
## [4.62.1](https://github.com/ChristopherVR/ooxml/releases/tag/pptx-react-viewer@4.62.1) - 2026-11-03
|
|
11
24
|
|
|
12
25
|
### Styling
|
package/README.md
CHANGED
|
@@ -353,3 +353,12 @@ for registration and runtime switching. Existing English imports are unchanged.
|
|
|
353
353
|
## License
|
|
354
354
|
|
|
355
355
|
[Apache-2.0](LICENSE). Please keep the [`NOTICE`](NOTICE) file with redistributions.
|
|
356
|
+
|
|
357
|
+
## OneDrive integration
|
|
358
|
+
|
|
359
|
+
Use the optional shared `ooxml-core/embedding/onedrive` connection with host-supplied Microsoft
|
|
360
|
+
sign-in. See the [Office package and integration reference](https://github.com/ChristopherVR/ooxml/blob/main/docs/onedrive-integration.md#powerpoint-pptx)
|
|
361
|
+
for this product's load/save API, native storage wiring, sharing permissions and conflict recovery.
|
|
362
|
+
The [testing guide](https://github.com/ChristopherVR/ooxml/blob/main/docs/onedrive-testing.md)
|
|
363
|
+
separates test-local transports from live Microsoft acceptance. No simulation service is shipped;
|
|
364
|
+
OneDrive storage does not provide Microsoft Office coauthoring or automatic document merging.
|
|
@@ -2795,7 +2795,7 @@ function AccountPage() {
|
|
|
2795
2795
|
return void 0;
|
|
2796
2796
|
});
|
|
2797
2797
|
};
|
|
2798
|
-
const version = "4.
|
|
2798
|
+
const version = "4.63.0" ;
|
|
2799
2799
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2800
2800
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
2801
2801
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
Binary file
|
|
Binary file
|
|
@@ -2790,7 +2790,7 @@ function AccountPage() {
|
|
|
2790
2790
|
return void 0;
|
|
2791
2791
|
});
|
|
2792
2792
|
};
|
|
2793
|
-
const version = "4.
|
|
2793
|
+
const version = "4.63.0" ;
|
|
2794
2794
|
return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2795
2795
|
/* @__PURE__ */ jsxs("section", { className: cardClass, children: [
|
|
2796
2796
|
/* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
Binary file
|
|
Binary file
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkG5XPJCS5_js = require('./chunk-G5XPJCS5.js');
|
|
4
4
|
require('./chunk-F6WCYCHV.js');
|
|
5
5
|
var chunkTXVGYIO6_js = require('./chunk-TXVGYIO6.js');
|
|
6
6
|
var chunk5KFSMXI4_js = require('./chunk-5KFSMXI4.js');
|
|
@@ -12,83 +12,83 @@ var i18n = require('ooxml-ui/pptx/i18n');
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, "PowerPointViewer", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkG5XPJCS5_js.PowerPointViewer; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "PptxI18nProvider", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkG5XPJCS5_js.PptxI18nProvider; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "SlideCanvas", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkG5XPJCS5_js.SlideCanvas; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "SlideTemplateGalleryDialog", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkG5XPJCS5_js.SlideTemplateGalleryDialog; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "SlideTemplatePreview", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkG5XPJCS5_js.SlideTemplatePreview; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "SlidesPane", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunkG5XPJCS5_js.SlidesPaneSidebar; }
|
|
36
36
|
});
|
|
37
37
|
Object.defineProperty(exports, "THEME_CATALOG", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunkG5XPJCS5_js.THEME_CATALOG; }
|
|
40
40
|
});
|
|
41
41
|
Object.defineProperty(exports, "Toolbar", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunkG5XPJCS5_js.Toolbar; }
|
|
44
44
|
});
|
|
45
45
|
Object.defineProperty(exports, "ViewerThemeProvider", {
|
|
46
46
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
47
|
+
get: function () { return chunkG5XPJCS5_js.ViewerThemeProvider; }
|
|
48
48
|
});
|
|
49
49
|
Object.defineProperty(exports, "defaultCssVars", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkG5XPJCS5_js.defaultCssVars; }
|
|
52
52
|
});
|
|
53
53
|
Object.defineProperty(exports, "defaultRadius", {
|
|
54
54
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
55
|
+
get: function () { return chunkG5XPJCS5_js.defaultRadius; }
|
|
56
56
|
});
|
|
57
57
|
Object.defineProperty(exports, "defaultThemeColors", {
|
|
58
58
|
enumerable: true,
|
|
59
|
-
get: function () { return
|
|
59
|
+
get: function () { return chunkG5XPJCS5_js.defaultThemeColors; }
|
|
60
60
|
});
|
|
61
61
|
Object.defineProperty(exports, "resolveThemeCatalogEntry", {
|
|
62
62
|
enumerable: true,
|
|
63
|
-
get: function () { return
|
|
63
|
+
get: function () { return chunkG5XPJCS5_js.resolveThemeCatalogEntry; }
|
|
64
64
|
});
|
|
65
65
|
Object.defineProperty(exports, "themeToCssVars", {
|
|
66
66
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
67
|
+
get: function () { return chunkG5XPJCS5_js.themeToCssVars; }
|
|
68
68
|
});
|
|
69
69
|
Object.defineProperty(exports, "useViewerTheme", {
|
|
70
70
|
enumerable: true,
|
|
71
|
-
get: function () { return
|
|
71
|
+
get: function () { return chunkG5XPJCS5_js.useViewerTheme; }
|
|
72
72
|
});
|
|
73
73
|
Object.defineProperty(exports, "vermilionDarkColors", {
|
|
74
74
|
enumerable: true,
|
|
75
|
-
get: function () { return
|
|
75
|
+
get: function () { return chunkG5XPJCS5_js.vermilionDarkColors; }
|
|
76
76
|
});
|
|
77
77
|
Object.defineProperty(exports, "vermilionDarkTheme", {
|
|
78
78
|
enumerable: true,
|
|
79
|
-
get: function () { return
|
|
79
|
+
get: function () { return chunkG5XPJCS5_js.vermilionDarkTheme; }
|
|
80
80
|
});
|
|
81
81
|
Object.defineProperty(exports, "vermilionLightColors", {
|
|
82
82
|
enumerable: true,
|
|
83
|
-
get: function () { return
|
|
83
|
+
get: function () { return chunkG5XPJCS5_js.vermilionLightColors; }
|
|
84
84
|
});
|
|
85
85
|
Object.defineProperty(exports, "vermilionLightTheme", {
|
|
86
86
|
enumerable: true,
|
|
87
|
-
get: function () { return
|
|
87
|
+
get: function () { return chunkG5XPJCS5_js.vermilionLightTheme; }
|
|
88
88
|
});
|
|
89
89
|
Object.defineProperty(exports, "vermilionRadius", {
|
|
90
90
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
91
|
+
get: function () { return chunkG5XPJCS5_js.vermilionRadius; }
|
|
92
92
|
});
|
|
93
93
|
Object.defineProperty(exports, "renderToCanvas", {
|
|
94
94
|
enumerable: true,
|
package/dist/index.js.br
CHANGED
|
Binary file
|
package/dist/index.js.gz
CHANGED
|
Binary file
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PowerPointViewer, PptxI18nProvider, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, SlidesPaneSidebar as SlidesPane, THEME_CATALOG, Toolbar, ViewerThemeProvider, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from './chunk-
|
|
1
|
+
export { PowerPointViewer, PptxI18nProvider, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, SlidesPaneSidebar as SlidesPane, THEME_CATALOG, Toolbar, ViewerThemeProvider, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from './chunk-XCOYNPXR.mjs';
|
|
2
2
|
import './chunk-NE5JQMED.mjs';
|
|
3
3
|
export { renderToCanvas, useViewerBuildingBlocks } from './chunk-FYQVCABH.mjs';
|
|
4
4
|
export { getAnimationInitialStyle } from './chunk-MR3ZSEHS.mjs';
|
package/dist/index.mjs.br
CHANGED
|
Binary file
|
package/dist/index.mjs.gz
CHANGED
|
Binary file
|
package/dist/viewer/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkG5XPJCS5_js = require('../chunk-G5XPJCS5.js');
|
|
4
4
|
require('../chunk-F6WCYCHV.js');
|
|
5
5
|
var chunkTXVGYIO6_js = require('../chunk-TXVGYIO6.js');
|
|
6
6
|
var chunk5KFSMXI4_js = require('../chunk-5KFSMXI4.js');
|
|
@@ -11,19 +11,19 @@ var pptx = require('ooxml-ui/pptx');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "CollaborationStatusIndicator", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkG5XPJCS5_js.CollaborationStatusIndicator; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "PowerPointViewer", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkG5XPJCS5_js.PowerPointViewer; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "PptxI18nProvider", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkG5XPJCS5_js.PptxI18nProvider; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "UserAvatarBar", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkG5XPJCS5_js.UserAvatarBar; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "CollaborationProvider", {
|
|
29
29
|
enumerable: true,
|
package/dist/viewer/index.js.br
CHANGED
|
Binary file
|
package/dist/viewer/index.js.gz
CHANGED
|
Binary file
|
package/dist/viewer/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CollaborationStatusIndicator, PowerPointViewer, PptxI18nProvider, UserAvatarBar } from '../chunk-
|
|
1
|
+
export { CollaborationStatusIndicator, PowerPointViewer, PptxI18nProvider, UserAvatarBar } from '../chunk-XCOYNPXR.mjs';
|
|
2
2
|
import '../chunk-NE5JQMED.mjs';
|
|
3
3
|
export { CollaborationProvider, RemoteUserCursors, clearAudienceContent, isAudienceTab, loadAudienceContent, parseAudienceNonce, storeAudienceContent, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider } from '../chunk-FYQVCABH.mjs';
|
|
4
4
|
export { getAnimationInitialStyle } from '../chunk-MR3ZSEHS.mjs';
|
package/dist/viewer/index.mjs.br
CHANGED
|
Binary file
|
package/dist/viewer/index.mjs.gz
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pptx-react-viewer",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.63.0",
|
|
4
4
|
"description": "pptx-viewer for React: a PowerPoint viewer and editor component to render, edit, and export PPTX slides in the browser.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"editor",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"files": [
|
|
33
33
|
"dist/",
|
|
34
|
+
"src/styles/theme.css",
|
|
34
35
|
"CHANGELOG.md",
|
|
35
36
|
"LICENSE",
|
|
36
37
|
"NOTICE",
|
|
@@ -125,8 +126,8 @@
|
|
|
125
126
|
"clsx": "^2.1.1",
|
|
126
127
|
"dompurify": "^3.4.17",
|
|
127
128
|
"html2canvas-pro": "^2.5.4",
|
|
128
|
-
"ooxml-core": "^1.
|
|
129
|
-
"ooxml-ui": "^1.
|
|
129
|
+
"ooxml-core": "^1.38.0",
|
|
130
|
+
"ooxml-ui": "^1.40.0",
|
|
130
131
|
"opentype.js": "^2.0.0",
|
|
131
132
|
"tailwind-merge": "^3.7.0"
|
|
132
133
|
},
|
|
@@ -138,7 +139,7 @@
|
|
|
138
139
|
"@types/react": "^19.3.0",
|
|
139
140
|
"@types/react-dom": "^19.3.0",
|
|
140
141
|
"esbuild": "^0.28.2",
|
|
141
|
-
"pptx-viewer-core": "^4.
|
|
142
|
+
"pptx-viewer-core": "^4.14.0",
|
|
142
143
|
"tailwindcss": "^4.3.3",
|
|
143
144
|
"tsdown": "^0.23.4",
|
|
144
145
|
"tsup": "^9.0.0",
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* pptx-viewer: theme tokens
|
|
3
|
+
*
|
|
4
|
+
* Reusable @theme block that maps Tailwind semantic color tokens to --pptx-*
|
|
5
|
+
* CSS custom properties. Import this file into any Tailwind v4 entry-point
|
|
6
|
+
* that renders <PowerPointViewer>.
|
|
7
|
+
*
|
|
8
|
+
* @import "pptx-viewer/theme.css"; // from published package
|
|
9
|
+
* @import "../packages/react/src/styles/theme.css"; // from monorepo
|
|
10
|
+
*
|
|
11
|
+
* All colours follow shared Office tokens when the --pptx-* properties
|
|
12
|
+
* are not set. Override them via the `theme` prop on the component or by
|
|
13
|
+
* setting the custom properties in your own CSS.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
@theme inline {
|
|
17
|
+
/* ── Semantic colors ─────────────────────────────────────────────── */
|
|
18
|
+
--color-background: var(--pptx-background, var(--office-background, #ffffff));
|
|
19
|
+
--color-foreground: var(--pptx-foreground, var(--office-foreground, #1f2937));
|
|
20
|
+
|
|
21
|
+
--color-card: var(--pptx-card, var(--office-surface, #f3f4f6));
|
|
22
|
+
--color-card-foreground: var(--pptx-card-foreground, var(--office-foreground, #1f2937));
|
|
23
|
+
|
|
24
|
+
--color-popover: var(--pptx-popover, var(--office-popover, var(--office-background, #ffffff)));
|
|
25
|
+
--color-popover-foreground: var(
|
|
26
|
+
--pptx-popover-foreground,
|
|
27
|
+
var(--office-popover-foreground, var(--office-foreground, #1f2937))
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
--color-primary: var(--pptx-primary, var(--office-accent, #2563eb));
|
|
31
|
+
--color-primary-foreground: var(
|
|
32
|
+
--pptx-primary-foreground,
|
|
33
|
+
var(--office-accent-foreground, #ffffff)
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
--color-secondary: var(--pptx-secondary, var(--office-surface, #f3f4f6));
|
|
37
|
+
--color-secondary-foreground: var(--pptx-secondary-foreground, var(--office-foreground, #1f2937));
|
|
38
|
+
|
|
39
|
+
--color-muted: var(--pptx-muted, var(--office-surface, #f3f4f6));
|
|
40
|
+
--color-muted-foreground: var(--pptx-muted-foreground, var(--office-muted-foreground, #6b7280));
|
|
41
|
+
|
|
42
|
+
--color-accent: var(--pptx-accent, var(--office-selected, #e5e7eb));
|
|
43
|
+
--color-accent-foreground: var(--pptx-accent-foreground, var(--office-foreground, #1f2937));
|
|
44
|
+
|
|
45
|
+
--color-destructive: var(--pptx-destructive, var(--office-danger, #b91c1c));
|
|
46
|
+
--color-destructive-foreground: var(
|
|
47
|
+
--pptx-destructive-foreground,
|
|
48
|
+
var(--office-danger-foreground, #ffffff)
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
--color-border: var(--pptx-border, var(--office-border, #d1d5db));
|
|
52
|
+
--color-input: var(--pptx-input, var(--office-border, #d1d5db));
|
|
53
|
+
--color-ring: var(--pptx-ring, var(--office-ring, #2563eb));
|
|
54
|
+
|
|
55
|
+
/* ── Radius ──────────────────────────────────────────────────────── */
|
|
56
|
+
--radius-sm: calc(var(--pptx-radius, var(--office-radius, 4px)) - 4px);
|
|
57
|
+
--radius-md: calc(var(--pptx-radius, var(--office-radius, 4px)) - 2px);
|
|
58
|
+
--radius-lg: var(--pptx-radius, var(--office-radius, 4px));
|
|
59
|
+
--radius-xl: calc(var(--pptx-radius, var(--office-radius, 4px)) + 4px);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── Reduced motion ──────────────────────────────────────────────────
|
|
63
|
+
* When the OS prefers-reduced-motion OR the user manually enables it
|
|
64
|
+
* via the .pptx-reduced-motion class, disable all CSS animations and
|
|
65
|
+
* transitions throughout the viewer.
|
|
66
|
+
*/
|
|
67
|
+
@media (prefers-reduced-motion: reduce) {
|
|
68
|
+
[data-pptx-viewer] *,
|
|
69
|
+
[data-pptx-viewer] *::before,
|
|
70
|
+
[data-pptx-viewer] *::after {
|
|
71
|
+
animation-duration: 0.01ms !important;
|
|
72
|
+
animation-iteration-count: 1 !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
scroll-behavior: auto !important;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.pptx-reduced-motion *,
|
|
79
|
+
.pptx-reduced-motion *::before,
|
|
80
|
+
.pptx-reduced-motion *::after {
|
|
81
|
+
animation-duration: 0.01ms !important;
|
|
82
|
+
animation-iteration-count: 1 !important;
|
|
83
|
+
transition-duration: 0.01ms !important;
|
|
84
|
+
scroll-behavior: auto !important;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* ── Text autosizing. Slide text is laid out against fixed PowerPoint canvas
|
|
88
|
+
* geometry and the viewer scales the whole slide as one unit. Mobile browsers
|
|
89
|
+
* (and responsive iframes) may otherwise inflate only the glyphs, which
|
|
90
|
+
* changes line wrapping and clips text even though the deck is correct.
|
|
91
|
+
*/
|
|
92
|
+
[data-pptx-viewer] {
|
|
93
|
+
font-family: var(--pptx-font, var(--office-font, system-ui, sans-serif));
|
|
94
|
+
-webkit-text-size-adjust: none;
|
|
95
|
+
text-size-adjust: none;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* ── Hardware acceleration (Options > Advanced > "Disable hardware
|
|
99
|
+
* graphics acceleration"). Strips the GPU-compositing hints (will-change,
|
|
100
|
+
* backface-visibility, perspective) transitions/3D effects rely on, for
|
|
101
|
+
* users on underpowered/unstable graphics drivers. See
|
|
102
|
+
* `resolveOptionRootClasses` in pptx-viewer-shared.
|
|
103
|
+
*/
|
|
104
|
+
[data-pptx-viewer].pptx-no-hw-accel *,
|
|
105
|
+
[data-pptx-viewer].pptx-no-hw-accel *::before,
|
|
106
|
+
[data-pptx-viewer].pptx-no-hw-accel *::after {
|
|
107
|
+
will-change: auto !important;
|
|
108
|
+
backface-visibility: visible !important;
|
|
109
|
+
perspective: none !important;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* ── Display optimization (Options > General > "Optimize for compatibility")
|
|
113
|
+
* Drops shadow/blur/blend-mode effects across the viewer, mirroring
|
|
114
|
+
* PowerPoint's own degraded-effects mode for older/weaker hardware. See
|
|
115
|
+
* `resolveOptionRootClasses` in pptx-viewer-shared.
|
|
116
|
+
*/
|
|
117
|
+
[data-pptx-viewer].pptx-compat-display *,
|
|
118
|
+
[data-pptx-viewer].pptx-compat-display *::before,
|
|
119
|
+
[data-pptx-viewer].pptx-compat-display *::after {
|
|
120
|
+
box-shadow: none !important;
|
|
121
|
+
backdrop-filter: none !important;
|
|
122
|
+
-webkit-backdrop-filter: none !important;
|
|
123
|
+
mix-blend-mode: normal !important;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ── Custom scrollbar styling ───────────────────────────────────────
|
|
127
|
+
* Thin, subtle scrollbars that match the dark theme. Uses both the
|
|
128
|
+
* WebKit pseudo-elements and the standard scrollbar-* properties.
|
|
129
|
+
*/
|
|
130
|
+
:where([data-pptx-viewer]) {
|
|
131
|
+
scrollbar-width: thin;
|
|
132
|
+
scrollbar-color: var(--pptx-border, var(--office-border, #d1d5db)) transparent;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
:where([data-pptx-viewer]) ::-webkit-scrollbar {
|
|
136
|
+
width: 6px;
|
|
137
|
+
height: 6px;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
:where([data-pptx-viewer]) ::-webkit-scrollbar-track {
|
|
141
|
+
background: transparent;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
:where([data-pptx-viewer]) ::-webkit-scrollbar-thumb {
|
|
145
|
+
background-color: var(--pptx-border, var(--office-border, #d1d5db));
|
|
146
|
+
border-radius: 3px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
:where([data-pptx-viewer]) ::-webkit-scrollbar-thumb:hover {
|
|
150
|
+
background-color: var(--pptx-muted-foreground, var(--office-muted-foreground, #6b7280));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
:where([data-pptx-viewer]) ::-webkit-scrollbar-corner {
|
|
154
|
+
background: transparent;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* ── Button press feedback ──────────────────────────────────────────
|
|
158
|
+
* Subtle scale-down on press for all interactive elements in the
|
|
159
|
+
* toolbar and status bar areas.
|
|
160
|
+
*/
|
|
161
|
+
[data-pptx-viewer] [role='toolbar'] button,
|
|
162
|
+
[data-pptx-viewer] [role='toolbar'] [role='button'] {
|
|
163
|
+
transition:
|
|
164
|
+
transform 0.1s ease,
|
|
165
|
+
opacity 0.1s ease;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* ── Focus indicators ────────────────────────────────────────────────
|
|
169
|
+
* Ensure keyboard focus is visible on interactive slide elements.
|
|
170
|
+
*/
|
|
171
|
+
[data-pptx-element]:focus-visible {
|
|
172
|
+
outline: 2px solid var(--pptx-ring, var(--office-ring, #2563eb));
|
|
173
|
+
outline-offset: 2px;
|
|
174
|
+
z-index: 999;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
:where([data-pptx-viewer])
|
|
178
|
+
:where(button, a, input, select, textarea, [tabindex]):not(
|
|
179
|
+
[data-pptx-search-input]
|
|
180
|
+
):focus-visible {
|
|
181
|
+
outline: 2px solid var(--pptx-ring, var(--office-ring, #2563eb)) !important;
|
|
182
|
+
outline-offset: 2px;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
:where([data-pptx-viewer])
|
|
186
|
+
:where(button, [role='button']):where(
|
|
187
|
+
:not([role='switch']):not([data-pptx-compact]):not([data-pptx-backstage-nav-item])
|
|
188
|
+
) {
|
|
189
|
+
min-width: 24px;
|
|
190
|
+
min-height: 24px;
|
|
191
|
+
touch-action: manipulation;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@media (forced-colors: active) {
|
|
195
|
+
:where([data-pptx-viewer])
|
|
196
|
+
:where(button, a, input, select, textarea, [tabindex]):not(
|
|
197
|
+
[data-pptx-search-input]
|
|
198
|
+
):focus-visible {
|
|
199
|
+
outline-color: Highlight;
|
|
200
|
+
}
|
|
201
|
+
:where([data-pptx-viewer]) [data-pptx-search-surface]:focus-within {
|
|
202
|
+
outline: 2px solid Highlight;
|
|
203
|
+
outline-offset: 2px;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|