pptx-angular-viewer 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32216,6 +32216,198 @@ const TAB_ROW_ACTION_CLASSES = {
32216
32216
  recordDot: 'w-2 h-2 rounded-full bg-red-600 shrink-0',
32217
32217
  };
32218
32218
 
32219
+ /**
32220
+ * Command-search data for the PowerPoint-style "Tell me what you want to do"
32221
+ * search bar. Provides searchable command entries grouped by category, each
32222
+ * mapping a label translation key to a command identifier that bindings can
32223
+ * dispatch.
32224
+ */
32225
+ /**
32226
+ * Static catalogue of searchable commands. Bindings filter this list by the
32227
+ * user's typed query (matching against the resolved translation text).
32228
+ */
32229
+ const COMMAND_SEARCH_ENTRIES = [
32230
+ // Format
32231
+ { labelKey: 'pptx.textPanel.bold', command: 'format.bold', icon: 'bold', category: 'format' },
32232
+ {
32233
+ labelKey: 'pptx.textPanel.italic',
32234
+ command: 'format.italic',
32235
+ icon: 'italic',
32236
+ category: 'format',
32237
+ },
32238
+ {
32239
+ labelKey: 'pptx.textPanel.underline',
32240
+ command: 'format.underline',
32241
+ icon: 'underline',
32242
+ category: 'format',
32243
+ },
32244
+ {
32245
+ labelKey: 'pptx.ribbon.alignLeft',
32246
+ command: 'format.alignLeft',
32247
+ icon: 'alignLeft',
32248
+ category: 'format',
32249
+ },
32250
+ {
32251
+ labelKey: 'pptx.ribbon.alignCenter',
32252
+ command: 'format.alignCenter',
32253
+ icon: 'alignCenter',
32254
+ category: 'format',
32255
+ },
32256
+ {
32257
+ labelKey: 'pptx.ribbon.alignRight',
32258
+ command: 'format.alignRight',
32259
+ icon: 'alignRight',
32260
+ category: 'format',
32261
+ },
32262
+ {
32263
+ labelKey: 'pptx.ribbon.clearFormatting',
32264
+ command: 'format.clear',
32265
+ icon: 'eraser',
32266
+ category: 'format',
32267
+ },
32268
+ // Insert
32269
+ {
32270
+ labelKey: 'pptx.insert.addTextBox',
32271
+ command: 'insert.textBox',
32272
+ icon: 'type',
32273
+ category: 'insert',
32274
+ },
32275
+ { labelKey: 'pptx.insert.addShape', command: 'insert.shape', icon: 'square', category: 'insert' },
32276
+ {
32277
+ labelKey: 'pptx.ribbon.insertImage',
32278
+ command: 'insert.image',
32279
+ icon: 'image',
32280
+ category: 'insert',
32281
+ },
32282
+ {
32283
+ labelKey: 'pptx.ribbon.insertMedia',
32284
+ command: 'insert.media',
32285
+ icon: 'video',
32286
+ category: 'insert',
32287
+ },
32288
+ {
32289
+ labelKey: 'pptx.insert.insertTable',
32290
+ command: 'insert.table',
32291
+ icon: 'table',
32292
+ category: 'insert',
32293
+ },
32294
+ {
32295
+ labelKey: 'pptx.ribbon.insertChart',
32296
+ command: 'insert.chart',
32297
+ icon: 'barChart',
32298
+ category: 'insert',
32299
+ },
32300
+ {
32301
+ labelKey: 'pptx.insert.insertSmartArt',
32302
+ command: 'insert.smartArt',
32303
+ icon: 'layers',
32304
+ category: 'insert',
32305
+ },
32306
+ {
32307
+ labelKey: 'pptx.insert.insertEquation',
32308
+ command: 'insert.equation',
32309
+ icon: 'sigma',
32310
+ category: 'insert',
32311
+ },
32312
+ // View
32313
+ { labelKey: 'pptx.grid.grid', command: 'view.toggleGrid', icon: 'grid', category: 'view' },
32314
+ { labelKey: 'pptx.ruler.rulers', command: 'view.toggleRulers', icon: 'ruler', category: 'view' },
32315
+ {
32316
+ labelKey: 'pptx.slideSorter.title',
32317
+ command: 'view.slideSorter',
32318
+ icon: 'layoutGrid',
32319
+ category: 'view',
32320
+ },
32321
+ {
32322
+ labelKey: 'pptx.view.zoomToFit',
32323
+ command: 'view.zoomToFit',
32324
+ icon: 'maximize',
32325
+ category: 'view',
32326
+ },
32327
+ // Slide Show
32328
+ {
32329
+ labelKey: 'pptx.slideShow.fromBeginning',
32330
+ command: 'slideShow.fromBeginning',
32331
+ icon: 'play',
32332
+ category: 'slideShow',
32333
+ },
32334
+ {
32335
+ labelKey: 'pptx.slideShow.presenterView',
32336
+ command: 'slideShow.presenterView',
32337
+ icon: 'monitor',
32338
+ category: 'slideShow',
32339
+ },
32340
+ // Design
32341
+ {
32342
+ labelKey: 'pptx.ribbon.browseThemes',
32343
+ command: 'design.browseThemes',
32344
+ icon: 'palette',
32345
+ category: 'design',
32346
+ },
32347
+ {
32348
+ labelKey: 'pptx.ribbon.slideSize',
32349
+ command: 'design.slideSize',
32350
+ icon: 'monitor',
32351
+ category: 'design',
32352
+ },
32353
+ // Arrange
32354
+ {
32355
+ labelKey: 'pptx.arrange.bringToFront',
32356
+ command: 'arrange.bringToFront',
32357
+ icon: 'layers',
32358
+ category: 'arrange',
32359
+ },
32360
+ {
32361
+ labelKey: 'pptx.arrange.sendToBack',
32362
+ command: 'arrange.sendToBack',
32363
+ icon: 'layers',
32364
+ category: 'arrange',
32365
+ },
32366
+ {
32367
+ labelKey: 'pptx.arrange.duplicate',
32368
+ command: 'arrange.duplicate',
32369
+ icon: 'copy',
32370
+ category: 'arrange',
32371
+ },
32372
+ // Review
32373
+ {
32374
+ labelKey: 'pptx.review.spelling',
32375
+ command: 'review.spelling',
32376
+ icon: 'spellCheck',
32377
+ category: 'format',
32378
+ },
32379
+ {
32380
+ labelKey: 'pptx.review.language',
32381
+ command: 'review.language',
32382
+ icon: 'globe',
32383
+ category: 'format',
32384
+ },
32385
+ {
32386
+ labelKey: 'pptx.review.accessibilityCheck',
32387
+ command: 'review.accessibility',
32388
+ icon: 'shieldCheck',
32389
+ category: 'view',
32390
+ },
32391
+ {
32392
+ labelKey: 'pptx.ribbon.link',
32393
+ command: 'insert.link',
32394
+ icon: 'link',
32395
+ category: 'insert',
32396
+ },
32397
+ ];
32398
+ /**
32399
+ * Filter the command catalogue by a search query (case-insensitive substring
32400
+ * match against the resolved label). The `resolveLabel` callback is provided
32401
+ * by the binding to translate the key into the current locale's text.
32402
+ */
32403
+ function filterCommands(query, resolveLabel) {
32404
+ if (!query.trim()) {
32405
+ return [];
32406
+ }
32407
+ const lowerQuery = query.toLowerCase();
32408
+ return COMMAND_SEARCH_ENTRIES.filter((entry) => resolveLabel(entry.labelKey).toLowerCase().includes(lowerQuery));
32409
+ }
32410
+
32219
32411
  /**
32220
32412
  * IndexedDB-backed autosave recovery store, shared by every binding.
32221
32413
  *
@@ -68055,6 +68247,14 @@ const CHAR_SPACING_OPTIONS = [
68055
68247
  { label: 'Loose', value: 300 },
68056
68248
  { label: 'Very Loose', value: 600 },
68057
68249
  ];
68250
+ /** Change Case options matching PowerPoint's Aa dropdown. */
68251
+ const CHANGE_CASE_OPTIONS = [
68252
+ { label: 'Sentence case.', value: 'sentence' },
68253
+ { label: 'lowercase', value: 'lower' },
68254
+ { label: 'UPPERCASE', value: 'upper' },
68255
+ { label: 'Capitalize Each Word', value: 'capitalize' },
68256
+ { label: 'tOGGLE cASE', value: 'toggle' },
68257
+ ];
68058
68258
  class RibbonFontControlsComponent {
68059
68259
  editor = inject(EditorStateService);
68060
68260
  slideIndex = input(0, /* @ts-ignore */
@@ -68066,6 +68266,7 @@ class RibbonFontControlsComponent {
68066
68266
  fontColorPresets = FONT_COLOR_PRESETS;
68067
68267
  highlightColorPresets = HIGHLIGHT_COLOR_PRESETS;
68068
68268
  charSpacingOptions = CHAR_SPACING_OPTIONS;
68269
+ changeCaseOptions = CHANGE_CASE_OPTIONS;
68069
68270
  isText() {
68070
68271
  return isTextElement(this.selectedElement());
68071
68272
  }
@@ -68110,6 +68311,21 @@ class RibbonFontControlsComponent {
68110
68311
  setCharSpacing(event) {
68111
68312
  this.patch({ characterSpacing: Number(event.target.value) });
68112
68313
  }
68314
+ setChangeCase(event) {
68315
+ const value = event.target.value;
68316
+ switch (value) {
68317
+ case 'upper':
68318
+ this.patch({ textCaps: 'all' });
68319
+ break;
68320
+ case 'lower':
68321
+ case 'sentence':
68322
+ case 'capitalize':
68323
+ case 'toggle':
68324
+ this.patch({ textCaps: 'none' });
68325
+ break;
68326
+ }
68327
+ event.target.selectedIndex = 0;
68328
+ }
68113
68329
  toggleStyle(key) {
68114
68330
  this.patch({ [key]: !this.curStyle()?.[key] });
68115
68331
  }
@@ -68264,6 +68480,18 @@ class RibbonFontControlsComponent {
68264
68480
  </option>
68265
68481
  }
68266
68482
  </select>
68483
+ <!-- Change Case -->
68484
+ <select
68485
+ class="pptx-rb-select w-24"
68486
+ [attr.aria-label]="'pptx.text.changeCase' | translate"
68487
+ [disabled]="!isText()"
68488
+ (change)="setChangeCase($event)"
68489
+ >
68490
+ <option value="" selected disabled>Aa</option>
68491
+ @for (opt of changeCaseOptions; track opt.value) {
68492
+ <option [value]="opt.value">{{ opt.label }}</option>
68493
+ }
68494
+ </select>
68267
68495
  <!-- Font colour popover -->
68268
68496
  <pptx-ribbon-color-popover
68269
68497
  [current]="curColor()"
@@ -68424,6 +68652,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
68424
68652
  </option>
68425
68653
  }
68426
68654
  </select>
68655
+ <!-- Change Case -->
68656
+ <select
68657
+ class="pptx-rb-select w-24"
68658
+ [attr.aria-label]="'pptx.text.changeCase' | translate"
68659
+ [disabled]="!isText()"
68660
+ (change)="setChangeCase($event)"
68661
+ >
68662
+ <option value="" selected disabled>Aa</option>
68663
+ @for (opt of changeCaseOptions; track opt.value) {
68664
+ <option [value]="opt.value">{{ opt.label }}</option>
68665
+ }
68666
+ </select>
68427
68667
  <!-- Font colour popover -->
68428
68668
  <pptx-ribbon-color-popover
68429
68669
  [current]="curColor()"
@@ -70399,19 +70639,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
70399
70639
  class RibbonReviewSectionComponent {
70400
70640
  editor = inject(EditorStateService);
70401
70641
  comments = output();
70642
+ spelling = output();
70402
70643
  a11y = output();
70403
70644
  openCompare = output();
70645
+ language = output();
70404
70646
  link = output();
70405
70647
  hasSel() {
70406
70648
  return this.editor.selectedIds().length > 0;
70407
70649
  }
70408
70650
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RibbonReviewSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
70409
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RibbonReviewSectionComponent, isStandalone: true, selector: "pptx-ribbon-review-section", outputs: { comments: "comments", a11y: "a11y", openCompare: "openCompare", link: "link" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
70651
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RibbonReviewSectionComponent, isStandalone: true, selector: "pptx-ribbon-review-section", outputs: { comments: "comments", spelling: "spelling", a11y: "a11y", openCompare: "openCompare", language: "language", link: "link" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
70410
70652
  <button type="button" class="pptx-rb-pill" (click)="comments.emit()">
70411
70653
  {{ 'pptx.toolbar.comments' | translate }}
70412
70654
  </button>
70413
- <button type="button" class="pptx-rb-pill" (click)="a11y.emit()">
70414
- {{ 'pptx.ribbon.accessibility' | translate }}
70655
+ <button
70656
+ type="button"
70657
+ class="pptx-rb-pill"
70658
+ [title]="'pptx.review.toggleSpellCheck' | translate"
70659
+ (click)="spelling.emit()"
70660
+ >
70661
+ {{ 'pptx.review.spelling' | translate }}
70415
70662
  </button>
70416
70663
  <button
70417
70664
  type="button"
@@ -70421,6 +70668,23 @@ class RibbonReviewSectionComponent {
70421
70668
  >
70422
70669
  {{ 'pptx.ribbon.compare' | translate }}
70423
70670
  </button>
70671
+ <span class="pptx-rb-sep"></span>
70672
+ <button
70673
+ type="button"
70674
+ class="pptx-rb-pill"
70675
+ [title]="'pptx.review.languageTooltip' | translate"
70676
+ (click)="language.emit()"
70677
+ >
70678
+ {{ 'pptx.review.language' | translate }}
70679
+ </button>
70680
+ <button
70681
+ type="button"
70682
+ class="pptx-rb-pill"
70683
+ [title]="'pptx.review.accessibilityCheckTooltip' | translate"
70684
+ (click)="a11y.emit()"
70685
+ >
70686
+ {{ 'pptx.review.accessibilityCheck' | translate }}
70687
+ </button>
70424
70688
  @if (hasSel()) {
70425
70689
  <button type="button" class="pptx-rb-pill" (click)="link.emit()">
70426
70690
  {{ 'pptx.ribbon.link' | translate }}
@@ -70440,8 +70704,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
70440
70704
  <button type="button" class="pptx-rb-pill" (click)="comments.emit()">
70441
70705
  {{ 'pptx.toolbar.comments' | translate }}
70442
70706
  </button>
70443
- <button type="button" class="pptx-rb-pill" (click)="a11y.emit()">
70444
- {{ 'pptx.ribbon.accessibility' | translate }}
70707
+ <button
70708
+ type="button"
70709
+ class="pptx-rb-pill"
70710
+ [title]="'pptx.review.toggleSpellCheck' | translate"
70711
+ (click)="spelling.emit()"
70712
+ >
70713
+ {{ 'pptx.review.spelling' | translate }}
70445
70714
  </button>
70446
70715
  <button
70447
70716
  type="button"
@@ -70451,6 +70720,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
70451
70720
  >
70452
70721
  {{ 'pptx.ribbon.compare' | translate }}
70453
70722
  </button>
70723
+ <span class="pptx-rb-sep"></span>
70724
+ <button
70725
+ type="button"
70726
+ class="pptx-rb-pill"
70727
+ [title]="'pptx.review.languageTooltip' | translate"
70728
+ (click)="language.emit()"
70729
+ >
70730
+ {{ 'pptx.review.language' | translate }}
70731
+ </button>
70732
+ <button
70733
+ type="button"
70734
+ class="pptx-rb-pill"
70735
+ [title]="'pptx.review.accessibilityCheckTooltip' | translate"
70736
+ (click)="a11y.emit()"
70737
+ >
70738
+ {{ 'pptx.review.accessibilityCheck' | translate }}
70739
+ </button>
70454
70740
  @if (hasSel()) {
70455
70741
  <button type="button" class="pptx-rb-pill" (click)="link.emit()">
70456
70742
  {{ 'pptx.ribbon.link' | translate }}
@@ -70458,7 +70744,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
70458
70744
  }
70459
70745
  `,
70460
70746
  }]
70461
- }], propDecorators: { comments: [{ type: i0.Output, args: ["comments"] }], a11y: [{ type: i0.Output, args: ["a11y"] }], openCompare: [{ type: i0.Output, args: ["openCompare"] }], link: [{ type: i0.Output, args: ["link"] }] } });
70747
+ }], propDecorators: { comments: [{ type: i0.Output, args: ["comments"] }], spelling: [{ type: i0.Output, args: ["spelling"] }], a11y: [{ type: i0.Output, args: ["a11y"] }], openCompare: [{ type: i0.Output, args: ["openCompare"] }], language: [{ type: i0.Output, args: ["language"] }], link: [{ type: i0.Output, args: ["link"] }] } });
70462
70748
 
70463
70749
  /**
70464
70750
  * ribbon-slideshow-section.component.ts: the Slide Show ribbon tab (From
@@ -70588,6 +70874,12 @@ class RibbonTransitionsSectionComponent {
70588
70874
  transitionChange = output();
70589
70875
  durationChange = output();
70590
70876
  transitionPresets = TRANSITION_PRESETS;
70877
+ advanceOnClick = signal(true, /* @ts-ignore */
70878
+ ...(ngDevMode ? [{ debugName: "advanceOnClick" }] : /* istanbul ignore next */ []));
70879
+ advanceAfter = signal(false, /* @ts-ignore */
70880
+ ...(ngDevMode ? [{ debugName: "advanceAfter" }] : /* istanbul ignore next */ []));
70881
+ advanceAfterSeconds = signal('00:00.00', /* @ts-ignore */
70882
+ ...(ngDevMode ? [{ debugName: "advanceAfterSeconds" }] : /* istanbul ignore next */ []));
70591
70883
  /** Apply the chosen transition to the active slide. */
70592
70884
  setTransition(type) {
70593
70885
  this.transitionChange.emit(type);
@@ -70668,6 +70960,14 @@ class RibbonTransitionsSectionComponent {
70668
70960
  <span>s</span>
70669
70961
  </label>
70670
70962
  <span class="pptx-rb-sep"></span>
70963
+ <!-- Sound -->
70964
+ <label class="inline-flex items-center gap-1.5 text-xs text-muted-foreground">
70965
+ <span class="whitespace-nowrap">{{ 'pptx.ribbon.sound' | translate }}</span>
70966
+ <select class="pptx-rb-select w-24">
70967
+ <option value="none">{{ 'pptx.ribbon.soundNone' | translate }}</option>
70968
+ </select>
70969
+ </label>
70970
+ <span class="pptx-rb-sep"></span>
70671
70971
  <!-- Apply to all -->
70672
70972
  <button
70673
70973
  type="button"
@@ -70678,6 +70978,39 @@ class RibbonTransitionsSectionComponent {
70678
70978
  ⧉ {{ 'pptx.headerFooter.applyToAll' | translate }}
70679
70979
  </button>
70680
70980
  <span class="pptx-rb-sep"></span>
70981
+ <!-- Advance Slide -->
70982
+ <div class="inline-flex flex-col gap-1 text-xs text-muted-foreground">
70983
+ <span class="text-[10px] font-medium text-foreground">{{
70984
+ 'pptx.ribbon.advanceSlide' | translate
70985
+ }}</span>
70986
+ <label class="inline-flex cursor-pointer items-center gap-1.5">
70987
+ <input
70988
+ type="checkbox"
70989
+ [checked]="advanceOnClick()"
70990
+ (change)="advanceOnClick.set($any($event.target).checked)"
70991
+ class="accent-primary h-3 w-3"
70992
+ />
70993
+ <span class="whitespace-nowrap">{{ 'pptx.ribbon.onMouseClick' | translate }}</span>
70994
+ </label>
70995
+ <label class="inline-flex cursor-pointer items-center gap-1.5">
70996
+ <input
70997
+ type="checkbox"
70998
+ [checked]="advanceAfter()"
70999
+ (change)="advanceAfter.set($any($event.target).checked)"
71000
+ class="accent-primary h-3 w-3"
71001
+ />
71002
+ <span class="whitespace-nowrap">{{ 'pptx.ribbon.afterDuration' | translate }}</span>
71003
+ <input
71004
+ type="text"
71005
+ [value]="advanceAfterSeconds()"
71006
+ (input)="advanceAfterSeconds.set($any($event.target).value)"
71007
+ [disabled]="!advanceAfter()"
71008
+ class="pptx-rb-select w-16 text-center disabled:opacity-50"
71009
+ [title]="'pptx.ribbon.advanceAfterSeconds' | translate"
71010
+ />
71011
+ </label>
71012
+ </div>
71013
+ <span class="pptx-rb-sep"></span>
70681
71014
  <!-- Inspector -->
70682
71015
  <button
70683
71016
  type="button"
@@ -70743,6 +71076,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
70743
71076
  <span>s</span>
70744
71077
  </label>
70745
71078
  <span class="pptx-rb-sep"></span>
71079
+ <!-- Sound -->
71080
+ <label class="inline-flex items-center gap-1.5 text-xs text-muted-foreground">
71081
+ <span class="whitespace-nowrap">{{ 'pptx.ribbon.sound' | translate }}</span>
71082
+ <select class="pptx-rb-select w-24">
71083
+ <option value="none">{{ 'pptx.ribbon.soundNone' | translate }}</option>
71084
+ </select>
71085
+ </label>
71086
+ <span class="pptx-rb-sep"></span>
70746
71087
  <!-- Apply to all -->
70747
71088
  <button
70748
71089
  type="button"
@@ -70753,6 +71094,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
70753
71094
  ⧉ {{ 'pptx.headerFooter.applyToAll' | translate }}
70754
71095
  </button>
70755
71096
  <span class="pptx-rb-sep"></span>
71097
+ <!-- Advance Slide -->
71098
+ <div class="inline-flex flex-col gap-1 text-xs text-muted-foreground">
71099
+ <span class="text-[10px] font-medium text-foreground">{{
71100
+ 'pptx.ribbon.advanceSlide' | translate
71101
+ }}</span>
71102
+ <label class="inline-flex cursor-pointer items-center gap-1.5">
71103
+ <input
71104
+ type="checkbox"
71105
+ [checked]="advanceOnClick()"
71106
+ (change)="advanceOnClick.set($any($event.target).checked)"
71107
+ class="accent-primary h-3 w-3"
71108
+ />
71109
+ <span class="whitespace-nowrap">{{ 'pptx.ribbon.onMouseClick' | translate }}</span>
71110
+ </label>
71111
+ <label class="inline-flex cursor-pointer items-center gap-1.5">
71112
+ <input
71113
+ type="checkbox"
71114
+ [checked]="advanceAfter()"
71115
+ (change)="advanceAfter.set($any($event.target).checked)"
71116
+ class="accent-primary h-3 w-3"
71117
+ />
71118
+ <span class="whitespace-nowrap">{{ 'pptx.ribbon.afterDuration' | translate }}</span>
71119
+ <input
71120
+ type="text"
71121
+ [value]="advanceAfterSeconds()"
71122
+ (input)="advanceAfterSeconds.set($any($event.target).value)"
71123
+ [disabled]="!advanceAfter()"
71124
+ class="pptx-rb-select w-16 text-center disabled:opacity-50"
71125
+ [title]="'pptx.ribbon.advanceAfterSeconds' | translate"
71126
+ />
71127
+ </label>
71128
+ </div>
71129
+ <span class="pptx-rb-sep"></span>
70756
71130
  <!-- Inspector -->
70757
71131
  <button
70758
71132
  type="button"
@@ -71478,7 +71852,7 @@ class RibbonComponent {
71478
71852
  }
71479
71853
  </div>
71480
71854
  </div>
71481
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: RibbonPrimaryRowComponent, selector: "pptx-ribbon-primary-row", inputs: ["slideCount", "sidebarCollapsed", "inspectorOpen", "commentsOpen", "commentCount"], outputs: ["toggleSidebar", "toggleComments", "present", "presenter", "broadcast", "openCustomShows", "toggleInspector", "exportPng", "exportPdf", "exportGif", "exportVideo", "print", "info", "a11y", "save"] }, { kind: "component", type: RibbonFileSectionComponent, selector: "pptx-ribbon-file-section", inputs: ["slideCount", "exporting"], outputs: ["openFile", "save", "exportPng", "exportPdf", "exportGif", "exportVideo", "print", "info", "signatures", "replace", "openPassword", "openFontEmbedding", "openVersionHistory"] }, { kind: "component", type: RibbonHomeSectionComponent, selector: "pptx-ribbon-home-section", inputs: ["slideIndex", "selectedElement", "formatPainterActive", "canActivateFormatPainter"], outputs: ["toggleFormatPainter", "findReplace", "applyLayout", "resetSlide", "addSection"] }, { kind: "component", type: RibbonInsertSectionComponent, selector: "pptx-ribbon-insert-section", inputs: ["slideIndex", "newChartType"], outputs: ["openSmartArtDialog", "openEquationDialog", "chartTypeChange"] }, { kind: "component", type: RibbonFontControlsComponent, selector: "pptx-ribbon-font-controls", inputs: ["slideIndex", "selectedElement"] }, { kind: "component", type: RibbonParagraphControlsComponent, selector: "pptx-ribbon-paragraph-controls", inputs: ["slideIndex", "selectedElement"] }, { kind: "component", type: RibbonArrangeSectionComponent, selector: "pptx-ribbon-arrange-section", inputs: ["slideIndex", "formatPainterActive", "canActivateFormatPainter"], outputs: ["toggleFormatPainter"] }, { kind: "component", type: RibbonSlideshowSectionComponent, selector: "pptx-ribbon-slideshow-section", inputs: ["slideCount"], outputs: ["present", "presenter", "broadcast", "openCustomShows", "openSetUpSlideShow"] }, { kind: "component", type: RibbonReviewSectionComponent, selector: "pptx-ribbon-review-section", outputs: ["comments", "a11y", "openCompare", "link"] }, { kind: "component", type: RibbonViewSectionComponent, selector: "pptx-ribbon-view-section", inputs: ["canEdit", "showGrid", "showRulers", "showGuides", "snapToGrid", "eyedropperActive"], outputs: ["openSorter", "toggleNotes", "print", "openShortcuts", "toggleGrid", "toggleRulers", "toggleGuides", "toggleSelectionPane", "toggleSnapToGrid", "toggleEyedropper"] }, { kind: "component", type: RibbonDrawSectionComponent, selector: "pptx-ribbon-draw-section", inputs: ["activeTool", "drawingColor", "drawingWidth"], outputs: ["drawToolChange"] }, { kind: "component", type: RibbonDrawingGroupComponent, selector: "pptx-ribbon-drawing-group", inputs: ["canEdit"], outputs: ["shapeInsert", "moveLayer", "moveLayerToEdge"] }, { kind: "component", type: RibbonDesignSectionComponent, selector: "pptx-ribbon-design-section", inputs: ["themeGalleryOpen"], outputs: ["toggleThemeGallery", "info", "toggleInspector"] }, { kind: "component", type: RibbonTransitionsSectionComponent, selector: "pptx-ribbon-transitions-section", inputs: ["slideIndex", "selectedTransition", "transitionDurationSec"], outputs: ["present", "toggleInspector", "transitionChange", "durationChange"] }, { kind: "component", type: RibbonAnimationsSectionComponent, selector: "pptx-ribbon-animations-section", inputs: ["slideIndex", "selectedElement"], outputs: ["present", "toggleInspector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71855
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: RibbonPrimaryRowComponent, selector: "pptx-ribbon-primary-row", inputs: ["slideCount", "sidebarCollapsed", "inspectorOpen", "commentsOpen", "commentCount"], outputs: ["toggleSidebar", "toggleComments", "present", "presenter", "broadcast", "openCustomShows", "toggleInspector", "exportPng", "exportPdf", "exportGif", "exportVideo", "print", "info", "a11y", "save"] }, { kind: "component", type: RibbonFileSectionComponent, selector: "pptx-ribbon-file-section", inputs: ["slideCount", "exporting"], outputs: ["openFile", "save", "exportPng", "exportPdf", "exportGif", "exportVideo", "print", "info", "signatures", "replace", "openPassword", "openFontEmbedding", "openVersionHistory"] }, { kind: "component", type: RibbonHomeSectionComponent, selector: "pptx-ribbon-home-section", inputs: ["slideIndex", "selectedElement", "formatPainterActive", "canActivateFormatPainter"], outputs: ["toggleFormatPainter", "findReplace", "applyLayout", "resetSlide", "addSection"] }, { kind: "component", type: RibbonInsertSectionComponent, selector: "pptx-ribbon-insert-section", inputs: ["slideIndex", "newChartType"], outputs: ["openSmartArtDialog", "openEquationDialog", "chartTypeChange"] }, { kind: "component", type: RibbonFontControlsComponent, selector: "pptx-ribbon-font-controls", inputs: ["slideIndex", "selectedElement"] }, { kind: "component", type: RibbonParagraphControlsComponent, selector: "pptx-ribbon-paragraph-controls", inputs: ["slideIndex", "selectedElement"] }, { kind: "component", type: RibbonArrangeSectionComponent, selector: "pptx-ribbon-arrange-section", inputs: ["slideIndex", "formatPainterActive", "canActivateFormatPainter"], outputs: ["toggleFormatPainter"] }, { kind: "component", type: RibbonSlideshowSectionComponent, selector: "pptx-ribbon-slideshow-section", inputs: ["slideCount"], outputs: ["present", "presenter", "broadcast", "openCustomShows", "openSetUpSlideShow"] }, { kind: "component", type: RibbonReviewSectionComponent, selector: "pptx-ribbon-review-section", outputs: ["comments", "spelling", "a11y", "openCompare", "language", "link"] }, { kind: "component", type: RibbonViewSectionComponent, selector: "pptx-ribbon-view-section", inputs: ["canEdit", "showGrid", "showRulers", "showGuides", "snapToGrid", "eyedropperActive"], outputs: ["openSorter", "toggleNotes", "print", "openShortcuts", "toggleGrid", "toggleRulers", "toggleGuides", "toggleSelectionPane", "toggleSnapToGrid", "toggleEyedropper"] }, { kind: "component", type: RibbonDrawSectionComponent, selector: "pptx-ribbon-draw-section", inputs: ["activeTool", "drawingColor", "drawingWidth"], outputs: ["drawToolChange"] }, { kind: "component", type: RibbonDrawingGroupComponent, selector: "pptx-ribbon-drawing-group", inputs: ["canEdit"], outputs: ["shapeInsert", "moveLayer", "moveLayerToEdge"] }, { kind: "component", type: RibbonDesignSectionComponent, selector: "pptx-ribbon-design-section", inputs: ["themeGalleryOpen"], outputs: ["toggleThemeGallery", "info", "toggleInspector"] }, { kind: "component", type: RibbonTransitionsSectionComponent, selector: "pptx-ribbon-transitions-section", inputs: ["slideIndex", "selectedTransition", "transitionDurationSec"], outputs: ["present", "toggleInspector", "transitionChange", "durationChange"] }, { kind: "component", type: RibbonAnimationsSectionComponent, selector: "pptx-ribbon-animations-section", inputs: ["slideIndex", "selectedElement"], outputs: ["present", "toggleInspector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71482
71856
  }
71483
71857
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RibbonComponent, decorators: [{
71484
71858
  type: Component,
@@ -73970,13 +74344,20 @@ class TitleBarComponent {
73970
74344
  findReplaceOpen = input(false, /* @ts-ignore */
73971
74345
  ...(ngDevMode ? [{ debugName: "findReplaceOpen" }] : /* istanbul ignore next */ []));
73972
74346
  toggleAutosave = output();
73973
- /** Quick-access save (downloads the `.pptx`). */
73974
74347
  save = output();
73975
74348
  undo = output();
73976
74349
  redo = output();
73977
74350
  toggleFindReplace = output();
74351
+ commandSearch = output();
74352
+ translate = inject(TranslateService);
73978
74353
  tb = TITLE_BAR_CLASSES;
73979
74354
  defaultFileKey = TITLE_BAR_DEFAULT_FILE_KEY;
74355
+ searchQuery = signal('', /* @ts-ignore */
74356
+ ...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
74357
+ searchFocused = signal(false, /* @ts-ignore */
74358
+ ...(ngDevMode ? [{ debugName: "searchFocused" }] : /* istanbul ignore next */ []));
74359
+ commandResults = computed(() => filterCommands(this.searchQuery(), (key) => this.translate.instant(key)), /* @ts-ignore */
74360
+ ...(ngDevMode ? [{ debugName: "commandResults" }] : /* istanbul ignore next */ []));
73980
74361
  /** The i18n key for the save-location status text (next to the file name). */
73981
74362
  statusKey = computed(() => {
73982
74363
  const status = this.autosaveStatus();
@@ -74003,8 +74384,37 @@ class TitleBarComponent {
74003
74384
  return '';
74004
74385
  }, /* @ts-ignore */
74005
74386
  ...(ngDevMode ? [{ debugName: "statusStateClass" }] : /* istanbul ignore next */ []));
74387
+ selectCommand(entry) {
74388
+ this.commandSearch.emit(entry.command);
74389
+ this.searchQuery.set('');
74390
+ this.searchFocused.set(false);
74391
+ }
74392
+ openFindReplace() {
74393
+ this.toggleFindReplace.emit();
74394
+ this.searchFocused.set(false);
74395
+ this.searchQuery.set('');
74396
+ }
74397
+ onSearchBlur() {
74398
+ // Delay to allow mousedown on dropdown items to fire first.
74399
+ setTimeout(() => this.searchFocused.set(false), 150);
74400
+ }
74401
+ onSearchKeyDown(event) {
74402
+ if (event.key === 'Enter' && this.searchQuery().trim()) {
74403
+ const results = this.commandResults();
74404
+ if (results.length > 0) {
74405
+ this.selectCommand(results[0]);
74406
+ }
74407
+ else {
74408
+ this.openFindReplace();
74409
+ }
74410
+ }
74411
+ else if (event.key === 'Escape') {
74412
+ this.searchQuery.set('');
74413
+ this.searchFocused.set(false);
74414
+ }
74415
+ }
74006
74416
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TitleBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74007
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: TitleBarComponent, isStandalone: true, selector: "pptx-title-bar", inputs: { canEdit: { classPropertyName: "canEdit", publicName: "canEdit", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, isDirty: { classPropertyName: "isDirty", publicName: "isDirty", isSignal: true, isRequired: false, transformFunction: null }, autosaveStatus: { classPropertyName: "autosaveStatus", publicName: "autosaveStatus", isSignal: true, isRequired: false, transformFunction: null }, autosaveEnabled: { classPropertyName: "autosaveEnabled", publicName: "autosaveEnabled", isSignal: true, isRequired: false, transformFunction: null }, canUndo: { classPropertyName: "canUndo", publicName: "canUndo", isSignal: true, isRequired: false, transformFunction: null }, canRedo: { classPropertyName: "canRedo", publicName: "canRedo", isSignal: true, isRequired: false, transformFunction: null }, undoLabel: { classPropertyName: "undoLabel", publicName: "undoLabel", isSignal: true, isRequired: false, transformFunction: null }, redoLabel: { classPropertyName: "redoLabel", publicName: "redoLabel", isSignal: true, isRequired: false, transformFunction: null }, findReplaceOpen: { classPropertyName: "findReplaceOpen", publicName: "findReplaceOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleAutosave: "toggleAutosave", save: "save", undo: "undo", redo: "redo", toggleFindReplace: "toggleFindReplace" }, ngImport: i0, template: `
74417
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: TitleBarComponent, isStandalone: true, selector: "pptx-title-bar", inputs: { canEdit: { classPropertyName: "canEdit", publicName: "canEdit", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, isDirty: { classPropertyName: "isDirty", publicName: "isDirty", isSignal: true, isRequired: false, transformFunction: null }, autosaveStatus: { classPropertyName: "autosaveStatus", publicName: "autosaveStatus", isSignal: true, isRequired: false, transformFunction: null }, autosaveEnabled: { classPropertyName: "autosaveEnabled", publicName: "autosaveEnabled", isSignal: true, isRequired: false, transformFunction: null }, canUndo: { classPropertyName: "canUndo", publicName: "canUndo", isSignal: true, isRequired: false, transformFunction: null }, canRedo: { classPropertyName: "canRedo", publicName: "canRedo", isSignal: true, isRequired: false, transformFunction: null }, undoLabel: { classPropertyName: "undoLabel", publicName: "undoLabel", isSignal: true, isRequired: false, transformFunction: null }, redoLabel: { classPropertyName: "redoLabel", publicName: "redoLabel", isSignal: true, isRequired: false, transformFunction: null }, findReplaceOpen: { classPropertyName: "findReplaceOpen", publicName: "findReplaceOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleAutosave: "toggleAutosave", save: "save", undo: "undo", redo: "redo", toggleFindReplace: "toggleFindReplace", commandSearch: "commandSearch" }, ngImport: i0, template: `
74008
74418
  <div [class]="tb.container" data-pptx-title-bar>
74009
74419
  <span [class]="tb.logo" aria-hidden="true">P</span>
74010
74420
 
@@ -74087,17 +74497,70 @@ class TitleBarComponent {
74087
74497
 
74088
74498
  <span [class]="tb.searchWrap">
74089
74499
  @if (canEdit()) {
74090
- <button
74091
- type="button"
74092
- [class]="tb.searchBox"
74093
- [ngClass]="findReplaceOpen() ? 'text-foreground bg-background' : ''"
74094
- [title]="'pptx.findReplace.title' | translate"
74095
- [attr.aria-label]="'pptx.titleBar.search' | translate"
74096
- (click)="toggleFindReplace.emit()"
74097
- >
74098
- <span [class]="tb.searchIcon" aria-hidden="true">⌕</span>
74099
- <span [class]="tb.searchLabel">{{ 'pptx.titleBar.search' | translate }}</span>
74100
- </button>
74500
+ <div class="relative w-full max-w-md">
74501
+ <div
74502
+ [class]="tb.searchBox"
74503
+ [ngClass]="
74504
+ searchFocused() || findReplaceOpen() ? 'text-foreground bg-background' : ''
74505
+ "
74506
+ >
74507
+ <span [class]="tb.searchIcon" aria-hidden="true">⌕</span>
74508
+ <input
74509
+ type="text"
74510
+ [value]="searchQuery()"
74511
+ (input)="searchQuery.set($any($event.target).value)"
74512
+ (focus)="searchFocused.set(true)"
74513
+ (blur)="onSearchBlur()"
74514
+ (keydown)="onSearchKeyDown($event)"
74515
+ class="flex-1 bg-transparent text-[11px] outline-none placeholder:text-muted-foreground/60"
74516
+ [placeholder]="'pptx.titleBar.searchPlaceholder' | translate"
74517
+ [attr.aria-label]="'pptx.titleBar.search' | translate"
74518
+ />
74519
+ </div>
74520
+ @if (searchFocused() && searchQuery().trim()) {
74521
+ <div
74522
+ class="absolute left-0 right-0 top-full z-50 mt-1 rounded-lg border border-border bg-popover shadow-xl max-h-64 overflow-y-auto"
74523
+ >
74524
+ @if (commandResults().length > 0) {
74525
+ <div
74526
+ class="px-3 py-1.5 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider"
74527
+ >
74528
+ {{ 'pptx.titleBar.searchCommands' | translate }}
74529
+ </div>
74530
+ @for (entry of commandResults().slice(0, 8); track entry.command) {
74531
+ <button
74532
+ type="button"
74533
+ class="flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent transition-colors"
74534
+ (mousedown)="selectCommand(entry)"
74535
+ >
74536
+ <span class="truncate">{{ entry.labelKey | translate }}</span>
74537
+ <span class="ml-auto text-[10px] text-muted-foreground capitalize">{{
74538
+ entry.category
74539
+ }}</span>
74540
+ </button>
74541
+ }
74542
+ } @else {
74543
+ <div class="px-3 py-2 text-xs text-muted-foreground">
74544
+ {{ 'pptx.titleBar.searchNoResults' | translate }}
74545
+ </div>
74546
+ }
74547
+ <div class="border-t border-border/60">
74548
+ <button
74549
+ type="button"
74550
+ class="flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent transition-colors"
74551
+ (mousedown)="openFindReplace()"
74552
+ >
74553
+ <span aria-hidden="true">⌕</span>
74554
+ <span
74555
+ >{{ 'pptx.titleBar.searchContent' | translate }} &ldquo;{{
74556
+ searchQuery()
74557
+ }}&rdquo;</span
74558
+ >
74559
+ </button>
74560
+ </div>
74561
+ </div>
74562
+ }
74563
+ </div>
74101
74564
  }
74102
74565
  </span>
74103
74566
 
@@ -74195,17 +74658,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
74195
74658
 
74196
74659
  <span [class]="tb.searchWrap">
74197
74660
  @if (canEdit()) {
74198
- <button
74199
- type="button"
74200
- [class]="tb.searchBox"
74201
- [ngClass]="findReplaceOpen() ? 'text-foreground bg-background' : ''"
74202
- [title]="'pptx.findReplace.title' | translate"
74203
- [attr.aria-label]="'pptx.titleBar.search' | translate"
74204
- (click)="toggleFindReplace.emit()"
74205
- >
74206
- <span [class]="tb.searchIcon" aria-hidden="true">⌕</span>
74207
- <span [class]="tb.searchLabel">{{ 'pptx.titleBar.search' | translate }}</span>
74208
- </button>
74661
+ <div class="relative w-full max-w-md">
74662
+ <div
74663
+ [class]="tb.searchBox"
74664
+ [ngClass]="
74665
+ searchFocused() || findReplaceOpen() ? 'text-foreground bg-background' : ''
74666
+ "
74667
+ >
74668
+ <span [class]="tb.searchIcon" aria-hidden="true">⌕</span>
74669
+ <input
74670
+ type="text"
74671
+ [value]="searchQuery()"
74672
+ (input)="searchQuery.set($any($event.target).value)"
74673
+ (focus)="searchFocused.set(true)"
74674
+ (blur)="onSearchBlur()"
74675
+ (keydown)="onSearchKeyDown($event)"
74676
+ class="flex-1 bg-transparent text-[11px] outline-none placeholder:text-muted-foreground/60"
74677
+ [placeholder]="'pptx.titleBar.searchPlaceholder' | translate"
74678
+ [attr.aria-label]="'pptx.titleBar.search' | translate"
74679
+ />
74680
+ </div>
74681
+ @if (searchFocused() && searchQuery().trim()) {
74682
+ <div
74683
+ class="absolute left-0 right-0 top-full z-50 mt-1 rounded-lg border border-border bg-popover shadow-xl max-h-64 overflow-y-auto"
74684
+ >
74685
+ @if (commandResults().length > 0) {
74686
+ <div
74687
+ class="px-3 py-1.5 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider"
74688
+ >
74689
+ {{ 'pptx.titleBar.searchCommands' | translate }}
74690
+ </div>
74691
+ @for (entry of commandResults().slice(0, 8); track entry.command) {
74692
+ <button
74693
+ type="button"
74694
+ class="flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent transition-colors"
74695
+ (mousedown)="selectCommand(entry)"
74696
+ >
74697
+ <span class="truncate">{{ entry.labelKey | translate }}</span>
74698
+ <span class="ml-auto text-[10px] text-muted-foreground capitalize">{{
74699
+ entry.category
74700
+ }}</span>
74701
+ </button>
74702
+ }
74703
+ } @else {
74704
+ <div class="px-3 py-2 text-xs text-muted-foreground">
74705
+ {{ 'pptx.titleBar.searchNoResults' | translate }}
74706
+ </div>
74707
+ }
74708
+ <div class="border-t border-border/60">
74709
+ <button
74710
+ type="button"
74711
+ class="flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent transition-colors"
74712
+ (mousedown)="openFindReplace()"
74713
+ >
74714
+ <span aria-hidden="true">⌕</span>
74715
+ <span
74716
+ >{{ 'pptx.titleBar.searchContent' | translate }} &ldquo;{{
74717
+ searchQuery()
74718
+ }}&rdquo;</span
74719
+ >
74720
+ </button>
74721
+ </div>
74722
+ </div>
74723
+ }
74724
+ </div>
74209
74725
  }
74210
74726
  </span>
74211
74727
 
@@ -74213,7 +74729,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
74213
74729
  </div>
74214
74730
  `,
74215
74731
  }]
74216
- }], propDecorators: { canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], fileName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileName", required: false }] }], isDirty: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDirty", required: false }] }], autosaveStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autosaveStatus", required: false }] }], autosaveEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "autosaveEnabled", required: false }] }], canUndo: [{ type: i0.Input, args: [{ isSignal: true, alias: "canUndo", required: false }] }], canRedo: [{ type: i0.Input, args: [{ isSignal: true, alias: "canRedo", required: false }] }], undoLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoLabel", required: false }] }], redoLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "redoLabel", required: false }] }], findReplaceOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "findReplaceOpen", required: false }] }], toggleAutosave: [{ type: i0.Output, args: ["toggleAutosave"] }], save: [{ type: i0.Output, args: ["save"] }], undo: [{ type: i0.Output, args: ["undo"] }], redo: [{ type: i0.Output, args: ["redo"] }], toggleFindReplace: [{ type: i0.Output, args: ["toggleFindReplace"] }] } });
74732
+ }], propDecorators: { canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], fileName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileName", required: false }] }], isDirty: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDirty", required: false }] }], autosaveStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autosaveStatus", required: false }] }], autosaveEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "autosaveEnabled", required: false }] }], canUndo: [{ type: i0.Input, args: [{ isSignal: true, alias: "canUndo", required: false }] }], canRedo: [{ type: i0.Input, args: [{ isSignal: true, alias: "canRedo", required: false }] }], undoLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoLabel", required: false }] }], redoLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "redoLabel", required: false }] }], findReplaceOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "findReplaceOpen", required: false }] }], toggleAutosave: [{ type: i0.Output, args: ["toggleAutosave"] }], save: [{ type: i0.Output, args: ["save"] }], undo: [{ type: i0.Output, args: ["undo"] }], redo: [{ type: i0.Output, args: ["redo"] }], toggleFindReplace: [{ type: i0.Output, args: ["toggleFindReplace"] }], commandSearch: [{ type: i0.Output, args: ["commandSearch"] }] } });
74217
74733
 
74218
74734
  /**
74219
74735
  * viewer-dialogs.service.ts: Viewer-scoped open-state + light state for the
@@ -80945,7 +81461,7 @@ class PowerPointViewerComponent {
80945
81461
  />
80946
81462
  }
80947
81463
  </div>
80948
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SlideCanvasComponent, selector: "pptx-slide-canvas", inputs: ["slide", "canvasSize", "mediaDataUrls", "zoom", "editable", "showGrid", "showRulers", "showGuides", "snapToGrid", "snapToGuides", "autoFit", "interactive", "selectedIds", "editingId", "editTemplateMode", "templateElements", "drawTool", "drawColor", "drawWidth"], outputs: ["elementSelect", "backgroundClick", "transformStart", "transformUpdate", "contextMenu", "textEditStart", "textCommit", "textCancel", "textFormat", "rotateUpdate", "marqueeSelect", "inkStrokeComplete", "eraserHit", "cellCommit", "tableChange"] }, { kind: "component", type: PresentationOverlayComponent, selector: "pptx-presentation-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "startIndex"], outputs: ["indexChange", "closed", "annotationsExit"] }, { kind: "component", type: PresenterViewComponent, selector: "pptx-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime", "isAudienceWindowOpen"], outputs: ["movePresentationSlide", "exit", "openAudienceWindow", "closeAudienceWindow"] }, { kind: "component", type: MobilePresenterViewComponent, selector: "pptx-mobile-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime"], outputs: ["movePresentationSlide", "exit"] }, { kind: "component", type: SlideSorterOverlayComponent, selector: "pptx-slide-sorter-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select", "closed"] }, { kind: "component", type: FindBarComponent, selector: "pptx-find-bar", inputs: ["slides"], outputs: ["navigate", "closed"] }, { kind: "component", type: FindReplaceBarComponent, selector: "pptx-find-replace-bar", inputs: ["matchCount", "matchIndex"], outputs: ["find", "navigate", "replaceOne", "replaceAll", "close"] }, { kind: "component", type: InspectorPanelComponent, selector: "pptx-inspector-panel", inputs: ["element", "slideIndex"] }, { kind: "component", type: SlidesPanelComponent, selector: "pptx-slides-panel", inputs: ["canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select"] }, { kind: "component", type: StatusBarComponent, selector: "pptx-status-bar", inputs: ["slideIndex", "slideCount", "canEdit", "dirty", "autosaveStatus", "notesOpen", "zoomPercent", "sorterActive", "presenting"], outputs: ["toggleNotes", "normalView", "openSorter", "slideShow", "zoomIn", "zoomOut", "zoomReset"] }, { kind: "component", type: EditorContextMenuComponent, selector: "pptx-editor-context-menu", inputs: ["x", "y", "slideIndex"], outputs: ["closed"] }, { kind: "component", type: ExportProgressModalComponent, selector: "pptx-export-progress-modal", inputs: ["open", "title", "progress", "statusMessage"], outputs: ["cancel"] }, { kind: "component", type: CommentsPanelComponent, selector: "pptx-comments-panel", inputs: ["comments", "authorName"], outputs: ["add", "remove", "resolve"] }, { kind: "component", type: SignaturesPanelComponent, selector: "pptx-signatures-panel", inputs: ["signatures"] }, { kind: "component", type: AccessibilityPanelComponent, selector: "pptx-accessibility-panel", inputs: ["issues"], outputs: ["selectSlide"] }, { kind: "component", type: CollaborationCursorsComponent, selector: "pptx-collaboration-cursors", inputs: ["cursors", "zoom"] }, { kind: "component", type: RemoteSelectionOverlayComponent, selector: "pptx-remote-selection-overlay", inputs: ["presences", "elements", "activeSlideIndex", "zoom"] }, { kind: "component", type: FollowModeBarComponent, selector: "pptx-follow-mode-bar", inputs: ["presences", "followedClientId"], outputs: ["follow"] }, { kind: "component", type: PropertiesDialogComponent, selector: "pptx-properties-dialog", inputs: ["open", "properties"], outputs: ["save", "close"] }, { kind: "component", type: HyperlinkDialogComponent, selector: "pptx-hyperlink-dialog", inputs: ["open", "element"], outputs: ["save", "close"] }, { kind: "component", type: PrintDialogComponent, selector: "pptx-print-dialog", inputs: ["slides", "activeSlideIndex", "defaultSlidesPerPage", "defaultFrameSlides"], outputs: ["print", "cancel"] }, { kind: "component", type: ShareDialogComponent, selector: "pptx-share-dialog", inputs: ["open", "defaults", "active", "connected", "userCount", "shareUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: BroadcastDialogComponent, selector: "pptx-broadcast-dialog", inputs: ["open", "defaults", "active", "connected", "viewerCount", "viewerUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: MobileBottomBarComponent, selector: "pptx-mobile-bottom-bar", inputs: ["slideCount", "commentCount", "activeSheet"], outputs: ["openSlides", "insert", "openFormat", "openComments", "notes"] }, { kind: "component", type: MobileMenuSheetComponent, selector: "pptx-mobile-menu-sheet", inputs: ["open", "slideCount", "exporting", "showNotes", "canEdit"], outputs: ["closed", "openFind", "openSorter", "toggleNotes", "insertText", "present", "openFile", "savePptx", "exportPng", "exportPdf", "exportGif", "exportVideo", "print"] }, { kind: "component", type: MobileSlidesSheetComponent, selector: "pptx-mobile-slides-sheet", inputs: ["open", "slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["closed", "jumpToSlide"] }, { kind: "component", type: MobileToolbarComponent, selector: "pptx-mobile-toolbar", inputs: ["canUndo", "canRedo", "canPresent", "canEdit", "menuOpen"], outputs: ["toggleMenu", "undo", "redo", "save", "present"] }, { kind: "component", type: NotesPanelComponent, selector: "pptx-notes-panel", inputs: ["slide"], outputs: ["update"] }, { kind: "component", type: RibbonComponent, selector: "pptx-ribbon", inputs: ["slideIndex", "slideCount", "canEdit", "selectedElement", "zoomPercent", "formatPainterActive", "canActivateFormatPainter", "exporting", "showGrid", "showRulers", "showGuides", "snapToGrid", "eyedropperActive", "themeGalleryOpen", "sidebarCollapsed", "inspectorOpen", "commentsOpen", "commentCount", "findOpen", "collabConnected", "connectedCount"], outputs: ["prev", "next", "zoomIn", "zoomOut", "zoomReset", "find", "present", "presenter", "record", "share", "broadcast", "openFile", "save", "toggleSidebar", "signatures", "info", "print", "comments", "a11y", "link", "openSorter", "toggleNotes", "toggleFormatPainter", "exportPng", "exportPdf", "exportGif", "exportVideo", "replace", "toggleInspector", "drawToolChange", "toggleThemeGallery", "toggleGrid", "toggleRulers", "toggleGuides", "toggleSelectionPane", "openCustomShows", "toggleSnapToGrid", "toggleEyedropper", "openSmartArtDialog", "openEquationDialog", "openSetUpSlideShow", "openCompare", "openPassword", "openFontEmbedding", "openVersionHistory", "openShortcuts", "shapeInsert", "moveLayer", "moveLayerToEdge"] }, { kind: "component", type: TitleBarComponent, selector: "pptx-title-bar", inputs: ["canEdit", "fileName", "isDirty", "autosaveStatus", "autosaveEnabled", "canUndo", "canRedo", "undoLabel", "redoLabel", "findReplaceOpen"], outputs: ["toggleAutosave", "save", "undo", "redo", "toggleFindReplace"] }, { kind: "component", type: ThemeGalleryComponent, selector: "pptx-theme-gallery", inputs: ["open", "activeName"], outputs: ["applyTheme", "close"] }, { kind: "component", type: SelectionPaneComponent, selector: "pptx-selection-pane", inputs: ["elements", "selectedIds"], outputs: ["selectElement", "bringForward", "sendBackward", "toggleHidden"] }, { kind: "component", type: CustomShowsComponent, selector: "pptx-custom-shows", inputs: ["open", "slides", "customShows", "activeCustomShowId"], outputs: ["create", "remove", "update", "setActive", "close"] }, { kind: "component", type: InsertSmartArtDialogComponent, selector: "pptx-insert-smart-art-dialog", inputs: ["open"], outputs: ["close", "insert"] }, { kind: "component", type: ViewerExtraDialogsComponent, selector: "pptx-viewer-extra-dialogs", inputs: ["activeSlideIndex", "selectedElementId", "filePath", "customShows"], outputs: ["restoreContent"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
81464
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SlideCanvasComponent, selector: "pptx-slide-canvas", inputs: ["slide", "canvasSize", "mediaDataUrls", "zoom", "editable", "showGrid", "showRulers", "showGuides", "snapToGrid", "snapToGuides", "autoFit", "interactive", "selectedIds", "editingId", "editTemplateMode", "templateElements", "drawTool", "drawColor", "drawWidth"], outputs: ["elementSelect", "backgroundClick", "transformStart", "transformUpdate", "contextMenu", "textEditStart", "textCommit", "textCancel", "textFormat", "rotateUpdate", "marqueeSelect", "inkStrokeComplete", "eraserHit", "cellCommit", "tableChange"] }, { kind: "component", type: PresentationOverlayComponent, selector: "pptx-presentation-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "startIndex"], outputs: ["indexChange", "closed", "annotationsExit"] }, { kind: "component", type: PresenterViewComponent, selector: "pptx-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime", "isAudienceWindowOpen"], outputs: ["movePresentationSlide", "exit", "openAudienceWindow", "closeAudienceWindow"] }, { kind: "component", type: MobilePresenterViewComponent, selector: "pptx-mobile-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime"], outputs: ["movePresentationSlide", "exit"] }, { kind: "component", type: SlideSorterOverlayComponent, selector: "pptx-slide-sorter-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select", "closed"] }, { kind: "component", type: FindBarComponent, selector: "pptx-find-bar", inputs: ["slides"], outputs: ["navigate", "closed"] }, { kind: "component", type: FindReplaceBarComponent, selector: "pptx-find-replace-bar", inputs: ["matchCount", "matchIndex"], outputs: ["find", "navigate", "replaceOne", "replaceAll", "close"] }, { kind: "component", type: InspectorPanelComponent, selector: "pptx-inspector-panel", inputs: ["element", "slideIndex"] }, { kind: "component", type: SlidesPanelComponent, selector: "pptx-slides-panel", inputs: ["canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select"] }, { kind: "component", type: StatusBarComponent, selector: "pptx-status-bar", inputs: ["slideIndex", "slideCount", "canEdit", "dirty", "autosaveStatus", "notesOpen", "zoomPercent", "sorterActive", "presenting"], outputs: ["toggleNotes", "normalView", "openSorter", "slideShow", "zoomIn", "zoomOut", "zoomReset"] }, { kind: "component", type: EditorContextMenuComponent, selector: "pptx-editor-context-menu", inputs: ["x", "y", "slideIndex"], outputs: ["closed"] }, { kind: "component", type: ExportProgressModalComponent, selector: "pptx-export-progress-modal", inputs: ["open", "title", "progress", "statusMessage"], outputs: ["cancel"] }, { kind: "component", type: CommentsPanelComponent, selector: "pptx-comments-panel", inputs: ["comments", "authorName"], outputs: ["add", "remove", "resolve"] }, { kind: "component", type: SignaturesPanelComponent, selector: "pptx-signatures-panel", inputs: ["signatures"] }, { kind: "component", type: AccessibilityPanelComponent, selector: "pptx-accessibility-panel", inputs: ["issues"], outputs: ["selectSlide"] }, { kind: "component", type: CollaborationCursorsComponent, selector: "pptx-collaboration-cursors", inputs: ["cursors", "zoom"] }, { kind: "component", type: RemoteSelectionOverlayComponent, selector: "pptx-remote-selection-overlay", inputs: ["presences", "elements", "activeSlideIndex", "zoom"] }, { kind: "component", type: FollowModeBarComponent, selector: "pptx-follow-mode-bar", inputs: ["presences", "followedClientId"], outputs: ["follow"] }, { kind: "component", type: PropertiesDialogComponent, selector: "pptx-properties-dialog", inputs: ["open", "properties"], outputs: ["save", "close"] }, { kind: "component", type: HyperlinkDialogComponent, selector: "pptx-hyperlink-dialog", inputs: ["open", "element"], outputs: ["save", "close"] }, { kind: "component", type: PrintDialogComponent, selector: "pptx-print-dialog", inputs: ["slides", "activeSlideIndex", "defaultSlidesPerPage", "defaultFrameSlides"], outputs: ["print", "cancel"] }, { kind: "component", type: ShareDialogComponent, selector: "pptx-share-dialog", inputs: ["open", "defaults", "active", "connected", "userCount", "shareUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: BroadcastDialogComponent, selector: "pptx-broadcast-dialog", inputs: ["open", "defaults", "active", "connected", "viewerCount", "viewerUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: MobileBottomBarComponent, selector: "pptx-mobile-bottom-bar", inputs: ["slideCount", "commentCount", "activeSheet"], outputs: ["openSlides", "insert", "openFormat", "openComments", "notes"] }, { kind: "component", type: MobileMenuSheetComponent, selector: "pptx-mobile-menu-sheet", inputs: ["open", "slideCount", "exporting", "showNotes", "canEdit"], outputs: ["closed", "openFind", "openSorter", "toggleNotes", "insertText", "present", "openFile", "savePptx", "exportPng", "exportPdf", "exportGif", "exportVideo", "print"] }, { kind: "component", type: MobileSlidesSheetComponent, selector: "pptx-mobile-slides-sheet", inputs: ["open", "slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["closed", "jumpToSlide"] }, { kind: "component", type: MobileToolbarComponent, selector: "pptx-mobile-toolbar", inputs: ["canUndo", "canRedo", "canPresent", "canEdit", "menuOpen"], outputs: ["toggleMenu", "undo", "redo", "save", "present"] }, { kind: "component", type: NotesPanelComponent, selector: "pptx-notes-panel", inputs: ["slide"], outputs: ["update"] }, { kind: "component", type: RibbonComponent, selector: "pptx-ribbon", inputs: ["slideIndex", "slideCount", "canEdit", "selectedElement", "zoomPercent", "formatPainterActive", "canActivateFormatPainter", "exporting", "showGrid", "showRulers", "showGuides", "snapToGrid", "eyedropperActive", "themeGalleryOpen", "sidebarCollapsed", "inspectorOpen", "commentsOpen", "commentCount", "findOpen", "collabConnected", "connectedCount"], outputs: ["prev", "next", "zoomIn", "zoomOut", "zoomReset", "find", "present", "presenter", "record", "share", "broadcast", "openFile", "save", "toggleSidebar", "signatures", "info", "print", "comments", "a11y", "link", "openSorter", "toggleNotes", "toggleFormatPainter", "exportPng", "exportPdf", "exportGif", "exportVideo", "replace", "toggleInspector", "drawToolChange", "toggleThemeGallery", "toggleGrid", "toggleRulers", "toggleGuides", "toggleSelectionPane", "openCustomShows", "toggleSnapToGrid", "toggleEyedropper", "openSmartArtDialog", "openEquationDialog", "openSetUpSlideShow", "openCompare", "openPassword", "openFontEmbedding", "openVersionHistory", "openShortcuts", "shapeInsert", "moveLayer", "moveLayerToEdge"] }, { kind: "component", type: TitleBarComponent, selector: "pptx-title-bar", inputs: ["canEdit", "fileName", "isDirty", "autosaveStatus", "autosaveEnabled", "canUndo", "canRedo", "undoLabel", "redoLabel", "findReplaceOpen"], outputs: ["toggleAutosave", "save", "undo", "redo", "toggleFindReplace", "commandSearch"] }, { kind: "component", type: ThemeGalleryComponent, selector: "pptx-theme-gallery", inputs: ["open", "activeName"], outputs: ["applyTheme", "close"] }, { kind: "component", type: SelectionPaneComponent, selector: "pptx-selection-pane", inputs: ["elements", "selectedIds"], outputs: ["selectElement", "bringForward", "sendBackward", "toggleHidden"] }, { kind: "component", type: CustomShowsComponent, selector: "pptx-custom-shows", inputs: ["open", "slides", "customShows", "activeCustomShowId"], outputs: ["create", "remove", "update", "setActive", "close"] }, { kind: "component", type: InsertSmartArtDialogComponent, selector: "pptx-insert-smart-art-dialog", inputs: ["open"], outputs: ["close", "insert"] }, { kind: "component", type: ViewerExtraDialogsComponent, selector: "pptx-viewer-extra-dialogs", inputs: ["activeSlideIndex", "selectedElementId", "filePath", "customShows"], outputs: ["restoreContent"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80949
81465
  }
80950
81466
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PowerPointViewerComponent, decorators: [{
80951
81467
  type: Component,
@@ -82057,7 +82573,13 @@ const translationsEn = {
82057
82573
  'pptx.titleBar.savedToThisPc': 'Saved to this PC',
82058
82574
  'pptx.titleBar.defaultFileName': 'Presentation',
82059
82575
  'pptx.titleBar.search': 'Search',
82576
+ 'pptx.titleBar.searchPlaceholder': 'Tell me what you want to do',
82060
82577
  'pptx.titleBar.record': 'Record',
82578
+ 'pptx.titleBar.searchCommands': 'Actions',
82579
+ 'pptx.titleBar.searchContent': 'Find in Slides',
82580
+ 'pptx.titleBar.searchHelp': 'Get Help on',
82581
+ 'pptx.titleBar.searchNoResults': 'No results',
82582
+ 'pptx.titleBar.searchRecent': 'Recent',
82061
82583
  // Toolbar
82062
82584
  'pptx.toolbar.toggleSlidesPanel': 'Toggle slides panel',
82063
82585
  'pptx.toolbar.undo': 'Undo',
@@ -83674,6 +84196,12 @@ const translationsEn = {
83674
84196
  'pptx.ribbon.duration': 'Duration:',
83675
84197
  'pptx.ribbon.transitionDurationTitle': 'Transition duration in seconds',
83676
84198
  'pptx.ribbon.applyTransitionToAll': 'Apply transition to all slides',
84199
+ 'pptx.ribbon.advanceSlide': 'Advance Slide',
84200
+ 'pptx.ribbon.onMouseClick': 'On Mouse Click',
84201
+ 'pptx.ribbon.afterDuration': 'After:',
84202
+ 'pptx.ribbon.advanceAfterSeconds': 'Advance after specified duration',
84203
+ 'pptx.ribbon.sound': 'Sound:',
84204
+ 'pptx.ribbon.soundNone': '[No Sound]',
83677
84205
  'pptx.ribbon.inspector': 'Inspector',
83678
84206
  'pptx.ribbon.openInspectorTransitions': 'Open Inspector for full transition options',
83679
84207
  'pptx.ribbon.removeAnimation': 'Remove Animation',
@@ -83936,6 +84464,12 @@ const translationsEn = {
83936
84464
  'pptx.review.spelling': 'Spelling',
83937
84465
  'pptx.review.toggleComments': 'Toggle comments panel',
83938
84466
  'pptx.review.toggleSpellCheck': 'Toggle spell check',
84467
+ 'pptx.review.language': 'Language',
84468
+ 'pptx.review.languageTooltip': 'Set proofing language',
84469
+ 'pptx.review.accessibilityCheck': 'Check Accessibility',
84470
+ 'pptx.review.accessibilityCheckTooltip': 'Check for accessibility issues',
84471
+ 'pptx.review.translate': 'Translate',
84472
+ 'pptx.review.translateTooltip': 'Translate selected text',
83939
84473
  'pptx.shortcuts.action.cancelTextEdit': 'Cancel inline text / close menus',
83940
84474
  'pptx.shortcuts.action.clearSelection': 'Clear selection / close menus / cancel edit',
83941
84475
  'pptx.shortcuts.action.commitTextEdit': 'Commit inline text edit',
@@ -83990,6 +84524,12 @@ const translationsEn = {
83990
84524
  'pptx.tableCell.edgeBorderColorAria': '{{edge}} border colour',
83991
84525
  'pptx.tableCell.textColorAria': 'Text colour',
83992
84526
  'pptx.text.bulletList': 'Bullet List',
84527
+ 'pptx.text.changeCase': 'Change Case',
84528
+ 'pptx.text.changeCaseSentence': 'Sentence case.',
84529
+ 'pptx.text.changeCaseLower': 'lowercase',
84530
+ 'pptx.text.changeCaseUpper': 'UPPERCASE',
84531
+ 'pptx.text.changeCaseCapitalize': 'Capitalize Each Word',
84532
+ 'pptx.text.changeCaseToggle': 'tOGGLE cASE',
83993
84533
  'pptx.text.clearFormatting': 'Clear Formatting',
83994
84534
  'pptx.text.decreaseFontSize': 'Decrease Font Size',
83995
84535
  'pptx.text.decreaseIndent': 'Decrease Indent',