pptx-svelte-viewer 4.2.0 → 4.4.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 +138 -0
- package/dist/{AiChatPanel-fey6hh2R.js → AiChatPanel-DywhOzzW.js} +15 -15
- package/dist/{export-DoyAdIHl.js → export-BUx-Kmlc.js} +11484 -11061
- package/dist/i18n/de.cjs +25 -2
- package/dist/i18n/de.mjs +25 -2
- package/dist/i18n/es.cjs +25 -2
- package/dist/i18n/es.mjs +25 -2
- package/dist/i18n/fr.cjs +25 -2
- package/dist/i18n/fr.mjs +25 -2
- package/dist/i18n/zh-CN.cjs +25 -2
- package/dist/i18n/zh-CN.mjs +25 -2
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +273 -3
- package/dist/index.js +38 -38
- package/dist/internals.d.ts +226 -3
- package/dist/internals.js +23 -23
- package/dist/pptx-svelte-viewer.css +1 -1
- package/dist/{transition-overlay-BcUomRXK.js → transition-overlay-CfsPqlES.js} +46600 -39746
- package/dist/{translator-D7duxy6A.js → translator-Dn-ANCp2.js} +25 -2
- package/dist/viewer/index.d.ts +391 -5
- package/dist/viewer/index.js +15 -15
- package/package.json +1 -1
- package/dist/canvas_emf-converter-CKs-EBwD.js +0 -5
package/dist/viewer/index.d.ts
CHANGED
|
@@ -1397,6 +1397,32 @@ interface TextStyle {
|
|
|
1397
1397
|
* @see element-paragraph-geometry.ts
|
|
1398
1398
|
*/
|
|
1399
1399
|
resolvedParagraphGeometry?: TextStyle;
|
|
1400
|
+
/**
|
|
1401
|
+
* Snapshot of the ELEMENT-scope `a:bodyPr` properties (vertical anchor,
|
|
1402
|
+
* text direction, columns, overflow, autofit, body insets, text wrap, and
|
|
1403
|
+
* the boolean/rotation attributes) as the load pipeline resolved them.
|
|
1404
|
+
*
|
|
1405
|
+
* A shape's own `a:bodyPr` is parsed first, then whatever it left
|
|
1406
|
+
* `undefined` is back-filled from the placeholder / layout / master
|
|
1407
|
+
* defaults (`applyPlaceholderBodyDefaults`), and a placeholder shape with
|
|
1408
|
+
* no `a:bodyPr` of its own has the INHERITED one parsed as if it were its
|
|
1409
|
+
* own. None of those three sources is distinguishable at
|
|
1410
|
+
* `element.textStyle` once the cascade finishes, so a writer that
|
|
1411
|
+
* re-emits every defined field turns an inherited anchor, inset, autofit
|
|
1412
|
+
* mode or `rtlCol` into a value pinned on the slide forever (and an
|
|
1413
|
+
* inherited `a:normAutofit` with no scale gets written back as
|
|
1414
|
+
* `a:spAutoFit`, flipping AutoSize from "shrink text" to "resize shape").
|
|
1415
|
+
*
|
|
1416
|
+
* Present only on an `element.textStyle` that came from a parsed deck.
|
|
1417
|
+
* The save path diffs the live style against this snapshot: a field that
|
|
1418
|
+
* still matches is an inheritance artefact and the writer leaves the
|
|
1419
|
+
* underlying `a:bodyPr` attribute untouched (whatever it already is,
|
|
1420
|
+
* present or absent); a field that differs was authored or has since
|
|
1421
|
+
* been edited and is written out.
|
|
1422
|
+
*
|
|
1423
|
+
* @see element-body-properties.ts
|
|
1424
|
+
*/
|
|
1425
|
+
resolvedBodyProperties?: TextStyle;
|
|
1400
1426
|
fontFamily?: string;
|
|
1401
1427
|
fontSize?: number;
|
|
1402
1428
|
/** When true, some form of autofit is in effect; see {@link autoFitMode} for which. */
|
|
@@ -1579,6 +1605,16 @@ interface TextStyle {
|
|
|
1579
1605
|
align: 'l' | 'ctr' | 'r' | 'dec';
|
|
1580
1606
|
leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
|
|
1581
1607
|
}>;
|
|
1608
|
+
/**
|
|
1609
|
+
* True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
|
|
1610
|
+
* (explicitly "no tab stops", overriding whatever the cascade would
|
|
1611
|
+
* otherwise supply) rather than omitting the element entirely (inherit).
|
|
1612
|
+
* fast-xml-parser gives a childless element as the empty string, so
|
|
1613
|
+
* `tabLst` and no-`tabLst` are otherwise indistinguishable once `tabStops`
|
|
1614
|
+
* comes back empty either way. Paragraph-scope only; not part of the
|
|
1615
|
+
* element-level geometry cascade.
|
|
1616
|
+
*/
|
|
1617
|
+
tabStopsExplicitEmpty?: boolean;
|
|
1582
1618
|
/** Body text wrapping mode from `a:bodyPr/@wrap`. */
|
|
1583
1619
|
textWrap?: 'square' | 'none';
|
|
1584
1620
|
/** Preset text warp type from `a:bodyPr/a:prstTxWarp`. */
|
|
@@ -1621,6 +1657,20 @@ interface TextStyle {
|
|
|
1621
1657
|
* serialised back on save, so it never disturbs the round-trip typefaces.
|
|
1622
1658
|
*/
|
|
1623
1659
|
scriptFallbackFont?: string;
|
|
1660
|
+
/**
|
|
1661
|
+
* Set alongside {@link scriptFallbackFont} when the resolved {@link fontFamily}
|
|
1662
|
+
* came only from the paragraph/list-style/theme CASCADE (the run's own
|
|
1663
|
+
* `a:rPr` authored no `a:latin`/`a:ea`/`a:cs` of its own). A run always
|
|
1664
|
+
* inherits SOME font this way (typically the theme's `+mn-lt`), so without
|
|
1665
|
+
* this flag `fontFamily` was indistinguishable from a run that genuinely
|
|
1666
|
+
* chose that font itself, and the renderer never applied the theme's
|
|
1667
|
+
* per-script override (see #83): `+mn-lt` names only the LATIN member of
|
|
1668
|
+
* the font scheme and was never meant to cover text in a different
|
|
1669
|
+
* dominant script. An explicit `a:latin`/`a:ea`/`a:cs` authored on the run
|
|
1670
|
+
* itself still always wins; only the cascade default yields to the
|
|
1671
|
+
* script-specific override.
|
|
1672
|
+
*/
|
|
1673
|
+
fontFamilyIsCascadeDefault?: boolean;
|
|
1624
1674
|
/** Text language from `a:rPr/@lang`. */
|
|
1625
1675
|
language?: string;
|
|
1626
1676
|
/** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
|
|
@@ -1643,6 +1693,16 @@ interface TextStyle {
|
|
|
1643
1693
|
hyperlinkHighlightClick?: boolean;
|
|
1644
1694
|
/** Whether hyperlink ends a sound (`a:hlinkClick/@endSnd`). */
|
|
1645
1695
|
hyperlinkEndSound?: boolean;
|
|
1696
|
+
/**
|
|
1697
|
+
* Raw `a:hlinkClick/a:extLst` child, preserved verbatim for round-trip.
|
|
1698
|
+
* Carries vendor extensions this engine does not interpret, most commonly
|
|
1699
|
+
* `ahyp:hlinkClr` (Microsoft's "hyperlink color" extension,
|
|
1700
|
+
* `{A12FA001-AC4F-418D-AE19-62706E023703}`), which records whether a
|
|
1701
|
+
* hyperlink run should paint with the theme's text colour instead of the
|
|
1702
|
+
* hyperlink colour. Dropping the whole `a:extLst` silently reverted such a
|
|
1703
|
+
* run to the default (themed) hyperlink colour on save.
|
|
1704
|
+
*/
|
|
1705
|
+
hyperlinkExtensionXml?: XmlObject;
|
|
1646
1706
|
/** Kumimoji (ideographic text combining) flag for vertical CJK text (`a:rPr/@kumimoji`). */
|
|
1647
1707
|
kumimoji?: boolean;
|
|
1648
1708
|
/** Normalize height flag (`a:rPr/@normalizeH`). */
|
|
@@ -1796,6 +1856,15 @@ interface TextStyle {
|
|
|
1796
1856
|
textGlowRadius?: number;
|
|
1797
1857
|
/** Text glow opacity (0-1). */
|
|
1798
1858
|
textGlowOpacity?: number;
|
|
1859
|
+
/**
|
|
1860
|
+
* Original glow colour-choice XML (`a:glow`'s `a:schemeClr`/`a:srgbClr`/…
|
|
1861
|
+
* child), preserved verbatim so a theme colour reference round-trips
|
|
1862
|
+
* instead of always being re-serialized as a resolved `a:srgbClr` (which
|
|
1863
|
+
* cuts the glow off from theme/Recolor changes).
|
|
1864
|
+
*/
|
|
1865
|
+
textGlowColorXml?: XmlObject;
|
|
1866
|
+
/** Theme colour slot the glow colour resolved from, when it is `a:schemeClr`. */
|
|
1867
|
+
textGlowColorRef?: PptxThemeColorRef;
|
|
1799
1868
|
/** Text reflection enabled flag. */
|
|
1800
1869
|
textReflection?: boolean;
|
|
1801
1870
|
/** Text reflection blur radius in px. */
|
|
@@ -1932,6 +2001,18 @@ interface BulletInfo {
|
|
|
1932
2001
|
paragraphIndex?: number;
|
|
1933
2002
|
/** Bullet font family from `a:buFont`. */
|
|
1934
2003
|
fontFamily?: string;
|
|
2004
|
+
/**
|
|
2005
|
+
* PANOSE font-matching hint from `a:buFont/@panose`. `a:buFont` is a
|
|
2006
|
+
* CT_TextFont, the same complex type as `a:latin`/`a:ea`/`a:cs`/`a:sym`
|
|
2007
|
+
* (which carry the equivalent `TextStyle.latinFontPanose` etc.), so a
|
|
2008
|
+
* bullet's own PANOSE/pitch-family/charset decide the fallback glyph
|
|
2009
|
+
* PowerPoint substitutes when the named typeface is missing.
|
|
2010
|
+
*/
|
|
2011
|
+
fontPanose?: string;
|
|
2012
|
+
/** Font pitch-and-family byte from `a:buFont/@pitchFamily`. */
|
|
2013
|
+
fontPitchFamily?: number;
|
|
2014
|
+
/** Font character-set byte from `a:buFont/@charset`. */
|
|
2015
|
+
fontCharset?: number;
|
|
1935
2016
|
/** Bullet size as percentage of text font size from `a:buSzPct`. */
|
|
1936
2017
|
sizePercent?: number;
|
|
1937
2018
|
/** Bullet size in points from `a:buSzPts`. */
|
|
@@ -1973,6 +2054,18 @@ interface BulletInfo {
|
|
|
1973
2054
|
/** When true, `<a:buSzTx/>` was specified — inherit the bullet size from
|
|
1974
2055
|
* the run text font size. */
|
|
1975
2056
|
sizeInherit?: boolean;
|
|
2057
|
+
/**
|
|
2058
|
+
* True when this bullet resolution came from the paragraph's OWN `a:pPr`
|
|
2059
|
+
* rather than the shape's `a:lstStyle`, an inherited placeholder, or the
|
|
2060
|
+
* master's `a:defPPr` / `p:txStyles`. `resolveParagraphBulletInfo` walks
|
|
2061
|
+
* that cascade and returns the first match, so without this flag a
|
|
2062
|
+
* writer that re-emits every resolved `BulletInfo` in full pins an
|
|
2063
|
+
* inherited bullet (e.g. a master `buFont="Arial"` / `buChar="•"`) onto
|
|
2064
|
+
* every paragraph's own `a:pPr` the moment the slide is rewritten. The
|
|
2065
|
+
* save path only writes the bullet group when this is `true`, mirroring
|
|
2066
|
+
* how `paragraphProperties` gates every other per-paragraph field.
|
|
2067
|
+
*/
|
|
2068
|
+
ownedByParagraph?: boolean;
|
|
1976
2069
|
}
|
|
1977
2070
|
/**
|
|
1978
2071
|
* A single text run within a paragraph.
|
|
@@ -2015,6 +2108,23 @@ interface TextSegment {
|
|
|
2015
2108
|
fieldParagraphPropertiesXml?: XmlObject;
|
|
2016
2109
|
/** Raw OMML XML node for equation segments (from `a14:m` / `m:oMathPara`). */
|
|
2017
2110
|
equationXml?: Record<string, unknown>;
|
|
2111
|
+
/**
|
|
2112
|
+
* The ORIGINAL top-level paragraph child that carried this equation,
|
|
2113
|
+
* captured verbatim at parse time and keyed by its own tag: `{ 'a14:m':
|
|
2114
|
+
* ... }`, `{ 'm:oMathPara': ... }`, `{ 'm:oMath': ... }`, or `{
|
|
2115
|
+
* 'mc:AlternateContent': ... }` for an equation authored behind a
|
|
2116
|
+
* Choice/Fallback switch. `equationXml` above is the resolved math content
|
|
2117
|
+
* used for rendering (unwrapped one level for `a14:m`/`mc:AlternateContent`
|
|
2118
|
+
* sources); this field exists solely so the writer can re-emit an UNTOUCHED
|
|
2119
|
+
* equation byte-for-byte, Choice and Fallback both, instead of collapsing
|
|
2120
|
+
* it to a bare math element PowerPoint's own writer never produces.
|
|
2121
|
+
* `undefined` for a freshly inserted or edited equation, which the writer
|
|
2122
|
+
* instead reconstructs from `equationXml` (always `{ 'm:oMathPara': ... }`
|
|
2123
|
+
* or `{ 'm:oMath': ... }` for those cases). Any code that replaces
|
|
2124
|
+
* `equationXml` on an existing segment must drop this field, or the writer
|
|
2125
|
+
* would keep re-emitting the equation's OLD XML instead of the edit.
|
|
2126
|
+
*/
|
|
2127
|
+
equationSourceXml?: Record<string, unknown>;
|
|
2018
2128
|
/**
|
|
2019
2129
|
* Optional equation number for numbered equations (e.g. "(1)", "(2.3)").
|
|
2020
2130
|
* When present, the equation is rendered centered with the number right-aligned.
|
|
@@ -2299,6 +2409,24 @@ interface PptxShapeProperties {
|
|
|
2299
2409
|
*/
|
|
2300
2410
|
interface PlaceholderTextLevelStyle {
|
|
2301
2411
|
fontFamily?: string;
|
|
2412
|
+
/**
|
|
2413
|
+
* The RAW `a:defRPr/a:latin/@typeface` string (verbatim: a theme alias
|
|
2414
|
+
* such as `+mj-lt`/`+mn-lt`, or a literal face name) {@link fontFamily}
|
|
2415
|
+
* was resolved from. Master/layout text styles are parsed once and
|
|
2416
|
+
* cached, so `fontFamily` is a resolved-for-display snapshot; re-emitting
|
|
2417
|
+
* it as the literal name on every save (the master-level analogue of
|
|
2418
|
+
* `colorChoiceXml` below) flattens the theme alias the moment ANYTHING
|
|
2419
|
+
* about the deck is rewritten, even when this level was never touched.
|
|
2420
|
+
* Absent when the level declares no `a:latin`.
|
|
2421
|
+
*/
|
|
2422
|
+
fontTypefaceXml?: string;
|
|
2423
|
+
/**
|
|
2424
|
+
* Snapshot of {@link fontFamily} exactly as parsed, before any edit. The
|
|
2425
|
+
* save path diffs the live value against this: unchanged means re-emit
|
|
2426
|
+
* {@link fontTypefaceXml} verbatim (preserve the alias); different means
|
|
2427
|
+
* a genuine edit, so the new literal name is written instead.
|
|
2428
|
+
*/
|
|
2429
|
+
resolvedFontFamily?: string;
|
|
2302
2430
|
fontSize?: number;
|
|
2303
2431
|
bold?: boolean;
|
|
2304
2432
|
italic?: boolean;
|
|
@@ -2348,8 +2476,32 @@ interface PlaceholderTextLevelStyle {
|
|
|
2348
2476
|
tabStops?: TextStyle['tabStops'];
|
|
2349
2477
|
lineSpacing?: number;
|
|
2350
2478
|
lineSpacingExactPt?: number;
|
|
2479
|
+
/**
|
|
2480
|
+
* Space before the paragraph in px, resolved from EITHER `a:spcPts`
|
|
2481
|
+
* (absolute) or `a:spcPct` (a percentage of this level's own `a:defRPr`
|
|
2482
|
+
* font size) - the OOXML source is not distinguishable from this field
|
|
2483
|
+
* alone. See {@link spaceBeforePercent} / {@link resolvedSpaceBefore}.
|
|
2484
|
+
*/
|
|
2351
2485
|
spaceBefore?: number;
|
|
2352
2486
|
spaceAfter?: number;
|
|
2487
|
+
/**
|
|
2488
|
+
* Snapshot of {@link spaceBefore} / {@link spaceAfter} exactly as parsed.
|
|
2489
|
+
* Diffed the same way as {@link resolvedFontFamily}: unchanged means the
|
|
2490
|
+
* writer re-emits the ORIGINAL form (`a:spcPct` when
|
|
2491
|
+
* {@link spaceBeforePercent} / {@link spaceAfterPercent} is set); a value
|
|
2492
|
+
* that has since moved away from the snapshot is a genuine edit and is
|
|
2493
|
+
* always written as `a:spcPts`, since an editor works in absolute units.
|
|
2494
|
+
*/
|
|
2495
|
+
resolvedSpaceBefore?: number;
|
|
2496
|
+
resolvedSpaceAfter?: number;
|
|
2497
|
+
/**
|
|
2498
|
+
* The raw `a:spcPct` fraction (e.g. `0.2` for 20%) {@link spaceBefore} /
|
|
2499
|
+
* {@link spaceAfter} was resolved from, when the source used percentage
|
|
2500
|
+
* spacing rather than `a:spcPts`. Absent when the source used `a:spcPts`
|
|
2501
|
+
* (or authored no spacing at all).
|
|
2502
|
+
*/
|
|
2503
|
+
spaceBeforePercent?: number;
|
|
2504
|
+
spaceAfterPercent?: number;
|
|
2353
2505
|
/** Default tab interval in CSS pixels (`a:lvlXpPr/@defTabSz`). */
|
|
2354
2506
|
defaultTabSize?: number;
|
|
2355
2507
|
/** Whether East Asian line-breaking rules are enabled. */
|
|
@@ -5082,6 +5234,18 @@ interface PptxSmartArtLayoutDefinition {
|
|
|
5082
5234
|
rootNode: PptxSmartArtLayoutNode;
|
|
5083
5235
|
/** Original definition retained for constraint evaluation and foreign rules. */
|
|
5084
5236
|
rawXml?: XmlObject;
|
|
5237
|
+
/**
|
|
5238
|
+
* The un-parsed layout-definition part text (starting at `<dgm:layoutDef>`,
|
|
5239
|
+
* XML declaration included). `rawXml` above loses the document order of
|
|
5240
|
+
* differently-named siblings (the package-wide `fast-xml-parser`
|
|
5241
|
+
* configuration groups children into one array per tag), which the
|
|
5242
|
+
* per-point DiagramML engine (`core/utils/smartart-engine/`) needs to
|
|
5243
|
+
* execute a `layoutNode` body's `forEach`/`choose`/`constrLst` statements
|
|
5244
|
+
* in their real declared sequence - see that package's `ordered-xml.ts`.
|
|
5245
|
+
* `undefined` when the part could not be read (matches `rawXml`'s own
|
|
5246
|
+
* optionality); the engine falls back to the legacy interpreter then.
|
|
5247
|
+
*/
|
|
5248
|
+
rawXmlText?: string;
|
|
5085
5249
|
}
|
|
5086
5250
|
//#endregion
|
|
5087
5251
|
//#region src/core/types/smart-art-node.d.ts
|
|
@@ -6194,6 +6358,20 @@ interface PptxTableData {
|
|
|
6194
6358
|
* present when there is at least one effect.
|
|
6195
6359
|
*/
|
|
6196
6360
|
tableEffects?: ParsedTableStyleEffect[];
|
|
6361
|
+
/**
|
|
6362
|
+
* Table-cell-context default text size in points, resolved from the
|
|
6363
|
+
* slide's master `p:otherStyle` (ECMA-376 §19.3.1.42 CT_TextListStyle,
|
|
6364
|
+
* §19.3.1.52 for `p:txStyles`). PowerPoint sizes a table cell's text off
|
|
6365
|
+
* this master default (commonly 18pt) whenever neither the run nor the
|
|
6366
|
+
* (size-less) table style provides one; without it, cell text without an
|
|
6367
|
+
* explicit `a:rPr@sz` fell back to the browser's own default font size
|
|
6368
|
+
* (16px / 12pt) instead. A render-only hint: it is not part of any
|
|
6369
|
+
* individual cell's parsed style and is never written back on save, so
|
|
6370
|
+
* resaving an unstyled cell does not bake in an explicit size that was
|
|
6371
|
+
* never authored. `undefined` when no master/otherStyle size resolves
|
|
6372
|
+
* (renderers should leave the browser default in place in that case).
|
|
6373
|
+
*/
|
|
6374
|
+
defaultCellFontSize?: number;
|
|
6197
6375
|
}
|
|
6198
6376
|
/**
|
|
6199
6377
|
* A single fill reference within a table style section.
|
|
@@ -6219,6 +6397,14 @@ interface ParsedTableStyleFill {
|
|
|
6219
6397
|
tint?: number;
|
|
6220
6398
|
/** Shade value (0-100 000). */
|
|
6221
6399
|
shade?: number;
|
|
6400
|
+
/**
|
|
6401
|
+
* Alpha (opacity) value (0-100 000, where 100 000 is fully opaque) from an
|
|
6402
|
+
* `a:alpha` child of `a:schemeClr`/`a:srgbClr`. Several built-in table
|
|
6403
|
+
* styles (e.g. "Light Style 1/3", "Themed Style 1/2") band their rows with
|
|
6404
|
+
* a partially transparent tint of the theme colour rather than a tint/shade
|
|
6405
|
+
* blend.
|
|
6406
|
+
*/
|
|
6407
|
+
alpha?: number;
|
|
6222
6408
|
/** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
|
|
6223
6409
|
color?: string;
|
|
6224
6410
|
/** The fill was `a:noFill`: renders transparent and clears lower layers. */
|
|
@@ -7054,6 +7240,20 @@ interface ContentPartInkStroke {
|
|
|
7054
7240
|
* NAMES differ.
|
|
7055
7241
|
*/
|
|
7056
7242
|
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
7243
|
+
/**
|
|
7244
|
+
* Per-point timestamps (milliseconds), decoded from the source InkML
|
|
7245
|
+
* trace's `T` channel when it declared one.
|
|
7246
|
+
*
|
|
7247
|
+
* Absent for the overwhelming majority of real decks: PowerPoint's own
|
|
7248
|
+
* SaveAs output declares only `X`/`Y` and has no per-point time channel at
|
|
7249
|
+
* all (see `contentpart-real-ink-roundtrip.test.ts`'s fixture), so this is
|
|
7250
|
+
* populated only for InkML sources that genuinely author one (a captured
|
|
7251
|
+
* digitizer session, OneNote, a Surface Hub export). When present, ink
|
|
7252
|
+
* replay ("watch the ink get drawn") uses each stroke's own first/last
|
|
7253
|
+
* timestamp to time its reveal instead of the fixed per-stroke cascade; see
|
|
7254
|
+
* `pptx-viewer-shared`'s `render/ink-replay-timeline.ts`.
|
|
7255
|
+
*/
|
|
7256
|
+
pointTimestamps?: number[];
|
|
7057
7257
|
}
|
|
7058
7258
|
/**
|
|
7059
7259
|
* A content-part element wrapped in `mc:AlternateContent`.
|
|
@@ -7098,6 +7298,34 @@ interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
|
|
|
7098
7298
|
summaryTargets?: SummaryZoomTarget[];
|
|
7099
7299
|
/** Layout mode authored on the Summary Zoom container. */
|
|
7100
7300
|
summaryLayout?: 'grid' | 'fixed';
|
|
7301
|
+
/**
|
|
7302
|
+
* `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
|
|
7303
|
+
* three Zoom kinds): whether continuing forward from the destination slide
|
|
7304
|
+
* during a live show returns to this Zoom's origin slide instead of
|
|
7305
|
+
* advancing linearly through the deck. The schema declares `<xsd:attribute
|
|
7306
|
+
* name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
|
|
7307
|
+
* so an ABSENT attribute means `true`, not `false`. This codebase still
|
|
7308
|
+
* leaves the field `undefined` (rather than fabricating `true`) when the
|
|
7309
|
+
* source XML omits it, so a round-trip never invents an attribute the
|
|
7310
|
+
* source never had; a CONSUMER of this field (playback, e.g.
|
|
7311
|
+
* `pptx-viewer-shared`'s `resolveZoomNavigationTarget`) must read
|
|
7312
|
+
* `returnToParent !== false`, not `Boolean(returnToParent)`, to get the
|
|
7313
|
+
* spec-correct effective value. For `zoomType: 'summary'`, this mirrors the
|
|
7314
|
+
* first tile's own value; see {@link SummaryZoomTarget.returnToParent} for
|
|
7315
|
+
* the per-tile value.
|
|
7316
|
+
*/
|
|
7317
|
+
returnToParent?: boolean;
|
|
7318
|
+
/**
|
|
7319
|
+
* `zmPr/@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): the
|
|
7320
|
+
* zoom-transition length in milliseconds. PowerPoint's own writer emits a
|
|
7321
|
+
* unitless decimal-millisecond value for every OOXML `ST_UniversalTimeOffset`
|
|
7322
|
+
* this codebase has observed (see the media-trim/-fade parsers), so this
|
|
7323
|
+
* follows the same convention rather than the full TIMEOFFSET grammar's
|
|
7324
|
+
* unit suffixes. Undefined uses the destination slide's own transition.
|
|
7325
|
+
* For `zoomType: 'summary'`, this mirrors the first tile's own value; see
|
|
7326
|
+
* {@link SummaryZoomTarget.transitionDurationMs} for the per-tile value.
|
|
7327
|
+
*/
|
|
7328
|
+
transitionDurationMs?: number;
|
|
7101
7329
|
}
|
|
7102
7330
|
/** A single section tile within a PowerPoint Summary Zoom container. */
|
|
7103
7331
|
interface SummaryZoomTarget extends PptxImageProperties {
|
|
@@ -7113,6 +7341,10 @@ interface SummaryZoomTarget extends PptxImageProperties {
|
|
|
7113
7341
|
offsetFactorY?: number;
|
|
7114
7342
|
scaleFactorX?: number;
|
|
7115
7343
|
scaleFactorY?: number;
|
|
7344
|
+
/** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
|
|
7345
|
+
returnToParent?: boolean;
|
|
7346
|
+
/** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
|
|
7347
|
+
transitionDurationMs?: number;
|
|
7116
7348
|
rawXml?: XmlObject;
|
|
7117
7349
|
}
|
|
7118
7350
|
/**
|
|
@@ -8113,6 +8345,17 @@ interface PptxAttributeAnimation {
|
|
|
8113
8345
|
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
8114
8346
|
*/
|
|
8115
8347
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
8348
|
+
/**
|
|
8349
|
+
* `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
|
|
8350
|
+
* MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
|
|
8351
|
+
* duration. PowerPoint's Fly In "Bounce End" effect option writes this on
|
|
8352
|
+
* the position-ramp `p:anim` node(s): the fraction of the duration at
|
|
8353
|
+
* which the primary travel completes, with the remainder spent bouncing
|
|
8354
|
+
* and settling at the final value. Mirrored verbatim by PowerPoint onto
|
|
8355
|
+
* the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
|
|
8356
|
+
* that doesn't use this effect option (the overwhelming majority).
|
|
8357
|
+
*/
|
|
8358
|
+
bounceEnd?: number;
|
|
8116
8359
|
}
|
|
8117
8360
|
/** Signed HSL channel deltas parsed from `p:animClr/p:by/p:hsl`. */
|
|
8118
8361
|
interface PptxHslColorDelta {
|
|
@@ -8194,7 +8437,19 @@ interface PptxTextAnimationTarget {
|
|
|
8194
8437
|
* These map directly to OOXML condition event attribute values
|
|
8195
8438
|
* (ISO/IEC 29500-1 S19.5.28 CT_TLTimeCondition).
|
|
8196
8439
|
*/
|
|
8197
|
-
type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick';
|
|
8440
|
+
type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick' | 'onMediaBookmark';
|
|
8441
|
+
/**
|
|
8442
|
+
* `p14:bmkTgt` (Office 2010 `p14` extension, MS-OI29500): names the specific
|
|
8443
|
+
* media element and bookmark an `evt="onMediaBookmark"` condition fires for.
|
|
8444
|
+
* `bookmarkName` matches a `p14:bmk/@_name` on that media element's own
|
|
8445
|
+
* `p14:bmkLst` (see `MediaBookmark.label` in `core/types/elements.ts`).
|
|
8446
|
+
*/
|
|
8447
|
+
interface PptxMediaBookmarkTarget {
|
|
8448
|
+
/** `p14:bmkTgt/@_spid`: the media element's shape id. */
|
|
8449
|
+
shapeId: string;
|
|
8450
|
+
/** `p14:bmkTgt/@_bmkName`: the bookmark's name. */
|
|
8451
|
+
bookmarkName: string;
|
|
8452
|
+
}
|
|
8198
8453
|
/**
|
|
8199
8454
|
* Structured representation of a single OOXML animation condition
|
|
8200
8455
|
* from `p:cond` elements inside `p:stCondLst` or `p:endCondLst`.
|
|
@@ -8214,6 +8469,11 @@ type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick'
|
|
|
8214
8469
|
interface AnimationCondition {
|
|
8215
8470
|
/** Event that triggers the condition. */
|
|
8216
8471
|
event?: AnimationConditionEvent;
|
|
8472
|
+
/**
|
|
8473
|
+
* The media element/bookmark this condition fires for, when
|
|
8474
|
+
* {@link event} is `onMediaBookmark`. See {@link PptxMediaBookmarkTarget}.
|
|
8475
|
+
*/
|
|
8476
|
+
bookmarkTarget?: PptxMediaBookmarkTarget;
|
|
8217
8477
|
/** Delay in milliseconds (from `@_delay`). "indefinite" is represented as -1. */
|
|
8218
8478
|
delay?: number;
|
|
8219
8479
|
/** Target time node ID reference (from `@_tn`). */
|
|
@@ -9062,7 +9322,12 @@ interface PptxSlideTransition {
|
|
|
9062
9322
|
spokes?: number;
|
|
9063
9323
|
/** Pattern type for shred transition. */
|
|
9064
9324
|
pattern?: string;
|
|
9065
|
-
/**
|
|
9325
|
+
/**
|
|
9326
|
+
* Through-black flag (OOXML `@_thruBlk`). COM-verified to actually apply to
|
|
9327
|
+
* `cut` and `fade` (see {@link TRANSITION_THRUBLK_TYPES}); parsed generically
|
|
9328
|
+
* off any standard transition child so an unexpected authored value still
|
|
9329
|
+
* round-trips.
|
|
9330
|
+
*/
|
|
9066
9331
|
thruBlk?: boolean;
|
|
9067
9332
|
/** Split orientation (horz/vert) parsed from `@_orient`. */
|
|
9068
9333
|
orient?: PptxSplitOrientation;
|
|
@@ -9532,7 +9797,12 @@ interface PptxHeaderFooter {
|
|
|
9532
9797
|
hasDateTime?: boolean;
|
|
9533
9798
|
dateTimeText?: string;
|
|
9534
9799
|
dateTimeAuto?: boolean;
|
|
9535
|
-
/**
|
|
9800
|
+
/**
|
|
9801
|
+
* The master date placeholder's own `a:fld/@type` (e.g. "datetime2"), NOT a
|
|
9802
|
+
* format pattern. It is one of the predefined OOXML datetime field types
|
|
9803
|
+
* (`datetime1`-`datetime13`); the display pattern for each is resolved by
|
|
9804
|
+
* `resolveFieldDateText` in `packages/shared/src/render/text-field-substitution.ts`.
|
|
9805
|
+
*/
|
|
9536
9806
|
dateFormat?: string;
|
|
9537
9807
|
hasSlideNumber?: boolean;
|
|
9538
9808
|
}
|
|
@@ -12522,13 +12792,21 @@ interface InlineTextSelection {
|
|
|
12522
12792
|
* Pure string logic: resolves OOXML field runs (slide number, date/time,
|
|
12523
12793
|
* header/footer, document properties, slide title) into their display text.
|
|
12524
12794
|
* Extracted from the React `viewer/utils/text-field-substitution` module so
|
|
12525
|
-
* every binding substitutes identically.
|
|
12795
|
+
* every binding substitutes identically. The locale-aware datetime engine
|
|
12796
|
+
* lives in `text-field-datetime.ts`.
|
|
12526
12797
|
*/
|
|
12527
12798
|
/** Context for substituting field placeholders (slide number, date/time, header/footer, etc.). */
|
|
12528
12799
|
interface FieldSubstitutionContext {
|
|
12529
12800
|
slideNumber?: number;
|
|
12530
12801
|
dateTimeText?: string;
|
|
12531
|
-
/**
|
|
12802
|
+
/**
|
|
12803
|
+
* The deck's master date-field default TYPE (`a:fld/@type` on the slide
|
|
12804
|
+
* master's `dt` placeholder, e.g. "datetime2"; see `header-footer-parts.ts`).
|
|
12805
|
+
* This is a field TYPE, not a format pattern, and is used ONLY as a
|
|
12806
|
+
* fallback for a field authored with the generic, unnumbered `datetime`
|
|
12807
|
+
* type - a field that already names its own `datetime1`-`datetime13` type
|
|
12808
|
+
* always uses that type, never this one (see `substituteFieldText`).
|
|
12809
|
+
*/
|
|
12532
12810
|
dateFormat?: string;
|
|
12533
12811
|
/** Footer text from PptxHeaderFooter settings. */
|
|
12534
12812
|
footerText?: string;
|
|
@@ -12955,6 +13233,10 @@ interface PresentationInkStroke {
|
|
|
12955
13233
|
points: PresentationInkPoint[];
|
|
12956
13234
|
}
|
|
12957
13235
|
//#endregion
|
|
13236
|
+
//#region src/render/paste-special.d.ts
|
|
13237
|
+
/** The four paste formats PowerPoint's Paste Options / Paste Special offer. */
|
|
13238
|
+
type PasteSpecialFormat = 'keep-source-formatting' | 'use-destination-theme' | 'picture' | 'keep-text-only';
|
|
13239
|
+
//#endregion
|
|
12958
13240
|
//#region src/render/alignment-guides.d.ts
|
|
12959
13241
|
/** A single alignment guide, positioned in authored slide pixels. */
|
|
12960
13242
|
interface Guide {
|
|
@@ -13046,6 +13328,20 @@ interface InkStrokeView {
|
|
|
13046
13328
|
* existed.
|
|
13047
13329
|
*/
|
|
13048
13330
|
nibMarks: NibMark[] | null;
|
|
13331
|
+
/**
|
|
13332
|
+
* CSS `mix-blend-mode` this stroke should paint with: `'multiply'` for a
|
|
13333
|
+
* highlighter-style stroke, so overlapping highlighter strokes darken
|
|
13334
|
+
* where they cross (and a highlighter stroke darkens whatever slide
|
|
13335
|
+
* content sits underneath it) the way a real highlighter pen does, instead
|
|
13336
|
+
* of plain alpha compositing. `'normal'` for every other stroke. A binding
|
|
13337
|
+
* applies this as an inline `mix-blend-mode` style on the stroke's own
|
|
13338
|
+
* `<path>`/`<g>` (not on the element's outer `<svg>`): setting it on the
|
|
13339
|
+
* container instead would blend the whole element's already-composited
|
|
13340
|
+
* output against the backdrop as one unit, so strokes sharing that
|
|
13341
|
+
* container would still alpha-composite (not multiply) against each
|
|
13342
|
+
* other.
|
|
13343
|
+
*/
|
|
13344
|
+
blendMode: 'normal' | 'multiply';
|
|
13049
13345
|
}
|
|
13050
13346
|
//#endregion
|
|
13051
13347
|
//#region src/render/mobile-chrome.d.ts
|
|
@@ -13086,6 +13382,28 @@ interface FontEmbeddingDescriptor {
|
|
|
13086
13382
|
/** Present only when `interactive` is false. */
|
|
13087
13383
|
disabledReasonKey?: string;
|
|
13088
13384
|
}
|
|
13385
|
+
//#endregion
|
|
13386
|
+
//#region src/render/zoom-return-navigation.d.ts
|
|
13387
|
+
/**
|
|
13388
|
+
* The navigation-relevant fields of a Zoom click target, independent of
|
|
13389
|
+
* `zoomType`.
|
|
13390
|
+
*
|
|
13391
|
+
* `returnToParent` is already resolved to its EFFECTIVE value here (not the
|
|
13392
|
+
* raw, possibly-`undefined` `ZoomPptxElement`/`SummaryZoomTarget` field):
|
|
13393
|
+
* `CT_ZoomObjectProperties/@returnToParent` (MS-PPTX) is `<xsd:attribute
|
|
13394
|
+
* name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
|
|
13395
|
+
* so an ABSENT attribute means true, not false. Core deliberately stores
|
|
13396
|
+
* `undefined` rather than fabricating `true` (so a round-trip never invents
|
|
13397
|
+
* an attribute the source never had), which makes `Boolean(x)` the wrong way
|
|
13398
|
+
* to read it; the two `resolve*NavigationTarget` functions below are the only
|
|
13399
|
+
* place that distinction should be made.
|
|
13400
|
+
*/
|
|
13401
|
+
interface ZoomNavigationTarget {
|
|
13402
|
+
targetSlideIndex: number;
|
|
13403
|
+
targetSectionId?: string;
|
|
13404
|
+
returnToParent: boolean;
|
|
13405
|
+
transitionDurationMs?: number;
|
|
13406
|
+
}
|
|
13089
13407
|
/** The percentage one zoom-in press moves to, clamped. */
|
|
13090
13408
|
declare function zoomInPercent(percent: number): number;
|
|
13091
13409
|
/** The percentage one zoom-out press moves to, clamped. */
|
|
@@ -14987,6 +15305,21 @@ declare class EditorClipboardController {
|
|
|
14987
15305
|
cutSelected(): void;
|
|
14988
15306
|
/** Paste the clipboard payload onto the current slide (fresh id, offset, selects it). */
|
|
14989
15307
|
pasteClipboard(): string | null;
|
|
15308
|
+
/**
|
|
15309
|
+
* Paste Special (Ctrl+Alt+V) / the dialog's OK: paste the clipboard with
|
|
15310
|
+
* `format` already applied.
|
|
15311
|
+
*/
|
|
15312
|
+
pasteWithFormat(format: PasteSpecialFormat): string | null;
|
|
15313
|
+
/**
|
|
15314
|
+
* Re-derive an already-pasted element (the Paste Options toolbar) from its
|
|
15315
|
+
* own pristine source clone. Non-cumulative: every choice starts over from
|
|
15316
|
+
* the clone `pasteClipboard`/`pasteWithFormat` recorded, matching
|
|
15317
|
+
* PowerPoint's own toolbar. "Picture" is handled by the caller (it needs a
|
|
15318
|
+
* DOM rasterize step this controller does not perform) via `replaceElement`.
|
|
15319
|
+
*/
|
|
15320
|
+
reformatPasted(elementId: string, sourceClone: PptxElement, format: PasteSpecialFormat): void;
|
|
15321
|
+
/** Replace one element by id, e.g. after rasterizing it to a picture. */
|
|
15322
|
+
replaceElement(elementId: string, next: PptxElement): void;
|
|
14990
15323
|
}
|
|
14991
15324
|
|
|
14992
15325
|
interface EditorSnapshot {
|
|
@@ -15622,6 +15955,13 @@ declare class EditorState {
|
|
|
15622
15955
|
editTemplateMode: boolean;
|
|
15623
15956
|
interactionActive: boolean;
|
|
15624
15957
|
clipboard: ElementClipboardPayload | null;
|
|
15958
|
+
/** Ctrl/Cmd+Alt+V dialog visibility. */
|
|
15959
|
+
pasteSpecialDialogOpen: boolean;
|
|
15960
|
+
/** The Paste Options toolbar's target: the elements a normal paste just inserted. */
|
|
15961
|
+
pasteOptionsToolbar: {
|
|
15962
|
+
id: string;
|
|
15963
|
+
sourceClone: PptxElement;
|
|
15964
|
+
}[] | null;
|
|
15625
15965
|
/**
|
|
15626
15966
|
* File ▸ Info ▸ Protect Presentation state. Deliberately NOT part of
|
|
15627
15967
|
* {@link EditorSnapshot}: the secret is session state, not document content,
|
|
@@ -15864,6 +16204,19 @@ interface EditorControllerDeps {
|
|
|
15864
16204
|
* shell-owned UI state, so the controller only signals the intent.
|
|
15865
16205
|
*/
|
|
15866
16206
|
toggleFind?(): void;
|
|
16207
|
+
/**
|
|
16208
|
+
* Open the find bar already switched to its Replace row (Ctrl/Cmd+H). The
|
|
16209
|
+
* panel has no distinct find-only/replace mode, so this is the same panel
|
|
16210
|
+
* `toggleFind` opens; kept as its own hook only so a host can tell the two
|
|
16211
|
+
* chords apart if it ever grows one.
|
|
16212
|
+
*/
|
|
16213
|
+
toggleFindReplace?(): void;
|
|
16214
|
+
/**
|
|
16215
|
+
* Insert a new slide after the active one (Ctrl+M). Optional because the
|
|
16216
|
+
* deck-level API this calls is constructed after the controller (see
|
|
16217
|
+
* `create-viewer-state.svelte.ts`), so a host wires it in once it exists.
|
|
16218
|
+
*/
|
|
16219
|
+
newSlide?(): void;
|
|
15867
16220
|
}
|
|
15868
16221
|
|
|
15869
16222
|
interface EditorMarqueeRect extends MarqueeRect {
|
|
@@ -15904,6 +16257,13 @@ declare class EditorController {
|
|
|
15904
16257
|
snapLines: readonly SnapLine[];
|
|
15905
16258
|
editingId: string | null;
|
|
15906
16259
|
marquee: EditorMarqueeRect | null;
|
|
16260
|
+
/**
|
|
16261
|
+
* The hyperlink dialog, opened by Ctrl+K or the Insert-tab/context-menu
|
|
16262
|
+
* buttons. Lives here (not on the always-mounted `ViewerStage`) so the
|
|
16263
|
+
* keyboard shortcut has one flag to flip regardless of which of those two
|
|
16264
|
+
* pre-existing triggers a host renders.
|
|
16265
|
+
*/
|
|
16266
|
+
hyperlinkOpen: boolean;
|
|
15907
16267
|
constructor(editor: EditorState, deps: EditorControllerDeps);
|
|
15908
16268
|
/** The elements the pointer acts on (slide, or master/layout), for overlays. */
|
|
15909
16269
|
get activeElements(): PptxElement[];
|
|
@@ -15950,6 +16310,23 @@ declare class EditorController {
|
|
|
15950
16310
|
patcher: CollaborationLivePatcher;
|
|
15951
16311
|
slideId: string;
|
|
15952
16312
|
} | undefined;
|
|
16313
|
+
/** Open the hyperlink dialog for the current selection (Ctrl+K). */
|
|
16314
|
+
openHyperlink(): void;
|
|
16315
|
+
/**
|
|
16316
|
+
* Apply an element patch built by a formatting shortcut, mid-edit or not.
|
|
16317
|
+
* `InlineTextEditor` has no access to `EditorState`, only to this
|
|
16318
|
+
* controller and the element it is editing, so this is its way to reach
|
|
16319
|
+
* the same `patchSelected` the root keyboard handler and the ribbon use.
|
|
16320
|
+
*/
|
|
16321
|
+
patchSelected(patch: Partial<PptxElement> | ((element: PptxElement) => Partial<PptxElement>)): void;
|
|
16322
|
+
/** Arm the format painter from the current selection (Ctrl+Shift+C). */
|
|
16323
|
+
copyFormat(): void;
|
|
16324
|
+
/** Apply the copied format to the current selection (Ctrl+Shift+V). */
|
|
16325
|
+
pasteFormat(): void;
|
|
16326
|
+
/** Open the find bar (Ctrl+F), including mid-edit; see `EditorControllerDeps`. */
|
|
16327
|
+
toggleFind(): void;
|
|
16328
|
+
/** Open the find bar's replace row (Ctrl+H), including mid-edit. */
|
|
16329
|
+
toggleFindReplace(): void;
|
|
15953
16330
|
/** Commit the inline editor's text onto the element and close it. */
|
|
15954
16331
|
commitInline(id: string, text: string, snapshot?: InlineTextEditSnapshot): void;
|
|
15955
16332
|
/** Register a live reader with this viewer's document and editing session. */
|
|
@@ -16889,6 +17266,15 @@ declare class PresentationController {
|
|
|
16889
17266
|
firstSlide(): void;
|
|
16890
17267
|
/** End: the show's last slide, skipping trailing hidden slides. */
|
|
16891
17268
|
lastSlide(): void;
|
|
17269
|
+
/**
|
|
17270
|
+
* Handle a Slide Zoom / Section Zoom / Summary Zoom tile click: navigates
|
|
17271
|
+
* to the target slide, playing the zoom's own `zmPr/@transitionDur` when
|
|
17272
|
+
* authored, and (when `returnToParent` is set) arms an excursion so the
|
|
17273
|
+
* next forward {@link advance} past the target's range returns to the
|
|
17274
|
+
* slide the zoom was clicked from instead of continuing linearly through
|
|
17275
|
+
* the deck.
|
|
17276
|
+
*/
|
|
17277
|
+
navigateToZoomTarget(target: ZoomNavigationTarget): void;
|
|
16892
17278
|
/**
|
|
16893
17279
|
* Raise the black end-of-slide-show screen without ending anything.
|
|
16894
17280
|
*
|
package/dist/viewer/index.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { A as e, I as a,
|
|
3
|
-
var y = a, A =
|
|
1
|
+
import { Qh as l, Zh as S } from "../transition-overlay-CfsPqlES.js";
|
|
2
|
+
import { A as e, I as a, N as o, P as r, a as n, c as d, d as b, f as p, i as c, j as s, k as t, l as m, n as g, o as x, p as w, r as C, s as P, t as T, u as $ } from "../export-BUx-Kmlc.js";
|
|
3
|
+
var y = a, A = r, V = s, f = e, u = t, R = o;
|
|
4
4
|
export {
|
|
5
5
|
f as CollaborationCursors,
|
|
6
6
|
R as EditorLayer,
|
|
7
7
|
T as PowerPointViewer,
|
|
8
|
-
|
|
8
|
+
c as PresentationLoader,
|
|
9
9
|
u as RemoteSelectionOverlay,
|
|
10
10
|
y as Ribbon,
|
|
11
11
|
V as SlideCanvas,
|
|
12
|
-
|
|
12
|
+
C as ViewerState,
|
|
13
13
|
A as ViewerToolbar,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
$ as clampSlideIndex,
|
|
15
|
+
w as createSvelteAiBridge,
|
|
16
16
|
g as createViewerState,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
n as exportAllSlidesToSvg,
|
|
18
|
+
x as exportAllSlidesToSvgBlobs,
|
|
19
|
+
P as exportSlideAsSvg,
|
|
20
|
+
d as exportSlideToSvg,
|
|
21
|
+
m as exportSlideToSvgBlob,
|
|
22
22
|
b as fitScale,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
p as resolveNavigationKey,
|
|
24
|
+
S as zoomInPercent,
|
|
25
|
+
l as zoomOutPercent
|
|
26
26
|
};
|
package/package.json
CHANGED