pptx-angular-viewer 1.1.51 → 1.1.52

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-angular-viewer",
3
- "version": "1.1.51",
3
+ "version": "1.1.52",
4
4
  "description": "Angular PowerPoint viewer and editor component: render, edit, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "angular",
@@ -45,14 +45,14 @@
45
45
  "html2canvas-pro": "^2.0.4",
46
46
  "jspdf": "^4.2.1",
47
47
  "jszip": "^3.10.1",
48
- "pptx-viewer-core": "^1.1.42",
48
+ "pptx-viewer-core": "^1.1.43",
49
49
  "tslib": "^2.8.1"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "@angular/common": "^22.0.1",
53
53
  "@angular/core": "^22.0.1",
54
54
  "rxjs": "^7.8.0",
55
- "three": "^0.184.0"
55
+ "three": "^0.185.0"
56
56
  },
57
57
  "peerDependenciesMeta": {
58
58
  "three": {
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-500:oklch(76.9% .188 70.08);--color-blue-600:oklch(54.6% .245 262.881);--color-purple-600:oklch(55.8% .288 302.321);--color-slate-900:oklch(20.8% .042 265.755);--color-stone-100:oklch(97% .001 106.424);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-tight:1.25;--radius-sm:calc(var(--pptx-radius,.5rem) - 4px);--radius-lg:var(--pptx-radius,.5rem);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-foreground:var(--pptx-foreground,#f3f4f6);--color-card:var(--pptx-card,#111827);--color-popover:var(--pptx-popover,#111827);--color-primary:var(--pptx-primary,#6366f1);--color-primary-foreground:var(--pptx-primary-foreground,#fff);--color-secondary:var(--pptx-secondary,#1f2937);--color-muted:var(--pptx-muted,#1f2937);--color-muted-foreground:var(--pptx-muted-foreground,#9ca3af);--color-accent:var(--pptx-accent,#1f2937);--color-border:var(--pptx-border,#374151)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.pptx-rb-icon{height:calc(var(--spacing) * 7);min-width:calc(var(--spacing) * 7);color:var(--color-foreground);border-radius:.25rem;justify-content:center;align-items:center;font-size:.95rem;display:inline-flex}@media (hover:hover){.pptx-rb-icon:hover{background-color:var(--color-accent)}}.pptx-rb-icon:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-pill{align-items:center;gap:calc(var(--spacing) * 1.5);background-color:var(--color-muted);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:.25rem;display:inline-flex}@media (hover:hover){.pptx-rb-pill:hover{background-color:var(--color-accent)}}.pptx-rb-pill:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-grp{background-color:var(--color-muted);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-foreground);border-radius:.25rem;align-items:center;display:inline-flex;overflow:hidden}.pptx-rb-gb{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-border);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.pptx-rb-gb:hover{background-color:var(--color-accent)}}.pptx-rb-gb:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-gl{padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.pptx-rb-gl:hover{background-color:var(--color-accent)}}.pptx-rb-gl:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-sep{margin-inline:var(--spacing);background-color:var(--color-border);align-self:stretch;width:1px}@supports (color:color-mix(in lab, red, red)){.pptx-rb-sep{background-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.pptx-rb-select{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-card);padding-inline:var(--spacing);padding-block:var(--spacing);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-foreground);border-radius:.25rem}}@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.top-1{top:var(--spacing)}.top-full{top:100%}.right-1{right:var(--spacing)}.left-0{left:0}.z-20{z-index:20}.z-50{z-index:50}.z-\[1100\]{z-index:1100}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:var(--spacing)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.h-1{height:var(--spacing)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-12{height:calc(var(--spacing) * 12)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-44{width:calc(var(--spacing) * 44)}.w-\[640px\]{width:640px}.w-full{width:100%}.w-px{width:1px}.max-w-\[90vw\]{max-width:90vw}.max-w-\[420px\]{max-width:420px}.min-w-12{min-width:calc(var(--spacing) * 12)}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border,.border-border\/60{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.border-primary{border-color:var(--color-primary)}.bg-accent{background-color:var(--color-accent)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-border\/50{background-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/50{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.bg-card{background-color:var(--color-card)}.bg-muted{background-color:var(--color-muted)}.bg-popover{background-color:var(--color-popover)}.bg-primary,.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-secondary\/50{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/50{background-color:color-mix(in oklab, var(--color-secondary) 50%, transparent)}}.bg-transparent{background-color:#0000}.p-4{padding:calc(var(--spacing) * 4)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.accent-primary{accent-color:var(--color-primary)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-primary{--tw-ring-color:var(--color-primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-all{-webkit-user-select:all;user-select:all}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:right-0:after{content:var(--tw-content);right:0}.after\:-bottom-px:after{content:var(--tw-content);bottom:-1px}.after\:left-0:after{content:var(--tw-content);left:0}.after\:h-\[2\.5px\]:after{content:var(--tw-content);height:2.5px}.after\:bg-primary:after{content:var(--tw-content);background-color:var(--color-primary)}@media (hover:hover){.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:bg-accent:hover,.hover\:bg-accent\/30:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary\/80:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:text-foreground:hover{color:var(--color-foreground)}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}}.pptx-ng-viewer{--pptx-background:#030712;--pptx-foreground:#f3f4f6;--pptx-card:#111827;--pptx-border:#374151;--pptx-primary:#6366f1;--pptx-muted-foreground:#9ca3af;background:var(--pptx-background);width:100%;height:100%;min-height:0;color:var(--pptx-foreground);flex-direction:column;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex}.pptx-ng-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.75rem;padding:2rem;display:flex}.pptx-ng-error-detail{background:var(--pptx-card);max-width:40rem;color:var(--pptx-muted-foreground);white-space:pre-wrap;border-radius:.5rem;padding:.75rem;font-size:.8rem;overflow:auto}.pptx-ng-spinner{border:3px solid var(--pptx-border);border-top-color:var(--pptx-primary);border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite pptx-ng-spin}@keyframes pptx-ng-spin{to{transform:rotate(360deg)}}.pptx-ng-toolbar{border-bottom:1px solid var(--pptx-border);background:var(--pptx-card);justify-content:space-between;align-items:center;gap:1rem;padding:.5rem .75rem;display:flex}.pptx-ng-nav,.pptx-ng-zoom{align-items:center;gap:.5rem;display:flex}.pptx-ng-toolbar button{border:1px solid var(--pptx-border);min-width:2rem;height:2rem;color:var(--pptx-foreground);cursor:pointer;background:0 0;border-radius:.375rem;padding:0 .5rem;font-size:1rem;line-height:1}.pptx-ng-toolbar button:hover:not(:disabled){border-color:var(--pptx-primary)}.pptx-ng-toolbar button:disabled{opacity:.4;cursor:not-allowed}.pptx-ng-slide-counter,.pptx-ng-zoom-value{font-variant-numeric:tabular-nums;font-size:.85rem}.pptx-ng-body{flex:1;min-height:0;display:flex}.pptx-ng-thumbnails{border-right:1px solid var(--pptx-border);background:var(--pptx-card);flex-direction:column;gap:.5rem;width:8rem;padding:.75rem;display:flex;overflow-y:auto}.pptx-ng-thumb{aspect-ratio:16/9;border:2px solid var(--pptx-border);cursor:pointer;background:#fff;border-radius:.375rem;position:relative}.pptx-ng-thumb.is-active{border-color:var(--pptx-primary)}.pptx-ng-thumb-index{color:#111827;font-size:.7rem;position:absolute;bottom:.15rem;right:.3rem}.pptx-ng-main{background:#1e293b;flex:1;min-width:0;overflow:auto}.pptx-ng-canvas-viewport{width:100%;height:100%}.pptx-ng-element{box-sizing:border-box}.pptx-ng-canvas-stage.is-editable{cursor:default}.pptx-ng-canvas-stage.is-editable .pptx-ng-element{cursor:pointer}.pptx-ng-selection{box-sizing:border-box;outline-offset:1px;pointer-events:none;z-index:10000;background:#4f86ff14;outline:2px solid #4f86ff;position:absolute}.pptx-ng-handle{box-sizing:border-box;pointer-events:auto;touch-action:none;z-index:10001;background:#fff;border:1px solid #4f86ff;border-radius:2px;position:absolute}.pptx-ng-text-editor{box-sizing:border-box;color:#000;font:inherit;resize:none;z-index:10002;white-space:pre-wrap;background:#fffffff5;border:2px solid #4f86ff;margin:0;padding:2px;line-height:1.2;position:absolute;overflow:auto}.pptx-ng-marquee{box-sizing:border-box;pointer-events:none;z-index:9999;background:#4f86ff1f;border:1px dashed #4f86ff;position:absolute}.pptx-ng-snap-guide{box-sizing:border-box;pointer-events:none;z-index:10003;border-top:1px solid #f43f8e;border-left:1px solid #f43f8e;position:absolute}.pptx-ng-rotate-handle{box-sizing:border-box;cursor:grab;pointer-events:auto;touch-action:none;z-index:10001;background:#fff;border:1px solid #4f86ff;border-radius:50%;position:absolute}.pptx-ng-adjust-handle{box-sizing:border-box;cursor:crosshair;pointer-events:auto;touch-action:none;z-index:10001;background:#fcd34d;border:1px solid #b45309;position:absolute;transform:rotate(45deg)}.pptx-ng-inspector-host{background:#00000005;border-left:1px solid #0000001a;flex:0 0 240px;width:240px;overflow:auto}.pptx-ng-idrawer-grab{display:none}.pptx-ng-idrawer-handle{background:#00000040;border-radius:9999px;width:40px;height:4px}.pptx-ng-slide-props{flex-direction:column;gap:.5rem;padding:.75rem;font-size:.8125rem;display:flex}.pptx-ng-prop-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.pptx-ng-prop-row.pptx-ng-prop-col{flex-direction:column;align-items:stretch}.pptx-ng-prop-row textarea{resize:vertical;width:100%;font:inherit}.pptx-ng-img{object-fit:contain;width:100%;height:100%;display:block}.pptx-ng-para{margin:0}.pptx-ng-bullet{white-space:pre}.pptx-ng-link{color:inherit;cursor:pointer;text-decoration:underline}.pptx-ng-actions{align-items:center;gap:.25rem;display:flex}.pptx-ng-notes{background:#00000005;border-top:1px solid #0000001a;max-height:30%;margin:.5rem 1rem 1rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.4;overflow:auto}.pptx-ng-notes-title{text-transform:uppercase;letter-spacing:.04em;opacity:.6;margin:0 0 .25rem;font-size:.75rem;font-weight:600}.pptx-ng-notes-body{white-space:pre-wrap;word-break:break-word;margin:0}.pptx-ng-mobile-notes-sheet{background:#fff;border-top:1px solid #00000026;flex:none;max-height:50vh;overflow:auto;box-shadow:0 -6px 20px #0000002e}.pptx-ng-mnotes-grab{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:8px 0 4px;display:flex}.pptx-ng-mnotes-grab:active{cursor:grabbing}.pptx-ng-mnotes-handle{background:#00000040;border-radius:9999px;width:40px;height:4px}.pptx-ng-table-wrapper{width:100%;height:100%;overflow:hidden}.pptx-ng-table-wrapper>.pptx-ng-table{border-collapse:collapse;table-layout:fixed;width:100%;height:100%}.pptx-ng-table-wrapper>.pptx-ng-table td{word-break:break-word;vertical-align:middle;overflow:hidden}.pptx-ng-table-wrapper>.pptx-ng-table td .pptx-ng-cell-input{box-sizing:border-box;width:100%;color:inherit;font:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}.pptx-ng-chart svg{width:100%;height:100%;display:block}.pptx-ng-placeholder{color:#6366f1cc;background:#6366f10f;border:1px dashed #6366f180;justify-content:center;align-items:center;width:100%;height:100%;font-size:.75rem;display:flex}.pptx-ng-overlay-grid{pointer-events:none;z-index:2;position:absolute;inset:0}.pptx-ng-overlay-guides{pointer-events:none;z-index:3;position:absolute;inset:0}.pptx-ng-ruler-corner{pointer-events:none;z-index:52;background:#1e293b;border-bottom:1px solid #ffffff1a;border-right:1px solid #ffffff1a;width:20px;height:20px;position:absolute;top:0;left:0}.pptx-ng-ruler-h{z-index:51;height:20px;position:absolute;top:0;left:20px;overflow:hidden}.pptx-ng-ruler-v{z-index:51;width:20px;position:absolute;top:20px;left:0;overflow:hidden}.pptx-ng-ruler-guide-line{pointer-events:none;z-index:49;background:#facc15d9;position:absolute}.pptx-ng-ruler-guide-handle{pointer-events:auto;touch-action:none;z-index:50;position:absolute}.pptx-rb-eyedropper-active{background-color:var(--color-purple-600);color:var(--color-white)}.pptx-rb-template-active{background-color:var(--color-amber-500);color:var(--color-white)}@media (max-width:640px),(pointer:coarse){.pptx-ng-toolbar{flex-wrap:wrap;gap:.5rem;padding:.5rem}.pptx-ng-actions{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex:100%;gap:.5rem;padding-bottom:.15rem;overflow-x:auto}.pptx-ng-actions button{flex:none}.pptx-ng-nav button,.pptx-ng-zoom button,.pptx-ng-actions button{min-width:44px;height:auto;min-height:44px;padding:0 .65rem;font-size:1.1rem}.pptx-ng-nav button{font-size:1.5rem;font-weight:600}.pptx-ng-thumbnails{border-right:none;border-bottom:1px solid var(--pptx-border);flex-direction:row;width:auto;max-width:100%;padding:.5rem;overflow:auto hidden}.pptx-ng-thumbnails .pptx-ng-thumb{flex:0 0 4.5rem;width:4.5rem}.pptx-ng-body{flex-direction:column}.pptx-ng-body>pptx-slides-panel{flex:none;max-height:30vh}.pptx-ng-inspector-host{border-left:none;border-top:1px solid var(--pptx-border);flex:none;width:100%;max-height:40vh}.pptx-ng-idrawer-grab{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:inherit;justify-content:center;align-items:center;padding:8px 0 4px;display:flex;position:sticky;top:0}.pptx-ng-main{flex:auto;min-height:50vh}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-500:oklch(76.9% .188 70.08);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-600:oklch(54.6% .245 262.881);--color-purple-600:oklch(55.8% .288 302.321);--color-slate-900:oklch(20.8% .042 265.755);--color-stone-100:oklch(97% .001 106.424);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-tight:1.25;--radius-sm:calc(var(--pptx-radius,.5rem) - 4px);--radius-lg:var(--pptx-radius,.5rem);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:var(--pptx-background,#030712);--color-foreground:var(--pptx-foreground,#f3f4f6);--color-card:var(--pptx-card,#111827);--color-popover:var(--pptx-popover,#111827);--color-primary:var(--pptx-primary,#6366f1);--color-primary-foreground:var(--pptx-primary-foreground,#fff);--color-secondary:var(--pptx-secondary,#1f2937);--color-muted:var(--pptx-muted,#1f2937);--color-muted-foreground:var(--pptx-muted-foreground,#9ca3af);--color-accent:var(--pptx-accent,#1f2937);--color-border:var(--pptx-border,#374151)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.pptx-rb-icon{height:calc(var(--spacing) * 7);min-width:calc(var(--spacing) * 7);color:var(--color-foreground);border-radius:.25rem;justify-content:center;align-items:center;font-size:.95rem;display:inline-flex}@media (hover:hover){.pptx-rb-icon:hover{background-color:var(--color-accent)}}.pptx-rb-icon:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-pill{align-items:center;gap:calc(var(--spacing) * 1.5);background-color:var(--color-muted);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:.25rem;display:inline-flex}@media (hover:hover){.pptx-rb-pill:hover{background-color:var(--color-accent)}}.pptx-rb-pill:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-grp{background-color:var(--color-muted);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-foreground);border-radius:.25rem;align-items:center;display:inline-flex;overflow:hidden}.pptx-rb-gb{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-border);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.pptx-rb-gb:hover{background-color:var(--color-accent)}}.pptx-rb-gb:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-gl{padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1.5);justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.pptx-rb-gl:hover{background-color:var(--color-accent)}}.pptx-rb-gl:disabled{cursor:not-allowed;opacity:.4}.pptx-rb-sep{margin-inline:var(--spacing);background-color:var(--color-border);align-self:stretch;width:1px}@supports (color:color-mix(in lab, red, red)){.pptx-rb-sep{background-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.pptx-rb-select{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-card);padding-inline:var(--spacing);padding-block:var(--spacing);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-foreground);border-radius:.25rem}}@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-1{top:var(--spacing)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-1{right:var(--spacing)}.left-0{left:0}.z-20{z-index:20}.z-50{z-index:50}.z-\[1100\]{z-index:1100}.z-\[9999\]{z-index:9999}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:var(--spacing)}.my-1{margin-block:var(--spacing)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.h-1{height:var(--spacing)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-10{height:calc(var(--spacing) * 10)}.h-24{height:calc(var(--spacing) * 24)}.h-px{height:1px}.w-1\/3{width:33.3333%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-\[640px\]{width:640px}.w-full{width:100%}.w-px{width:1px}.max-w-\[90vw\]{max-width:90vw}.max-w-\[420px\]{max-width:420px}.min-w-2{min-width:calc(var(--spacing) * 2)}.min-w-\[3rem\]{min-width:3rem}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.scale-\[1\.02\]{scale:1.02}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-border,.border-border\/40{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.border-border\/40{border-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.border-border\/60{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.border-primary{border-color:var(--color-primary)}.bg-accent{background-color:var(--color-accent)}.bg-background{background-color:var(--color-background)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-border\/40{background-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/40{background-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.bg-border\/50{background-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/50{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.bg-border\/60{background-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/60{background-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.bg-card{background-color:var(--color-card)}.bg-green-600{background-color:var(--color-green-600)}.bg-muted{background-color:var(--color-muted)}.bg-popover{background-color:var(--color-popover)}.bg-primary,.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-secondary\/50{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/50{background-color:color-mix(in oklab, var(--color-secondary) 50%, transparent)}}.bg-transparent{background-color:#0000}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.accent-primary{accent-color:var(--color-primary)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-primary{--tw-ring-color:var(--color-primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:right-0:after{content:var(--tw-content);right:0}.after\:-bottom-px:after{content:var(--tw-content);bottom:-1px}.after\:left-0:after{content:var(--tw-content);left:0}.after\:h-\[2\.5px\]:after{content:var(--tw-content);height:2.5px}.after\:bg-primary:after{content:var(--tw-content);background-color:var(--color-primary)}@media (hover:hover){.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:bg-accent:hover,.hover\:bg-accent\/30:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\:bg-accent\/60:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/60:hover{background-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.hover\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary\/80:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}}.pptx-ng-viewer{--pptx-background:#030712;--pptx-foreground:#f3f4f6;--pptx-card:#111827;--pptx-border:#374151;--pptx-primary:#6366f1;--pptx-muted-foreground:#9ca3af;background:var(--pptx-background);width:100%;height:100%;min-height:0;color:var(--pptx-foreground);flex-direction:column;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex}.pptx-ng-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.75rem;padding:2rem;display:flex}.pptx-ng-error-detail{background:var(--pptx-card);max-width:40rem;color:var(--pptx-muted-foreground);white-space:pre-wrap;border-radius:.5rem;padding:.75rem;font-size:.8rem;overflow:auto}.pptx-ng-spinner{border:3px solid var(--pptx-border);border-top-color:var(--pptx-primary);border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite pptx-ng-spin}@keyframes pptx-ng-spin{to{transform:rotate(360deg)}}.pptx-ng-toolbar{border-bottom:1px solid var(--pptx-border);background:var(--pptx-card);justify-content:space-between;align-items:center;gap:1rem;padding:.5rem .75rem;display:flex}.pptx-ng-nav,.pptx-ng-zoom{align-items:center;gap:.5rem;display:flex}.pptx-ng-toolbar button{border:1px solid var(--pptx-border);min-width:2rem;height:2rem;color:var(--pptx-foreground);cursor:pointer;background:0 0;border-radius:.375rem;padding:0 .5rem;font-size:1rem;line-height:1}.pptx-ng-toolbar button:hover:not(:disabled){border-color:var(--pptx-primary)}.pptx-ng-toolbar button:disabled{opacity:.4;cursor:not-allowed}.pptx-ng-slide-counter,.pptx-ng-zoom-value{font-variant-numeric:tabular-nums;font-size:.85rem}.pptx-ng-body{flex:1;min-height:0;display:flex}.pptx-ng-thumbnails{border-right:1px solid var(--pptx-border);background:var(--pptx-card);flex-direction:column;gap:.5rem;width:8rem;padding:.75rem;display:flex;overflow-y:auto}.pptx-ng-thumb{aspect-ratio:16/9;border:2px solid var(--pptx-border);cursor:pointer;background:#fff;border-radius:.375rem;position:relative}.pptx-ng-thumb.is-active{border-color:var(--pptx-primary)}.pptx-ng-thumb-index{color:#111827;font-size:.7rem;position:absolute;bottom:.15rem;right:.3rem}.pptx-ng-main{background:#1e293b;flex:1;min-width:0;overflow:auto}.pptx-ng-canvas-viewport{width:100%;height:100%}.pptx-ng-element{box-sizing:border-box}.pptx-ng-canvas-stage.is-editable{cursor:default}.pptx-ng-canvas-stage.is-editable .pptx-ng-element{cursor:pointer}.pptx-ng-selection{box-sizing:border-box;outline-offset:1px;pointer-events:none;z-index:10000;background:#4f86ff14;outline:2px solid #4f86ff;position:absolute}.pptx-ng-handle{box-sizing:border-box;pointer-events:auto;touch-action:none;z-index:10001;background:#fff;border:1px solid #4f86ff;border-radius:2px;position:absolute}.pptx-ng-text-editor{box-sizing:border-box;color:#000;font:inherit;resize:none;z-index:10002;white-space:pre-wrap;background:#fffffff5;border:2px solid #4f86ff;margin:0;padding:2px;line-height:1.2;position:absolute;overflow:auto}.pptx-ng-marquee{box-sizing:border-box;pointer-events:none;z-index:9999;background:#4f86ff1f;border:1px dashed #4f86ff;position:absolute}.pptx-ng-snap-guide{box-sizing:border-box;pointer-events:none;z-index:10003;border-top:1px solid #f43f8e;border-left:1px solid #f43f8e;position:absolute}.pptx-ng-rotate-handle{box-sizing:border-box;cursor:grab;pointer-events:auto;touch-action:none;z-index:10001;background:#fff;border:1px solid #4f86ff;border-radius:50%;position:absolute}.pptx-ng-adjust-handle{box-sizing:border-box;cursor:crosshair;pointer-events:auto;touch-action:none;z-index:10001;background:#fcd34d;border:1px solid #b45309;position:absolute;transform:rotate(45deg)}.pptx-ng-inspector-host{background:#00000005;border-left:1px solid #0000001a;flex:0 0 240px;width:240px;overflow:auto}.pptx-ng-idrawer-grab{display:none}.pptx-ng-idrawer-handle{background:#00000040;border-radius:9999px;width:40px;height:4px}.pptx-ng-slide-props{flex-direction:column;gap:.5rem;padding:.75rem;font-size:.8125rem;display:flex}.pptx-ng-prop-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.pptx-ng-prop-row.pptx-ng-prop-col{flex-direction:column;align-items:stretch}.pptx-ng-prop-row textarea{resize:vertical;width:100%;font:inherit}.pptx-ng-img{object-fit:contain;width:100%;height:100%;display:block}.pptx-ng-para{margin:0}.pptx-ng-bullet{white-space:pre}.pptx-ng-link{color:inherit;cursor:pointer;text-decoration:underline}.pptx-ng-actions{align-items:center;gap:.25rem;display:flex}.pptx-ng-notes{background:#00000005;border-top:1px solid #0000001a;max-height:30%;margin:.5rem 1rem 1rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.4;overflow:auto}.pptx-ng-notes-title{text-transform:uppercase;letter-spacing:.04em;opacity:.6;margin:0 0 .25rem;font-size:.75rem;font-weight:600}.pptx-ng-notes-body{white-space:pre-wrap;word-break:break-word;margin:0}.pptx-ng-mobile-notes-sheet{background:#fff;border-top:1px solid #00000026;flex:none;max-height:50vh;overflow:auto;box-shadow:0 -6px 20px #0000002e}.pptx-ng-mnotes-grab{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:8px 0 4px;display:flex}.pptx-ng-mnotes-grab:active{cursor:grabbing}.pptx-ng-mnotes-handle{background:#00000040;border-radius:9999px;width:40px;height:4px}.pptx-ng-table-wrapper{width:100%;height:100%;overflow:hidden}.pptx-ng-table-wrapper>.pptx-ng-table{border-collapse:collapse;table-layout:fixed;width:100%;height:100%}.pptx-ng-table-wrapper>.pptx-ng-table td{word-break:break-word;vertical-align:middle;overflow:hidden}.pptx-ng-table-wrapper>.pptx-ng-table td .pptx-ng-cell-input{box-sizing:border-box;width:100%;color:inherit;font:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}.pptx-ng-chart svg{width:100%;height:100%;display:block}.pptx-ng-placeholder{color:#6366f1cc;background:#6366f10f;border:1px dashed #6366f180;justify-content:center;align-items:center;width:100%;height:100%;font-size:.75rem;display:flex}.pptx-ng-overlay-grid{pointer-events:none;z-index:2;position:absolute;inset:0}.pptx-ng-overlay-guides{pointer-events:none;z-index:3;position:absolute;inset:0}.pptx-ng-ruler-corner{pointer-events:none;z-index:52;background:#1e293b;border-bottom:1px solid #ffffff1a;border-right:1px solid #ffffff1a;width:20px;height:20px;position:absolute;top:0;left:0}.pptx-ng-ruler-h{z-index:51;height:20px;position:absolute;top:0;left:20px;overflow:hidden}.pptx-ng-ruler-v{z-index:51;width:20px;position:absolute;top:20px;left:0;overflow:hidden}.pptx-ng-ruler-guide-line{pointer-events:none;z-index:49;background:#facc15d9;position:absolute}.pptx-ng-ruler-guide-handle{pointer-events:auto;touch-action:none;z-index:50;position:absolute}.pptx-rb-eyedropper-active{background-color:var(--color-purple-600);color:var(--color-white)}.pptx-rb-template-active{background-color:var(--color-amber-500);color:var(--color-white)}@media (max-width:640px),(pointer:coarse){.pptx-ng-toolbar{flex-wrap:wrap;gap:.5rem;padding:.5rem}.pptx-ng-actions{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex:100%;gap:.5rem;padding-bottom:.15rem;overflow-x:auto}.pptx-ng-actions button{flex:none}.pptx-ng-nav button,.pptx-ng-zoom button,.pptx-ng-actions button{min-width:44px;height:auto;min-height:44px;padding:0 .65rem;font-size:1.1rem}.pptx-ng-nav button{font-size:1.5rem;font-weight:600}.pptx-ng-thumbnails{border-right:none;border-bottom:1px solid var(--pptx-border);flex-direction:row;width:auto;max-width:100%;padding:.5rem;overflow:auto hidden}.pptx-ng-thumbnails .pptx-ng-thumb{flex:0 0 4.5rem;width:4.5rem}.pptx-ng-body{flex-direction:column}.pptx-ng-body>pptx-slides-panel{flex:none;max-height:30vh}.pptx-ng-inspector-host{border-left:none;border-top:1px solid var(--pptx-border);flex:none;width:100%;max-height:40vh}.pptx-ng-idrawer-grab{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:inherit;justify-content:center;align-items:center;padding:8px 0 4px;display:flex;position:sticky;top:0}.pptx-ng-main{flex:auto;min-height:50vh}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
@@ -1019,6 +1019,39 @@ declare function resolveParagraphBullet(firstSegment: TextSegment | undefined):
1019
1019
  */
1020
1020
  declare function bulletIndentPx(level: number | undefined): number;
1021
1021
 
1022
+ /**
1023
+ * notes-utils.ts: framework-agnostic pure helpers for the rich speaker-notes
1024
+ * editor, shared by the React, Vue, and Angular bindings.
1025
+ *
1026
+ * Ported from React's `viewer/components/notes/notes-utils.ts`. Pure TypeScript
1027
+ * (no DOM, no framework imports beyond the core `TextSegment` model), so each
1028
+ * binding consumes one copy: paragraph/segment conversions, plain-text seeding,
1029
+ * normalisation, and the cursor->paragraph index lookup used by list/indent
1030
+ * toolbar actions.
1031
+ *
1032
+ * NOTE: `escapeHtml` is exported for sibling notes modules but intentionally not
1033
+ * re-exported through the notes barrel: the shared `export/print-document`
1034
+ * module already exports a symbol of the same name.
1035
+ */
1036
+
1037
+ /** Inline character-formatting commands handled via `document.execCommand`. */
1038
+ type NotesInlineCommand = 'bold' | 'italic' | 'underline' | 'strikeThrough';
1039
+
1040
+ /**
1041
+ * notes-editor.ts: framework-agnostic DOM command helpers for the rich
1042
+ * speaker-notes contentEditable editor, shared by every binding.
1043
+ *
1044
+ * These wrap the pure paragraph/segment maths in `notes-utils` with the small
1045
+ * amount of (framework-neutral) DOM work the toolbar actions need: reading the
1046
+ * live editor back into segments, applying a list/indent command at the caret,
1047
+ * and inserting a hyperlink at the current selection. The binding owns the
1048
+ * editor element ref, the debounce, and the reactive state; it calls these to
1049
+ * compute the next segments + plain text without duplicating the logic.
1050
+ */
1051
+
1052
+ /** Paragraph-level toolbar commands. */
1053
+ type NotesParagraphCommand = 'bullet' | 'numbered' | 'indent' | 'outdent';
1054
+
1022
1055
  /**
1023
1056
  * Text-field placeholder substitution, shared by every binding's text
1024
1057
  * renderer.
@@ -2847,6 +2880,52 @@ declare class MobileBottomBarComponent {
2847
2880
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileBottomBarComponent, "pptx-mobile-bottom-bar", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "activeSheet": { "alias": "activeSheet"; "required": false; "isSignal": true; }; }, { "openSlides": "openSlides"; "insert": "insert"; "openFormat": "openFormat"; "openComments": "openComments"; "notes": "notes"; }, never, never, true, never>;
2848
2881
  }
2849
2882
 
2883
+ /** BroadcastChannel name shared between presenter and audience tabs. */
2884
+ declare const PRESENTER_CHANNEL_NAME = "pptx-viewer-presenter";
2885
+ /** Unique origin identifier so we only react to our own messages. */
2886
+ declare const PRESENTER_MSG_ORIGIN = "pptx-viewer-presenter";
2887
+ /** Hash key used to pass the session nonce to the audience tab. */
2888
+ declare const AUDIENCE_NONCE_KEY = "nonce";
2889
+ interface PresenterSlideChangeMessage {
2890
+ origin: typeof PRESENTER_MSG_ORIGIN;
2891
+ type: 'presenter-slide-change';
2892
+ slideIndex: number;
2893
+ sessionId: string;
2894
+ }
2895
+ interface PresenterExitMessage {
2896
+ origin: typeof PRESENTER_MSG_ORIGIN;
2897
+ type: 'presenter-exit';
2898
+ sessionId: string;
2899
+ }
2900
+ type PresenterMessage = PresenterSlideChangeMessage | PresenterExitMessage;
2901
+ /** Type guard for messages arriving on the presenter BroadcastChannel. */
2902
+ declare function isPresenterMessage(data: unknown): data is PresenterMessage;
2903
+ /**
2904
+ * Parse the session nonce from the current page URL hash. Returns null if the
2905
+ * hash is not in the expected `#pptx-audience&nonce=<uuid>` form.
2906
+ */
2907
+ declare function parseAudienceNonce(): string | null;
2908
+ declare class PresenterWindowService {
2909
+ private audienceWindow;
2910
+ private channel;
2911
+ private pollTimer;
2912
+ /** Per-session UUID. Regenerated each time openAudienceWindow is invoked. */
2913
+ private sessionId;
2914
+ private getChannel;
2915
+ isAudienceWindowOpen(): boolean;
2916
+ syncSlideToAudience(slideIndex: number): void;
2917
+ closeAudienceWindow(): void;
2918
+ /**
2919
+ * Open the audience tab. Persists the PPTX bytes (if any) to IndexedDB, then
2920
+ * navigates the placeholder tab to the audience URL. Returns false when the
2921
+ * popup is blocked.
2922
+ */
2923
+ openAudienceWindow(content: ArrayBuffer | Uint8Array | null, currentSlideIndex: number): boolean;
2924
+ private disposeWindow;
2925
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresenterWindowService, never>;
2926
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PresenterWindowService>;
2927
+ }
2928
+
2850
2929
  /**
2851
2930
  * Captures the slide at `index` (zero-based) to a PNG `data:` URL. The viewer
2852
2931
  * supplies this: it flips the live stage to `index` and rasterises it.
@@ -3272,6 +3351,22 @@ declare class PowerPointViewerComponent {
3272
3351
  readonly theme: _angular_core.InputSignal<ViewerTheme | undefined>;
3273
3352
  /** Optional real-time collaboration config; when set, connects and shows remote cursors. */
3274
3353
  readonly collaboration: _angular_core.InputSignal<CollaborationConfig | undefined>;
3354
+ /**
3355
+ * Display name for the local user in collaboration/broadcast sessions and
3356
+ * presence avatars. Falls back to "You" (cursors/avatars) and "Presenter"
3357
+ * (broadcast owner) when omitted. Mirrors the React/Vue `authorName` prop.
3358
+ */
3359
+ readonly authorName: _angular_core.InputSignal<string | undefined>;
3360
+ /**
3361
+ * Seed values for the Share dialog's start form (and the broadcast server
3362
+ * URL). Lets the host pre-fill the room id / user name / server URL. Mirrors
3363
+ * the React/Vue `shareDefaults` prop.
3364
+ */
3365
+ readonly shareDefaults: _angular_core.InputSignal<{
3366
+ roomId?: string;
3367
+ userName?: string;
3368
+ serverUrl?: string;
3369
+ } | undefined>;
3275
3370
  /**
3276
3371
  * Host override for the File ▸ Open action. When set, the built-in native
3277
3372
  * file picker is bypassed and this is invoked instead; the host then supplies
@@ -3295,6 +3390,14 @@ declare class PowerPointViewerComponent {
3295
3390
  readonly contentChange: _angular_core.OutputEmitterRef<Uint8Array<ArrayBufferLike>>;
3296
3391
  /** Fired when the user edits document properties in the Info dialog. */
3297
3392
  readonly propertiesChange: _angular_core.OutputEmitterRef<Partial<PptxCoreProperties>>;
3393
+ /**
3394
+ * Fired when a collaboration/broadcast session starts, with the connected
3395
+ * config (role `collaborator` for Share, `owner` for Broadcast). Lets the
3396
+ * host rewrite the URL and publish the deck. Mirrors React/Vue.
3397
+ */
3398
+ readonly startCollaboration: _angular_core.OutputEmitterRef<CollaborationConfig>;
3399
+ /** Fired when the collaboration/broadcast session stops. Mirrors React/Vue. */
3400
+ readonly stopCollaboration: _angular_core.OutputEmitterRef<void>;
3298
3401
  protected readonly loader: LoadContentService;
3299
3402
  private readonly exportSvc;
3300
3403
  protected readonly editor: EditorStateService;
@@ -3305,6 +3408,7 @@ declare class PowerPointViewerComponent {
3305
3408
  protected readonly mobile: IsMobileService;
3306
3409
  private readonly smartArt3DSvc;
3307
3410
  private readonly zoomTarget;
3411
+ protected readonly presenterWindow: PresenterWindowService;
3308
3412
  /** The `<main>` host; used to locate the live `.pptx-ng-canvas-stage`. */
3309
3413
  private readonly mainEl;
3310
3414
  /** True while a PNG/PDF export is in progress (disables the buttons). */
@@ -3347,6 +3451,8 @@ declare class PowerPointViewerComponent {
3347
3451
  protected readonly mobileSheet: _angular_core.WritableSignal<"menu" | "slides" | null>;
3348
3452
  /** Speaker-notes strip visibility. */
3349
3453
  protected readonly showNotes: _angular_core.WritableSignal<boolean>;
3454
+ /** Whether the left slides panel is collapsed (top-bar sidebar toggle). */
3455
+ protected readonly slidesPanelCollapsed: _angular_core.WritableSignal<boolean>;
3350
3456
  /** Find-in-slides bar visibility. */
3351
3457
  protected readonly showFind: _angular_core.WritableSignal<boolean>;
3352
3458
  /** Find-and-replace bar state (edit mode only). */
@@ -3369,6 +3475,11 @@ declare class PowerPointViewerComponent {
3369
3475
  * `canEdit`.
3370
3476
  */
3371
3477
  protected readonly inspectorContent: _angular_core.Signal<"slide" | "element" | "comments" | "accessibility" | "signatures" | "selection" | null>;
3478
+ /**
3479
+ * Whether the right-docked inspector is showing the format panel (element or
3480
+ * slide properties). Drives the top-bar inspector-toggle active state.
3481
+ */
3482
+ protected readonly inspectorPaneOpen: _angular_core.Signal<boolean>;
3372
3483
  /** Inspector content, but null on mobile once the user has swiped it away. */
3373
3484
  protected readonly visibleInspectorKind: _angular_core.Signal<"slide" | "element" | "comments" | "accessibility" | "signatures" | "selection" | null>;
3374
3485
  /** Accessible label for the inspector host, by active content. */
@@ -3402,6 +3513,16 @@ declare class PowerPointViewerComponent {
3402
3513
  protected readonly shareUrl: _angular_core.Signal<string>;
3403
3514
  /** Shareable follow link for the active broadcast. */
3404
3515
  protected readonly broadcastViewerUrl: _angular_core.Signal<string>;
3516
+ /**
3517
+ * Seed values for the Share dialog: the host-supplied {@link shareDefaults},
3518
+ * with `userName` falling back to {@link authorName} (then "You") so the
3519
+ * local user's name pre-fills the form. Mirrors React/Vue.
3520
+ */
3521
+ protected readonly shareDialogDefaults: _angular_core.Signal<{
3522
+ roomId?: string;
3523
+ userName?: string;
3524
+ serverUrl?: string;
3525
+ }>;
3405
3526
  /** Local overrides applied to document properties via the Info dialog. */
3406
3527
  private readonly coreOverride;
3407
3528
  /** Comments on the active slide. */
@@ -3535,9 +3656,14 @@ declare class PowerPointViewerComponent {
3535
3656
  * selection correct when the show closes.
3536
3657
  */
3537
3658
  onPresentationIndexChange(index: number): void;
3659
+ /**
3660
+ * Open a separate audience tab and hand off the deck via the shared
3661
+ * IndexedDB store. Mirrors React's presenter "open audience window".
3662
+ */
3663
+ openAudienceWindow(): void;
3538
3664
  /** Open the presenter (speaker) view: current+next slide, notes, timer. */
3539
3665
  presentPresenter(): void;
3540
- /** Close the presenter view (and any audience overlay it opened). */
3666
+ /** Close the presenter view (and any audience overlay/window it opened). */
3541
3667
  exitPresenter(): void;
3542
3668
  /** Toggle the speaker-notes strip. */
3543
3669
  toggleNotes(): void;
@@ -3716,7 +3842,7 @@ declare class PowerPointViewerComponent {
3716
3842
  /** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
3717
3843
  exportVideo(): Promise<void>;
3718
3844
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
3719
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "collaboration": { "alias": "collaboration"; "required": false; "isSignal": true; }; "onOpenFile": { "alias": "onOpenFile"; "required": false; "isSignal": true; }; "smartArt3D": { "alias": "smartArt3D"; "required": false; "isSignal": true; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; }, never, never, true, never>;
3845
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "collaboration": { "alias": "collaboration"; "required": false; "isSignal": true; }; "authorName": { "alias": "authorName"; "required": false; "isSignal": true; }; "shareDefaults": { "alias": "shareDefaults"; "required": false; "isSignal": true; }; "onOpenFile": { "alias": "onOpenFile"; "required": false; "isSignal": true; }; "smartArt3D": { "alias": "smartArt3D"; "required": false; "isSignal": true; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; "startCollaboration": "startCollaboration"; "stopCollaboration": "stopCollaboration"; }, never, never, true, never>;
3720
3846
  }
3721
3847
 
3722
3848
  /** The eight resize-handle positions around a selection box. */
@@ -6056,18 +6182,38 @@ declare class MobileToolbarComponent {
6056
6182
  declare class NotesPanelComponent {
6057
6183
  /** The active slide whose notes are shown / edited. */
6058
6184
  readonly slide: _angular_core.InputSignal<PptxSlide | undefined>;
6059
- /** Emits the new notes text on commit (change / blur). */
6185
+ /** Emits the new plain-text notes on commit. */
6060
6186
  readonly update: _angular_core.OutputEmitterRef<string>;
6061
- /** Whether the panel body is collapsed (notes hidden). */
6062
6187
  readonly collapsed: _angular_core.WritableSignal<boolean>;
6188
+ protected readonly isRichEnabled: _angular_core.WritableSignal<boolean>;
6189
+ protected readonly showLinkPopover: _angular_core.WritableSignal<boolean>;
6190
+ protected readonly savedSelectionText: _angular_core.WritableSignal<string>;
6191
+ private readonly richEditor;
6063
6192
  private readonly textarea;
6064
- /** The slide id we've already seeded the textarea for. */
6193
+ /** Show the rich surface only when a slide is selected. */
6194
+ protected showRich(): boolean;
6195
+ private draftSegments;
6196
+ private draftText;
6065
6197
  private seededId;
6198
+ private debounceId;
6066
6199
  constructor();
6067
- /** Toggle the collapsed state. */
6200
+ private seedActiveSurface;
6201
+ private emitNow;
6202
+ private scheduleSave;
6068
6203
  toggle(): void;
6069
- /** Commit the edited notes text to the host. */
6070
- onCommit(event: Event): void;
6204
+ onRichInput(): void;
6205
+ inlineCommand(command: NotesInlineCommand): void;
6206
+ paragraphCommand(command: NotesParagraphCommand): void;
6207
+ onRichKeydown(event: KeyboardEvent): void;
6208
+ onEditorClick(event: MouseEvent): void;
6209
+ openLinkPopover(): void;
6210
+ insertLink(link: {
6211
+ url: string;
6212
+ displayText: string;
6213
+ }): void;
6214
+ onPlainCommit(event: Event): void;
6215
+ toggleRich(): void;
6216
+ printNotes(): void;
6071
6217
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotesPanelComponent, never>;
6072
6218
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotesPanelComponent, "pptx-notes-panel", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; }, { "update": "update"; }, never, never, true, never>;
6073
6219
  }
@@ -6133,6 +6279,31 @@ declare class EditorToolbarComponent {
6133
6279
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditorToolbarComponent, "pptx-editor-toolbar", never, { "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6134
6280
  }
6135
6281
 
6282
+ declare class StatusBarComponent {
6283
+ readonly slideIndex: _angular_core.InputSignal<number>;
6284
+ readonly slideCount: _angular_core.InputSignal<number>;
6285
+ readonly canEdit: _angular_core.InputSignal<boolean>;
6286
+ readonly dirty: _angular_core.InputSignal<boolean>;
6287
+ readonly notesOpen: _angular_core.InputSignal<boolean>;
6288
+ readonly zoomPercent: _angular_core.InputSignal<number>;
6289
+ /** True when the slide-sorter overlay is open (active-state styling). */
6290
+ readonly sorterActive: _angular_core.InputSignal<boolean>;
6291
+ /** True when the presentation overlay is open (active-state styling). */
6292
+ readonly presenting: _angular_core.InputSignal<boolean>;
6293
+ readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
6294
+ readonly normalView: _angular_core.OutputEmitterRef<void>;
6295
+ readonly openSorter: _angular_core.OutputEmitterRef<void>;
6296
+ readonly slideShow: _angular_core.OutputEmitterRef<void>;
6297
+ readonly zoomIn: _angular_core.OutputEmitterRef<void>;
6298
+ readonly zoomOut: _angular_core.OutputEmitterRef<void>;
6299
+ readonly zoomReset: _angular_core.OutputEmitterRef<void>;
6300
+ /** "Normal" is active when neither the sorter nor the slideshow is showing. */
6301
+ protected isNormal(): boolean;
6302
+ protected min(a: number, b: number): number;
6303
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusBarComponent, never>;
6304
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusBarComponent, "pptx-status-bar", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "notesOpen": { "alias": "notesOpen"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "sorterActive": { "alias": "sorterActive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; }, { "toggleNotes": "toggleNotes"; "normalView": "normalView"; "openSorter": "openSorter"; "slideShow": "slideShow"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; }, never, never, true, never>;
6305
+ }
6306
+
6136
6307
  declare class EditorContextMenuComponent {
6137
6308
  /** Horizontal viewport coordinate (px) of the top-left corner of the menu. */
6138
6309
  readonly x: _angular_core.InputSignal<number>;
@@ -7303,6 +7474,38 @@ interface PresenterNotes {
7303
7474
  */
7304
7475
  declare function resolvePresenterNotes(slide: PptxSlide | undefined): PresenterNotes;
7305
7476
 
7477
+ /**
7478
+ * audience-content-store: IndexedDB-based storage for sharing PPTX content
7479
+ * between the presenter tab and audience tab.
7480
+ *
7481
+ * When the presenter opens an audience window, the PPTX bytes are stored in
7482
+ * IndexedDB. The audience tab retrieves them on load and then cleans up.
7483
+ *
7484
+ * Framework-agnostic port of the React store
7485
+ * (packages/react/src/viewer/hooks/presentation-mode/audience-content-store.ts).
7486
+ * The database, store, and key names are kept identical to React/Vue so the
7487
+ * cross-tab handoff stays wire-compatible regardless of which binding opened
7488
+ * the presenter window or which one renders the audience tab.
7489
+ */
7490
+ /** URL hash that marks the current tab as the audience display. */
7491
+ declare const AUDIENCE_HASH = "#pptx-audience";
7492
+ /** Returns true if the current page was opened as an audience tab. */
7493
+ declare function isAudienceTab(): boolean;
7494
+ /**
7495
+ * Store PPTX content bytes so the audience tab can retrieve them.
7496
+ * Called by the presenter before opening the audience window.
7497
+ */
7498
+ declare function storeAudienceContent(content: ArrayBuffer | Uint8Array): Promise<void>;
7499
+ /**
7500
+ * Load PPTX content bytes stored by the presenter tab.
7501
+ * Returns `null` if nothing is stored.
7502
+ */
7503
+ declare function loadAudienceContent(): Promise<Uint8Array | null>;
7504
+ /**
7505
+ * Remove stored audience content (cleanup).
7506
+ */
7507
+ declare function clearAudienceContent(): Promise<void>;
7508
+
7306
7509
  /**
7307
7510
  * SVG path generators for WordArt text warp presets.
7308
7511
  *
@@ -7379,5 +7582,5 @@ declare function themeStyle(theme: ViewerTheme | undefined): Record<string, stri
7379
7582
  type ClassValue = string | number | false | null | undefined;
7380
7583
  declare function cn(...values: ClassValue[]): string;
7381
7584
 
7382
- export { AccessibilityPanelComponent, AccessibilityService, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ConnectorRendererComponent, ConnectorTextOverlayComponent, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, EMBEDDED_FONTS_STYLE_ID, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EquationRendererComponent, ExportService, FindBarComponent, FindReplaceBarComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, ShareDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, TYPE_LABELS, TableDataEditorComponent, TableRendererComponent, TextAdvancedPanelComponent, VIEWER_THEME, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, cn, collectAccessibilityIssues, collectElementText, collectSlideText, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPatternSvg, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isInjectableUrl, isPpactionUrl, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusKind, statusLabel, themeStyle, themeToCssVars, toggleCommentResolvedInList, updateElementById, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
7383
- export type { AccessibilityIssueGroup, AnimationClickGroup, AnnotationStroke, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PresentationTool, PresenterNotes, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RemoteCursor, SanitizedPresence as RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, VideoPlanOptions, VideoSegmentPlan, ViewerTheme, ViewerThemeColors };
7585
+ export { AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AccessibilityPanelComponent, AccessibilityService, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ConnectorRendererComponent, ConnectorTextOverlayComponent, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, EMBEDDED_FONTS_STYLE_ID, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EquationRendererComponent, ExportService, FindBarComponent, FindReplaceBarComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, ShareDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, StatusBarComponent, TYPE_LABELS, TableDataEditorComponent, TableRendererComponent, TextAdvancedPanelComponent, VIEWER_THEME, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPatternSvg, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isAudienceTab, isInjectableUrl, isPpactionUrl, isPresenterMessage, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, loadAudienceContent, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, parseAudienceNonce, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusKind, statusLabel, storeAudienceContent, themeStyle, themeToCssVars, toggleCommentResolvedInList, updateElementById, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
7586
+ export type { AccessibilityIssueGroup, AnimationClickGroup, AnnotationStroke, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RemoteCursor, SanitizedPresence as RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, VideoPlanOptions, VideoSegmentPlan, ViewerTheme, ViewerThemeColors };