ooxml-ui 1.10.0 → 1.12.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.
Files changed (186) hide show
  1. package/custom-elements.json +4 -1
  2. package/dist/{chunk-IXLJNVUD.js → chunk-B7NCMLSK.js} +1 -1
  3. package/dist/{chunk-O7APCA5N.js → chunk-FUQYUUIQ.js} +2 -2
  4. package/dist/{chunk-W6AV3GHC.js → chunk-GI3WX6LZ.js} +1 -1
  5. package/dist/chunk-GSXOZCAN.js +75 -0
  6. package/dist/{chunk-WMGMZIMM.js → chunk-N3BQ3IIJ.js} +2 -2
  7. package/dist/controls.js +1 -1
  8. package/dist/docx/context-menu-actions.d.ts +1 -1
  9. package/dist/docx/decoration-cache.d.ts +16 -0
  10. package/dist/docx/editor-core.d.ts +3 -0
  11. package/dist/docx/locales/en-ribbon.d.ts +34 -0
  12. package/dist/docx/locales/en.d.ts +34 -0
  13. package/dist/docx/localization-strings.d.ts +34 -0
  14. package/dist/docx/model-adapter.d.ts +1 -1
  15. package/dist/docx/page-controller.d.ts +1 -1
  16. package/dist/docx/page-navigator.d.ts +1 -0
  17. package/dist/docx/paragraph-decoration-cache.d.ts +28 -0
  18. package/dist/docx/print-block-pages.d.ts +3 -0
  19. package/dist/docx/print-editing-index.d.ts +1 -0
  20. package/dist/docx/print-editing.d.ts +1 -1
  21. package/dist/docx/print-layout-view.d.ts +2 -0
  22. package/dist/docx/print-layout.d.ts +5 -0
  23. package/dist/docx/print-page-window.d.ts +16 -0
  24. package/dist/docx/ribbon-action.d.ts +6 -0
  25. package/dist/docx/ribbon-home-menus.d.ts +3 -0
  26. package/dist/docx/ribbon-icons.d.ts +3 -0
  27. package/dist/docx/ribbon-native-tabs.d.ts +2 -0
  28. package/dist/docx/ribbon-parts.d.ts +2 -2
  29. package/dist/docx.js +818 -157
  30. package/dist/form/select.d.ts +3 -0
  31. package/dist/form/select.d.ts.map +1 -1
  32. package/dist/index.js +4 -4
  33. package/dist/pointer-gesture.d.ts +10 -0
  34. package/dist/pptx/ai/index.cjs +7 -6
  35. package/dist/pptx/ai/index.mjs +4 -3
  36. package/dist/pptx/{chart-3d-view-scene-P6MAFEGL.mjs → chart-3d-view-scene-MYQRQDNF.mjs} +1 -0
  37. package/dist/pptx/{chart-3d-view-scene-V74F7ZOC.cjs → chart-3d-view-scene-WX23DR2E.cjs} +1 -0
  38. package/dist/pptx/{chat-history-idb-PGLJPVOI.cjs → chat-history-idb-FJWHIDOK.cjs} +3 -2
  39. package/dist/pptx/{chat-history-idb-XXPB3Q4U.mjs → chat-history-idb-XWRFLX2R.mjs} +2 -1
  40. package/dist/pptx/{chunk-OBRLAW6C.mjs → chunk-3IN66FIL.mjs} +1 -1
  41. package/dist/pptx/chunk-ANKJE2PT.mjs +147 -0
  42. package/dist/pptx/{chunk-TSSWTBJQ.cjs → chunk-C22MU5CA.cjs} +2 -2
  43. package/dist/pptx/{chunk-526IHNIH.cjs → chunk-C5OJXCCB.cjs} +2 -2
  44. package/dist/pptx/{chunk-A5MANNJR.cjs → chunk-G2LGZNTI.cjs} +1 -1
  45. package/dist/pptx/{chunk-6NFW2AQA.mjs → chunk-GD2XJ32O.mjs} +6659 -226
  46. package/dist/pptx/{chunk-LVDF75JU.mjs → chunk-LLENQTWZ.mjs} +1 -1
  47. package/dist/pptx/chunk-MF3JURQN.cjs +22 -0
  48. package/dist/pptx/chunk-PBZWDEXQ.cjs +10 -0
  49. package/dist/pptx/chunk-PEDGPFLR.mjs +1 -0
  50. package/dist/pptx/{chunk-ZAOYPCAM.mjs → chunk-QCP2XYJW.mjs} +2 -2
  51. package/dist/pptx/chunk-T34B6TZT.cjs +199 -0
  52. package/dist/pptx/chunk-U5DDQYSF.mjs +19 -0
  53. package/dist/pptx/{chunk-OCNECNJS.cjs → chunk-WP7PQCJ5.cjs} +6735 -236
  54. package/dist/pptx/dom/index.cjs +215 -214
  55. package/dist/pptx/dom/index.mjs +7 -6
  56. package/dist/pptx/export/canvas-color-fix.cjs +1 -0
  57. package/dist/pptx/export/canvas-color-fix.mjs +1 -0
  58. package/dist/pptx/export/handout-layout.cjs +1 -0
  59. package/dist/pptx/export/handout-layout.mjs +1 -0
  60. package/dist/pptx/export/handout-master-chrome.cjs +1 -0
  61. package/dist/pptx/export/handout-master-chrome.mjs +1 -0
  62. package/dist/pptx/export/html-escape.cjs +1 -0
  63. package/dist/pptx/export/html-escape.mjs +1 -0
  64. package/dist/pptx/export/html2canvas-clone.cjs +3 -2
  65. package/dist/pptx/export/html2canvas-clone.mjs +2 -1
  66. package/dist/pptx/export/pdf-page-size.cjs +1 -0
  67. package/dist/pptx/export/pdf-page-size.mjs +1 -0
  68. package/dist/pptx/export/print-document.cjs +1 -0
  69. package/dist/pptx/export/print-document.mjs +1 -0
  70. package/dist/pptx/export/video-plan.cjs +1 -0
  71. package/dist/pptx/export/video-plan.mjs +1 -0
  72. package/dist/pptx/i18n/index.cjs +1 -0
  73. package/dist/pptx/i18n/index.mjs +1 -0
  74. package/dist/pptx/index.cjs +2861 -2888
  75. package/dist/pptx/index.mjs +6 -5
  76. package/dist/pptx/loader/index.cjs +1 -0
  77. package/dist/pptx/loader/index.mjs +1 -0
  78. package/dist/pptx/render/animation-authoring.cjs +1 -0
  79. package/dist/pptx/render/animation-authoring.mjs +1 -0
  80. package/dist/pptx/render/animation-fill-repeat.d.ts +3 -53
  81. package/dist/pptx/render/animation-fill-repeat.d.ts.map +1 -1
  82. package/dist/pptx/render/animation-parallel-composition.d.ts.map +1 -1
  83. package/dist/pptx/render/animation-preset-labels.cjs +1 -0
  84. package/dist/pptx/render/animation-preset-labels.mjs +1 -0
  85. package/dist/pptx/render/animation-timeline-step-effect.d.ts.map +1 -1
  86. package/dist/pptx/render/animation-visibility-keyframe.d.ts +8 -0
  87. package/dist/pptx/render/animation-visibility-keyframe.d.ts.map +1 -0
  88. package/dist/pptx/render/chart-combo-stock.cjs +1 -0
  89. package/dist/pptx/render/chart-combo-stock.mjs +1 -0
  90. package/dist/pptx/render/chart-overlays.cjs +1 -0
  91. package/dist/pptx/render/chart-overlays.mjs +1 -0
  92. package/dist/pptx/render/chart-surface-treemap.cjs +1 -0
  93. package/dist/pptx/render/chart-surface-treemap.mjs +1 -0
  94. package/dist/pptx/render/chart-view-model.cjs +1 -0
  95. package/dist/pptx/render/chart-view-model.mjs +1 -0
  96. package/dist/pptx/render/chart-waterfall-map.cjs +1 -0
  97. package/dist/pptx/render/chart-waterfall-map.mjs +1 -0
  98. package/dist/pptx/render/content-part-strokes.cjs +1 -0
  99. package/dist/pptx/render/content-part-strokes.mjs +1 -0
  100. package/dist/pptx/render/context-menu-target.cjs +1 -0
  101. package/dist/pptx/render/context-menu-target.mjs +1 -0
  102. package/dist/pptx/render/custom-fonts.cjs +1 -0
  103. package/dist/pptx/render/custom-fonts.mjs +1 -0
  104. package/dist/pptx/render/customization/customization-resolve.d.ts +1 -0
  105. package/dist/pptx/render/customization/customization-resolve.d.ts.map +1 -1
  106. package/dist/pptx/render/customization/customization-types.d.ts +4 -0
  107. package/dist/pptx/render/customization/customization-types.d.ts.map +1 -1
  108. package/dist/pptx/render/customization/index.d.ts +1 -0
  109. package/dist/pptx/render/customization/index.d.ts.map +1 -1
  110. package/dist/pptx/render/customization/inspector-customization.d.ts +6 -0
  111. package/dist/pptx/render/customization/inspector-customization.d.ts.map +1 -0
  112. package/dist/pptx/render/customization/ribbon-control-visibility.d.ts +0 -20
  113. package/dist/pptx/render/customization/ribbon-control-visibility.d.ts.map +1 -1
  114. package/dist/pptx/render/editor-gestures.d.ts.map +1 -1
  115. package/dist/pptx/render/element-hit-test.cjs +1 -0
  116. package/dist/pptx/render/element-hit-test.mjs +1 -0
  117. package/dist/pptx/render/element-interaction.d.ts +3 -87
  118. package/dist/pptx/render/element-interaction.d.ts.map +1 -1
  119. package/dist/pptx/render/font-catalog.cjs +1 -0
  120. package/dist/pptx/render/font-catalog.mjs +1 -0
  121. package/dist/pptx/render/font-family-update.d.ts +1 -44
  122. package/dist/pptx/render/font-family-update.d.ts.map +1 -1
  123. package/dist/pptx/render/format-painter.cjs +7 -6
  124. package/dist/pptx/render/format-painter.mjs +4 -3
  125. package/dist/pptx/render/hyperlink-security.cjs +1 -0
  126. package/dist/pptx/render/hyperlink-security.mjs +1 -0
  127. package/dist/pptx/render/image-file-insertion.cjs +1 -0
  128. package/dist/pptx/render/image-file-insertion.mjs +1 -0
  129. package/dist/pptx/render/ink-rendering.cjs +1 -0
  130. package/dist/pptx/render/ink-rendering.mjs +1 -0
  131. package/dist/pptx/render/inspector-helpers.cjs +15 -14
  132. package/dist/pptx/render/inspector-helpers.d.ts.map +1 -1
  133. package/dist/pptx/render/inspector-helpers.mjs +3 -2
  134. package/dist/pptx/render/layout-gallery.cjs +1 -0
  135. package/dist/pptx/render/layout-gallery.mjs +1 -0
  136. package/dist/pptx/render/layout-preview.cjs +1 -0
  137. package/dist/pptx/render/layout-preview.mjs +1 -0
  138. package/dist/pptx/render/model3d-scene.cjs +1 -0
  139. package/dist/pptx/render/model3d-scene.mjs +1 -0
  140. package/dist/pptx/render/paragraph-geometry-overrides.d.ts +1 -33
  141. package/dist/pptx/render/paragraph-geometry-overrides.d.ts.map +1 -1
  142. package/dist/pptx/render/paragraph-spacing.d.ts +2 -0
  143. package/dist/pptx/render/paragraph-spacing.d.ts.map +1 -1
  144. package/dist/pptx/render/presentation-print-settings.cjs +1 -0
  145. package/dist/pptx/render/presentation-print-settings.mjs +1 -0
  146. package/dist/pptx/render/remap-text.cjs +1 -0
  147. package/dist/pptx/render/remap-text.mjs +1 -0
  148. package/dist/pptx/render/responsive/touch-target.d.ts +1 -2
  149. package/dist/pptx/render/responsive/touch-target.d.ts.map +1 -1
  150. package/dist/pptx/render/ribbon-animations-state.cjs +1 -0
  151. package/dist/pptx/render/ribbon-animations-state.mjs +1 -0
  152. package/dist/pptx/render/selection-format-state.d.ts +3 -5
  153. package/dist/pptx/render/selection-format-state.d.ts.map +1 -1
  154. package/dist/pptx/render/text-case-transform.cjs +1 -0
  155. package/dist/pptx/render/text-case-transform.mjs +1 -0
  156. package/dist/pptx/render/text-paragraphs.d.ts.map +1 -1
  157. package/dist/pptx/render/text-style-scope.d.ts +1 -87
  158. package/dist/pptx/render/text-style-scope.d.ts.map +1 -1
  159. package/dist/pptx/render/text-style-update.d.ts.map +1 -1
  160. package/dist/pptx/render/update-text-segment-style.d.ts +1 -11
  161. package/dist/pptx/render/update-text-segment-style.d.ts.map +1 -1
  162. package/dist/pptx/render/viewer-root-options.d.ts +2 -0
  163. package/dist/pptx/render/viewer-root-options.d.ts.map +1 -1
  164. package/dist/pptx/theme/index.cjs +1 -0
  165. package/dist/pptx/theme/index.mjs +1 -0
  166. package/dist/pptx/{view-scene-GHBN7QMR.mjs → view-scene-BSTOVMHA.mjs} +1 -0
  167. package/dist/pptx/{view-scene-4ZFUCP6S.cjs → view-scene-CKYHS2OP.cjs} +1 -0
  168. package/dist/pptx/web-components/ribbon-home-controls.d.ts.map +1 -1
  169. package/dist/pptx/web-components/title-bar.d.ts.map +1 -1
  170. package/dist/teams.js +2 -2
  171. package/dist/touch-targets.d.ts +4 -0
  172. package/dist/touch-targets.d.ts.map +1 -0
  173. package/dist/visio/viewer-field-choice.d.ts +7 -0
  174. package/dist/visio.js +127 -12
  175. package/dist/xlsx/dialogs/help-dialogs.d.ts +2 -2
  176. package/dist/xlsx/dialogs/pivot-page-filter.d.ts +9 -0
  177. package/dist/xlsx/formula-bar/styles.d.ts +1 -1
  178. package/dist/xlsx/grid/styles.d.ts +1 -1
  179. package/dist/xlsx/ribbon/cell-style-gallery.d.ts +10 -0
  180. package/dist/xlsx/sheet-tabs/styles.d.ts +1 -1
  181. package/dist/xlsx.js +287 -82
  182. package/package.json +5 -5
  183. package/dist/pptx/chunk-EYPNQ3FG.cjs +0 -59
  184. package/dist/pptx/chunk-FFIYFHBO.mjs +0 -55
  185. package/dist/pptx/chunk-JRCK6CFI.cjs +0 -373
  186. package/dist/pptx/chunk-WFEN6SHA.mjs +0 -295
