ooxml-ui 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -72,6 +72,7 @@ with an incompatible build of this package.
72
72
  | `office-ui-zoom-slider` | `value` (percent), `min`, `max`, `step`, `disabled`, `fit` (fit button name), `label` | `input`, `change`; fit: `office-command` `{ command: 'zoom-fit' }` |
73
73
  | `office-ui-tab-strip` | `tabs` `[{ id, label, title? }]`, `selected`, `label`, `previous-label`, `next-label`, `add-label`, `add-disabled`, `add-title`, `disabled` | `office-tab-select` `{ id }` (cancelable); add: `office-command` `{ command: 'tab-add' }` |
74
74
  | `office-ui-context-menu` / `office-ui-menu-separator` | `label`; `openAt(x, y)`, `close()`, `open`; `office-ui-menu-item` and separator children | item choice: `office-command` `{ command }` |
75
+ | `office-ui-command-search` | `commands` `[{ id, label, keywords?, disabled?, title? }]`, `placeholder`, `label`, `limit` (Office's "Tell me what you want to do") | choice: `office-command` `{ command }` |
75
76
  | `office-ui-presence` | `participants`, `max`, `label` | `office-presence-select` `{ id }` |
76
77
  | `office-ui-smartart` | `drawing` (core `DiagramDrawing`), `schemeColors`, `label` | `office-smartart-render` (render report) |
77
78
  | `office-ui-icon` | `name`, `label` | none |
@@ -353,8 +353,201 @@ var defineDialog = definer("office-ui-dialog", () => {
353
353
  return OfficeUiDialog;
354
354
  });
355
355
 
356
- // src/context-menu.ts
356
+ // src/command-search.ts
357
357
  var CSS3 = `
358
+ :host { display: inline-flex; align-items: center; min-width: 0; font-family: var(--office-font, system-ui, sans-serif); }
359
+ .field { display: flex; align-items: center; gap: 6px; width: 100%; min-width: 0; height: var(--office-target-size, 28px);
360
+ padding: 0 8px; box-sizing: border-box; border: 1px solid transparent; border-radius: var(--office-radius, 4px);
361
+ color: var(--office-muted-foreground, #6b7280); }
362
+ .field:hover, .field:focus-within { border-color: var(--office-border, #d1d5db); background: var(--office-background, #fff); }
363
+ input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--office-foreground, #1f2937);
364
+ font: inherit; font-size: 13px; }
365
+ svg { width: 16px; height: 16px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.5;
366
+ stroke-linecap: round; stroke-linejoin: round; }
367
+ ul { position: fixed; inset: auto; margin: 0; padding: 4px; min-width: 240px; max-height: 320px; overflow: auto;
368
+ box-sizing: border-box; list-style: none; background: var(--office-background, #fff); color: var(--office-foreground, #1f2937);
369
+ border: 1px solid var(--office-border, #d1d5db); border-radius: var(--office-radius, 4px);
370
+ box-shadow: 0 8px 24px rgb(0 0 0 / 18%); font-size: 12px; }
371
+ ul[hidden] { display: none; }
372
+ li { display: flex; flex-direction: column; justify-content: center; min-height: var(--office-target-size, 28px);
373
+ padding: 2px 10px; border-radius: 3px; cursor: pointer; }
374
+ li[data-active] { background: var(--office-surface, #f3f4f6); }
375
+ li[aria-disabled="true"] { cursor: not-allowed; color: var(--office-muted-foreground, #6b7280); }
376
+ li small { color: var(--office-muted-foreground, #6b7280); font-size: 11px; }
377
+ li.empty { cursor: default; color: var(--office-muted-foreground, #6b7280); }
378
+ @media (forced-colors: active) {
379
+ .field, ul { border-color: CanvasText; background: Canvas; color: CanvasText; }
380
+ li[data-active] { background: Highlight; color: HighlightText; }
381
+ }
382
+ `;
383
+ var uid = 0;
384
+ var defineCommandSearch = definer("office-ui-command-search", () => {
385
+ class OfficeUiCommandSearch extends HTMLElement {
386
+ static observedAttributes = ["placeholder", "label"];
387
+ items = [];
388
+ found = [];
389
+ active = -1;
390
+ input;
391
+ list;
392
+ uid = `office-command-search-${++uid}`;
393
+ constructor() {
394
+ super();
395
+ const doc = this.ownerDocument;
396
+ const root = this.attachShadow({ mode: "open", delegatesFocus: true });
397
+ attachStyles(root, controlCss(CSS3));
398
+ const field = doc.createElement("div");
399
+ field.className = "field";
400
+ const glass = createIconSvg(doc);
401
+ paintIcon(glass, "search");
402
+ glass.setAttribute("data-painted", "");
403
+ this.input = doc.createElement("input");
404
+ this.input.type = "search";
405
+ this.input.autocomplete = "off";
406
+ this.input.spellcheck = false;
407
+ this.input.setAttribute("role", "combobox");
408
+ this.input.setAttribute("aria-autocomplete", "list");
409
+ this.input.setAttribute("aria-expanded", "false");
410
+ this.input.setAttribute("aria-controls", `${this.uid}-list`);
411
+ this.list = doc.createElement("ul");
412
+ this.list.id = `${this.uid}-list`;
413
+ this.list.setAttribute("role", "listbox");
414
+ if (typeof this.list.showPopover === "function")
415
+ this.list.setAttribute("popover", "manual");
416
+ else this.list.hidden = true;
417
+ field.append(glass, this.input);
418
+ root.append(field, this.list);
419
+ this.input.addEventListener("input", () => this.update());
420
+ this.input.addEventListener("keydown", (event) => this.onKey(event));
421
+ this.input.addEventListener("blur", () => this.hide());
422
+ this.list.addEventListener("pointerdown", (event) => event.preventDefault());
423
+ this.list.addEventListener("click", (event) => {
424
+ const item = event.target.closest("li[data-index]");
425
+ if (item) this.choose(Number(item.dataset.index));
426
+ });
427
+ }
428
+ connectedCallback() {
429
+ this.sync();
430
+ }
431
+ disconnectedCallback() {
432
+ this.hide();
433
+ }
434
+ attributeChangedCallback() {
435
+ this.sync();
436
+ }
437
+ get commands() {
438
+ return this.items.map((item) => ({ ...item }));
439
+ }
440
+ set commands(value) {
441
+ this.items = (Array.isArray(value) ? value : []).filter((item) => item && typeof item.id === "string").map((item) => ({ ...item, label: String(item.label ?? "") }));
442
+ if (this.isOpen) this.update();
443
+ }
444
+ get isOpen() {
445
+ return this.input.getAttribute("aria-expanded") === "true";
446
+ }
447
+ sync() {
448
+ this.input.placeholder = this.getAttribute("placeholder") ?? "Tell me what you want to do";
449
+ this.input.setAttribute("aria-label", this.getAttribute("label") ?? this.input.placeholder);
450
+ }
451
+ update() {
452
+ const query = this.input.value.trim().toLowerCase();
453
+ if (!query) return this.hide();
454
+ const limit = Math.max(1, Number(this.getAttribute("limit")) || 8);
455
+ this.found = this.items.filter((item) => `${item.label} ${item.keywords ?? ""}`.toLowerCase().includes(query)).slice(0, limit);
456
+ this.active = this.found.findIndex((item) => !item.disabled);
457
+ this.render();
458
+ this.show();
459
+ }
460
+ render() {
461
+ const doc = this.ownerDocument;
462
+ if (!this.found.length) {
463
+ const empty = doc.createElement("li");
464
+ empty.className = "empty";
465
+ empty.setAttribute("role", "option");
466
+ empty.setAttribute("aria-disabled", "true");
467
+ empty.textContent = "No matching commands";
468
+ this.list.replaceChildren(empty);
469
+ this.input.removeAttribute("aria-activedescendant");
470
+ return;
471
+ }
472
+ this.list.replaceChildren(
473
+ ...this.found.map((item, index) => {
474
+ const option = doc.createElement("li");
475
+ option.id = `${this.uid}-${index}`;
476
+ option.dataset.index = String(index);
477
+ option.setAttribute("role", "option");
478
+ option.setAttribute("aria-selected", String(index === this.active));
479
+ if (index === this.active) option.setAttribute("data-active", "");
480
+ const label = doc.createElement("span");
481
+ label.textContent = item.label;
482
+ option.append(label);
483
+ if (item.disabled) {
484
+ option.setAttribute("aria-disabled", "true");
485
+ const reason = doc.createElement("small");
486
+ reason.textContent = item.title ?? "Not available";
487
+ option.append(reason);
488
+ }
489
+ return option;
490
+ })
491
+ );
492
+ if (this.active >= 0)
493
+ this.input.setAttribute("aria-activedescendant", `${this.uid}-${this.active}`);
494
+ else this.input.removeAttribute("aria-activedescendant");
495
+ }
496
+ show() {
497
+ const box = this.input.getBoundingClientRect();
498
+ this.list.style.left = `${Math.round(box.left)}px`;
499
+ this.list.style.top = `${Math.round(box.bottom + 4)}px`;
500
+ if (this.list.hasAttribute("popover")) {
501
+ if (!this.isOpen) this.list.showPopover?.();
502
+ } else this.list.hidden = false;
503
+ this.input.setAttribute("aria-expanded", "true");
504
+ }
505
+ hide() {
506
+ if (!this.isOpen) return;
507
+ if (this.list.hasAttribute("popover")) {
508
+ try {
509
+ this.list.hidePopover?.();
510
+ } catch {
511
+ }
512
+ } else this.list.hidden = true;
513
+ this.input.setAttribute("aria-expanded", "false");
514
+ this.input.removeAttribute("aria-activedescendant");
515
+ }
516
+ move(step) {
517
+ const enabled = this.found.map((item, index) => item.disabled ? -1 : index).filter((i) => i >= 0);
518
+ if (!enabled.length) return;
519
+ const at = enabled.indexOf(this.active);
520
+ this.active = enabled[(at + step + enabled.length) % enabled.length];
521
+ this.render();
522
+ }
523
+ choose(index) {
524
+ const item = this.found[index];
525
+ if (!item || item.disabled) return;
526
+ this.input.value = "";
527
+ this.hide();
528
+ emit(this, "office-command", { command: item.id });
529
+ }
530
+ onKey(event) {
531
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
532
+ event.preventDefault();
533
+ if (!this.isOpen) this.update();
534
+ else this.move(event.key === "ArrowDown" ? 1 : -1);
535
+ } else if (event.key === "Enter") {
536
+ event.preventDefault();
537
+ this.choose(this.active);
538
+ } else if (event.key === "Escape") {
539
+ event.preventDefault();
540
+ event.stopPropagation();
541
+ if (this.isOpen) this.hide();
542
+ else this.input.value = "";
543
+ }
544
+ }
545
+ }
546
+ return OfficeUiCommandSearch;
547
+ });
548
+
549
+ // src/context-menu.ts
550
+ var CSS4 = `
358
551
  :host { display: contents; }
359
552
  .panel { position: fixed; inset: auto; margin: 0; min-width: 200px; padding: 4px; box-sizing: border-box;
360
553
  background: var(--office-background, #fff); color: var(--office-foreground, #1f2937);
@@ -390,7 +583,7 @@ var defineContextMenu = definer("office-ui-context-menu", () => {
390
583
  super();
391
584
  const doc = this.ownerDocument;
392
585
  const root = this.attachShadow({ mode: "open" });
393
- attachStyles(root, controlCss(CSS3));
586
+ attachStyles(root, controlCss(CSS4));
394
587
  this.panel = doc.createElement("div");
395
588
  this.panel.className = "panel";
396
589
  this.panel.setAttribute("role", "menu");
@@ -929,7 +1122,7 @@ var defineToolbar = definer("office-ui-toolbar", () => {
929
1122
  });
930
1123
 
931
1124
  // src/select.ts
932
- var CSS4 = `
1125
+ var CSS5 = `
933
1126
  :host { display: inline-block; position: relative; vertical-align: middle; }
934
1127
  button { box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 8px;
935
1128
  width: 100%; min-height: var(--office-target-size, 28px); padding: 0 8px; font: inherit; font-size: 12px;
@@ -951,7 +1144,7 @@ li[aria-disabled="true"] { opacity: .5; cursor: not-allowed; }
951
1144
  li[data-active] { background: Highlight; color: HighlightText; }
952
1145
  }
953
1146
  `;
