pptx-angular-viewer 1.1.60 → 1.1.62
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.
|
@@ -4946,15 +4946,15 @@ function convertOmmlToLatex(omml) {
|
|
|
4946
4946
|
}
|
|
4947
4947
|
|
|
4948
4948
|
/**
|
|
4949
|
-
* Framework-agnostic chart helpers
|
|
4949
|
+
* Framework-agnostic chart helpers, a focused Vue port of the React package's
|
|
4950
4950
|
* `viewer/utils/chart-helpers.ts`, `chart-layout.ts`, and
|
|
4951
4951
|
* `chart-style-palettes.ts`.
|
|
4952
4952
|
*
|
|
4953
|
-
*
|
|
4954
|
-
* area / pie / doughnut) and the shared chrome
|
|
4955
|
-
* features (log axes, secondary axes, display units,
|
|
4956
|
-
*
|
|
4957
|
-
* `
|
|
4953
|
+
* This module only covers the common-type renderers (bar / column / stacked /
|
|
4954
|
+
* line / area / pie / doughnut) and the shared chrome. Advanced axis/overlay
|
|
4955
|
+
* features (log axes, secondary axes, display units, trendlines, error bars,
|
|
4956
|
+
* data tables) live in `chart-axis.ts` / `chart-axis-render.ts` /
|
|
4957
|
+
* `chart-cartesian.ts` and are consumed via `chart/ChartViewModelSvg.vue`.
|
|
4958
4958
|
*
|
|
4959
4959
|
* These small pure helpers are an extraction candidate: long-term they (and
|
|
4960
4960
|
* their React counterparts) should live in a shared, framework-agnostic
|
|
@@ -22992,6 +22992,164 @@ function observeYDocSlides(ydoc, onChange) {
|
|
|
22992
22992
|
return () => arr.unobserveDeep(onChange);
|
|
22993
22993
|
}
|
|
22994
22994
|
|
|
22995
|
+
/**
|
|
22996
|
+
* collaboration-text-merge.ts: character-level in-place merging of a desired
|
|
22997
|
+
* text state into a live Y.Text.
|
|
22998
|
+
*
|
|
22999
|
+
* `reconcileTextBody` used to replace the whole Y.Text whenever the canonical
|
|
23000
|
+
* decoded form differed, which made concurrent edits to the SAME text element
|
|
23001
|
+
* collide at element granularity (last writer wins). This module instead
|
|
23002
|
+
* applies a minimal edit script to the existing Y.Text:
|
|
23003
|
+
*
|
|
23004
|
+
* - plain-text diff via common prefix/suffix (surrogate-pair safe): one
|
|
23005
|
+
* delete + attributed inserts for the changed middle span
|
|
23006
|
+
* - attribute reconcile: walk the current and desired attribute runs by
|
|
23007
|
+
* position and `format()` only the ranges whose attributes differ
|
|
23008
|
+
*
|
|
23009
|
+
* Because each peer submits a minimal delta, Yjs merges concurrent edits to
|
|
23010
|
+
* the same run at character granularity (e.g. one peer prepends while another
|
|
23011
|
+
* appends, both survive).
|
|
23012
|
+
*/
|
|
23013
|
+
function isYTextEditable(value) {
|
|
23014
|
+
return (isYTextLike(value) &&
|
|
23015
|
+
typeof value.delete === 'function' &&
|
|
23016
|
+
typeof value.format === 'function');
|
|
23017
|
+
}
|
|
23018
|
+
const isHighSurrogate = (code) => code >= 0xd800 && code <= 0xdbff;
|
|
23019
|
+
const isLowSurrogate = (code) => code >= 0xdc00 && code <= 0xdfff;
|
|
23020
|
+
function opsText(ops) {
|
|
23021
|
+
let text = '';
|
|
23022
|
+
for (const op of ops) {
|
|
23023
|
+
if (typeof op.insert === 'string') {
|
|
23024
|
+
text += op.insert;
|
|
23025
|
+
}
|
|
23026
|
+
}
|
|
23027
|
+
return text;
|
|
23028
|
+
}
|
|
23029
|
+
function commonPrefixLength(a, b) {
|
|
23030
|
+
const max = Math.min(a.length, b.length);
|
|
23031
|
+
let i = 0;
|
|
23032
|
+
while (i < max && a.charCodeAt(i) === b.charCodeAt(i)) {
|
|
23033
|
+
i++;
|
|
23034
|
+
}
|
|
23035
|
+
// Never cut between a surrogate pair.
|
|
23036
|
+
if (i > 0 && isHighSurrogate(a.charCodeAt(i - 1))) {
|
|
23037
|
+
i--;
|
|
23038
|
+
}
|
|
23039
|
+
return i;
|
|
23040
|
+
}
|
|
23041
|
+
function commonSuffixLength(a, b, prefix) {
|
|
23042
|
+
const max = Math.min(a.length, b.length) - prefix;
|
|
23043
|
+
let i = 0;
|
|
23044
|
+
while (i < max && a.charCodeAt(a.length - i - 1) === b.charCodeAt(b.length - i - 1)) {
|
|
23045
|
+
i++;
|
|
23046
|
+
}
|
|
23047
|
+
if (i > 0 && isLowSurrogate(a.charCodeAt(a.length - i))) {
|
|
23048
|
+
i--;
|
|
23049
|
+
}
|
|
23050
|
+
return i;
|
|
23051
|
+
}
|
|
23052
|
+
/**
|
|
23053
|
+
* Insert the desired-text span [from, to) into `ytext`, carrying each desired
|
|
23054
|
+
* op's attributes so no character inherits formatting from its neighbour.
|
|
23055
|
+
*/
|
|
23056
|
+
function insertSpanWithAttrs(ytext, desiredOps, from, to) {
|
|
23057
|
+
let opStart = 0;
|
|
23058
|
+
let index = from;
|
|
23059
|
+
for (const op of desiredOps) {
|
|
23060
|
+
if (typeof op.insert !== 'string') {
|
|
23061
|
+
continue;
|
|
23062
|
+
}
|
|
23063
|
+
const opEnd = opStart + op.insert.length;
|
|
23064
|
+
const start = Math.max(opStart, from);
|
|
23065
|
+
const end = Math.min(opEnd, to);
|
|
23066
|
+
if (start < end) {
|
|
23067
|
+
const chunk = op.insert.slice(start - opStart, end - opStart);
|
|
23068
|
+
// Explicit attrs always: attribute-less inserts inherit the previous
|
|
23069
|
+
// character's formatting in Yjs (the style-bleed bug).
|
|
23070
|
+
ytext.insert(index, chunk, (op.attributes ?? {}));
|
|
23071
|
+
index += chunk.length;
|
|
23072
|
+
}
|
|
23073
|
+
opStart = opEnd;
|
|
23074
|
+
}
|
|
23075
|
+
}
|
|
23076
|
+
function attrsEqual(a, b) {
|
|
23077
|
+
const aKeys = Object.keys(a);
|
|
23078
|
+
if (aKeys.length !== Object.keys(b).length) {
|
|
23079
|
+
return false;
|
|
23080
|
+
}
|
|
23081
|
+
return aKeys.every((k) => a[k] === b[k]);
|
|
23082
|
+
}
|
|
23083
|
+
/**
|
|
23084
|
+
* Bring the attribute runs of `ytext` (whose plain text already matches the
|
|
23085
|
+
* desired ops) in line with the desired attributes, formatting only the
|
|
23086
|
+
* ranges that differ.
|
|
23087
|
+
*/
|
|
23088
|
+
function reconcileAttributeRuns(ytext, desiredOps) {
|
|
23089
|
+
const currentOps = ytext.toDelta().filter((op) => typeof op.insert === 'string');
|
|
23090
|
+
let ci = 0;
|
|
23091
|
+
let cOff = 0;
|
|
23092
|
+
let pos = 0;
|
|
23093
|
+
for (const dop of desiredOps) {
|
|
23094
|
+
if (typeof dop.insert !== 'string') {
|
|
23095
|
+
continue;
|
|
23096
|
+
}
|
|
23097
|
+
const dAttrs = (dop.attributes ?? {});
|
|
23098
|
+
let remaining = dop.insert.length;
|
|
23099
|
+
while (remaining > 0 && ci < currentOps.length) {
|
|
23100
|
+
const cText = currentOps[ci].insert;
|
|
23101
|
+
const len = Math.min(cText.length - cOff, remaining);
|
|
23102
|
+
const cAttrs = (currentOps[ci].attributes ?? {});
|
|
23103
|
+
if (!attrsEqual(cAttrs, dAttrs)) {
|
|
23104
|
+
const patch = {};
|
|
23105
|
+
for (const key of Object.keys(dAttrs)) {
|
|
23106
|
+
if (cAttrs[key] !== dAttrs[key]) {
|
|
23107
|
+
patch[key] = dAttrs[key];
|
|
23108
|
+
}
|
|
23109
|
+
}
|
|
23110
|
+
for (const key of Object.keys(cAttrs)) {
|
|
23111
|
+
if (!(key in dAttrs)) {
|
|
23112
|
+
patch[key] = null;
|
|
23113
|
+
}
|
|
23114
|
+
}
|
|
23115
|
+
ytext.format(pos, len, patch);
|
|
23116
|
+
}
|
|
23117
|
+
pos += len;
|
|
23118
|
+
remaining -= len;
|
|
23119
|
+
cOff += len;
|
|
23120
|
+
if (cOff >= cText.length) {
|
|
23121
|
+
ci++;
|
|
23122
|
+
cOff = 0;
|
|
23123
|
+
}
|
|
23124
|
+
}
|
|
23125
|
+
}
|
|
23126
|
+
}
|
|
23127
|
+
/**
|
|
23128
|
+
* Apply the minimal edit script that turns the live `ytext` into the state
|
|
23129
|
+
* described by `desiredOps`. Returns false (leaving the caller to fall back
|
|
23130
|
+
* to wholesale replacement) if the text diff did not converge.
|
|
23131
|
+
*
|
|
23132
|
+
* Must be called inside a Y.Doc transaction when the text is integrated.
|
|
23133
|
+
*/
|
|
23134
|
+
function mergeDeltaIntoYText(ytext, desiredOps) {
|
|
23135
|
+
const currentText = opsText(ytext.toDelta());
|
|
23136
|
+
const desiredText = opsText(desiredOps);
|
|
23137
|
+
if (currentText !== desiredText) {
|
|
23138
|
+
const prefix = commonPrefixLength(currentText, desiredText);
|
|
23139
|
+
const suffix = commonSuffixLength(currentText, desiredText, prefix);
|
|
23140
|
+
const deleteLen = currentText.length - prefix - suffix;
|
|
23141
|
+
if (deleteLen > 0) {
|
|
23142
|
+
ytext.delete(prefix, deleteLen);
|
|
23143
|
+
}
|
|
23144
|
+
insertSpanWithAttrs(ytext, desiredOps, prefix, desiredText.length - suffix);
|
|
23145
|
+
if (opsText(ytext.toDelta()) !== desiredText) {
|
|
23146
|
+
return false;
|
|
23147
|
+
}
|
|
23148
|
+
}
|
|
23149
|
+
reconcileAttributeRuns(ytext, desiredOps);
|
|
23150
|
+
return true;
|
|
23151
|
+
}
|
|
23152
|
+
|
|
22995
23153
|
/**
|
|
22996
23154
|
* collaboration-reconcile.ts: Granular Y.Doc reconciliation for collaborative
|
|
22997
23155
|
* editing.
|
|
@@ -23004,7 +23162,9 @@ function observeYDocSlides(ydoc, onChange) {
|
|
|
23004
23162
|
* - slides and elements are matched by `id`; unchanged ones keep their Y.Map
|
|
23005
23163
|
* instance so concurrent field edits merge via Yjs
|
|
23006
23164
|
* - scalar / complex fields are compared and only set when different
|
|
23007
|
-
* - textBody is
|
|
23165
|
+
* - textBody is edited in place (minimal char-level diff via
|
|
23166
|
+
* collaboration-text-merge.ts) when its canonical decoded form differs;
|
|
23167
|
+
* wholesale replacement is only a fallback
|
|
23008
23168
|
* - removed items are deleted, new ones inserted at their position; moves
|
|
23009
23169
|
* are delete+reinsert (Yjs has no move primitive)
|
|
23010
23170
|
*
|
|
@@ -23053,11 +23213,17 @@ function reconcileTextBody(ymap, rec, factories) {
|
|
|
23053
23213
|
}
|
|
23054
23214
|
return;
|
|
23055
23215
|
}
|
|
23056
|
-
const
|
|
23216
|
+
const desiredDelta = encodeSegmentsToDelta(segments);
|
|
23217
|
+
const desired = decodeDelta(desiredDelta);
|
|
23057
23218
|
const existing = isYTextLike(current) ? decodeDelta(current.toDelta()) : undefined;
|
|
23058
23219
|
if (existing !== undefined && jsonEqual(existing, desired)) {
|
|
23059
23220
|
return;
|
|
23060
23221
|
}
|
|
23222
|
+
// Prefer an in-place minimal edit so concurrent edits to the same text
|
|
23223
|
+
// element merge at character granularity instead of element-level LWW.
|
|
23224
|
+
if (isYTextEditable(current) && mergeDeltaIntoYText(current, desiredDelta)) {
|
|
23225
|
+
return;
|
|
23226
|
+
}
|
|
23061
23227
|
const ytext = factories.createText();
|
|
23062
23228
|
encodeTextBody(segments, ytext);
|
|
23063
23229
|
ymap.set('textBody', ytext);
|
|
@@ -45389,7 +45555,7 @@ class EffectsPanelComponent {
|
|
|
45389
45555
|
(change)="onOuterShadowField('color', $event)"
|
|
45390
45556
|
/>
|
|
45391
45557
|
<label class="pptx-ng-fx__label" for="fx-os-opacity">{{
|
|
45392
|
-
'pptx.
|
|
45558
|
+
'pptx.inspector.opacity' | translate
|
|
45393
45559
|
}}</label>
|
|
45394
45560
|
<input
|
|
45395
45561
|
id="fx-os-opacity"
|
|
@@ -45472,7 +45638,7 @@ class EffectsPanelComponent {
|
|
|
45472
45638
|
(change)="onInnerShadowField('color', $event)"
|
|
45473
45639
|
/>
|
|
45474
45640
|
<label class="pptx-ng-fx__label" for="fx-is-opacity">{{
|
|
45475
|
-
'pptx.
|
|
45641
|
+
'pptx.inspector.opacity' | translate
|
|
45476
45642
|
}}</label>
|
|
45477
45643
|
<input
|
|
45478
45644
|
id="fx-is-opacity"
|
|
@@ -45565,7 +45731,7 @@ class EffectsPanelComponent {
|
|
|
45565
45731
|
(change)="onGlowField('radius', $event)"
|
|
45566
45732
|
/>
|
|
45567
45733
|
<label class="pptx-ng-fx__label" for="fx-glow-opacity">{{
|
|
45568
|
-
'pptx.
|
|
45734
|
+
'pptx.inspector.opacity' | translate
|
|
45569
45735
|
}}</label>
|
|
45570
45736
|
<input
|
|
45571
45737
|
id="fx-glow-opacity"
|
|
@@ -45727,7 +45893,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
45727
45893
|
(change)="onOuterShadowField('color', $event)"
|
|
45728
45894
|
/>
|
|
45729
45895
|
<label class="pptx-ng-fx__label" for="fx-os-opacity">{{
|
|
45730
|
-
'pptx.
|
|
45896
|
+
'pptx.inspector.opacity' | translate
|
|
45731
45897
|
}}</label>
|
|
45732
45898
|
<input
|
|
45733
45899
|
id="fx-os-opacity"
|
|
@@ -45810,7 +45976,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
45810
45976
|
(change)="onInnerShadowField('color', $event)"
|
|
45811
45977
|
/>
|
|
45812
45978
|
<label class="pptx-ng-fx__label" for="fx-is-opacity">{{
|
|
45813
|
-
'pptx.
|
|
45979
|
+
'pptx.inspector.opacity' | translate
|
|
45814
45980
|
}}</label>
|
|
45815
45981
|
<input
|
|
45816
45982
|
id="fx-is-opacity"
|
|
@@ -45903,7 +46069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
45903
46069
|
(change)="onGlowField('radius', $event)"
|
|
45904
46070
|
/>
|
|
45905
46071
|
<label class="pptx-ng-fx__label" for="fx-glow-opacity">{{
|
|
45906
|
-
'pptx.
|
|
46072
|
+
'pptx.inspector.opacity' | translate
|
|
45907
46073
|
}}</label>
|
|
45908
46074
|
<input
|
|
45909
46075
|
id="fx-glow-opacity"
|
|
@@ -46790,7 +46956,7 @@ class SmartArtPropertiesComponent {
|
|
|
46790
46956
|
|
|
46791
46957
|
<!-- ── Layout switcher ──────────────────────────────────────────── -->
|
|
46792
46958
|
<div class="pptx-sa-props__field">
|
|
46793
|
-
<span class="pptx-sa-props__label">{{ 'pptx.
|
|
46959
|
+
<span class="pptx-sa-props__label">{{ 'pptx.master.layout' | translate }}</span>
|
|
46794
46960
|
<div
|
|
46795
46961
|
class="pptx-sa-props__layouts"
|
|
46796
46962
|
role="group"
|
|
@@ -46882,7 +47048,7 @@ class SmartArtPropertiesComponent {
|
|
|
46882
47048
|
class="pptx-sa-props__node-input"
|
|
46883
47049
|
[disabled]="!canEdit()"
|
|
46884
47050
|
[value]="node.text"
|
|
46885
|
-
[attr.placeholder]="'pptx.
|
|
47051
|
+
[attr.placeholder]="'pptx.smartArt.nodePlaceholder' | translate"
|
|
46886
47052
|
(change)="onNodeText($event, node.id)"
|
|
46887
47053
|
(keydown)="onNodeKeydown($event, node.id)"
|
|
46888
47054
|
/>
|
|
@@ -46891,7 +47057,7 @@ class SmartArtPropertiesComponent {
|
|
|
46891
47057
|
<button
|
|
46892
47058
|
type="button"
|
|
46893
47059
|
class="pptx-sa-props__icon"
|
|
46894
|
-
[title]="'pptx.
|
|
47060
|
+
[title]="'pptx.smartArt.addSubItem' | translate"
|
|
46895
47061
|
[disabled]="!canEdit()"
|
|
46896
47062
|
(click)="onAddSubItem(node.id)"
|
|
46897
47063
|
>
|
|
@@ -46919,7 +47085,7 @@ class SmartArtPropertiesComponent {
|
|
|
46919
47085
|
<button
|
|
46920
47086
|
type="button"
|
|
46921
47087
|
class="pptx-sa-props__icon"
|
|
46922
|
-
[title]="'pptx.
|
|
47088
|
+
[title]="'pptx.smartArt.moveUp' | translate"
|
|
46923
47089
|
[disabled]="!canEdit()"
|
|
46924
47090
|
(click)="onMoveUp(node.id)"
|
|
46925
47091
|
>
|
|
@@ -46928,7 +47094,7 @@ class SmartArtPropertiesComponent {
|
|
|
46928
47094
|
<button
|
|
46929
47095
|
type="button"
|
|
46930
47096
|
class="pptx-sa-props__icon"
|
|
46931
|
-
[title]="'pptx.
|
|
47097
|
+
[title]="'pptx.smartArt.moveDown' | translate"
|
|
46932
47098
|
[disabled]="!canEdit()"
|
|
46933
47099
|
(click)="onMoveDown(node.id)"
|
|
46934
47100
|
>
|
|
@@ -46940,7 +47106,7 @@ class SmartArtPropertiesComponent {
|
|
|
46940
47106
|
[title]="
|
|
46941
47107
|
!isChild(node) && !canRemoveItem()
|
|
46942
47108
|
? boundsHint()
|
|
46943
|
-
: ('pptx.
|
|
47109
|
+
: ('pptx.smartArt.remove' | translate)
|
|
46944
47110
|
"
|
|
46945
47111
|
[disabled]="
|
|
46946
47112
|
!canEdit() || nodes().length <= 1 || (!isChild(node) && !canRemoveItem())
|
|
@@ -46955,7 +47121,7 @@ class SmartArtPropertiesComponent {
|
|
|
46955
47121
|
<div class="pptx-sa-props__node-style">
|
|
46956
47122
|
<label class="pptx-sa-props__swatch" [title]="'pptx.smartart.nodeFill' | translate">
|
|
46957
47123
|
<span class="pptx-sa-props__swatch-label">{{
|
|
46958
|
-
'pptx.
|
|
47124
|
+
'pptx.smartArt.fill' | translate
|
|
46959
47125
|
}}</span>
|
|
46960
47126
|
<input
|
|
46961
47127
|
type="color"
|
|
@@ -46967,7 +47133,7 @@ class SmartArtPropertiesComponent {
|
|
|
46967
47133
|
</label>
|
|
46968
47134
|
<label class="pptx-sa-props__swatch" [title]="'pptx.smartart.nodeFont' | translate">
|
|
46969
47135
|
<span class="pptx-sa-props__swatch-label">{{
|
|
46970
|
-
'pptx.
|
|
47136
|
+
'pptx.textPanel.font' | translate
|
|
46971
47137
|
}}</span>
|
|
46972
47138
|
<input
|
|
46973
47139
|
type="color"
|
|
@@ -46980,7 +47146,7 @@ class SmartArtPropertiesComponent {
|
|
|
46980
47146
|
<button
|
|
46981
47147
|
type="button"
|
|
46982
47148
|
class="pptx-sa-props__icon pptx-sa-props__style-toggle"
|
|
46983
|
-
[title]="'pptx.
|
|
47149
|
+
[title]="'pptx.inspector.bold' | translate"
|
|
46984
47150
|
[class.is-active]="nodeIsBold(node)"
|
|
46985
47151
|
[attr.aria-pressed]="nodeIsBold(node)"
|
|
46986
47152
|
[disabled]="!canEdit()"
|
|
@@ -46991,7 +47157,7 @@ class SmartArtPropertiesComponent {
|
|
|
46991
47157
|
<button
|
|
46992
47158
|
type="button"
|
|
46993
47159
|
class="pptx-sa-props__icon pptx-sa-props__style-toggle"
|
|
46994
|
-
[title]="'pptx.
|
|
47160
|
+
[title]="'pptx.inspector.italic' | translate"
|
|
46995
47161
|
[class.is-active]="nodeIsItalic(node)"
|
|
46996
47162
|
[attr.aria-pressed]="nodeIsItalic(node)"
|
|
46997
47163
|
[disabled]="!canEdit()"
|
|
@@ -47016,7 +47182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47016
47182
|
|
|
47017
47183
|
<!-- ── Layout switcher ──────────────────────────────────────────── -->
|
|
47018
47184
|
<div class="pptx-sa-props__field">
|
|
47019
|
-
<span class="pptx-sa-props__label">{{ 'pptx.
|
|
47185
|
+
<span class="pptx-sa-props__label">{{ 'pptx.master.layout' | translate }}</span>
|
|
47020
47186
|
<div
|
|
47021
47187
|
class="pptx-sa-props__layouts"
|
|
47022
47188
|
role="group"
|
|
@@ -47108,7 +47274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47108
47274
|
class="pptx-sa-props__node-input"
|
|
47109
47275
|
[disabled]="!canEdit()"
|
|
47110
47276
|
[value]="node.text"
|
|
47111
|
-
[attr.placeholder]="'pptx.
|
|
47277
|
+
[attr.placeholder]="'pptx.smartArt.nodePlaceholder' | translate"
|
|
47112
47278
|
(change)="onNodeText($event, node.id)"
|
|
47113
47279
|
(keydown)="onNodeKeydown($event, node.id)"
|
|
47114
47280
|
/>
|
|
@@ -47117,7 +47283,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47117
47283
|
<button
|
|
47118
47284
|
type="button"
|
|
47119
47285
|
class="pptx-sa-props__icon"
|
|
47120
|
-
[title]="'pptx.
|
|
47286
|
+
[title]="'pptx.smartArt.addSubItem' | translate"
|
|
47121
47287
|
[disabled]="!canEdit()"
|
|
47122
47288
|
(click)="onAddSubItem(node.id)"
|
|
47123
47289
|
>
|
|
@@ -47145,7 +47311,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47145
47311
|
<button
|
|
47146
47312
|
type="button"
|
|
47147
47313
|
class="pptx-sa-props__icon"
|
|
47148
|
-
[title]="'pptx.
|
|
47314
|
+
[title]="'pptx.smartArt.moveUp' | translate"
|
|
47149
47315
|
[disabled]="!canEdit()"
|
|
47150
47316
|
(click)="onMoveUp(node.id)"
|
|
47151
47317
|
>
|
|
@@ -47154,7 +47320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47154
47320
|
<button
|
|
47155
47321
|
type="button"
|
|
47156
47322
|
class="pptx-sa-props__icon"
|
|
47157
|
-
[title]="'pptx.
|
|
47323
|
+
[title]="'pptx.smartArt.moveDown' | translate"
|
|
47158
47324
|
[disabled]="!canEdit()"
|
|
47159
47325
|
(click)="onMoveDown(node.id)"
|
|
47160
47326
|
>
|
|
@@ -47166,7 +47332,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47166
47332
|
[title]="
|
|
47167
47333
|
!isChild(node) && !canRemoveItem()
|
|
47168
47334
|
? boundsHint()
|
|
47169
|
-
: ('pptx.
|
|
47335
|
+
: ('pptx.smartArt.remove' | translate)
|
|
47170
47336
|
"
|
|
47171
47337
|
[disabled]="
|
|
47172
47338
|
!canEdit() || nodes().length <= 1 || (!isChild(node) && !canRemoveItem())
|
|
@@ -47181,7 +47347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47181
47347
|
<div class="pptx-sa-props__node-style">
|
|
47182
47348
|
<label class="pptx-sa-props__swatch" [title]="'pptx.smartart.nodeFill' | translate">
|
|
47183
47349
|
<span class="pptx-sa-props__swatch-label">{{
|
|
47184
|
-
'pptx.
|
|
47350
|
+
'pptx.smartArt.fill' | translate
|
|
47185
47351
|
}}</span>
|
|
47186
47352
|
<input
|
|
47187
47353
|
type="color"
|
|
@@ -47193,7 +47359,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47193
47359
|
</label>
|
|
47194
47360
|
<label class="pptx-sa-props__swatch" [title]="'pptx.smartart.nodeFont' | translate">
|
|
47195
47361
|
<span class="pptx-sa-props__swatch-label">{{
|
|
47196
|
-
'pptx.
|
|
47362
|
+
'pptx.textPanel.font' | translate
|
|
47197
47363
|
}}</span>
|
|
47198
47364
|
<input
|
|
47199
47365
|
type="color"
|
|
@@ -47206,7 +47372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47206
47372
|
<button
|
|
47207
47373
|
type="button"
|
|
47208
47374
|
class="pptx-sa-props__icon pptx-sa-props__style-toggle"
|
|
47209
|
-
[title]="'pptx.
|
|
47375
|
+
[title]="'pptx.inspector.bold' | translate"
|
|
47210
47376
|
[class.is-active]="nodeIsBold(node)"
|
|
47211
47377
|
[attr.aria-pressed]="nodeIsBold(node)"
|
|
47212
47378
|
[disabled]="!canEdit()"
|
|
@@ -47217,7 +47383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
47217
47383
|
<button
|
|
47218
47384
|
type="button"
|
|
47219
47385
|
class="pptx-sa-props__icon pptx-sa-props__style-toggle"
|
|
47220
|
-
[title]="'pptx.
|
|
47386
|
+
[title]="'pptx.inspector.italic' | translate"
|
|
47221
47387
|
[class.is-active]="nodeIsItalic(node)"
|
|
47222
47388
|
[attr.aria-pressed]="nodeIsItalic(node)"
|
|
47223
47389
|
[disabled]="!canEdit()"
|
|
@@ -48023,7 +48189,7 @@ class TableCellFormattingComponent {
|
|
|
48023
48189
|
[disabled]="!canEdit()"
|
|
48024
48190
|
(click)="onMergeRange()"
|
|
48025
48191
|
>
|
|
48026
|
-
{{ 'pptx.
|
|
48192
|
+
{{ 'pptx.contextMenu.mergeSelectedCells' | translate }}
|
|
48027
48193
|
</button>
|
|
48028
48194
|
}
|
|
48029
48195
|
</div>
|
|
@@ -48169,7 +48335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
48169
48335
|
[disabled]="!canEdit()"
|
|
48170
48336
|
(click)="onMergeRange()"
|
|
48171
48337
|
>
|
|
48172
|
-
{{ 'pptx.
|
|
48338
|
+
{{ 'pptx.contextMenu.mergeSelectedCells' | translate }}
|
|
48173
48339
|
</button>
|
|
48174
48340
|
}
|
|
48175
48341
|
</div>
|
|
@@ -55008,7 +55174,7 @@ class SmartArtRendererComponent {
|
|
|
55008
55174
|
>
|
|
55009
55175
|
@if (isEmpty()) {
|
|
55010
55176
|
<div class="pptx-ng-smartart-placeholder">
|
|
55011
|
-
{{ 'pptx.
|
|
55177
|
+
{{ 'pptx.smartArt.placeholder' | translate }}
|
|
55012
55178
|
</div>
|
|
55013
55179
|
} @else if (hasDrawingShapes()) {
|
|
55014
55180
|
<svg
|
|
@@ -55169,7 +55335,7 @@ class SmartArtRendererComponent {
|
|
|
55169
55335
|
</svg>
|
|
55170
55336
|
} @else {
|
|
55171
55337
|
<div class="pptx-ng-smartart-placeholder">
|
|
55172
|
-
{{ 'pptx.
|
|
55338
|
+
{{ 'pptx.smartArt.placeholder' | translate }}
|
|
55173
55339
|
</div>
|
|
55174
55340
|
}
|
|
55175
55341
|
|
|
@@ -55184,7 +55350,7 @@ class SmartArtRendererComponent {
|
|
|
55184
55350
|
<button
|
|
55185
55351
|
type="button"
|
|
55186
55352
|
class="pptx-ng-smartart-swatch"
|
|
55187
|
-
[attr.aria-label]="'pptx.
|
|
55353
|
+
[attr.aria-label]="'pptx.smartArt.setFill' | translate: { color: color }"
|
|
55188
55354
|
[style.background]="color"
|
|
55189
55355
|
(click)="handleChangeNodeStyle(hoveredNodeId()!, color)"
|
|
55190
55356
|
></button>
|
|
@@ -55241,7 +55407,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
55241
55407
|
>
|
|
55242
55408
|
@if (isEmpty()) {
|
|
55243
55409
|
<div class="pptx-ng-smartart-placeholder">
|
|
55244
|
-
{{ 'pptx.
|
|
55410
|
+
{{ 'pptx.smartArt.placeholder' | translate }}
|
|
55245
55411
|
</div>
|
|
55246
55412
|
} @else if (hasDrawingShapes()) {
|
|
55247
55413
|
<svg
|
|
@@ -55402,7 +55568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
55402
55568
|
</svg>
|
|
55403
55569
|
} @else {
|
|
55404
55570
|
<div class="pptx-ng-smartart-placeholder">
|
|
55405
|
-
{{ 'pptx.
|
|
55571
|
+
{{ 'pptx.smartArt.placeholder' | translate }}
|
|
55406
55572
|
</div>
|
|
55407
55573
|
}
|
|
55408
55574
|
|
|
@@ -55417,7 +55583,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
55417
55583
|
<button
|
|
55418
55584
|
type="button"
|
|
55419
55585
|
class="pptx-ng-smartart-swatch"
|
|
55420
|
-
[attr.aria-label]="'pptx.
|
|
55586
|
+
[attr.aria-label]="'pptx.smartArt.setFill' | translate: { color: color }"
|
|
55421
55587
|
[style.background]="color"
|
|
55422
55588
|
(click)="handleChangeNodeStyle(hoveredNodeId()!, color)"
|
|
55423
55589
|
></button>
|
|
@@ -55706,7 +55872,7 @@ class SmartArt3DRendererComponent {
|
|
|
55706
55872
|
[style.height.px]="editState()!.box.height"
|
|
55707
55873
|
[value]="editState()!.text"
|
|
55708
55874
|
spellcheck="false"
|
|
55709
|
-
[attr.aria-label]="'pptx.
|
|
55875
|
+
[attr.aria-label]="'pptx.smartArt.editNodeText' | translate"
|
|
55710
55876
|
(input)="updateDraft($event)"
|
|
55711
55877
|
(blur)="commitEdit()"
|
|
55712
55878
|
(keydown)="onEditorKeydown($event)"
|
|
@@ -55748,7 +55914,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
55748
55914
|
[style.height.px]="editState()!.box.height"
|
|
55749
55915
|
[value]="editState()!.text"
|
|
55750
55916
|
spellcheck="false"
|
|
55751
|
-
[attr.aria-label]="'pptx.
|
|
55917
|
+
[attr.aria-label]="'pptx.smartArt.editNodeText' | translate"
|
|
55752
55918
|
(input)="updateDraft($event)"
|
|
55753
55919
|
(blur)="commitEdit()"
|
|
55754
55920
|
(keydown)="onEditorKeydown($event)"
|
|
@@ -59073,7 +59239,7 @@ class SlideCanvasComponent {
|
|
|
59073
59239
|
<div
|
|
59074
59240
|
class="pptx-ng-rotate-handle"
|
|
59075
59241
|
role="button"
|
|
59076
|
-
[attr.aria-label]="'pptx.
|
|
59242
|
+
[attr.aria-label]="'pptx.selectionOverlay.rotate' | translate"
|
|
59077
59243
|
[style.left.px]="rh.left"
|
|
59078
59244
|
[style.top.px]="rh.top"
|
|
59079
59245
|
[style.width.px]="rh.size"
|
|
@@ -59447,7 +59613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
59447
59613
|
<div
|
|
59448
59614
|
class="pptx-ng-rotate-handle"
|
|
59449
59615
|
role="button"
|
|
59450
|
-
[attr.aria-label]="'pptx.
|
|
59616
|
+
[attr.aria-label]="'pptx.selectionOverlay.rotate' | translate"
|
|
59451
59617
|
[style.left.px]="rh.left"
|
|
59452
59618
|
[style.top.px]="rh.top"
|
|
59453
59619
|
[style.width.px]="rh.size"
|
|
@@ -65226,7 +65392,7 @@ class PropertiesDialogComponent {
|
|
|
65226
65392
|
<div class="pptx-ng-props-form">
|
|
65227
65393
|
<div class="pptx-ng-props-field">
|
|
65228
65394
|
<label for="pptx-ng-props-title" class="pptx-ng-props-label">{{
|
|
65229
|
-
'pptx.
|
|
65395
|
+
'pptx.properties.titleLabel' | translate
|
|
65230
65396
|
}}</label>
|
|
65231
65397
|
<input
|
|
65232
65398
|
id="pptx-ng-props-title"
|
|
@@ -65239,7 +65405,7 @@ class PropertiesDialogComponent {
|
|
|
65239
65405
|
|
|
65240
65406
|
<div class="pptx-ng-props-field">
|
|
65241
65407
|
<label for="pptx-ng-props-creator" class="pptx-ng-props-label">{{
|
|
65242
|
-
'pptx.
|
|
65408
|
+
'pptx.properties.author' | translate
|
|
65243
65409
|
}}</label>
|
|
65244
65410
|
<input
|
|
65245
65411
|
id="pptx-ng-props-creator"
|
|
@@ -65252,7 +65418,7 @@ class PropertiesDialogComponent {
|
|
|
65252
65418
|
|
|
65253
65419
|
<div class="pptx-ng-props-field">
|
|
65254
65420
|
<label for="pptx-ng-props-subject" class="pptx-ng-props-label">{{
|
|
65255
|
-
'pptx.
|
|
65421
|
+
'pptx.properties.subject' | translate
|
|
65256
65422
|
}}</label>
|
|
65257
65423
|
<input
|
|
65258
65424
|
id="pptx-ng-props-subject"
|
|
@@ -65265,7 +65431,7 @@ class PropertiesDialogComponent {
|
|
|
65265
65431
|
|
|
65266
65432
|
<div class="pptx-ng-props-field">
|
|
65267
65433
|
<label for="pptx-ng-props-keywords" class="pptx-ng-props-label">{{
|
|
65268
|
-
'pptx.
|
|
65434
|
+
'pptx.properties.keywords' | translate
|
|
65269
65435
|
}}</label>
|
|
65270
65436
|
<input
|
|
65271
65437
|
id="pptx-ng-props-keywords"
|
|
@@ -65318,7 +65484,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
65318
65484
|
<div class="pptx-ng-props-form">
|
|
65319
65485
|
<div class="pptx-ng-props-field">
|
|
65320
65486
|
<label for="pptx-ng-props-title" class="pptx-ng-props-label">{{
|
|
65321
|
-
'pptx.
|
|
65487
|
+
'pptx.properties.titleLabel' | translate
|
|
65322
65488
|
}}</label>
|
|
65323
65489
|
<input
|
|
65324
65490
|
id="pptx-ng-props-title"
|
|
@@ -65331,7 +65497,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
65331
65497
|
|
|
65332
65498
|
<div class="pptx-ng-props-field">
|
|
65333
65499
|
<label for="pptx-ng-props-creator" class="pptx-ng-props-label">{{
|
|
65334
|
-
'pptx.
|
|
65500
|
+
'pptx.properties.author' | translate
|
|
65335
65501
|
}}</label>
|
|
65336
65502
|
<input
|
|
65337
65503
|
id="pptx-ng-props-creator"
|
|
@@ -65344,7 +65510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
65344
65510
|
|
|
65345
65511
|
<div class="pptx-ng-props-field">
|
|
65346
65512
|
<label for="pptx-ng-props-subject" class="pptx-ng-props-label">{{
|
|
65347
|
-
'pptx.
|
|
65513
|
+
'pptx.properties.subject' | translate
|
|
65348
65514
|
}}</label>
|
|
65349
65515
|
<input
|
|
65350
65516
|
id="pptx-ng-props-subject"
|
|
@@ -65357,7 +65523,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
65357
65523
|
|
|
65358
65524
|
<div class="pptx-ng-props-field">
|
|
65359
65525
|
<label for="pptx-ng-props-keywords" class="pptx-ng-props-label">{{
|
|
65360
|
-
'pptx.
|
|
65526
|
+
'pptx.properties.keywords' | translate
|
|
65361
65527
|
}}</label>
|
|
65362
65528
|
<input
|
|
65363
65529
|
id="pptx-ng-props-keywords"
|
|
@@ -67992,7 +68158,7 @@ class RibbonInsertFieldsComponent {
|
|
|
67992
68158
|
class="flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground transition-colors hover:bg-muted"
|
|
67993
68159
|
(click)="openDatePicker()"
|
|
67994
68160
|
>
|
|
67995
|
-
{{ 'pptx.
|
|
68161
|
+
{{ 'pptx.headerFooter.dateAndTime' | translate }}
|
|
67996
68162
|
</button>
|
|
67997
68163
|
<button
|
|
67998
68164
|
type="button"
|
|
@@ -68020,7 +68186,7 @@ class RibbonInsertFieldsComponent {
|
|
|
68020
68186
|
>
|
|
68021
68187
|
<div class="w-72 space-y-3 rounded-lg border border-border bg-card p-4 shadow-2xl">
|
|
68022
68188
|
<div class="text-sm font-medium text-foreground">
|
|
68023
|
-
{{ 'pptx.
|
|
68189
|
+
{{ 'pptx.headerFooter.dateAndTime' | translate }}
|
|
68024
68190
|
</div>
|
|
68025
68191
|
<input
|
|
68026
68192
|
type="datetime-local"
|
|
@@ -68153,7 +68319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
68153
68319
|
class="flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground transition-colors hover:bg-muted"
|
|
68154
68320
|
(click)="openDatePicker()"
|
|
68155
68321
|
>
|
|
68156
|
-
{{ 'pptx.
|
|
68322
|
+
{{ 'pptx.headerFooter.dateAndTime' | translate }}
|
|
68157
68323
|
</button>
|
|
68158
68324
|
<button
|
|
68159
68325
|
type="button"
|
|
@@ -68181,7 +68347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
68181
68347
|
>
|
|
68182
68348
|
<div class="w-72 space-y-3 rounded-lg border border-border bg-card p-4 shadow-2xl">
|
|
68183
68349
|
<div class="text-sm font-medium text-foreground">
|
|
68184
|
-
{{ 'pptx.
|
|
68350
|
+
{{ 'pptx.headerFooter.dateAndTime' | translate }}
|
|
68185
68351
|
</div>
|
|
68186
68352
|
<input
|
|
68187
68353
|
type="datetime-local"
|
|
@@ -70448,7 +70614,7 @@ class SelectionPaneComponent {
|
|
|
70448
70614
|
}
|
|
70449
70615
|
</ul>
|
|
70450
70616
|
} @else {
|
|
70451
|
-
<p class="pptx-ng-sel-pane__empty">{{ 'pptx.selectionPane.
|
|
70617
|
+
<p class="pptx-ng-sel-pane__empty">{{ 'pptx.selectionPane.empty' | translate }}</p>
|
|
70452
70618
|
}
|
|
70453
70619
|
</aside>
|
|
70454
70620
|
`, isInline: true, styles: [":host{display:block;height:100%;width:100%}.pptx-ng-sel-pane{display:flex;flex-direction:column;min-height:0;height:100%;width:100%;background:var(--pptx-card, #111827);color:var(--pptx-foreground, #f3f4f6);border-left:1px solid var(--pptx-border, #374151);font-family:system-ui,sans-serif}.pptx-ng-sel-pane__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--pptx-border, #374151);flex-shrink:0}.pptx-ng-sel-pane__title{margin:0;font-size:14px;font-weight:600}.pptx-ng-sel-pane__count{font-size:12px;color:var(--pptx-muted-foreground, #9ca3af)}.pptx-ng-sel-pane__list{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:0}.pptx-ng-sel-pane__row{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;border:1px solid transparent;cursor:pointer;margin-bottom:2px;transition:background .1s;-webkit-user-select:none;user-select:none}.pptx-ng-sel-pane__row:hover{background:var(--pptx-accent, #1f2937)}.pptx-ng-sel-pane__row--selected{border-color:var(--pptx-primary, #6366f1);background:color-mix(in srgb,var(--pptx-primary, #6366f1) 15%,transparent)}.pptx-ng-sel-pane__row--hidden{opacity:.5}.pptx-ng-sel-pane__icon{flex-shrink:0;width:20px;text-align:center;font-size:12px;color:var(--pptx-muted-foreground, #9ca3af)}.pptx-ng-sel-pane__label{flex:1 1 auto;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.pptx-ng-sel-pane__actions{display:flex;gap:2px;flex-shrink:0}.pptx-ng-sel-pane__btn{background:transparent;border:1px solid var(--pptx-border, #374151);color:inherit;border-radius:4px;padding:2px 5px;font-size:11px;cursor:pointer;line-height:1.2}.pptx-ng-sel-pane__btn:hover{background:var(--pptx-accent, #1f2937)}.pptx-ng-sel-pane__empty{padding:16px;font-size:13px;color:var(--pptx-muted-foreground, #9ca3af)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -70519,7 +70685,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
70519
70685
|
}
|
|
70520
70686
|
</ul>
|
|
70521
70687
|
} @else {
|
|
70522
|
-
<p class="pptx-ng-sel-pane__empty">{{ 'pptx.selectionPane.
|
|
70688
|
+
<p class="pptx-ng-sel-pane__empty">{{ 'pptx.selectionPane.empty' | translate }}</p>
|
|
70523
70689
|
}
|
|
70524
70690
|
</aside>
|
|
70525
70691
|
`, styles: [":host{display:block;height:100%;width:100%}.pptx-ng-sel-pane{display:flex;flex-direction:column;min-height:0;height:100%;width:100%;background:var(--pptx-card, #111827);color:var(--pptx-foreground, #f3f4f6);border-left:1px solid var(--pptx-border, #374151);font-family:system-ui,sans-serif}.pptx-ng-sel-pane__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--pptx-border, #374151);flex-shrink:0}.pptx-ng-sel-pane__title{margin:0;font-size:14px;font-weight:600}.pptx-ng-sel-pane__count{font-size:12px;color:var(--pptx-muted-foreground, #9ca3af)}.pptx-ng-sel-pane__list{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:0}.pptx-ng-sel-pane__row{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;border:1px solid transparent;cursor:pointer;margin-bottom:2px;transition:background .1s;-webkit-user-select:none;user-select:none}.pptx-ng-sel-pane__row:hover{background:var(--pptx-accent, #1f2937)}.pptx-ng-sel-pane__row--selected{border-color:var(--pptx-primary, #6366f1);background:color-mix(in srgb,var(--pptx-primary, #6366f1) 15%,transparent)}.pptx-ng-sel-pane__row--hidden{opacity:.5}.pptx-ng-sel-pane__icon{flex-shrink:0;width:20px;text-align:center;font-size:12px;color:var(--pptx-muted-foreground, #9ca3af)}.pptx-ng-sel-pane__label{flex:1 1 auto;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.pptx-ng-sel-pane__actions{display:flex;gap:2px;flex-shrink:0}.pptx-ng-sel-pane__btn{background:transparent;border:1px solid var(--pptx-border, #374151);color:inherit;border-radius:4px;padding:2px 5px;font-size:11px;cursor:pointer;line-height:1.2}.pptx-ng-sel-pane__btn:hover{background:var(--pptx-accent, #1f2937)}.pptx-ng-sel-pane__empty{padding:16px;font-size:13px;color:var(--pptx-muted-foreground, #9ca3af)}\n"] }]
|
|
@@ -70725,9 +70891,7 @@ class ShareDialogComponent {
|
|
|
70725
70891
|
|
|
70726
70892
|
@if (shareUrl()) {
|
|
70727
70893
|
<div class="pptx-ng-share-field">
|
|
70728
|
-
<label class="pptx-ng-share-label">{{
|
|
70729
|
-
'pptx.share.shareLinkLabel' | translate
|
|
70730
|
-
}}</label>
|
|
70894
|
+
<label class="pptx-ng-share-label">{{ 'pptx.share.shareLink' | translate }}</label>
|
|
70731
70895
|
<div class="pptx-ng-share-link-row">
|
|
70732
70896
|
<input
|
|
70733
70897
|
class="pptx-ng-share-input"
|
|
@@ -70745,12 +70909,12 @@ class ShareDialogComponent {
|
|
|
70745
70909
|
{{ (copied() ? 'pptx.share.copied' : 'pptx.share.copyLinkButton') | translate }}
|
|
70746
70910
|
</button>
|
|
70747
70911
|
</div>
|
|
70748
|
-
<p class="pptx-ng-share-hint">{{ 'pptx.share.
|
|
70912
|
+
<p class="pptx-ng-share-hint">{{ 'pptx.share.shareHint' | translate }}</p>
|
|
70749
70913
|
</div>
|
|
70750
70914
|
}
|
|
70751
70915
|
|
|
70752
70916
|
<button type="button" class="pptx-ng-share-stop" (click)="handleStop()">
|
|
70753
|
-
{{ 'pptx.share.
|
|
70917
|
+
{{ 'pptx.share.stopSharing' | translate }}
|
|
70754
70918
|
</button>
|
|
70755
70919
|
</div>
|
|
70756
70920
|
} @else {
|
|
@@ -70817,7 +70981,7 @@ class ShareDialogComponent {
|
|
|
70817
70981
|
[disabled]="!canStart()"
|
|
70818
70982
|
(click)="handleStart()"
|
|
70819
70983
|
>
|
|
70820
|
-
{{ 'pptx.share.
|
|
70984
|
+
{{ 'pptx.share.startSharing' | translate }}
|
|
70821
70985
|
</button>
|
|
70822
70986
|
}
|
|
70823
70987
|
</div>
|
|
@@ -70863,9 +71027,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
70863
71027
|
|
|
70864
71028
|
@if (shareUrl()) {
|
|
70865
71029
|
<div class="pptx-ng-share-field">
|
|
70866
|
-
<label class="pptx-ng-share-label">{{
|
|
70867
|
-
'pptx.share.shareLinkLabel' | translate
|
|
70868
|
-
}}</label>
|
|
71030
|
+
<label class="pptx-ng-share-label">{{ 'pptx.share.shareLink' | translate }}</label>
|
|
70869
71031
|
<div class="pptx-ng-share-link-row">
|
|
70870
71032
|
<input
|
|
70871
71033
|
class="pptx-ng-share-input"
|
|
@@ -70883,12 +71045,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
70883
71045
|
{{ (copied() ? 'pptx.share.copied' : 'pptx.share.copyLinkButton') | translate }}
|
|
70884
71046
|
</button>
|
|
70885
71047
|
</div>
|
|
70886
|
-
<p class="pptx-ng-share-hint">{{ 'pptx.share.
|
|
71048
|
+
<p class="pptx-ng-share-hint">{{ 'pptx.share.shareHint' | translate }}</p>
|
|
70887
71049
|
</div>
|
|
70888
71050
|
}
|
|
70889
71051
|
|
|
70890
71052
|
<button type="button" class="pptx-ng-share-stop" (click)="handleStop()">
|
|
70891
|
-
{{ 'pptx.share.
|
|
71053
|
+
{{ 'pptx.share.stopSharing' | translate }}
|
|
70892
71054
|
</button>
|
|
70893
71055
|
</div>
|
|
70894
71056
|
} @else {
|
|
@@ -70955,7 +71117,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
70955
71117
|
[disabled]="!canStart()"
|
|
70956
71118
|
(click)="handleStart()"
|
|
70957
71119
|
>
|
|
70958
|
-
{{ 'pptx.share.
|
|
71120
|
+
{{ 'pptx.share.startSharing' | translate }}
|
|
70959
71121
|
</button>
|
|
70960
71122
|
}
|
|
70961
71123
|
</div>
|
|
@@ -71137,7 +71299,10 @@ class SignaturesPanelComponent {
|
|
|
71137
71299
|
}
|
|
71138
71300
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SignaturesPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
71139
71301
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: SignaturesPanelComponent, isStandalone: true, selector: "pptx-signatures-panel", inputs: { signatures: { classPropertyName: "signatures", publicName: "signatures", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
71140
|
-
<section
|
|
71302
|
+
<section
|
|
71303
|
+
class="pptx-ng-signatures"
|
|
71304
|
+
[attr.aria-label]="'pptx.digitalSignatures.ariaLabel' | translate"
|
|
71305
|
+
>
|
|
71141
71306
|
<header
|
|
71142
71307
|
class="pptx-ng-signatures__header"
|
|
71143
71308
|
[class]="'pptx-ng-signatures__header--' + overall()"
|
|
@@ -71150,7 +71315,9 @@ class SignaturesPanelComponent {
|
|
|
71150
71315
|
</header>
|
|
71151
71316
|
|
|
71152
71317
|
@if (!signed()) {
|
|
71153
|
-
<p class="pptx-ng-signatures__empty">
|
|
71318
|
+
<p class="pptx-ng-signatures__empty">
|
|
71319
|
+
{{ 'pptx.digitalSignatures.noSignatures' | translate }}
|
|
71320
|
+
</p>
|
|
71154
71321
|
} @else {
|
|
71155
71322
|
<ul class="pptx-ng-signatures__list">
|
|
71156
71323
|
@for (sig of signatures(); track key(sig, $index)) {
|
|
@@ -71167,20 +71334,20 @@ class SignaturesPanelComponent {
|
|
|
71167
71334
|
|
|
71168
71335
|
<dl class="pptx-ng-signatures__meta">
|
|
71169
71336
|
@if (sig.certificate?.issuer; as issuer) {
|
|
71170
|
-
<dt>{{ 'pptx.
|
|
71337
|
+
<dt>{{ 'pptx.digitalSignatures.issuer' | translate }}</dt>
|
|
71171
71338
|
<dd>{{ issuer }}</dd>
|
|
71172
71339
|
}
|
|
71173
71340
|
@if (sig.certificate?.serialNumber; as serial) {
|
|
71174
|
-
<dt>{{ 'pptx.
|
|
71341
|
+
<dt>{{ 'pptx.digitalSignatures.serial' | translate }}</dt>
|
|
71175
71342
|
<dd>{{ serial }}</dd>
|
|
71176
71343
|
}
|
|
71177
71344
|
@if (timestamp(sig); as ts) {
|
|
71178
|
-
<dt>{{ 'pptx.
|
|
71345
|
+
<dt>{{ 'pptx.digitalSignatures.signed' | translate }}</dt>
|
|
71179
71346
|
<dd>{{ ts }}</dd>
|
|
71180
71347
|
}
|
|
71181
71348
|
@if (!sig.certificate) {
|
|
71182
|
-
<dt>{{ 'pptx.
|
|
71183
|
-
<dd>{{ 'pptx.
|
|
71349
|
+
<dt>{{ 'pptx.digitalSignatures.certificate' | translate }}</dt>
|
|
71350
|
+
<dd>{{ 'pptx.digitalSignatures.notAvailable' | translate }}</dd>
|
|
71184
71351
|
}
|
|
71185
71352
|
</dl>
|
|
71186
71353
|
</li>
|
|
@@ -71193,7 +71360,10 @@ class SignaturesPanelComponent {
|
|
|
71193
71360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SignaturesPanelComponent, decorators: [{
|
|
71194
71361
|
type: Component,
|
|
71195
71362
|
args: [{ selector: 'pptx-signatures-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslatePipe], template: `
|
|
71196
|
-
<section
|
|
71363
|
+
<section
|
|
71364
|
+
class="pptx-ng-signatures"
|
|
71365
|
+
[attr.aria-label]="'pptx.digitalSignatures.ariaLabel' | translate"
|
|
71366
|
+
>
|
|
71197
71367
|
<header
|
|
71198
71368
|
class="pptx-ng-signatures__header"
|
|
71199
71369
|
[class]="'pptx-ng-signatures__header--' + overall()"
|
|
@@ -71206,7 +71376,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
71206
71376
|
</header>
|
|
71207
71377
|
|
|
71208
71378
|
@if (!signed()) {
|
|
71209
|
-
<p class="pptx-ng-signatures__empty">
|
|
71379
|
+
<p class="pptx-ng-signatures__empty">
|
|
71380
|
+
{{ 'pptx.digitalSignatures.noSignatures' | translate }}
|
|
71381
|
+
</p>
|
|
71210
71382
|
} @else {
|
|
71211
71383
|
<ul class="pptx-ng-signatures__list">
|
|
71212
71384
|
@for (sig of signatures(); track key(sig, $index)) {
|
|
@@ -71223,20 +71395,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
71223
71395
|
|
|
71224
71396
|
<dl class="pptx-ng-signatures__meta">
|
|
71225
71397
|
@if (sig.certificate?.issuer; as issuer) {
|
|
71226
|
-
<dt>{{ 'pptx.
|
|
71398
|
+
<dt>{{ 'pptx.digitalSignatures.issuer' | translate }}</dt>
|
|
71227
71399
|
<dd>{{ issuer }}</dd>
|
|
71228
71400
|
}
|
|
71229
71401
|
@if (sig.certificate?.serialNumber; as serial) {
|
|
71230
|
-
<dt>{{ 'pptx.
|
|
71402
|
+
<dt>{{ 'pptx.digitalSignatures.serial' | translate }}</dt>
|
|
71231
71403
|
<dd>{{ serial }}</dd>
|
|
71232
71404
|
}
|
|
71233
71405
|
@if (timestamp(sig); as ts) {
|
|
71234
|
-
<dt>{{ 'pptx.
|
|
71406
|
+
<dt>{{ 'pptx.digitalSignatures.signed' | translate }}</dt>
|
|
71235
71407
|
<dd>{{ ts }}</dd>
|
|
71236
71408
|
}
|
|
71237
71409
|
@if (!sig.certificate) {
|
|
71238
|
-
<dt>{{ 'pptx.
|
|
71239
|
-
<dd>{{ 'pptx.
|
|
71410
|
+
<dt>{{ 'pptx.digitalSignatures.certificate' | translate }}</dt>
|
|
71411
|
+
<dd>{{ 'pptx.digitalSignatures.notAvailable' | translate }}</dd>
|
|
71240
71412
|
}
|
|
71241
71413
|
</dl>
|
|
71242
71414
|
</li>
|
|
@@ -71597,12 +71769,12 @@ class SlidesPanelComponent {
|
|
|
71597
71769
|
<div
|
|
71598
71770
|
class="pptx-ng-spanel-actions"
|
|
71599
71771
|
role="toolbar"
|
|
71600
|
-
[attr.aria-label]="'pptx.
|
|
71772
|
+
[attr.aria-label]="'pptx.slideMenu.slideActions' | translate: { n: i + 1 }"
|
|
71601
71773
|
>
|
|
71602
71774
|
<button
|
|
71603
71775
|
type="button"
|
|
71604
71776
|
class="pptx-ng-spanel-action"
|
|
71605
|
-
[title]="'pptx.
|
|
71777
|
+
[title]="'pptx.ribbon.duplicateSlide' | translate"
|
|
71606
71778
|
[attr.aria-label]="'pptx.arrange.duplicate' | translate"
|
|
71607
71779
|
(click)="onDuplicate(i)"
|
|
71608
71780
|
>
|
|
@@ -71704,12 +71876,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
71704
71876
|
<div
|
|
71705
71877
|
class="pptx-ng-spanel-actions"
|
|
71706
71878
|
role="toolbar"
|
|
71707
|
-
[attr.aria-label]="'pptx.
|
|
71879
|
+
[attr.aria-label]="'pptx.slideMenu.slideActions' | translate: { n: i + 1 }"
|
|
71708
71880
|
>
|
|
71709
71881
|
<button
|
|
71710
71882
|
type="button"
|
|
71711
71883
|
class="pptx-ng-spanel-action"
|
|
71712
|
-
[title]="'pptx.
|
|
71884
|
+
[title]="'pptx.ribbon.duplicateSlide' | translate"
|
|
71713
71885
|
[attr.aria-label]="'pptx.arrange.duplicate' | translate"
|
|
71714
71886
|
(click)="onDuplicate(i)"
|
|
71715
71887
|
>
|
|
@@ -80252,6 +80424,8 @@ const translationsEn = {
|
|
|
80252
80424
|
'pptx.inspector.fill': 'Fill',
|
|
80253
80425
|
'pptx.inspector.line': 'Line',
|
|
80254
80426
|
'pptx.inspector.effects': 'Effects',
|
|
80427
|
+
'pptx.inspector.softEdge': 'Soft Edge',
|
|
80428
|
+
'pptx.inspector.softEdgeRadius': 'Soft Edge Radius',
|
|
80255
80429
|
'pptx.arrange.positionSize': 'Position & Size',
|
|
80256
80430
|
'pptx.arrange.lockElement': 'Lock element',
|
|
80257
80431
|
'pptx.arrange.unlockElement': 'Unlock element',
|
|
@@ -80273,6 +80447,9 @@ const translationsEn = {
|
|
|
80273
80447
|
'pptx.media.trimEndTime': 'End (mm:ss)',
|
|
80274
80448
|
'pptx.media.trimmedDuration': 'Trimmed duration',
|
|
80275
80449
|
'pptx.media.resetTrim': 'Reset trim',
|
|
80450
|
+
'pptx.media.trimErrorNegative': 'Trim times cannot be negative.',
|
|
80451
|
+
'pptx.media.trimErrorStartAfterEnd': 'Trim start must be before trim end.',
|
|
80452
|
+
'pptx.media.trimErrorBeyondDuration': 'Trim times cannot exceed the clip duration.',
|
|
80276
80453
|
'pptx.media.playback': 'Playback',
|
|
80277
80454
|
'pptx.media.volume': 'Volume',
|
|
80278
80455
|
'pptx.media.speed': 'Speed',
|
|
@@ -81346,6 +81523,265 @@ const translationsEn = {
|
|
|
81346
81523
|
'pptx.animation.sequence.byParagraph': 'By Paragraph',
|
|
81347
81524
|
'pptx.animation.sequence.byWord': 'By Word',
|
|
81348
81525
|
'pptx.animation.sequence.byLetter': 'By Letter',
|
|
81526
|
+
// --- 2026-07-03 missing-key sweep: keys used by Vue/Angular with no
|
|
81527
|
+
// existing dictionary entry (React has 0 such gaps and is the ground-
|
|
81528
|
+
// truth reference these were derived from). Appended flat rather than
|
|
81529
|
+
// interleaved into their semantic sections above, to keep this batch
|
|
81530
|
+
// change safe/reviewable as one block.
|
|
81531
|
+
'pptx.align.toolbarLabel': 'Align and distribute',
|
|
81532
|
+
'pptx.arrange.deleteSelection': 'Delete selection',
|
|
81533
|
+
'pptx.arrange.duplicateSelection': 'Duplicate selection',
|
|
81534
|
+
'pptx.arrange.groupLabel': 'Arrange',
|
|
81535
|
+
'pptx.canvas.adjustShape': 'Adjust shape',
|
|
81536
|
+
'pptx.canvas.guideTooltip': 'Drag to move guide, double-click to remove',
|
|
81537
|
+
'pptx.customShows.none': 'None',
|
|
81538
|
+
'pptx.customShows.noSlidesYet': 'No slides in this show yet.',
|
|
81539
|
+
'pptx.customShows.renameNameLabel': 'Show name',
|
|
81540
|
+
'pptx.customShows.renameShow': 'Rename show',
|
|
81541
|
+
'pptx.customShows.slidesInShow': 'Slides in show',
|
|
81542
|
+
'pptx.design.editThemeTooltip': 'Edit presentation theme colors and fonts',
|
|
81543
|
+
'pptx.design.formatBackgroundTooltip': 'Open inspector to edit slide background',
|
|
81544
|
+
'pptx.design.slideSizeTooltip': 'Change slide dimensions (16:9, 4:3, custom)',
|
|
81545
|
+
'pptx.documentProperties.summary.company': 'Company',
|
|
81546
|
+
'pptx.documentProperties.summary.manager': 'Manager',
|
|
81547
|
+
'pptx.editorToolbar.addShape': 'Add {{shape}}',
|
|
81548
|
+
'pptx.editorToolbar.addTextBox': 'Add text box',
|
|
81549
|
+
'pptx.editorToolbar.history': 'History',
|
|
81550
|
+
'pptx.editorToolbar.resetZoom': 'Reset zoom',
|
|
81551
|
+
'pptx.editorToolbar.resetZoomTo100': 'Reset zoom to 100%',
|
|
81552
|
+
'pptx.effects.innerShadow': 'Inner Shadow',
|
|
81553
|
+
'pptx.element.linkFallback': 'Link',
|
|
81554
|
+
'pptx.export.export': 'Export',
|
|
81555
|
+
'pptx.export.gifAnimated': 'Animated GIF',
|
|
81556
|
+
'pptx.export.pdfAllSlides': 'PDF (all slides)',
|
|
81557
|
+
'pptx.export.pngCurrentSlide': 'PNG (current slide)',
|
|
81558
|
+
'pptx.export.webmVideo': 'WebM video',
|
|
81559
|
+
'pptx.file.copyImage': 'Copy Image',
|
|
81560
|
+
'pptx.file.copyImageTooltip': 'Copy Slide as Image',
|
|
81561
|
+
'pptx.file.fonts': 'Fonts',
|
|
81562
|
+
'pptx.file.gif': 'GIF',
|
|
81563
|
+
'pptx.file.package': 'Package',
|
|
81564
|
+
'pptx.file.packageTooltip': 'Package for Sharing',
|
|
81565
|
+
'pptx.file.pdf': 'PDF',
|
|
81566
|
+
'pptx.file.png': 'PNG',
|
|
81567
|
+
'pptx.file.saveAsPpsx': 'Save .ppsx',
|
|
81568
|
+
'pptx.file.saveAsPpsxTooltip': 'Save as Slide Show (.ppsx)',
|
|
81569
|
+
'pptx.file.saveAsPptm': 'Save .pptm',
|
|
81570
|
+
'pptx.file.saveAsPptmTooltip': 'Save as Macro-Enabled (.pptm)',
|
|
81571
|
+
'pptx.file.saveAsPptx': 'Save .pptx',
|
|
81572
|
+
'pptx.file.saveAsPptxTooltip': 'Save as Presentation (.pptx)',
|
|
81573
|
+
'pptx.file.video': 'Video',
|
|
81574
|
+
'pptx.fontEmbedding.embedInFile': 'Embed fonts in file',
|
|
81575
|
+
'pptx.fontEmbedding.noCustomFonts': 'No custom fonts to embed.',
|
|
81576
|
+
'pptx.guides.dragHint': 'Drag to move guide',
|
|
81577
|
+
'pptx.handout.cornerDate': 'Date',
|
|
81578
|
+
'pptx.handout.pageNumber': '#',
|
|
81579
|
+
'pptx.headerFooter.fixedDate': 'Fixed date',
|
|
81580
|
+
'pptx.headerFooter.headerText': 'Enter header text…',
|
|
81581
|
+
'pptx.headerFooter.updateAutomatically': 'Update automatically',
|
|
81582
|
+
'pptx.home.chooseLayout': 'Choose layout',
|
|
81583
|
+
'pptx.home.newSlide': 'New Slide',
|
|
81584
|
+
'pptx.hyperlink.linkTo': 'Link to',
|
|
81585
|
+
'pptx.hyperlink.urlPlaceholder': 'https://example.com',
|
|
81586
|
+
'pptx.insert.addShape': 'Add shape',
|
|
81587
|
+
'pptx.insert.addTextBox': 'Add text box',
|
|
81588
|
+
'pptx.insert.insertEquation': 'Insert Equation',
|
|
81589
|
+
'pptx.insert.insertSmartArt': 'Insert SmartArt',
|
|
81590
|
+
'pptx.insert.insertTable': 'Insert table',
|
|
81591
|
+
'pptx.insert.shape': 'Shape',
|
|
81592
|
+
'pptx.insert.shapeType': 'Shape type',
|
|
81593
|
+
'pptx.mode.closeMasterViewTooltip': 'Close master view',
|
|
81594
|
+
'pptx.mode.masterView': 'Master View',
|
|
81595
|
+
'pptx.overflow.closeMenu': 'Close menu',
|
|
81596
|
+
'pptx.present.optionsTooltip': 'Presentation options',
|
|
81597
|
+
'pptx.present.presentOnline': 'Present Online',
|
|
81598
|
+
'pptx.present.presentTooltip': 'Present (fullscreen)',
|
|
81599
|
+
'pptx.review.spelling': 'Spelling',
|
|
81600
|
+
'pptx.review.toggleComments': 'Toggle comments panel',
|
|
81601
|
+
'pptx.review.toggleSpellCheck': 'Toggle spell check',
|
|
81602
|
+
'pptx.shortcuts.title': 'Keyboard shortcuts',
|
|
81603
|
+
'pptx.slideInspector.horizontal': 'Horizontal',
|
|
81604
|
+
'pptx.slideInspector.presentation': 'Presentation',
|
|
81605
|
+
'pptx.slideInspector.slideTransition': 'Slide transition',
|
|
81606
|
+
'pptx.slideInspector.themeColours': 'Theme colours',
|
|
81607
|
+
'pptx.slideInspector.vertical': 'Vertical',
|
|
81608
|
+
'pptx.slidesPanel.deleteSlide': 'Delete slide',
|
|
81609
|
+
'pptx.slidesPanel.goToSlide': 'Go to slide {{n}}',
|
|
81610
|
+
'pptx.smartart.demote': 'Demote',
|
|
81611
|
+
'pptx.smartart.item': 'Item',
|
|
81612
|
+
'pptx.smartart.nodeCleared': 'Node cleared',
|
|
81613
|
+
'pptx.smartart.nodeFill': 'Node fill',
|
|
81614
|
+
'pptx.smartart.nodeFont': 'Node font',
|
|
81615
|
+
'pptx.smartart.nodeUpdated': 'Node updated to "{{text}}"',
|
|
81616
|
+
'pptx.smartart.promote': 'Promote',
|
|
81617
|
+
'pptx.smartart.subItemShort': 'Sub-item',
|
|
81618
|
+
'pptx.stroke.dash': 'Dash',
|
|
81619
|
+
'pptx.stroke.noBorderProperties': 'This element has no border properties.',
|
|
81620
|
+
'pptx.stroke.widthPx': 'Width (px)',
|
|
81621
|
+
'pptx.table.columns': 'Columns',
|
|
81622
|
+
'pptx.table.columnsCount': '{{count}} columns',
|
|
81623
|
+
'pptx.table.deleteColumn': 'Delete column',
|
|
81624
|
+
'pptx.table.deleteRow': 'Delete row',
|
|
81625
|
+
'pptx.table.insertAbove': 'Insert above',
|
|
81626
|
+
'pptx.table.insertBelow': 'Insert below',
|
|
81627
|
+
'pptx.table.insertLeft': 'Insert left',
|
|
81628
|
+
'pptx.table.insertRight': 'Insert right',
|
|
81629
|
+
'pptx.table.mergeSelected': 'Merge selected',
|
|
81630
|
+
'pptx.table.noEditableData': 'This table has no editable data.',
|
|
81631
|
+
'pptx.table.rows': 'Rows',
|
|
81632
|
+
'pptx.table.rowsCount': '{{count}} rows',
|
|
81633
|
+
'pptx.table.selectTablePrompt': 'Select a table to edit its properties.',
|
|
81634
|
+
'pptx.tableCell.backgroundColorAria': 'Background colour',
|
|
81635
|
+
'pptx.tableCell.edgeBorderColorAria': '{{edge}} border colour',
|
|
81636
|
+
'pptx.tableCell.textColorAria': 'Text colour',
|
|
81637
|
+
'pptx.text.bulletList': 'Bullet List',
|
|
81638
|
+
'pptx.text.clearFormatting': 'Clear Formatting',
|
|
81639
|
+
'pptx.text.decreaseFontSize': 'Decrease Font Size',
|
|
81640
|
+
'pptx.text.decreaseIndent': 'Decrease Indent',
|
|
81641
|
+
'pptx.text.fontColor': 'Font Color',
|
|
81642
|
+
'pptx.text.highlightColor': 'Text Highlight Color',
|
|
81643
|
+
'pptx.text.increaseFontSize': 'Increase Font Size',
|
|
81644
|
+
'pptx.text.increaseIndent': 'Increase Indent',
|
|
81645
|
+
'pptx.text.numberedList': 'Numbered List',
|
|
81646
|
+
'pptx.view.addHorizontalGuide': 'Add horizontal guide',
|
|
81647
|
+
'pptx.view.addVerticalGuide': 'Add vertical guide',
|
|
81648
|
+
'pptx.view.eyedropperTooltip': 'Eyedropper: sample a colour from the slide',
|
|
81649
|
+
'pptx.view.hGuide': 'H Guide',
|
|
81650
|
+
'pptx.view.masterViews': 'Master Views',
|
|
81651
|
+
'pptx.view.normal': 'Normal',
|
|
81652
|
+
'pptx.view.presentationViews': 'Presentation Views',
|
|
81653
|
+
'pptx.view.readingView': 'Reading View',
|
|
81654
|
+
'pptx.view.selection': 'Selection',
|
|
81655
|
+
'pptx.view.slideMasterTooltip': 'Edit slide masters and layouts',
|
|
81656
|
+
'pptx.view.slideSorterTooltip': 'Slide Sorter view',
|
|
81657
|
+
'pptx.view.spell': 'Spell',
|
|
81658
|
+
'pptx.view.templateEditingTooltip': 'Toggle template/master element editing',
|
|
81659
|
+
'pptx.view.toggleSpellCheck': 'Toggle spell check',
|
|
81660
|
+
'pptx.view.vGuide': 'V Guide',
|
|
81661
|
+
'pptx.view.zoomToFit': 'Zoom to Fit',
|
|
81662
|
+
'pptx.view.zoomToFitTooltip': 'Zoom to fit slide in window',
|
|
81663
|
+
// --- 2026-07-03 missing-key sweep, wave 2: keys referenced indirectly
|
|
81664
|
+
// (via a variable/array 'labelKey', not a literal t('...') call - e.g.
|
|
81665
|
+
// shape-preset lists, equation templates, artistic-effect catalogues,
|
|
81666
|
+
// table style-option checkboxes) that the first wave's literal-call
|
|
81667
|
+
// grep could not see. Same appended-flat approach as wave 1.
|
|
81668
|
+
'pptx.accessibility.severityErrors': 'Errors',
|
|
81669
|
+
'pptx.accessibility.severityTips': 'Tips',
|
|
81670
|
+
'pptx.accessibility.severityWarnings': 'Warnings',
|
|
81671
|
+
'pptx.accessibility.typeBlankSlide': 'Blank slide',
|
|
81672
|
+
'pptx.accessibility.typeComplexTable': 'Complex table',
|
|
81673
|
+
'pptx.accessibility.typeDuplicateTitle': 'Duplicate slide title',
|
|
81674
|
+
'pptx.accessibility.typeLowContrast': 'Low contrast',
|
|
81675
|
+
'pptx.accessibility.typeMissingAltText': 'Missing alt text',
|
|
81676
|
+
'pptx.accessibility.typeMissingSlideTitle': 'Missing slide title',
|
|
81677
|
+
'pptx.align.bottom': 'Align bottom',
|
|
81678
|
+
'pptx.align.centerH': 'Align center',
|
|
81679
|
+
'pptx.align.left': 'Align left',
|
|
81680
|
+
'pptx.align.middle': 'Align middle',
|
|
81681
|
+
'pptx.align.right': 'Align right',
|
|
81682
|
+
'pptx.align.top': 'Align top',
|
|
81683
|
+
'pptx.documentProperties.custom.typeDate': 'Date',
|
|
81684
|
+
'pptx.documentProperties.custom.typeNumber': 'Number',
|
|
81685
|
+
'pptx.documentProperties.custom.typeText': 'Text',
|
|
81686
|
+
'pptx.documentProperties.custom.typeYesNo': 'Yes or No',
|
|
81687
|
+
'pptx.documentProperties.statistics.application': 'Application',
|
|
81688
|
+
'pptx.documentProperties.statistics.appVersion': 'Application Version',
|
|
81689
|
+
'pptx.documentProperties.statistics.elements': 'Elements',
|
|
81690
|
+
'pptx.documentProperties.statistics.hiddenSlides': 'Hidden Slides',
|
|
81691
|
+
'pptx.documentProperties.statistics.lastModifiedBy': 'Last Modified By',
|
|
81692
|
+
'pptx.documentProperties.statistics.notes': 'Notes',
|
|
81693
|
+
'pptx.documentProperties.statistics.paragraphs': 'Paragraphs',
|
|
81694
|
+
'pptx.documentProperties.statistics.presentationFormat': 'Presentation Format',
|
|
81695
|
+
'pptx.documentProperties.statistics.revision': 'Revision',
|
|
81696
|
+
'pptx.documentProperties.statistics.slides': 'Slides',
|
|
81697
|
+
'pptx.documentProperties.statistics.template': 'Template',
|
|
81698
|
+
'pptx.documentProperties.statistics.totalTime': 'Total Editing Time',
|
|
81699
|
+
'pptx.documentProperties.statistics.words': 'Words',
|
|
81700
|
+
'pptx.documentProperties.summary.category': 'Category',
|
|
81701
|
+
'pptx.documentProperties.summary.description': 'Description',
|
|
81702
|
+
'pptx.documentProperties.tabs.custom': 'Custom',
|
|
81703
|
+
'pptx.documentProperties.tabs.general': 'General',
|
|
81704
|
+
'pptx.documentProperties.tabs.statistics': 'Statistics',
|
|
81705
|
+
'pptx.editorToolbar.shapeEllipse': 'Ellipse',
|
|
81706
|
+
'pptx.editorToolbar.shapeRectangle': 'Rectangle',
|
|
81707
|
+
'pptx.editorToolbar.shapeRoundedRectangle': 'Rounded rectangle',
|
|
81708
|
+
'pptx.editorToolbar.shapeTriangle': 'Triangle',
|
|
81709
|
+
'pptx.equation.template.binomial': 'Binomial',
|
|
81710
|
+
'pptx.equation.template.derivative': 'Derivative',
|
|
81711
|
+
'pptx.equation.template.euler': "Euler's",
|
|
81712
|
+
'pptx.equation.template.fraction': 'Fraction',
|
|
81713
|
+
'pptx.equation.template.integral': 'Integral',
|
|
81714
|
+
'pptx.equation.template.limit': 'Limit',
|
|
81715
|
+
'pptx.equation.template.matrix': 'Matrix 2x2',
|
|
81716
|
+
'pptx.equation.template.pythagorean': 'Pythagorean',
|
|
81717
|
+
'pptx.equation.template.quadratic': 'Quadratic',
|
|
81718
|
+
'pptx.equation.template.squareRoot': 'Square Root',
|
|
81719
|
+
'pptx.equation.template.sum': 'Sum',
|
|
81720
|
+
'pptx.equation.template.trigIdentity': 'Trig Identity',
|
|
81721
|
+
'pptx.hyperlink.actionNone': 'None',
|
|
81722
|
+
'pptx.hyperlink.actionSlide': 'Slide',
|
|
81723
|
+
'pptx.hyperlink.actionUrl': 'URL',
|
|
81724
|
+
'pptx.image.duotonePresetBlackWhite': 'Black, White',
|
|
81725
|
+
'pptx.image.duotonePresetBlueOrange': 'Blue, Orange',
|
|
81726
|
+
'pptx.image.duotonePresetGreenYellow': 'Green, Yellow',
|
|
81727
|
+
'pptx.image.duotonePresetNavyGold': 'Navy, Gold',
|
|
81728
|
+
'pptx.image.duotonePresetPurplePink': 'Purple, Pink',
|
|
81729
|
+
'pptx.image.duotonePresetRedCream': 'Red, Cream',
|
|
81730
|
+
'pptx.image.duotonePresetSepiaWarm': 'Sepia, Warm',
|
|
81731
|
+
'pptx.image.duotonePresetTealWhite': 'Teal, White',
|
|
81732
|
+
'pptx.image.effectBlur': 'Blur',
|
|
81733
|
+
'pptx.image.effectCement': 'Cement',
|
|
81734
|
+
'pptx.image.effectChalk': 'Chalk Sketch',
|
|
81735
|
+
'pptx.image.effectCrisscross': 'Crisscross Etching',
|
|
81736
|
+
'pptx.image.effectCutout': 'Cutout',
|
|
81737
|
+
'pptx.image.effectFilmGrain': 'Film Grain',
|
|
81738
|
+
'pptx.image.effectGlowDiffused': 'Glow Diffused',
|
|
81739
|
+
'pptx.image.effectGlowEdges': 'Glow Edges',
|
|
81740
|
+
'pptx.image.effectGrayscale': 'Grayscale',
|
|
81741
|
+
'pptx.image.effectLightScreen': 'Light Screen',
|
|
81742
|
+
'pptx.image.effectLineDrawing': 'Line Drawing',
|
|
81743
|
+
'pptx.image.effectMarker': 'Marker',
|
|
81744
|
+
'pptx.image.effectMosaic': 'Mosaic Bubbles',
|
|
81745
|
+
'pptx.image.effectNone': 'None',
|
|
81746
|
+
'pptx.image.effectPaint': 'Paint Brush',
|
|
81747
|
+
'pptx.image.effectPaintStrokes': 'Paint Strokes',
|
|
81748
|
+
'pptx.image.effectPastels': 'Pastels Smooth',
|
|
81749
|
+
'pptx.image.effectPencilSketch': 'Pencil Sketch',
|
|
81750
|
+
'pptx.image.effectPhotocopy': 'Photocopy',
|
|
81751
|
+
'pptx.image.effectPlasticWrap': 'Plastic Wrap',
|
|
81752
|
+
'pptx.image.effectSepia': 'Sepia',
|
|
81753
|
+
'pptx.image.effectSharpen': 'Sharpen',
|
|
81754
|
+
'pptx.image.effectTexturizer': 'Texturizer',
|
|
81755
|
+
'pptx.image.effectWatercolor': 'Watercolor Sponge',
|
|
81756
|
+
'pptx.share.copyLinkButton': 'Copy Link',
|
|
81757
|
+
'pptx.stroke.dashDash': 'Dash',
|
|
81758
|
+
'pptx.stroke.dashDashDot': 'Dash Dot',
|
|
81759
|
+
'pptx.stroke.dashDot': 'Dot',
|
|
81760
|
+
'pptx.stroke.dashSolid': 'Solid',
|
|
81761
|
+
'pptx.stroke.dashSysDash': 'System Dash',
|
|
81762
|
+
'pptx.stroke.dashSysDot': 'System Dot',
|
|
81763
|
+
'pptx.table.bandedColumns': 'Banded Columns',
|
|
81764
|
+
'pptx.table.bandedRows': 'Banded Rows',
|
|
81765
|
+
'pptx.table.borderBottom': 'Bottom',
|
|
81766
|
+
'pptx.table.borderDiagDown': 'Diagonal Down',
|
|
81767
|
+
'pptx.table.borderDiagUp': 'Diagonal Up',
|
|
81768
|
+
'pptx.table.borderLeft': 'Left',
|
|
81769
|
+
'pptx.table.borderRight': 'Right',
|
|
81770
|
+
'pptx.table.borderTop': 'Top',
|
|
81771
|
+
'pptx.table.fillGradient': 'Gradient',
|
|
81772
|
+
'pptx.table.fillNone': 'None',
|
|
81773
|
+
'pptx.table.fillPattern': 'Pattern',
|
|
81774
|
+
'pptx.table.fillSolid': 'Solid',
|
|
81775
|
+
'pptx.table.firstColumn': 'First Column',
|
|
81776
|
+
'pptx.table.gradientLinear': 'Linear',
|
|
81777
|
+
'pptx.table.gradientRadial': 'Radial',
|
|
81778
|
+
'pptx.table.headerRow': 'Header Row',
|
|
81779
|
+
'pptx.table.lastColumn': 'Last Column',
|
|
81780
|
+
'pptx.table.lastRow': 'Last Row',
|
|
81781
|
+
'pptx.table.marginBottom': 'Bottom',
|
|
81782
|
+
'pptx.table.marginLeft': 'Left',
|
|
81783
|
+
'pptx.table.marginRight': 'Right',
|
|
81784
|
+
'pptx.table.marginTop': 'Top',
|
|
81349
81785
|
};
|
|
81350
81786
|
/**
|
|
81351
81787
|
* Convert a dotted translation key to a human-readable label when no
|