@@ -18,6 +18,9 @@ export interface OfficeSelectOption {
18
18
  * Enter/Space, Escape, Tab; disabled and hidden choices are skipped. The popup is a top-layer
19
19
  * `popover`, flipped above the trigger when there is more room. `input` then `change` bubble on a
20
20
  * user choice; setting a property is silent. Form-associated.
21
+ * The presence of `commit-on-reselect` opts into one bubbling input/change pair when the user
22
+ * chooses the current value (pointer or keyboard). Programmatic value writes stay silent,
23
+ * and disabled controls cannot commit. Omitted: change-only select.
21
24
  */
22
25
  export declare class OfficeUiSelect extends OfficeElement {
23
26
  static formAssociated: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/form/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAE7D,OAAO,EAMN,KAAK,YAAY,EACjB,MAAM,eAAe,CAAC;AAGvB,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAChD,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAgB,iBAAiB;;;;;;;MAA6D;IAC9F,OAAgB,MAAM,4BAAsB;IAC5C,OAAgB,UAAU;QAEzB,KAAK;YAAI,IAAI;YAAU,OAAO;YAAQ,UAAU;;QAChD,QAAQ;;;;;;;;QACR,IAAI;;;;;;;;QACJ,MAAM;YAAI,KAAK;;QACf,OAAO;YAAI,KAAK;;QAChB,MAAM;YAAI,KAAK;;MACd;IACM,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAExB,kGAAkG;IAClG,OAAgB,OAAO,WAAiD;IAExE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAM;IAE1B,cAwBC;IAED,gFAAgF;IAChF,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAGlC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAGrC;IAED,IAAI,KAAK,IAAI,MAAM,CAalB;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAIrB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAE9B;IAED,OAAO,KAAK,IAAI,GAEf;IACD,OAAO,KAAK,OAAO,GAElB;IAEQ,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAE3C;IAED,iBAAiB,IAAI,IAAI,CAExB;IAED,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAE5C;IAEQ,iBAAiB,IAAI,IAAI,CAWjC;IAEQ,oBAAoB,IAAI,IAAI,CAWpC;IAED,OAAO,CAAC,OAAO;IAYf,uFAAuF;IACvF,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,KAAK;IAIb,2EAA2E;IAC3E,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IAEF,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,SAAS;IAejB,UAAmB,UAAU,IAAI,IAAI,CAUpC;IAED,UAAmB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAW9D;IAED,OAAO,CAAC,eAAe;IA2BvB,UAAmB,MAAM,oCAwDxB;CACD;AAED,eAAO,MAAM,YAAY,+BAAoD,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/form/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAE7D,OAAO,EAMN,KAAK,YAAY,EACjB,MAAM,eAAe,CAAC;AAGvB,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAChD,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAgB,iBAAiB;;;;;;;MAA6D;IAC9F,OAAgB,MAAM,4BAAsB;IAC5C,OAAgB,UAAU;QAEzB,KAAK;YAAI,IAAI;YAAU,OAAO;YAAQ,UAAU;;QAChD,QAAQ;;;;;;;;QACR,IAAI;;;;;;;;QACJ,MAAM;YAAI,KAAK;;QACf,OAAO;YAAI,KAAK;;QAChB,MAAM;YAAI,KAAK;;MACd;IACM,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAExB,kGAAkG;IAClG,OAAgB,OAAO,WAAuE;IAE9F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAM;IAE1B,cAwBC;IAED,gFAAgF;IAChF,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAGlC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAGrC;IAED,IAAI,KAAK,IAAI,MAAM,CAalB;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAIrB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAE9B;IAED,OAAO,KAAK,IAAI,GAEf;IACD,OAAO,KAAK,OAAO,GAElB;IAEQ,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAE3C;IAED,iBAAiB,IAAI,IAAI,CAExB;IAED,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAE5C;IAEQ,iBAAiB,IAAI,IAAI,CAWjC;IAEQ,oBAAoB,IAAI,IAAI,CAWpC;IAED,OAAO,CAAC,OAAO;IAYf,uFAAuF;IACvF,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,KAAK;IAIb,2EAA2E;IAC3E,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IAEF,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,SAAS;IAejB,UAAmB,UAAU,IAAI,IAAI,CAUpC;IAED,UAAmB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAW9D;IAED,OAAO,CAAC,eAAe;IA2BvB,UAAmB,MAAM,oCAwDxB;CACD;AAED,eAAO,MAAM,YAAY,+BAAoD,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- export { OFFICE_UI_TAGS, registerOfficeUi } from './chunk-WMGMZIMM.js';
2
- export { RIBBON_ADD_IN_EVENT, defineRibbonAddInElements, syncRibbonAddIns } from './chunk-W6AV3GHC.js';
1
+ export { OFFICE_UI_TAGS, registerOfficeUi } from './chunk-N3BQ3IIJ.js';
2
+ export { RIBBON_ADD_IN_EVENT, defineRibbonAddInElements, syncRibbonAddIns } from './chunk-GI3WX6LZ.js';
3
3
  export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-PXIYHFZ5.js';
4
- export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsChannelTab, TeamsContentPreview, TeamsController, TeamsElement, TeamsFilesPanel, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsChannelTab, defineTeamsContentPreview, defineTeamsFilesPanel, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-IXLJNVUD.js';
4
+ export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsChannelTab, TeamsContentPreview, TeamsController, TeamsElement, TeamsFilesPanel, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsChannelTab, defineTeamsContentPreview, defineTeamsFilesPanel, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-B7NCMLSK.js';
5
5
  export { TeamsPresentationPreview, defineTeamsPresentationPreview } from './chunk-HZSYGNNB.js';
6
6
  export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, shadcnBridge, themeBridge } from './chunk-S6ZXU442.js';
7
- export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_SYMBOLS, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, attachRibbonGroupOverflow, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineColorCustom, defineColorGrid, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineSymbolPicker, defineTabStrip, defineTaskPane, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, fitRibbonGroups, formatCommentTime, glyph, nextEnabledIndex, parseOfficeSymbolCode, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-O7APCA5N.js';
7
+ export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_SYMBOLS, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, attachRibbonGroupOverflow, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineColorCustom, defineColorGrid, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineSymbolPicker, defineTabStrip, defineTaskPane, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, fitRibbonGroups, formatCommentTime, glyph, nextEnabledIndex, parseOfficeSymbolCode, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-FUQYUUIQ.js';
8
8
  export { createIconSvg, getIcon, listIcons, paintIcon, registerIcon } from './chunk-M6GF5ED2.js';
9
9
  export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-L7JV5FVE.js';
10
10
  export { CONTRACT_REVISION, OfficeElement, controlStyles, flag, readFlag, triState, valueOn, withTokens } from './chunk-OGNNNTKI.js';
@@ -0,0 +1,10 @@
1
+ /** Capture can transfer from a touch's implicit child target to the gesture owner. */
2
+ export declare function ownsCaptureLoss(owner: Element, event: PointerEvent): boolean;
3
+ /** Scroll an editor viewport from one finger on empty canvas. */
4
+ export declare function trackPointerPan(owner: HTMLElement, start: PointerEvent, onMove: () => void, onEnd: () => void): () => void;
5
+ /** One pointer, one commit; cancellation restores the preview and never commits. */
6
+ export declare function trackPointerGesture(owner: HTMLElement, pointerId: number, callbacks: {
7
+ move(event: PointerEvent): void;
8
+ commit(event: PointerEvent): void;
9
+ cancel(): void;
10
+ }): () => void;
@@ -1,7 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkA5MANNJR_cjs = require('../chunk-A5MANNJR.cjs');
4
- var chunkEYPNQ3FG_cjs = require('../chunk-EYPNQ3FG.cjs');
3
+ var chunkG2LGZNTI_cjs = require('../chunk-G2LGZNTI.cjs');
4
+ var chunkPBZWDEXQ_cjs = require('../chunk-PBZWDEXQ.cjs');
5
+ require('../chunk-MF3JURQN.cjs');
5
6
  var pptx = require('ooxml-core/pptx');
6
7
  var zod = require('zod');
7
8
  var tableMerge = require('ooxml-core/pptx/editor/ai/table-merge');
@@ -1687,7 +1688,7 @@ function buildChatLogMarkdown(doc) {
1687
1688
  }
1688
1689
  return out.join("\n");
1689
1690
  }