954
- var uid = 0;
1147
+ var uid2 = 0;
955
1148
  var defineSelect = definer("office-ui-select", () => {
956
1149
  class OfficeUiSelect extends HTMLElement {
957
1150
  static observedAttributes = ["value", "disabled", "aria-label"];
@@ -963,12 +1156,12 @@ var defineSelect = definer("office-ui-select", () => {
963
1156
  trigger;
964
1157
  list;
965
1158
  label;
966
- domId = `office-ui-select-${++uid}`;
1159
+ domId = `office-ui-select-${++uid2}`;
967
1160
  constructor() {
968
1161
  super();
969
1162
  const doc = this.ownerDocument;
970
1163
  const root = this.attachShadow({ mode: "open", delegatesFocus: true });
971
- attachStyles(root, controlCss(CSS4));
1164
+ attachStyles(root, controlCss(CSS5));
972
1165
  this.trigger = doc.createElement("button");
973
1166
  this.trigger.type = "button";
974
1167
  this.trigger.setAttribute("role", "combobox");
@@ -1219,7 +1412,7 @@ var defineStatusItem = definer("office-ui-status-item", () => {
1219
1412
  });
1220
1413
 
1221
1414
  // src/tab-strip.ts
1222
- var CSS5 = `
1415
+ var CSS6 = `
1223
1416
  :host { display: flex; align-items: stretch; min-width: 0; min-height: 28px; gap: 2px; padding: 0 6px;
1224
1417
  background: var(--office-surface, #f3f4f6); color: var(--office-muted-foreground, #6b7280);
1225
1418
  border-top: 1px solid var(--office-border, #d1d5db); font-size: 12px;
@@ -1266,7 +1459,7 @@ var defineTabStrip = definer("office-ui-tab-strip", () => {
1266
1459
  super();
1267
1460
  const doc = this.ownerDocument;
1268
1461
  const root = this.attachShadow({ mode: "open" });
1269
- attachStyles(root, controlCss(CSS5));
1462
+ attachStyles(root, controlCss(CSS6));
1270
1463
  const step = (name, icon) => {
1271
1464
  const button = doc.createElement("button");
1272
1465
  button.type = "button";
@@ -1405,7 +1598,7 @@ var defineTabStrip = definer("office-ui-tab-strip", () => {
1405
1598
  });
1406
1599
 
1407
1600
  // src/zoom-slider.ts
1408
- var CSS6 = `
1601
+ var CSS7 = `
1409
1602
  :host { display: inline-flex; align-items: center; gap: 2px; font-size: 11px;
1410
1603
  color: var(--office-foreground, #1f2937); font-family: var(--office-font, system-ui, sans-serif); }
1411
1604
  button { box-sizing: border-box; display: inline-grid; place-items: center; min-width: var(--office-target-size, 24px);
@@ -1441,7 +1634,7 @@ var defineZoomSlider = definer("office-ui-zoom-slider", () => {
1441
1634
  super();
1442
1635
  const doc = this.ownerDocument;
1443
1636
  const root = this.attachShadow({ mode: "open" });
1444
- attachStyles(root, controlCss(CSS6));
1637
+ attachStyles(root, controlCss(CSS7));
1445
1638
  const button = (name, text) => {
1446
1639
  const element = doc.createElement("button");
1447
1640
  element.type = "button";
@@ -1548,6 +1741,7 @@ var CONTROL_DEFINERS = [
1548
1741
  defineMenuSeparator,
1549
1742
  defineMenuButton,
1550
1743
  defineContextMenu,
1744
+ defineCommandSearch,
1551
1745
  defineToolbar,
1552
1746
  defineDialog,
1553
1747
  defineStatusBar,
@@ -1559,4 +1753,4 @@ function registerControls(registry) {
1559
1753
  for (const define of CONTROL_DEFINERS) define(registry);
1560
1754
  }
1561
1755
 
1562
- export { CONTROL_DEFINERS, defineButton, defineCheckbox, defineContextMenu, defineDialog, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, registerControls };
1756
+ export { CONTROL_DEFINERS, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, registerControls };
@@ -0,0 +1,16 @@
1
+ /** One searchable command: label and optional keywords; disabled commands show their reason. */
2
+ export interface OfficeSearchCommand {
3
+ id: string;
4
+ label: string;
5
+ keywords?: string;
6
+ disabled?: boolean;
7
+ title?: string;
8
+ }
9
+ /**
10
+ * Office's "Tell me what you want to do" box. Set `commands` (`OfficeSearchCommand[]`); typing
11
+ * lists up to `limit` (default 8) matches by label or keywords in a top-layer listbox.
12
+ * ArrowUp/Down move, Enter or click run an enabled match (`office-command` `{ command }`),
13
+ * Escape closes then clears. Disabled matches stay visible with their reason. Attributes:
14
+ * `placeholder`, `label` (accessible name), `limit`. Setting `commands` never emits.
15
+ */
16
+ export declare const defineCommandSearch: import("./registry.js").Definer;
@@ -2,6 +2,7 @@ import { defineButton } from './button.js';
2
2
  import { defineCheckbox, defineSwitch } from './checkable.js';
3
3
  import { defineDialog } from './dialog.js';
4
4
  import { defineIcon } from './icons.js';
5
+ import { defineCommandSearch } from './command-search.js';
5
6
  import { defineContextMenu, defineMenuSeparator } from './context-menu.js';
6
7
  import { defineMenuButton, defineMenuItem } from './menu.js';
7
8
  import { defineRibbonGroup, defineRibbonStack, defineToolbar } from './ribbon.js';
@@ -9,13 +10,14 @@ import { defineSelect } from './select.js';
9
10
  import { defineStatusBar, defineStatusItem } from './status-bar.js';
10
11
  import { defineTabStrip } from './tab-strip.js';
11
12
  import { defineZoomSlider } from './zoom-slider.js';
12
- export { defineButton, defineCheckbox, defineContextMenu, defineDialog, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, };
13
+ export { defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, };
13
14
  export type { OfficeCommandEvent } from './button.js';
14
15
  export type { OfficeDialogCloseEvent, OfficeDialogCloseReason } from './dialog.js';
15
16
  export type { OfficeSelectOption } from './select.js';
16
17
  export type { OfficeStatusActivateEvent } from './status-bar.js';
17
18
  export type { OfficeTab, OfficeTabSelectEvent } from './tab-strip.js';
19
+ export type { OfficeSearchCommand } from './command-search.js';
18
20
  /** Every control of this entry. */
19
- export declare const CONTROL_DEFINERS: readonly [import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer];
21
+ export declare const CONTROL_DEFINERS: readonly [import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer];
20
22
  /** Idempotent, SSR-safe (no-op without a DOM). */
21
23
  export declare function registerControls(registry?: CustomElementRegistry): void;
package/dist/controls.js CHANGED
@@ -1,3 +1,3 @@
1
- export { CONTROL_DEFINERS, defineButton, defineCheckbox, defineContextMenu, defineDialog, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, registerControls } from './chunk-7NLQECYW.js';
1
+ export { CONTROL_DEFINERS, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, registerControls } from './chunk-RT6XKAM4.js';
2
2
  export { defineIcon } from './chunk-PCSUQPMC.js';
3
3
  import './chunk-EY266IK3.js';
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export * from './smartart.js';
5
5
  export * from './theme.js';
6
6
  export { CONTRACT_REVISION, type Definer } from './registry.js';
7
7
  /** Every ooxml-ui tag this package defines, in registration order. */
8
- export declare const OFFICE_UI_TAGS: readonly ["office-ui-icon", "office-ui-button", "office-ui-checkbox", "office-ui-switch", "office-ui-select", "office-ui-ribbon-group", "office-ui-ribbon-stack", "office-ui-menu-item", "office-ui-menu-button", "office-ui-menu-separator", "office-ui-context-menu", "office-ui-toolbar", "office-ui-dialog", "office-ui-status-bar", "office-ui-status-item", "office-ui-zoom-slider", "office-ui-tab-strip", "office-ui-presence", "office-ui-smartart"];
8
+ export declare const OFFICE_UI_TAGS: readonly ["office-ui-icon", "office-ui-button", "office-ui-checkbox", "office-ui-switch", "office-ui-select", "office-ui-ribbon-group", "office-ui-ribbon-stack", "office-ui-menu-item", "office-ui-menu-button", "office-ui-menu-separator", "office-ui-context-menu", "office-ui-command-search", "office-ui-toolbar", "office-ui-dialog", "office-ui-status-bar", "office-ui-status-item", "office-ui-zoom-slider", "office-ui-tab-strip", "office-ui-presence", "office-ui-smartart"];
9
9
  /**
10
10
  * Install the theme tokens and define every element. Idempotent and safe to call from every
11
11
  * viewer binding; a no-op where there is no DOM (SSR).
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { installOfficeUiTheme } from './chunk-H4KFVIGT.js';
2
2
  export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme } from './chunk-H4KFVIGT.js';
3
- import { registerControls } from './chunk-7NLQECYW.js';
4
- export { CONTROL_DEFINERS, defineButton, defineCheckbox, defineContextMenu, defineDialog, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, registerControls } from './chunk-7NLQECYW.js';
3
+ import { registerControls } from './chunk-RT6XKAM4.js';
4
+ export { CONTROL_DEFINERS, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineMenuButton, defineMenuItem, defineMenuSeparator, defineRibbonGroup, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineToolbar, defineZoomSlider, registerControls } from './chunk-RT6XKAM4.js';
5
5
  export { ICON_CSS, createIconSvg, defineIcon, getIcon, listIcons, paintIcon, registerIcon } from './chunk-PCSUQPMC.js';
6
6
  import { definePresence } from './chunk-RLPL7Q6J.js';
7
7
  export { definePresence, initialsOf, participantsFromAwareness } from './chunk-RLPL7Q6J.js';
@@ -22,6 +22,7 @@ var OFFICE_UI_TAGS = [
22
22
  "office-ui-menu-button",
23
23
  "office-ui-menu-separator",
24
24
  "office-ui-context-menu",
25
+ "office-ui-command-search",
25
26
  "office-ui-toolbar",
26
27
  "office-ui-dialog",
27
28
  "office-ui-status-bar",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ooxml-ui",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Shared, format-neutral web components and styles for the Office viewers (Word, PowerPoint, Excel)",
5
5
  "keywords": [
6
6
  "custom-elements",