1690
- async function collectStoredChats(store = chunkA5MANNJR_cjs.createChatHistoryStore()) {
1691
+ async function collectStoredChats(store = chunkG2LGZNTI_cjs.createChatHistoryStore()) {
1691
1692
  const summaries = await store.listChats();
1692
1693
  const chats = [];
1693
1694
  for (const summary of summaries) {
@@ -1813,7 +1814,7 @@ function deckIdFromBridge(bridge) {
1813
1814
  return `${title || "deck"}::${meta.slideCount}`;
1814
1815
  }
1815
1816
  function createAiChatHistoryController(deps) {
1816
- const store = deps.store ?? chunkA5MANNJR_cjs.createChatHistoryStore();
1817
+ const store = deps.store ?? chunkG2LGZNTI_cjs.createChatHistoryStore();
1817
1818
  let chats = [];
1818
1819
  let activeChatId = newChatId();
1819
1820
  let createdAt = Date.now();
@@ -2083,7 +2084,7 @@ function applyTextUpdate(el, u) {
2083
2084
  }
2084
2085
  textEl.textStyle = { ...textEl.textStyle, ...textStyle };
2085
2086
  if (textEl.textSegments) {
2086
- textEl.textSegments = textEl.textSegments.map((seg) => chunkEYPNQ3FG_cjs.updateTextSegmentStyle(seg, textStyle));
2087
+ textEl.textSegments = textEl.textSegments.map((seg) => chunkPBZWDEXQ_cjs.updateTextSegmentStyle(seg, textStyle));
2087
2088
  }
2088
2089
  }
2089
2090
  function applyShapeStyleUpdate(el, u) {
@@ -2513,7 +2514,7 @@ function toolCanvasTarget(toolName, input) {
2513
2514
 
2514
2515
  Object.defineProperty(exports, "createChatHistoryStore", {
2515
2516
  enumerable: true,
2516
- get: function () { return chunkA5MANNJR_cjs.createChatHistoryStore; }
2517
+ get: function () { return chunkG2LGZNTI_cjs.createChatHistoryStore; }
2517
2518
  });
2518
2519
  Object.defineProperty(exports, "mergeTableElements", {
2519
2520
  enumerable: true,
@@ -1,6 +1,7 @@
1
- import { createChatHistoryStore } from '../chunk-LVDF75JU.mjs';
2
- export { createChatHistoryStore } from '../chunk-LVDF75JU.mjs';
3
- import { updateTextSegmentStyle } from '../chunk-FFIYFHBO.mjs';
1
+ import { createChatHistoryStore } from '../chunk-LLENQTWZ.mjs';
2
+ export { createChatHistoryStore } from '../chunk-LLENQTWZ.mjs';
3
+ import { updateTextSegmentStyle } from '../chunk-PEDGPFLR.mjs';
4
+ import '../chunk-U5DDQYSF.mjs';
4
5
  import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from 'ooxml-core/pptx';
5
6
  import { z } from 'zod';
6
7
  import { mergeTableElements } from 'ooxml-core/pptx/editor/ai/table-merge';
@@ -1,5 +1,6 @@
1
1
  import { widenPieViewModel, buildPerspCamera, createSvgEl, appendChartLegendSvg, renderChartLineSvg, renderChartTextSvg, perspBoxMatrix, pieRimPoint, perspScreenToPlaneY, resolvePieSliceShareValue, perspToScreen, roundDragValue, buildBarChart3DHoverTooltip, isChartInteractionArmed, computePieChartLayout, obliqueBarTaper } from './chunk-NAFUYAQP.mjs';
2
2
  import { resolveChartPalette, shade, DEFAULT_BAR_GAP_WIDTH } from './chunk-DPOES4WM.mjs';
3
+ import './chunk-U5DDQYSF.mjs';
3
4
 
4
5
  // src/pptx/render/chart-3d-shading.ts
5
6
  var FACE_SHADE_AMOUNT = {
@@ -2,6 +2,7 @@
2
2
 
3
3
  var chunkK3S2A64B_cjs = require('./chunk-K3S2A64B.cjs');
4
4
  var chunkVFPVEVF4_cjs = require('./chunk-VFPVEVF4.cjs');
5
+ require('./chunk-MF3JURQN.cjs');
5
6
 
6
7
  // src/pptx/render/chart-3d-shading.ts
7
8
  var FACE_SHADE_AMOUNT = {
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkA5MANNJR_cjs = require('./chunk-A5MANNJR.cjs');
3
+ var chunkG2LGZNTI_cjs = require('./chunk-G2LGZNTI.cjs');
4
+ require('./chunk-MF3JURQN.cjs');
4
5
 
5
6
  // src/pptx/ai/chat-history-idb.ts
6
7
  var CHAT_STORE = "chats";
@@ -49,7 +50,7 @@ function createIdbBackend(db) {
49
50
  return {
50
51
  async list(deckId) {
51
52
  const rows = await readAll(db, deckId);
52
- return rows.map(chunkA5MANNJR_cjs.toChatSummary).sort((a, b) => b.updatedAt - a.updatedAt);
53
+ return rows.map(chunkG2LGZNTI_cjs.toChatSummary).sort((a, b) => b.updatedAt - a.updatedAt);
53
54
  },
54
55
  async load(id) {
55
56
  const tx = db.transaction(CHAT_STORE, "readonly");
@@ -1,4 +1,5 @@
1
- import { toChatSummary } from './chunk-LVDF75JU.mjs';
1
+ import { toChatSummary } from './chunk-LLENQTWZ.mjs';
2
+ import './chunk-U5DDQYSF.mjs';
2
3
 
3
4
  // src/pptx/ai/chat-history-idb.ts
4
5
  var CHAT_STORE = "chats";
@@ -1,4 +1,4 @@
1
- import { textStylePatch } from './chunk-WFEN6SHA.mjs';
1
+ import { textStylePatch } from './chunk-ANKJE2PT.mjs';
2
2
  import { hasShapeProperties, hasTextProperties } from 'ooxml-core/pptx';
3
3
 
4
4
  function copyFormatFromElement(element) {
@@ -0,0 +1,147 @@
1
+ import { textFontSizePxToPt } from './chunk-SMSCEGAE.mjs';
2
+ import { updateTextSegmentStyle } from './chunk-PEDGPFLR.mjs';
3
+ import { __reExport } from './chunk-U5DDQYSF.mjs';
4
+ import { hasTextProperties, hasShapeProperties } from 'ooxml-core/pptx';
5
+ import { textRunsStylePatch } from 'ooxml-core/pptx/editor/render/text-runs-style-patch';
6
+ import { mergeTextStyleUpdate } from 'ooxml-core/pptx/editor/render/font-family-update';
7
+ export { fontFamilyStyleUpdates, mergeTextStyleUpdate } from 'ooxml-core/pptx/editor/render/font-family-update';
8
+ import { isContentSegment, TEXT_DECORATION_FLAGS } from 'ooxml-core/pptx/editor/render/text-content-style';
9
+ export { TEXT_DECORATION_FLAGS, isContentSegment } from 'ooxml-core/pptx/editor/render/text-content-style';
10
+ import * as text_style_scope_star from 'ooxml-core/pptx/editor/render/text-style-scope';
11
+
12
+ function contentSegmentsInSelection(segments, selection) {
13
+ if (!segments) {
14
+ return [];
15
+ }
16
+ return segments.filter((segment, index) => {
17
+ if (!isContentSegment(segment)) {
18
+ return false;
19
+ }
20
+ if (!selection) {
21
+ return true;
22
+ }
23
+ if (index < selection.startSegIdx || index > selection.endSegIdx) {
24
+ return false;
25
+ }
26
+ if (selection.startSegIdx === selection.endSegIdx && selection.startOffset === selection.endOffset) {
27
+ return true;
28
+ }
29
+ const start = index === selection.startSegIdx ? selection.startOffset : 0;
30
+ const end = index === selection.endSegIdx ? selection.endOffset : segment.text.length;
31
+ return end > start;
32
+ });
33
+ }
34
+ function flagState(values) {
35
+ if (values.every((value) => value)) {
36
+ return "on";
37
+ }
38
+ return values.some((value) => value) ? "mixed" : "off";
39
+ }
40
+ function getSelectionTextStyleFlags(segments, selection, elementTextStyle) {
41
+ const runs = contentSegmentsInSelection(segments, selection);
42
+ const flags = {};
43
+ for (const flag of TEXT_DECORATION_FLAGS) {
44
+ const body = elementTextStyle?.[flag] ?? false;
45
+ flags[flag] = runs.length === 0 ? flagState([body]) : flagState(runs.map((run) => run.style?.[flag] ?? body));
46
+ }
47
+ return flags;
48
+ }
49
+ function nextToggleValue(state) {
50
+ return state !== "on";
51
+ }
52
+ function textStyleFlagsOf(element, selection = null, segments) {
53
+ if (!element || !hasTextProperties(element)) {
54
+ return { bold: "off", italic: "off", underline: "off", strikethrough: "off" };
55
+ }
56
+ return getSelectionTextStyleFlags(segments ?? element.textSegments, selection, element.textStyle);
57
+ }
58
+
59
+ // src/pptx/render/text-style-scope.ts
60
+ var text_style_scope_exports = {};
61
+ __reExport(text_style_scope_exports, text_style_scope_star);
62
+
63
+ // src/pptx/render/inspector-helpers.ts
64
+ var DEFAULT_FILL = "#ffffff";
65
+ var DEFAULT_STROKE = "#000000";
66
+ var DEFAULT_TEXT_COLOR = "#000000";
67
+ var DEFAULT_FONT_SIZE = 18;
68
+ function fillColorOf(el) {
69
+ if (hasShapeProperties(el)) {
70
+ return el.shapeStyle?.fillColor ?? DEFAULT_FILL;
71
+ }
72
+ return DEFAULT_FILL;
73
+ }
74
+ function strokeColorOf(el) {
75
+ if (hasShapeProperties(el)) {
76
+ return el.shapeStyle?.strokeColor ?? DEFAULT_STROKE;
77
+ }
78
+ return DEFAULT_STROKE;
79
+ }
80
+ function textColorOf(el) {
81
+ if (hasTextProperties(el)) {
82
+ return el.textStyle?.color ?? DEFAULT_TEXT_COLOR;
83
+ }
84
+ return DEFAULT_TEXT_COLOR;
85
+ }
86
+ function fontSizeOf(el, presentationDefault) {
87
+ if (hasTextProperties(el) && el.textStyle?.fontSize !== void 0) {
88
+ return textFontSizePxToPt(el.textStyle.fontSize);
89
+ }
90
+ const deckDefault = presentationDefault?.levelStyles?.[0]?.fontSize;
91
+ return deckDefault === void 0 ? DEFAULT_FONT_SIZE : textFontSizePxToPt(deckDefault);
92
+ }
93
+ function isBold(el) {
94
+ return textStyleFlagsOf(el).bold === "on";
95
+ }
96
+ function isItalic(el) {
97
+ return textStyleFlagsOf(el).italic === "on";
98
+ }
99
+ function isUnderline(el) {
100
+ return textStyleFlagsOf(el).underline === "on";
101
+ }
102
+ function shapeStylePatch(el, changes) {
103
+ const base = hasShapeProperties(el) ? el.shapeStyle ?? {} : {};
104
+ return {
105
+ shapeStyle: {
106
+ ...base,
107
+ ...changes
108
+ }
109
+ };
110
+ }
111
+ function textStylePatch(el, changes) {
112
+ const base = hasTextProperties(el) ? el.textStyle ?? {} : {};
113
+ const exclusive = (0, text_style_scope_exports.withExclusiveLineSpacing)(changes);
114
+ const paragraphs = (0, text_style_scope_exports.paragraphOverridePatch)(el, exclusive);
115
+ const segments = paragraphs.textSegments ?? (hasTextProperties(el) ? el.textSegments : void 0);
116
+ return {
117
+ ...paragraphs,
118
+ ...segments?.some((segment) => segment.paragraphInsertionStyle) ? {
119
+ textSegments: segments.map(
120
+ (segment) => updateTextSegmentStyle(segment, exclusive, {
121
+ updateBodyStyle: false,
122
+ inherited: base
123
+ })
124
+ )
125
+ } : {},
126
+ textStyle: mergeTextStyleUpdate(base, exclusive)
127
+ };
128
+ }
129
+ function textRunsPatch(el, updates) {
130
+ const patch = textStylePatch(el, updates);
131
+ if (!hasTextProperties(el) || !el.textSegments) {
132
+ return patch;
133
+ }
134
+ const runs = textRunsStylePatch(el, updates);
135
+ return {
136
+ ...patch,
137
+ textSegments: runs.textSegments
138
+ };
139
+ }
140
+ function textFontSizePatch(el, fontSize) {
141
+ return textRunsPatch(el, { fontSize });
142
+ }
143
+ function textFontFamilyPatch(el, fontFamily) {
144
+ return textRunsPatch(el, { fontFamily });
145
+ }
146
+
147
+ export { DEFAULT_FONT_SIZE, contentSegmentsInSelection, fillColorOf, fontSizeOf, getSelectionTextStyleFlags, isBold, isItalic, isUnderline, nextToggleValue, shapeStylePatch, strokeColorOf, textColorOf, textFontFamilyPatch, textFontSizePatch, textStyleFlagsOf, textStylePatch, text_style_scope_exports };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkJRCK6CFI_cjs = require('./chunk-JRCK6CFI.cjs');
3
+ var chunkT34B6TZT_cjs = require('./chunk-T34B6TZT.cjs');
4
4
  var pptx = require('ooxml-core/pptx');
5
5
 
6
6
  function copyFormatFromElement(element) {
@@ -77,7 +77,7 @@ function applyFormatToElement(element, format) {
77
77
  if (format.textStyle && pptx.hasTextProperties(updated)) {
78
78
  updated = {
79
79
  ...updated,
80
- ...chunkJRCK6CFI_cjs.textStylePatch(updated, definedEntries(format.textStyle))
80
+ ...chunkT34B6TZT_cjs.textStylePatch(updated, definedEntries(format.textStyle))
81
81
  };
82
82
  }
83
83
  return updated;
@@ -114,8 +114,8 @@ async function loadChart3DThree() {
114
114
 
115
115
  // src/pptx/three-view/scene-registry.ts
116
116
  var loaders = {
117
- chart: async () => (await import('./chart-3d-view-scene-V74F7ZOC.cjs')).mountChart3DView,
118
- smartart: async () => (await import('./view-scene-4ZFUCP6S.cjs')).mountSmartArt3DView
117
+ chart: async () => (await import('./chart-3d-view-scene-WX23DR2E.cjs')).mountChart3DView,
118
+ smartart: async () => (await import('./view-scene-CKYHS2OP.cjs')).mountSmartArt3DView
119
119
  };
120
120
  async function loadThreeViewScene(kind) {
121
121
  return loaders[kind]();
@@ -92,7 +92,7 @@ function createLocalStorageBackend(namespace) {
92
92
  }
93
93
  async function resolveBackend(dbName, namespace) {
94
94
  try {
95
- const { openChatDb, createIdbBackend } = await import('./chat-history-idb-PGLJPVOI.cjs');
95
+ const { openChatDb, createIdbBackend } = await import('./chat-history-idb-FJWHIDOK.cjs');
96
96
  const db = await openChatDb(dbName);
97
97
  return createIdbBackend(db);
98
98
  } catch {