ooxml-core 1.12.2 → 1.14.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/dist/PptxHandler-5YP75BPO.cjs +12 -0
- package/dist/PptxHandler-GT5Q66TG.mjs +3 -0
- package/dist/{PptxHandler-FIN6XDTI.mjs → PptxHandler-KNBFECUE.mjs} +3 -3
- package/dist/PresentationBuilder-5DCCFHWJ.mjs +7 -0
- package/dist/PresentationBuilder-CVM6LJ7L.mjs +3 -0
- package/dist/PresentationBuilder-II7C4A3R.cjs +20 -0
- package/dist/automation/docx.d.ts +18 -0
- package/dist/automation/docx.d.ts.map +1 -1
- package/dist/automation/index.cjs +22549 -8585
- package/dist/automation/index.d.ts +1 -0
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.mjs +22546 -8586
- package/dist/automation/node.cjs +66 -6
- package/dist/automation/node.d.ts +10 -0
- package/dist/automation/node.d.ts.map +1 -1
- package/dist/automation/node.mjs +67 -7
- package/dist/automation/outline.d.ts +29 -0
- package/dist/automation/outline.d.ts.map +1 -0
- package/dist/automation/xlsx.d.ts +21 -0
- package/dist/automation/xlsx.d.ts.map +1 -1
- package/dist/chart/auto-title.d.ts +31 -0
- package/dist/chart/auto-title.d.ts.map +1 -0
- package/dist/chart/axis-format.d.ts +13 -0
- package/dist/chart/axis-format.d.ts.map +1 -0
- package/dist/chart/bubble-radius.d.ts +30 -0
- package/dist/chart/bubble-radius.d.ts.map +1 -0
- package/dist/chart/error-bar-amount.d.ts +22 -0
- package/dist/chart/error-bar-amount.d.ts.map +1 -0
- package/dist/chart/hierarchy.d.ts +69 -0
- package/dist/chart/hierarchy.d.ts.map +1 -0
- package/dist/chart/index.cjs +2377 -527
- package/dist/chart/index.d.ts +12 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +2338 -528
- package/dist/chart/model-analysis.d.ts +66 -0
- package/dist/chart/model-analysis.d.ts.map +1 -0
- package/dist/chart/model-series.d.ts +5 -0
- package/dist/chart/model-series.d.ts.map +1 -1
- package/dist/chart/number-format-pattern.d.ts +35 -0
- package/dist/chart/number-format-pattern.d.ts.map +1 -0
- package/dist/chart/number-format.d.ts +21 -0
- package/dist/chart/number-format.d.ts.map +1 -0
- package/dist/chart/parse-analysis.d.ts +13 -0
- package/dist/chart/parse-analysis.d.ts.map +1 -0
- package/dist/chart/parse-series.d.ts +1 -1
- package/dist/chart/parse-series.d.ts.map +1 -1
- package/dist/chart/parse-util.d.ts +2 -0
- package/dist/chart/parse-util.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-analysis.d.ts +7 -0
- package/dist/chart/render/chart-svg-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-bars.d.ts +5 -0
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-cartesian.d.ts +7 -2
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-hierarchy.d.ts +5 -0
- package/dist/chart/render/chart-svg-hierarchy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-plots.d.ts +5 -0
- package/dist/chart/render/chart-svg-plots.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-stock.d.ts +4 -0
- package/dist/chart/render/chart-svg-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts +4 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-xy.d.ts +4 -0
- package/dist/chart/render/chart-svg-xy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg.d.ts +1 -1
- package/dist/chart/render/chart-svg.d.ts.map +1 -1
- package/dist/chart/render/chart-value-axis.d.ts +6 -1
- package/dist/chart/render/chart-value-axis.d.ts.map +1 -1
- package/dist/chart/render/chart-view-analysis.d.ts +30 -0
- package/dist/chart/render/chart-view-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-view-ex.d.ts +24 -0
- package/dist/chart/render/chart-view-ex.d.ts.map +1 -0
- package/dist/chart/render/chart-view-families.d.ts +10 -0
- package/dist/chart/render/chart-view-families.d.ts.map +1 -0
- package/dist/chart/render/chart-view-series.d.ts +36 -0
- package/dist/chart/render/chart-view-series.d.ts.map +1 -0
- package/dist/chart/render/chart-view-stock.d.ts +23 -0
- package/dist/chart/render/chart-view-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +49 -18
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/render/index.d.ts +2 -0
- package/dist/chart/render/index.d.ts.map +1 -1
- package/dist/chart/render/render-space.d.ts +6 -1
- package/dist/chart/render/render-space.d.ts.map +1 -1
- package/dist/chart/render/summary-analysis.d.ts +11 -0
- package/dist/chart/render/summary-analysis.d.ts.map +1 -0
- package/dist/chart/render/summary-from-chartex.d.ts +11 -0
- package/dist/chart/render/summary-from-chartex.d.ts.map +1 -0
- package/dist/chart/render/summary-from-space.d.ts.map +1 -1
- package/dist/chart/render/summary.d.ts +86 -3
- package/dist/chart/render/summary.d.ts.map +1 -1
- package/dist/chart/stock-candles.d.ts +72 -0
- package/dist/chart/stock-candles.d.ts.map +1 -0
- package/dist/chart/style-palette.d.ts +29 -0
- package/dist/chart/style-palette.d.ts.map +1 -0
- package/dist/chart/sunburst-arcs.d.ts +41 -0
- package/dist/chart/sunburst-arcs.d.ts.map +1 -0
- package/dist/chart/trendline-fit.d.ts +39 -0
- package/dist/chart/trendline-fit.d.ts.map +1 -0
- package/dist/chart/waterfall.d.ts +31 -0
- package/dist/chart/waterfall.d.ts.map +1 -0
- package/dist/chart/write-analysis.d.ts +12 -0
- package/dist/chart/write-analysis.d.ts.map +1 -0
- package/dist/chart/write-series.d.ts.map +1 -1
- package/dist/{chunk-G5PQKHCG.mjs → chunk-2D4IFQ5M.mjs} +1 -1
- package/dist/{chunk-UAY26XOI.mjs → chunk-2EBMHIGJ.mjs} +1303 -994
- package/dist/{chunk-TVE6UIJF.mjs → chunk-4WZLFUUA.mjs} +54 -13
- package/dist/{chunk-H2FRDUNV.mjs → chunk-54ASP65T.mjs} +868 -585
- package/dist/chunk-M4XLF4R7.mjs +387 -0
- package/dist/{chunk-O6NIA4NG.mjs → chunk-ORH32TO3.mjs} +5798 -5742
- package/dist/{chunk-B2JBBAEQ.mjs → chunk-TNNXOW2O.mjs} +1 -1
- package/dist/{chunk-IT3U6QD6.cjs → chunk-TQE7FFNT.cjs} +6754 -6695
- package/dist/{chunk-7QZGRB3T.cjs → chunk-X7MGZQ6C.cjs} +1321 -995
- package/dist/{chunk-6DELVMYB.mjs → chunk-XGXIS4PN.mjs} +12316 -12260
- package/dist/crypto/decrypt.d.ts +17 -3
- package/dist/crypto/decrypt.d.ts.map +1 -1
- package/dist/crypto/encryption-info.d.ts.map +1 -1
- package/dist/crypto/index.cjs +252 -78
- package/dist/crypto/index.d.ts +19 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.mjs +252 -79
- package/dist/crypto/key-derivation.d.ts +2 -3
- package/dist/crypto/key-derivation.d.ts.map +1 -1
- package/dist/crypto/validate.d.ts +22 -0
- package/dist/crypto/validate.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -1
- package/dist/diagram/engine/pres-tree.d.ts.map +1 -1
- package/dist/diagram/index.cjs +102 -52
- package/dist/diagram/index.mjs +102 -52
- package/dist/digest/index.cjs +23 -11
- package/dist/digest/index.d.ts +2 -1
- package/dist/digest/index.d.ts.map +1 -1
- package/dist/digest/index.mjs +21 -12
- package/dist/digest/password-hash.d.ts +19 -5
- package/dist/digest/password-hash.d.ts.map +1 -1
- package/dist/digest/timing-safe.d.ts +7 -0
- package/dist/digest/timing-safe.d.ts.map +1 -0
- package/dist/docx/block-parser.d.ts.map +1 -1
- package/dist/docx/chart-paint.d.ts.map +1 -1
- package/dist/docx/chart.d.ts +10 -2
- package/dist/docx/chart.d.ts.map +1 -1
- package/dist/docx/content-control-edit.d.ts +26 -0
- package/dist/docx/content-control-edit.d.ts.map +1 -0
- package/dist/docx/content-control-model.d.ts +51 -0
- package/dist/docx/content-control-model.d.ts.map +1 -0
- package/dist/docx/content-control.d.ts +9 -0
- package/dist/docx/content-control.d.ts.map +1 -0
- package/dist/docx/default-styles.d.ts.map +1 -1
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +9932 -935
- package/dist/docx/embedded.mjs +9932 -935
- package/dist/docx/equation.d.ts +7 -3
- package/dist/docx/equation.d.ts.map +1 -1
- package/dist/docx/index.cjs +14117 -1513
- package/dist/docx/index.d.ts +6 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +14093 -1514
- package/dist/docx/inline-model.d.ts +3 -0
- package/dist/docx/inline-model.d.ts.map +1 -1
- package/dist/docx/layout/adapt-floats.d.ts +3 -3
- package/dist/docx/layout/adapt-floats.d.ts.map +1 -1
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/equation-object.d.ts +7 -0
- package/dist/docx/layout/equation-object.d.ts.map +1 -0
- package/dist/docx/layout/floats.d.ts +8 -0
- package/dist/docx/layout/floats.d.ts.map +1 -1
- package/dist/docx/layout/incremental-layout.d.ts +39 -0
- package/dist/docx/layout/incremental-layout.d.ts.map +1 -0
- package/dist/docx/layout/index.cjs +14177 -1707
- package/dist/docx/layout/index.d.ts +2 -2
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +14176 -1708
- package/dist/docx/layout/input.d.ts +4 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/layout-session.d.ts +13 -2
- package/dist/docx/layout/layout-session.d.ts.map +1 -1
- package/dist/docx/layout/layout.d.ts +1 -1
- package/dist/docx/layout/layout.d.ts.map +1 -1
- package/dist/docx/layout/line-metrics.d.ts.map +1 -1
- package/dist/docx/layout/page-cursor.d.ts +1 -1
- package/dist/docx/layout/page-cursor.d.ts.map +1 -1
- package/dist/docx/layout/page-fields.d.ts +3 -1
- package/dist/docx/layout/page-fields.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +14 -1
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/section-flow.d.ts +11 -1
- package/dist/docx/layout/section-flow.d.ts.map +1 -1
- package/dist/docx/ligatures.d.ts +2 -0
- package/dist/docx/ligatures.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +12709 -3590
- package/dist/docx/load/index.mjs +12709 -3590
- package/dist/docx/model-paragraph.d.ts +3 -0
- package/dist/docx/model-paragraph.d.ts.map +1 -1
- package/dist/docx/model-run.d.ts +3 -0
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/model.d.ts +3 -0
- package/dist/docx/model.d.ts.map +1 -1
- package/dist/docx/numbering-parse.d.ts.map +1 -1
- package/dist/docx/numbering-text.d.ts.map +1 -1
- package/dist/docx/package-limits.d.ts +6 -0
- package/dist/docx/package-limits.d.ts.map +1 -0
- package/dist/docx/parse-content-control.d.ts +28 -0
- package/dist/docx/parse-content-control.d.ts.map +1 -0
- package/dist/docx/parse-table.d.ts.map +1 -1
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/save.d.ts.map +1 -1
- package/dist/docx/shape-model.d.ts +31 -0
- package/dist/docx/shape-model.d.ts.map +1 -0
- package/dist/docx/shape-palette.d.ts +19 -0
- package/dist/docx/shape-palette.d.ts.map +1 -0
- package/dist/docx/shape-parse.d.ts +16 -0
- package/dist/docx/shape-parse.d.ts.map +1 -0
- package/dist/docx/shape-svg.d.ts +20 -0
- package/dist/docx/shape-svg.d.ts.map +1 -0
- package/dist/docx/table-model.d.ts +4 -0
- package/dist/docx/table-model.d.ts.map +1 -1
- package/dist/docx/ui/content-control-commands.d.ts +37 -0
- package/dist/docx/ui/content-control-commands.d.ts.map +1 -0
- package/dist/docx/ui/content-control-guard.d.ts +8 -0
- package/dist/docx/ui/content-control-guard.d.ts.map +1 -0
- package/dist/docx/ui/content-control-spans.d.ts +19 -0
- package/dist/docx/ui/content-control-spans.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +3132 -506
- package/dist/docx/ui/index.d.ts +3 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +3117 -507
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/paragraph-attributes.d.ts.map +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/docx/ui/run-compare.d.ts.map +1 -1
- package/dist/docx/ui/run-mark-properties.d.ts.map +1 -1
- package/dist/docx/ui/run-marks.d.ts.map +1 -1
- package/dist/docx/ui/schema-marks.d.ts +16 -1
- package/dist/docx/ui/schema-marks.d.ts.map +1 -1
- package/dist/docx/ui/table-structure-guard.d.ts.map +1 -1
- package/dist/docx/write-block-placement.d.ts +9 -0
- package/dist/docx/write-block-placement.d.ts.map +1 -0
- package/dist/docx/write-content-control.d.ts +12 -0
- package/dist/docx/write-content-control.d.ts.map +1 -0
- package/dist/docx/write-drawing.d.ts +2 -0
- package/dist/docx/write-drawing.d.ts.map +1 -1
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-paragraph.d.ts.map +1 -1
- package/dist/docx/write-shape.d.ts +16 -0
- package/dist/docx/write-shape.d.ts.map +1 -0
- package/dist/docx/write-table.d.ts.map +1 -1
- package/dist/docx/write.d.ts.map +1 -1
- package/dist/drawingml/index.cjs +24 -0
- package/dist/drawingml/index.mjs +24 -0
- package/dist/geometry/index.cjs +63 -48
- package/dist/geometry/index.mjs +63 -48
- package/dist/geometry/preset-shape-definitions-table.d.ts.map +1 -1
- package/dist/i18n/index.cjs +266 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.mjs +265 -1
- package/dist/i18n/option-strings.d.ts +17 -0
- package/dist/i18n/option-strings.d.ts.map +1 -0
- package/dist/index.cjs +4558 -1579
- package/dist/index.mjs +4558 -1579
- package/dist/math/equation-gallery.d.ts +10 -0
- package/dist/math/equation-gallery.d.ts.map +1 -0
- package/dist/math/index.cjs +777 -139
- package/dist/math/index.d.ts +3 -0
- package/dist/math/index.d.ts.map +1 -1
- package/dist/math/index.mjs +772 -140
- package/dist/math/latex-omml-siblings.d.ts.map +1 -1
- package/dist/math/latex-to-omml.d.ts.map +1 -1
- package/dist/math/omml-box-grouped.d.ts +9 -0
- package/dist/math/omml-box-grouped.d.ts.map +1 -0
- package/dist/math/omml-box-layout.d.ts +15 -0
- package/dist/math/omml-box-layout.d.ts.map +1 -0
- package/dist/math/omml-box-structures.d.ts +7 -0
- package/dist/math/omml-box-structures.d.ts.map +1 -0
- package/dist/math/omml-box.d.ts +85 -0
- package/dist/math/omml-box.d.ts.map +1 -0
- package/dist/math/omml-dom.d.ts.map +1 -1
- package/dist/math/omml-mathml-converters.d.ts.map +1 -1
- package/dist/math/omml-svg.d.ts +14 -0
- package/dist/math/omml-svg.d.ts.map +1 -0
- package/dist/math/omml-to-xml.d.ts +10 -0
- package/dist/math/omml-to-xml.d.ts.map +1 -0
- package/dist/opc/embedded-packages.d.ts.map +1 -1
- package/dist/opc/index.cjs +257 -22
- package/dist/opc/index.d.ts +1 -0
- package/dist/opc/index.d.ts.map +1 -1
- package/dist/opc/index.mjs +251 -23
- package/dist/opc/package.d.ts.map +1 -1
- package/dist/opc/signature/detection.d.ts +22 -6
- package/dist/opc/signature/detection.d.ts.map +1 -1
- package/dist/opc/signature/index.d.ts +1 -1
- package/dist/opc/signature/index.d.ts.map +1 -1
- package/dist/opc/signature/xml-utils.d.ts.map +1 -1
- package/dist/opc/zip-limits.d.ts +52 -0
- package/dist/opc/zip-limits.d.ts.map +1 -0
- package/dist/pptx/automation/index.cjs +1848 -1320
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{elements-DmbzOhFu.d.ts → elements-tK7xnWeS.d.ts} +20 -9
- package/dist/pptx/chunks/elements-tK7xnWeS.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts → index-BSpNQuvz.d.ts} +30 -5
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts.map → index-BSpNQuvz.d.ts.map} +1 -1
- package/dist/pptx/chunks/{index-BmvOxbsh.d.ts → index-DS9Y4Ne3.d.ts} +25 -9
- package/dist/pptx/chunks/index-DS9Y4Ne3.d.ts.map +1 -0
- package/dist/pptx/chunks/inspection-status-DjiWd_Aa.d.ts.map +1 -1
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts → text-operations-BdD_UQ11.d.ts} +2 -2
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts.map → text-operations-BdD_UQ11.d.ts.map} +1 -1
- package/dist/pptx/cli/index.cjs +1795 -1275
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +80 -54
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/find-replace.cjs +14 -14
- package/dist/pptx/editor/render/find-replace.d.ts +2 -2
- package/dist/pptx/editor/render/find-replace.mjs +1 -1
- package/dist/pptx/editor/render/slide-operations.cjs +8 -8
- package/dist/pptx/editor/render/slide-operations.mjs +2 -2
- package/dist/pptx/editor/render/text-runs-style-patch.d.ts +1 -1
- package/dist/pptx/editor/render/text-style-scope.d.ts +1 -1
- package/dist/pptx/index.cjs +1117 -351
- package/dist/pptx/index.d.ts +5 -5
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/signature-node/index.cjs +342 -65
- package/dist/pptx/signature-node/index.d.ts +12 -1
- package/dist/pptx/signature-node/index.d.ts.map +1 -1
- package/dist/pptx/signature-node/index.mjs +112 -52
- package/dist/teams/activity-feed.d.ts +19 -0
- package/dist/teams/activity-feed.d.ts.map +1 -0
- package/dist/teams/activity-state.d.ts +12 -0
- package/dist/teams/activity-state.d.ts.map +1 -0
- package/dist/teams/activity.d.ts +52 -0
- package/dist/teams/activity.d.ts.map +1 -0
- package/dist/teams/calendar.d.ts +57 -0
- package/dist/teams/calendar.d.ts.map +1 -0
- package/dist/teams/chat-actions.d.ts +20 -0
- package/dist/teams/chat-actions.d.ts.map +1 -0
- package/dist/teams/chat-rooms.d.ts +42 -0
- package/dist/teams/chat-rooms.d.ts.map +1 -0
- package/dist/teams/chat-view.d.ts +56 -0
- package/dist/teams/chat-view.d.ts.map +1 -0
- package/dist/teams/chat.d.ts +25 -3
- package/dist/teams/chat.d.ts.map +1 -1
- package/dist/teams/chats.d.ts +52 -0
- package/dist/teams/chats.d.ts.map +1 -0
- package/dist/teams/ics-timezone.d.ts +17 -0
- package/dist/teams/ics-timezone.d.ts.map +1 -0
- package/dist/teams/ics.d.ts +20 -0
- package/dist/teams/ics.d.ts.map +1 -0
- package/dist/teams/index.cjs +12462 -7011
- package/dist/teams/index.d.ts +25 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +12349 -7012
- package/dist/teams/meeting-actions.d.ts +31 -0
- package/dist/teams/meeting-actions.d.ts.map +1 -0
- package/dist/teams/meeting-exceptions.d.ts +28 -0
- package/dist/teams/meeting-exceptions.d.ts.map +1 -0
- package/dist/teams/meeting-reminders.d.ts +13 -0
- package/dist/teams/meeting-reminders.d.ts.map +1 -0
- package/dist/teams/meetings.d.ts +71 -0
- package/dist/teams/meetings.d.ts.map +1 -0
- package/dist/teams/mention-text.d.ts +11 -0
- package/dist/teams/mention-text.d.ts.map +1 -0
- package/dist/teams/mentions.d.ts +68 -0
- package/dist/teams/mentions.d.ts.map +1 -0
- package/dist/teams/model.d.ts +7 -0
- package/dist/teams/model.d.ts.map +1 -1
- package/dist/teams/notifications.d.ts +21 -0
- package/dist/teams/notifications.d.ts.map +1 -0
- package/dist/teams/pins.d.ts +22 -0
- package/dist/teams/pins.d.ts.map +1 -0
- package/dist/teams/presence-controller.d.ts +39 -0
- package/dist/teams/presence-controller.d.ts.map +1 -0
- package/dist/teams/presence.d.ts +55 -0
- package/dist/teams/presence.d.ts.map +1 -0
- package/dist/teams/recurrence.d.ts +18 -0
- package/dist/teams/recurrence.d.ts.map +1 -0
- package/dist/teams/roster.d.ts +12 -0
- package/dist/teams/roster.d.ts.map +1 -0
- package/dist/teams/server-config.d.ts +23 -2
- package/dist/teams/server-config.d.ts.map +1 -1
- package/dist/teams/server-session.d.ts +19 -0
- package/dist/teams/server-session.d.ts.map +1 -0
- package/dist/teams/shared-chat.d.ts +83 -0
- package/dist/teams/shared-chat.d.ts.map +1 -0
- package/dist/teams/store.d.ts +79 -5
- package/dist/teams/store.d.ts.map +1 -1
- package/dist/teams/sync-transport.d.ts +12 -0
- package/dist/teams/sync-transport.d.ts.map +1 -0
- package/dist/teams/time-zone.d.ts +32 -0
- package/dist/teams/time-zone.d.ts.map +1 -0
- package/dist/teams/view.d.ts +8 -0
- package/dist/teams/view.d.ts.map +1 -1
- package/dist/teams/workspace.d.ts +23 -4
- package/dist/teams/workspace.d.ts.map +1 -1
- package/dist/visio/edit-connector-follow.d.ts +15 -0
- package/dist/visio/edit-connector-follow.d.ts.map +1 -0
- package/dist/visio/edit-connector-obstacles.d.ts +9 -3
- package/dist/visio/edit-connector-obstacles.d.ts.map +1 -1
- package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
- package/dist/visio/edit-connector.d.ts.map +1 -1
- package/dist/visio/edit-master-add.d.ts +37 -0
- package/dist/visio/edit-master-add.d.ts.map +1 -0
- package/dist/visio/edit-master-drop.d.ts +6 -0
- package/dist/visio/edit-master-drop.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-index.d.ts +5 -0
- package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector-layout.d.ts +2 -0
- package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector.d.ts +1 -0
- package/dist/visio/edit-stencil-connector.d.ts.map +1 -1
- package/dist/visio/edit-stencil-import.d.ts +10 -0
- package/dist/visio/edit-stencil-import.d.ts.map +1 -0
- package/dist/visio/edit-stencil-line.d.ts +29 -0
- package/dist/visio/edit-stencil-line.d.ts.map +1 -0
- package/dist/visio/edit-stencil-master.d.ts +3 -8
- package/dist/visio/edit-stencil-master.d.ts.map +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/formula-evaluate.d.ts.map +1 -1
- package/dist/visio/formula-math-functions.d.ts +11 -0
- package/dist/visio/formula-math-functions.d.ts.map +1 -0
- package/dist/visio/formula-text-functions.d.ts +23 -0
- package/dist/visio/formula-text-functions.d.ts.map +1 -0
- package/dist/visio/formula.d.ts.map +1 -1
- package/dist/visio/index.cjs +2552 -1833
- package/dist/visio/index.d.ts +1 -0
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +2552 -1834
- package/dist/visio/parser.d.ts +6 -0
- package/dist/visio/parser.d.ts.map +1 -1
- package/dist/visio/stencil-file.d.ts +14 -0
- package/dist/visio/stencil-file.d.ts.map +1 -0
- package/dist/visio/ui/index.cjs +2398 -1679
- package/dist/visio/ui/index.mjs +2398 -1680
- package/dist/visio/ui/master-drop.d.ts +10 -0
- package/dist/visio/ui/master-drop.d.ts.map +1 -1
- package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-html-parse.d.ts +4 -0
- package/dist/xlsx/edit/clipboard-html-parse.d.ts.map +1 -1
- package/dist/xlsx/edit/data-table.d.ts +38 -0
- package/dist/xlsx/edit/data-table.d.ts.map +1 -0
- package/dist/xlsx/edit/drawings.d.ts.map +1 -1
- package/dist/xlsx/edit/goal-seek.d.ts +30 -0
- package/dist/xlsx/edit/goal-seek.d.ts.map +1 -0
- package/dist/xlsx/edit/goal-solver.d.ts +20 -0
- package/dist/xlsx/edit/goal-solver.d.ts.map +1 -0
- package/dist/xlsx/edit/history.d.ts +1 -1
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/index.d.ts +5 -0
- package/dist/xlsx/edit/index.d.ts.map +1 -1
- package/dist/xlsx/edit/input-text.d.ts.map +1 -1
- package/dist/xlsx/edit/pivots.d.ts +2 -1
- package/dist/xlsx/edit/pivots.d.ts.map +1 -1
- package/dist/xlsx/edit/scenarios.d.ts +41 -0
- package/dist/xlsx/edit/scenarios.d.ts.map +1 -0
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/slicers.d.ts +34 -0
- package/dist/xlsx/edit/slicers.d.ts.map +1 -0
- package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
- package/dist/xlsx/edit/timelines.d.ts +26 -0
- package/dist/xlsx/edit/timelines.d.ts.map +1 -0
- package/dist/xlsx/edit/types.d.ts +39 -0
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/context.d.ts +13 -0
- package/dist/xlsx/formula/context.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/evaluator.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/amordegrc.d.ts +6 -0
- package/dist/xlsx/formula/functions/amordegrc.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/bahttext.d.ts +4 -0
- package/dist/xlsx/formula/functions/bahttext.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/bessel.d.ts +7 -0
- package/dist/xlsx/formula/functions/bessel.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/bonds.d.ts +3 -0
- package/dist/xlsx/formula/functions/bonds.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/engineering.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/financial.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/getpivotdata.d.ts +2 -0
- package/dist/xlsx/formula/functions/getpivotdata.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/groupby.d.ts +3 -0
- package/dist/xlsx/formula/functions/groupby.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/helpers.d.ts +3 -2
- package/dist/xlsx/formula/functions/helpers.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/logical.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/modern.d.ts +3 -0
- package/dist/xlsx/formula/functions/modern.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/odd-securities.d.ts +3 -0
- package/dist/xlsx/formula/functions/odd-securities.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/registry.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text-regex.d.ts +8 -0
- package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/wildcard.d.ts +8 -0
- package/dist/xlsx/formula/functions/wildcard.d.ts.map +1 -0
- package/dist/xlsx/formula/values.d.ts +11 -0
- package/dist/xlsx/formula/values.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +11696 -4994
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/index.d.ts.map +1 -1
- package/dist/xlsx/index.mjs +11612 -4994
- package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
- package/dist/xlsx/layout/header-footer-edit.d.ts +16 -0
- package/dist/xlsx/layout/header-footer-edit.d.ts.map +1 -0
- package/dist/xlsx/layout/index.d.ts +3 -0
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/page-break-view.d.ts +39 -0
- package/dist/xlsx/layout/page-break-view.d.ts.map +1 -0
- package/dist/xlsx/layout/page-view.d.ts +69 -0
- package/dist/xlsx/layout/page-view.d.ts.map +1 -0
- package/dist/xlsx/layout/ref-evaluator.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +5718 -2191
- package/dist/xlsx/load/index.mjs +5717 -2190
- package/dist/xlsx/model-pivots.d.ts +88 -2
- package/dist/xlsx/model-pivots.d.ts.map +1 -1
- package/dist/xlsx/model-slicers.d.ts +146 -0
- package/dist/xlsx/model-slicers.d.ts.map +1 -0
- package/dist/xlsx/model-whatif.d.ts +51 -0
- package/dist/xlsx/model-whatif.d.ts.map +1 -0
- package/dist/xlsx/model.d.ts +26 -1
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/pivot/admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/aggregate.d.ts +15 -6
- package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
- package/dist/xlsx/pivot/axes.d.ts +6 -0
- package/dist/xlsx/pivot/axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/columns.d.ts +48 -0
- package/dist/xlsx/pivot/columns.d.ts.map +1 -0
- package/dist/xlsx/pivot/data.d.ts +9 -3
- package/dist/xlsx/pivot/data.d.ts.map +1 -1
- package/dist/xlsx/pivot/date-axes.d.ts +12 -0
- package/dist/xlsx/pivot/date-axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-group-read.d.ts +11 -0
- package/dist/xlsx/pivot/date-group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-groups.d.ts +60 -0
- package/dist/xlsx/pivot/date-groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-read.d.ts +10 -0
- package/dist/xlsx/pivot/date-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/dates.d.ts +17 -0
- package/dist/xlsx/pivot/dates.d.ts.map +1 -0
- package/dist/xlsx/pivot/group-read.d.ts +9 -0
- package/dist/xlsx/pivot/group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/groups.d.ts +31 -0
- package/dist/xlsx/pivot/groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/hierarchy.d.ts +4 -1
- package/dist/xlsx/pivot/hierarchy.d.ts.map +1 -1
- package/dist/xlsx/pivot/index.d.ts +7 -0
- package/dist/xlsx/pivot/index.d.ts.map +1 -1
- package/dist/xlsx/pivot/item-filters-read.d.ts +7 -0
- package/dist/xlsx/pivot/item-filters-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/item-filters.d.ts +23 -0
- package/dist/xlsx/pivot/item-filters.d.ts.map +1 -0
- package/dist/xlsx/pivot/measures.d.ts +6 -4
- package/dist/xlsx/pivot/measures.d.ts.map +1 -1
- package/dist/xlsx/pivot/nested.d.ts +8 -0
- package/dist/xlsx/pivot/nested.d.ts.map +1 -0
- package/dist/xlsx/pivot/page-filter-admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/page-filter.d.ts.map +1 -1
- package/dist/xlsx/pivot/read.d.ts +2 -1
- package/dist/xlsx/pivot/read.d.ts.map +1 -1
- package/dist/xlsx/pivot/subtotal-read.d.ts +9 -0
- package/dist/xlsx/pivot/subtotal-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/subtotals.d.ts +23 -0
- package/dist/xlsx/pivot/subtotals.d.ts.map +1 -0
- package/dist/xlsx/pivot/table-xml.d.ts +1 -1
- package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/values-axis.d.ts +2 -2
- package/dist/xlsx/pivot/values-axis.d.ts.map +1 -1
- package/dist/xlsx/read/chart-ex.d.ts +9 -0
- package/dist/xlsx/read/chart-ex.d.ts.map +1 -0
- package/dist/xlsx/read/chart.d.ts.map +1 -1
- package/dist/xlsx/read/drawing.d.ts.map +1 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/package.d.ts +2 -1
- package/dist/xlsx/read/package.d.ts.map +1 -1
- package/dist/xlsx/read/scenarios.d.ts +4 -0
- package/dist/xlsx/read/scenarios.d.ts.map +1 -0
- package/dist/xlsx/read/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/read/tables.d.ts +3 -0
- package/dist/xlsx/read/tables.d.ts.map +1 -1
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/slicer/book.d.ts +16 -0
- package/dist/xlsx/slicer/book.d.ts.map +1 -0
- package/dist/xlsx/slicer/frame.d.ts +14 -0
- package/dist/xlsx/slicer/frame.d.ts.map +1 -0
- package/dist/xlsx/slicer/index.d.ts +10 -0
- package/dist/xlsx/slicer/index.d.ts.map +1 -0
- package/dist/xlsx/slicer/items.d.ts +30 -0
- package/dist/xlsx/slicer/items.d.ts.map +1 -0
- package/dist/xlsx/slicer/layout.d.ts +67 -0
- package/dist/xlsx/slicer/layout.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-slicers.d.ts +11 -0
- package/dist/xlsx/slicer/read-slicers.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-timelines.d.ts +5 -0
- package/dist/xlsx/slicer/read-timelines.d.ts.map +1 -0
- package/dist/xlsx/slicer/read.d.ts +26 -0
- package/dist/xlsx/slicer/read.d.ts.map +1 -0
- package/dist/xlsx/slicer/select.d.ts +10 -0
- package/dist/xlsx/slicer/select.d.ts.map +1 -0
- package/dist/xlsx/slicer/styles.d.ts +36 -0
- package/dist/xlsx/slicer/styles.d.ts.map +1 -0
- package/dist/xlsx/slicer/table-filter.d.ts +28 -0
- package/dist/xlsx/slicer/table-filter.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts +35 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-view.d.ts +60 -0
- package/dist/xlsx/slicer/timeline-view.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-plan.d.ts +31 -0
- package/dist/xlsx/slicer/write-plan.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-timeline.d.ts +7 -0
- package/dist/xlsx/slicer/write-timeline.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-xml.d.ts +17 -0
- package/dist/xlsx/slicer/write-xml.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/icons.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/slicers.d.ts +37 -0
- package/dist/xlsx/ui/commands/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/what-if.d.ts +4 -0
- package/dist/xlsx/ui/commands/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands.d.ts +2 -0
- package/dist/xlsx/ui/commands.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +6999 -3052
- package/dist/xlsx/ui/index.d.ts +2 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +6994 -3053
- package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/de/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/de/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/en/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/es/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/fr/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/zh-CN/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts.map +1 -1
- package/dist/xlsx/write/carried-refs.d.ts.map +1 -1
- package/dist/xlsx/write/drawing.d.ts.map +1 -1
- package/dist/xlsx/write/package-writer.d.ts +2 -0
- package/dist/xlsx/write/package-writer.d.ts.map +1 -1
- package/dist/xlsx/write/save.d.ts.map +1 -1
- package/dist/xlsx/write/scenarios.d.ts +4 -0
- package/dist/xlsx/write/scenarios.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-parts.d.ts +1 -0
- package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/write/table-patch.d.ts.map +1 -1
- package/dist/xlsx/write/tables.d.ts.map +1 -1
- package/dist/xlsx/write/worksheet.d.ts.map +1 -1
- package/dist/xml/index.cjs +28 -0
- package/dist/xml/index.mjs +27 -1
- package/dist/xml/namespaces.d.ts +2 -0
- package/dist/xml/namespaces.d.ts.map +1 -1
- package/dist/xml/xml.d.ts +15 -0
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-RWTOUCLC.mjs +0 -3
- package/dist/PptxHandler-UU4ZCT6H.cjs +0 -12
- package/dist/chunk-KBIJI6P5.mjs +0 -166
- package/dist/pptx/chunks/elements-DmbzOhFu.d.ts.map +0 -1
- package/dist/pptx/chunks/index-BmvOxbsh.d.ts.map +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Meeting, type MeetingInput, type MeetingStore, type OccurrencePatch } from './meetings.js';
|
|
2
|
+
import type { TeamsWorkspace } from './workspace.js';
|
|
3
|
+
export interface MeetingActions {
|
|
4
|
+
createMeeting: (input: MeetingFormInput) => Meeting | null;
|
|
5
|
+
updateMeeting: (id: string, patch: Partial<MeetingFormInput>) => Meeting | null;
|
|
6
|
+
cancelMeeting: (id: string) => boolean;
|
|
7
|
+
/** Cancel one occurrence of a repeating meeting (`recurrenceId` is its original start). */
|
|
8
|
+
cancelOccurrence: (id: string, recurrenceId: number) => boolean;
|
|
9
|
+
/** Change one occurrence of a repeating meeting; the series stays as it is. */
|
|
10
|
+
editOccurrence: (id: string, recurrenceId: number, patch: OccurrencePatch) => Meeting | null;
|
|
11
|
+
/** The `.ics` file for a meeting, or null when it does not exist. */
|
|
12
|
+
meetingIcs: (id: string) => {
|
|
13
|
+
name: string;
|
|
14
|
+
text: string;
|
|
15
|
+
} | null;
|
|
16
|
+
}
|
|
17
|
+
/** What the New meeting form submits: attendees are user ids, resolved through the roster. */
|
|
18
|
+
export interface MeetingFormInput extends Omit<MeetingInput, 'attendees'> {
|
|
19
|
+
attendeeIds?: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export interface MeetingActionDeps {
|
|
22
|
+
ws: TeamsWorkspace;
|
|
23
|
+
meetings: MeetingStore;
|
|
24
|
+
notice: (text: string) => void;
|
|
25
|
+
refresh: () => void;
|
|
26
|
+
/** Defaults to the clock; tests pass their own. */
|
|
27
|
+
now?: () => number;
|
|
28
|
+
}
|
|
29
|
+
export declare const meetingChatId: (meetingId: string) => string;
|
|
30
|
+
export declare function createMeetingActions(deps: MeetingActionDeps): MeetingActions;
|
|
31
|
+
//# sourceMappingURL=meeting-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meeting-actions.d.ts","sourceRoot":"","sources":["../../teams/meeting-actions.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,cAAc;IAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,GAAG,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IAChF,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,2FAA2F;IAC3F,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IAChE,+EAA+E;IAC/E,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,OAAO,GAAG,IAAI,CAAC;IAC7F,qEAAqE;IACrE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAClE;AAED,8FAA8F;AAC9F,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;IACxE,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,MAAwC,CAAC;AAE3F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CA8G5E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
export interface MeetingException {
|
|
3
|
+
/** UTC start the occurrence would have had without the exception. */
|
|
4
|
+
originalStart: number;
|
|
5
|
+
cancelled: boolean;
|
|
6
|
+
/** Overrides for a changed occurrence. */
|
|
7
|
+
start?: number;
|
|
8
|
+
end?: number;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface OccurrencePatch {
|
|
13
|
+
start?: number;
|
|
14
|
+
end?: number;
|
|
15
|
+
title?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const MAX_EXCEPTIONS = 400;
|
|
19
|
+
/** One stored value as an exception, or null when it is not a valid one. */
|
|
20
|
+
export declare function readException(key: string, raw: unknown): MeetingException | null;
|
|
21
|
+
export declare function readExceptions(raw: unknown): MeetingException[];
|
|
22
|
+
/** The exception for an occurrence that started at `originalStart`, if any. */
|
|
23
|
+
export declare const exceptionAt: (exceptions: readonly MeetingException[] | undefined, originalStart: number) => MeetingException | undefined;
|
|
24
|
+
/** The row's exception map, created on first use. */
|
|
25
|
+
export declare function exceptionMap(row: Y.Map<unknown>): Y.Map<unknown>;
|
|
26
|
+
/** The plain stored value for a change (only the fields that are set). */
|
|
27
|
+
export declare function exceptionValue(patch: OccurrencePatch, previous: MeetingException | undefined): Record<string, unknown>;
|
|
28
|
+
//# sourceMappingURL=meeting-exceptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meeting-exceptions.d.ts","sourceRoot":"","sources":["../../teams/meeting-exceptions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,MAAM,WAAW,gBAAgB;IAChC,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,MAAM,CAAC;AAKlC,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAmBhF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAQ/D;AAED,+EAA+E;AAC/E,eAAO,MAAM,WAAW,eACX,SAAS,gBAAgB,EAAE,GAAG,SAAS,iBACpC,MAAM,KACnB,gBAAgB,GAAG,SAAuE,CAAC;AAE9F,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAMhE;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAC7B,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ActivityItem } from './activity.js';
|
|
2
|
+
import { type Meeting } from './meetings.js';
|
|
3
|
+
import type { StorageLike } from './store.js';
|
|
4
|
+
export interface MeetingReminders {
|
|
5
|
+
/**
|
|
6
|
+
* Reminders that are due now and were not announced before. `allowed` says whether the person's
|
|
7
|
+
* settings and status let an item through; a reminder it refuses (Do not disturb) is not marked
|
|
8
|
+
* announced, so it still fires if the status changes before the meeting starts.
|
|
9
|
+
*/
|
|
10
|
+
due: (meetings: readonly Meeting[], selfId: string, now: number, allowed: (item: ActivityItem) => boolean) => ActivityItem[];
|
|
11
|
+
}
|
|
12
|
+
export declare function createMeetingReminders(storage: StorageLike | undefined, key: string): MeetingReminders;
|
|
13
|
+
//# sourceMappingURL=meeting-reminders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meeting-reminders.d.ts","sourceRoot":"","sources":["../../teams/meeting-reminders.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAK3C,MAAM,WAAW,gBAAgB;IAChC;;;;OAIG;IACH,GAAG,EAAE,CACJ,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,KACpC,YAAY,EAAE,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACT,gBAAgB,CAmDlB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
import { type ChatMember } from './chats.js';
|
|
3
|
+
import { type MeetingException, type OccurrencePatch } from './meeting-exceptions.js';
|
|
4
|
+
export type { MeetingException, OccurrencePatch } from './meeting-exceptions.js';
|
|
5
|
+
export type MeetingRepeat = 'none' | 'daily' | 'weekly';
|
|
6
|
+
export declare const MEETING_REPEATS: readonly MeetingRepeat[];
|
|
7
|
+
export interface Meeting {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
organizerId: string;
|
|
12
|
+
organizerName: string;
|
|
13
|
+
/** The organiser's IANA zone: repeats keep their wall-clock time in it. */
|
|
14
|
+
zone: string;
|
|
15
|
+
/** UTC milliseconds. */
|
|
16
|
+
start: number;
|
|
17
|
+
end: number;
|
|
18
|
+
repeat: MeetingRepeat;
|
|
19
|
+
/** The series ends once an occurrence would start after this instant. Never with `count`. */
|
|
20
|
+
until?: number;
|
|
21
|
+
/** The series has this many occurrences in all. Never with `until`. */
|
|
22
|
+
count?: number;
|
|
23
|
+
/** Single occurrences that were cancelled or changed. */
|
|
24
|
+
exceptions?: MeetingException[];
|
|
25
|
+
attendees: ChatMember[];
|
|
26
|
+
/** A channel meeting: the channel it was scheduled in (its chat is the channel). */
|
|
27
|
+
channelId?: string;
|
|
28
|
+
/** The group chat of a meeting with attendees. */
|
|
29
|
+
chatId?: string;
|
|
30
|
+
createdAt: number;
|
|
31
|
+
cancelled: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface MeetingInput {
|
|
34
|
+
title: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
start: number;
|
|
37
|
+
end: number;
|
|
38
|
+
repeat?: MeetingRepeat;
|
|
39
|
+
/** Last instant a repeat may start at; null clears the end. */
|
|
40
|
+
until?: number | null;
|
|
41
|
+
/** Total occurrences of a repeat; null clears the end. */
|
|
42
|
+
count?: number | null;
|
|
43
|
+
attendees?: readonly ChatMember[];
|
|
44
|
+
channelId?: string;
|
|
45
|
+
chatId?: string;
|
|
46
|
+
/** The organiser's zone; defaults to the device's. */
|
|
47
|
+
zone?: string;
|
|
48
|
+
}
|
|
49
|
+
export declare const MAX_MEETING_TITLE = 120;
|
|
50
|
+
export declare const MAX_MEETING_DESCRIPTION = 2000;
|
|
51
|
+
export declare const MAX_MEETING_HOURS = 24;
|
|
52
|
+
export interface MeetingStore {
|
|
53
|
+
list: () => Meeting[];
|
|
54
|
+
get: (id: string) => Meeting | null;
|
|
55
|
+
/** Null when the title is empty or the times are not a positive span of at most 24 hours. */
|
|
56
|
+
create: (input: MeetingInput) => Meeting | null;
|
|
57
|
+
/** Organiser only. Returns the updated meeting. */
|
|
58
|
+
update: (id: string, patch: Partial<MeetingInput>) => Meeting | null;
|
|
59
|
+
/** Organiser only. The row stays so cards and reminders show it as cancelled. */
|
|
60
|
+
cancel: (id: string) => boolean;
|
|
61
|
+
/** Organiser only. Cancels one occurrence of a repeating meeting, keyed by its original start. */
|
|
62
|
+
cancelOccurrence: (id: string, originalStart: number) => boolean;
|
|
63
|
+
/** Organiser only. Changes one occurrence; the rest of the series is untouched. */
|
|
64
|
+
editOccurrence: (id: string, originalStart: number, patch: OccurrencePatch) => Meeting | null;
|
|
65
|
+
}
|
|
66
|
+
/** Whether a meeting belongs in this person's calendar. Channel meetings show for everyone. */
|
|
67
|
+
export declare const meetingVisibleTo: (meeting: Meeting, userId: string) => boolean;
|
|
68
|
+
export declare function createMeetingStore(doc: Y.Doc, user: ChatMember, now?: () => number): MeetingStore;
|
|
69
|
+
/** The channel-style key a meeting's call and live flag use. */
|
|
70
|
+
export declare const meetingCallKey: (meetingId: string) => string;
|
|
71
|
+
//# sourceMappingURL=meetings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meetings.d.ts","sourceRoot":"","sources":["../../teams/meetings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,KAAK,UAAU,EAAiC,MAAM,SAAS,CAAC;AAEzE,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAKpB,MAAM,sBAAsB,CAAC;AAI9B,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxD,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAAgC,CAAC;AAErF,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,aAAa,CAAC;IACtB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAIpC,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,OAAO,EAAE,CAAC;IACtB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IACpC,6FAA6F;IAC7F,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,CAAC;IAChD,mDAAmD;IACnD,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IACrE,iFAAiF;IACjF,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,kGAAkG;IAClG,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;IACjE,mFAAmF;IACnF,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,OAAO,GAAG,IAAI,CAAC;CAC9F;AAgDD,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,YAAa,OAAO,UAAU,MAAM,KAAG,OAInB,CAAC;AAElD,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,IAAI,EAAE,UAAU,EAChB,GAAG,GAAE,MAAM,MAAiB,GAC1B,YAAY,CAgId;AAED,gEAAgE;AAChE,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,MAAyC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type MentionTarget } from './mentions.js';
|
|
2
|
+
import type { Message } from './model.js';
|
|
3
|
+
/**
|
|
4
|
+
* Turn the names picked in the composer back into stored `@Name` text. Each pick claims one
|
|
5
|
+
* occurrence (whole words, case-insensitive, longest name first, never one already preceded by
|
|
6
|
+
* `@`), so a plain word that happens to match a name elsewhere in the message stays plain.
|
|
7
|
+
*/
|
|
8
|
+
export declare function promoteMentions(text: string, picks: readonly MentionTarget[]): string;
|
|
9
|
+
/** The composer's view of a stored message: mention names without the `@`. */
|
|
10
|
+
export declare function mentionDisplayText(message: Pick<Message, 'text' | 'mentions'>): string;
|
|
11
|
+
//# sourceMappingURL=mention-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-text.d.ts","sourceRoot":"","sources":["../../teams/mention-text.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CA+BrF;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,MAAM,CAStF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Message } from './model.js';
|
|
2
|
+
/** `user` points at one person; `channel` and `team` address everyone (`@channel`, `@team`). */
|
|
3
|
+
export type MentionKind = 'user' | 'channel' | 'team';
|
|
4
|
+
/** Someone (or everyone) that can be mentioned, as offered by the picker. */
|
|
5
|
+
export interface MentionTarget {
|
|
6
|
+
kind: MentionKind;
|
|
7
|
+
/** The user id; `channel` / `team` for the group mentions. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** The display name that follows the `@`. */
|
|
10
|
+
name: string;
|
|
11
|
+
}
|
|
12
|
+
/** A mention located in a message: `text.slice(start, end)` is `@` plus the name. */
|
|
13
|
+
export interface Mention extends MentionTarget {
|
|
14
|
+
start: number;
|
|
15
|
+
end: number;
|
|
16
|
+
}
|
|
17
|
+
export interface MentionSegment {
|
|
18
|
+
text: string;
|
|
19
|
+
mention?: Mention;
|
|
20
|
+
}
|
|
21
|
+
export declare const MAX_MENTIONS = 50;
|
|
22
|
+
/** `@channel` and `@team`, offered after the people. */
|
|
23
|
+
export declare const GROUP_MENTIONS: readonly MentionTarget[];
|
|
24
|
+
/** A mention name: markup removed, whitespace collapsed, no `@`, bounded. Empty when unusable. */
|
|
25
|
+
export declare function sanitizeMentionName(name: unknown): string;
|
|
26
|
+
/** Validate a target from an untrusted source (a peer's row, a host's property). */
|
|
27
|
+
export declare function sanitizeMentionTarget(raw: unknown): MentionTarget | null;
|
|
28
|
+
/**
|
|
29
|
+
* Find the mentions in `text`. Candidates are tried in the given order for ties; the longest name
|
|
30
|
+
* wins at a position (`@Ada Lovelace` beats `@Ada`). A mention needs a non-word character (or the
|
|
31
|
+
* edge of the text) on both sides, so an e-mail address is not a mention. Case-insensitive.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveMentions(text: string, candidates: readonly MentionTarget[]): Mention[];
|
|
34
|
+
/** Re-validate stored mentions against the text they claim to sit in. */
|
|
35
|
+
export declare function sanitizeMentions(raw: unknown, text: string): Mention[];
|
|
36
|
+
/** Split text into plain runs and mention runs, for rendering. */
|
|
37
|
+
export declare function mentionSegments(text: string, mentions?: readonly Mention[]): MentionSegment[];
|
|
38
|
+
/** Whether a message addresses this person: by name, or through `@channel` / `@team`. */
|
|
39
|
+
export declare function mentionsUser(message: Pick<Message, 'mentions'>, userId: string): boolean;
|
|
40
|
+
/** An open `@query` at the caret, as the composer's picker needs it. */
|
|
41
|
+
export interface MentionQuery {
|
|
42
|
+
/** Index of the `@`. */
|
|
43
|
+
start: number;
|
|
44
|
+
/** What was typed after it. */
|
|
45
|
+
query: string;
|
|
46
|
+
}
|
|
47
|
+
/** The `@query` being typed right before `caret`, or null. The `@` must start a word. */
|
|
48
|
+
export declare function mentionQueryAt(text: string, caret: number): MentionQuery | null;
|
|
49
|
+
/** Targets whose name matches what was typed; names starting with it (or a word of it) first. */
|
|
50
|
+
export declare function filterMentionTargets(targets: readonly MentionTarget[], query: string, limit?: number): MentionTarget[];
|
|
51
|
+
/**
|
|
52
|
+
* Replace the open `@query` with the person's name (and a trailing space) and place the caret.
|
|
53
|
+
* The `@` is only there while the picker is open, as in Teams; `promoteMentions` adds it back
|
|
54
|
+
* when the message is stored, so older clients still read `@Name`.
|
|
55
|
+
*/
|
|
56
|
+
export declare function insertMention(text: string, query: MentionQuery, caret: number, target: MentionTarget): {
|
|
57
|
+
text: string;
|
|
58
|
+
caret: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Who the picker offers in a channel: people online now, people who wrote there, then the group
|
|
62
|
+
* mentions. The author of the draft is left out.
|
|
63
|
+
*/
|
|
64
|
+
export declare function mentionTargetsFor(messages: readonly Pick<Message, 'authorId' | 'authorName'>[], people: readonly {
|
|
65
|
+
id: string;
|
|
66
|
+
name: string;
|
|
67
|
+
}[], selfId: string): MentionTarget[];
|
|
68
|
+
//# sourceMappingURL=mentions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../teams/mentions.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACb;AAED,qFAAqF;AACrF,MAAM,WAAW,OAAQ,SAAQ,aAAa;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,KAAK,CAAC;AAI/B,wDAAwD;AACxD,eAAO,MAAM,cAAc,EAAE,SAAS,aAAa,EAGlD,CAAC;AAKF,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOzD;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CASxE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,EAAE,CA2B7F;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAetE;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,OAAO,EAAO,GAAG,cAAc,EAAE,CAWjG;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAIxF;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC5B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;CACd;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQ/E;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,GACP,aAAa,EAAE,CAcjB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKjC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC,EAAE,EAC7D,MAAM,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAC/C,MAAM,EAAE,MAAM,GACZ,aAAa,EAAE,CAUjB"}
|
package/dist/teams/model.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Mention } from './mentions.js';
|
|
1
2
|
export type ChannelKind = 'channel' | 'direct';
|
|
2
3
|
export interface Channel {
|
|
3
4
|
id: string;
|
|
@@ -27,11 +28,17 @@ export interface Message {
|
|
|
27
28
|
ts: number;
|
|
28
29
|
editedAt?: number;
|
|
29
30
|
deleted: boolean;
|
|
31
|
+
/** A notice the app wrote (someone joined or left a chat), not something a person typed. */
|
|
32
|
+
system?: boolean;
|
|
33
|
+
/** A meeting card: the scheduled meeting this message announces. */
|
|
34
|
+
meetingId?: string;
|
|
30
35
|
/** Id of the thread root this message answers. */
|
|
31
36
|
replyTo?: string;
|
|
32
37
|
/** Shared tab discussed by this root post. Replies use replyTo as usual. */
|
|
33
38
|
tabId?: string;
|
|
34
39
|
attachments: Attachment[];
|
|
40
|
+
/** People (or everyone) addressed with @, as ranges of `text`. Absent on plain messages. */
|
|
41
|
+
mentions?: Mention[];
|
|
35
42
|
/** emoji -> user ids, derived from the reaction map. */
|
|
36
43
|
reactions: Record<string, string[]>;
|
|
37
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../teams/model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../teams/model.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,eAAe,KAAK,CAAC;AAoBlC,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAUxE;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOzD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGzD;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKpD;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAYlE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAQ9D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ActivityItem } from './activity.js';
|
|
2
|
+
import type { PresenceStatus } from './presence.js';
|
|
3
|
+
import type { StorageLike } from './store.js';
|
|
4
|
+
/** `all`: every kind of activity. `mentions`: only when you are mentioned. `off`: nothing. */
|
|
5
|
+
export type NotificationLevel = 'all' | 'mentions' | 'off';
|
|
6
|
+
export interface NotificationSettings {
|
|
7
|
+
level: NotificationLevel;
|
|
8
|
+
sound: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const NOTIFICATION_LEVELS: readonly NotificationLevel[];
|
|
11
|
+
export declare const DEFAULT_NOTIFICATION_SETTINGS: NotificationSettings;
|
|
12
|
+
export declare const isNotificationLevel: (value: unknown) => value is NotificationLevel;
|
|
13
|
+
/** Whether `item` is announced to a person with these settings and this (effective) status. */
|
|
14
|
+
export declare function shouldNotify(item: Pick<ActivityItem, 'kind' | 'read'>, settings: NotificationSettings, status: PresenceStatus): boolean;
|
|
15
|
+
export interface NotificationSettingsStore {
|
|
16
|
+
get: () => NotificationSettings;
|
|
17
|
+
/** Returns whether anything changed. Unknown values are ignored. */
|
|
18
|
+
set: (next: Partial<NotificationSettings>) => boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function createNotificationSettings(storage: StorageLike | undefined, key: string): NotificationSettingsStore;
|
|
21
|
+
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../teams/notifications.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,8FAA8F;AAC9F,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAA+B,CAAC;AAC5F,eAAO,MAAM,6BAA6B,EAAE,oBAAoD,CAAC;AAEjG,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,KAAK,IAAI,iBACL,CAAC;AAE1D,+FAA+F;AAC/F,wBAAgB,YAAY,CAC3B,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,EACzC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,cAAc,GACpB,OAAO,CAIT;AAED,MAAM,WAAW,yBAAyB;IACzC,GAAG,EAAE,MAAM,oBAAoB,CAAC;IAChC,oEAAoE;IACpE,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC;CACtD;AAED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACT,yBAAyB,CA8B3B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type * as Y from 'yjs';
|
|
2
|
+
import { type Message } from './model.js';
|
|
3
|
+
export declare const MAX_PINNED_MESSAGES = 50;
|
|
4
|
+
export interface PinnedMessage {
|
|
5
|
+
message: Message;
|
|
6
|
+
pinnedBy: string;
|
|
7
|
+
pinnedByName: string;
|
|
8
|
+
pinnedAt: number;
|
|
9
|
+
}
|
|
10
|
+
export interface PinStore {
|
|
11
|
+
/** Pinned messages of a channel, most recently pinned first. */
|
|
12
|
+
pinned: (channelId: string) => PinnedMessage[];
|
|
13
|
+
/** Pins a live message of the channel. False when it is missing, deleted, pinned or the list is full. */
|
|
14
|
+
pin: (channelId: string, messageId: string) => boolean;
|
|
15
|
+
/** Returns whether a pin was removed. */
|
|
16
|
+
unpin: (channelId: string, messageId: string) => boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function createPinStore(doc: Y.Doc, user: {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
}, isChannel: (channelId: string) => boolean, messages: (channelId: string) => Message[]): PinStore;
|
|
22
|
+
//# sourceMappingURL=pins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pins.d.ts","sourceRoot":"","sources":["../../teams/pins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAE9B,OAAO,EAAE,KAAK,OAAO,EAAuB,MAAM,SAAS,CAAC;AAE5D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACxB,gEAAgE;IAChE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAC/C,yGAAyG;IACzG,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,yCAAyC;IACzC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CACzD;AAmBD,wBAAgB,cAAc,CAC7B,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAClC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EACzC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,GACxC,QAAQ,CAmCV"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type PresenceStatus, type StatusDuration } from './presence.js';
|
|
2
|
+
export interface PresenceView {
|
|
3
|
+
/** What the person chose. */
|
|
4
|
+
status: PresenceStatus;
|
|
5
|
+
/** What others see: the chosen status, or Away when idle. */
|
|
6
|
+
effective: PresenceStatus;
|
|
7
|
+
/** When the chosen status resets to Available (epoch ms), or null. */
|
|
8
|
+
statusExpiresAt: number | null;
|
|
9
|
+
message: string;
|
|
10
|
+
messageExpiresAt: number | null;
|
|
11
|
+
idle: boolean;
|
|
12
|
+
/** Minutes without activity before Away; 0 never. */
|
|
13
|
+
idleMinutes: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PresenceStorage {
|
|
16
|
+
getItem: (key: string) => string | null;
|
|
17
|
+
setItem: (key: string, value: string) => void;
|
|
18
|
+
}
|
|
19
|
+
export interface PresenceControllerOptions {
|
|
20
|
+
storage?: PresenceStorage | undefined;
|
|
21
|
+
storageKey: string;
|
|
22
|
+
idleMinutes?: number | undefined;
|
|
23
|
+
now?: () => number;
|
|
24
|
+
/** Called when what others see changes (also once at start). */
|
|
25
|
+
publish: (status: PresenceStatus, message: string) => void;
|
|
26
|
+
/** Called whenever the view changes, including idleness and expiry. */
|
|
27
|
+
changed: () => void;
|
|
28
|
+
}
|
|
29
|
+
export interface PresenceController {
|
|
30
|
+
view: () => PresenceView;
|
|
31
|
+
setStatus: (status: PresenceStatus, duration?: StatusDuration) => void;
|
|
32
|
+
setMessage: (message: string, duration?: StatusDuration) => void;
|
|
33
|
+
setIdleMinutes: (minutes: number) => void;
|
|
34
|
+
/** Report user input (the UI throttles it); it ends idleness and defers the next idle check. */
|
|
35
|
+
noteActivity: () => void;
|
|
36
|
+
destroy: () => void;
|
|
37
|
+
}
|
|
38
|
+
export declare function createPresenceController(options: PresenceControllerOptions): PresenceController;
|
|
39
|
+
//# sourceMappingURL=presence-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence-controller.d.ts","sourceRoot":"","sources":["../../teams/presence-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,cAAc,EAUnB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,YAAY;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,6DAA6D;IAC7D,SAAS,EAAE,cAAc,CAAC;IAC1B,sEAAsE;IACtE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,yBAAyB;IACzC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,gEAAgE;IAChE,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,uEAAuE;IACvE,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,YAAY,CAAC;IACzB,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACvE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACjE,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,gGAAgG;IAChG,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAuH/F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** What a person can be: the three original values plus Teams' other states. */
|
|
2
|
+
export type PresenceStatus = 'available' | 'busy' | 'dnd' | 'brb' | 'away' | 'offline';
|
|
3
|
+
/** The values older clients understand. */
|
|
4
|
+
export type LegacyAvailability = 'available' | 'busy' | 'away';
|
|
5
|
+
export declare const PRESENCE_STATUSES: readonly PresenceStatus[];
|
|
6
|
+
/** Labels like the Teams status menu; `offline` is "Appear offline". */
|
|
7
|
+
export declare const PRESENCE_LABELS: Record<PresenceStatus, string>;
|
|
8
|
+
/** Reset-after choices of the status menu. `never` keeps the status until changed. */
|
|
9
|
+
export type StatusDuration = 'never' | '30m' | '1h' | '2h' | 'today' | 'week';
|
|
10
|
+
export declare const STATUS_DURATIONS: readonly StatusDuration[];
|
|
11
|
+
export declare const STATUS_DURATION_LABELS: Record<StatusDuration, string>;
|
|
12
|
+
export declare const MAX_STATUS_MESSAGE_CHARS = 120;
|
|
13
|
+
export declare const DEFAULT_IDLE_MINUTES = 5;
|
|
14
|
+
export declare const IDLE_MINUTE_CHOICES: readonly number[];
|
|
15
|
+
export declare const isPresenceStatus: (value: unknown) => value is PresenceStatus;
|
|
16
|
+
export declare const isStatusDuration: (value: unknown) => value is StatusDuration;
|
|
17
|
+
/** The closest value an older client understands: Do not disturb is Busy, the rest away. */
|
|
18
|
+
export declare function legacyAvailability(status: PresenceStatus): LegacyAvailability;
|
|
19
|
+
/**
|
|
20
|
+
* The status a peer's presence payload means. A `status` this client knows wins; otherwise the
|
|
21
|
+
* legacy `availability` is used, and anything else is Available (as before).
|
|
22
|
+
*/
|
|
23
|
+
export declare function statusFromWire(raw: {
|
|
24
|
+
status?: unknown;
|
|
25
|
+
availability?: unknown;
|
|
26
|
+
}): PresenceStatus;
|
|
27
|
+
/** A custom status message: tags and control characters removed, one line, length-capped. */
|
|
28
|
+
export declare function sanitizeStatusMessage(text: unknown): string;
|
|
29
|
+
/**
|
|
30
|
+
* When a status or message set `now` stops applying (epoch ms), or null for `never`. `today` ends
|
|
31
|
+
* at the next local midnight; `week` at the end of the local Sunday (Monday 00:00).
|
|
32
|
+
*/
|
|
33
|
+
export declare function expiryFor(duration: StatusDuration, now: number): number | null;
|
|
34
|
+
/** What the person chose, before idleness and expiry are applied. */
|
|
35
|
+
export interface PresenceSetting {
|
|
36
|
+
status: PresenceStatus;
|
|
37
|
+
/** When the chosen status resets to Available; null keeps it. */
|
|
38
|
+
statusExpiresAt: number | null;
|
|
39
|
+
message: string;
|
|
40
|
+
messageExpiresAt: number | null;
|
|
41
|
+
}
|
|
42
|
+
export declare const defaultPresenceSetting: () => PresenceSetting;
|
|
43
|
+
/** Drops the parts of a setting that have expired at `now`. Returns the same object if none did. */
|
|
44
|
+
export declare function applyExpiry(setting: PresenceSetting, now: number): PresenceSetting;
|
|
45
|
+
/** True once `idleMinutes` (0 turns idle detection off) have passed since the last activity. */
|
|
46
|
+
export declare function isIdle(lastActivityAt: number, now: number, idleMinutes: number): boolean;
|
|
47
|
+
/** The status others see: only Available turns into Away when idle; a chosen state always wins. */
|
|
48
|
+
export declare function effectiveStatus(setting: PresenceSetting, idle: boolean, now: number): PresenceStatus;
|
|
49
|
+
/** The earliest moment the setting changes by itself, for scheduling one timer; null if never. */
|
|
50
|
+
export declare function nextExpiry(setting: PresenceSetting): number | null;
|
|
51
|
+
/** Reads a stored setting back; anything malformed falls back to the default. */
|
|
52
|
+
export declare function parsePresenceSetting(raw: unknown): PresenceSetting;
|
|
53
|
+
/** Idle minutes from storage or a control: one of the offered choices, else the default. */
|
|
54
|
+
export declare function normalizeIdleMinutes(value: unknown): number;
|
|
55
|
+
//# sourceMappingURL=presence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../teams/presence.ts"],"names":[],"mappings":"AAMA,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AACvF,2CAA2C;AAC3C,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/D,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAOtD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAO1D,CAAC;AAEF,sFAAsF;AACtF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;AAC9E,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAOrD,CAAC;AACF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAOjE,CAAC;AAEF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAuB,CAAC;AAEzE,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,KAAK,IAAI,cACP,CAAC;AAErD,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,KAAK,IAAI,cACR,CAAC;AAEpD,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAI7E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,cAAc,CAKhG;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAO3D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoB9E;AAED,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,iEAAiE;IACjE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,sBAAsB,QAAO,eAKxC,CAAC;AAEH,oGAAoG;AACpG,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CAUlF;AAED,gGAAgG;AAChG,wBAAgB,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAExF;AAED,mGAAmG;AACnG,wBAAgB,eAAe,CAC9B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,GACT,cAAc,CAGhB;AAED,kGAAkG;AAClG,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAYlE;AAED,4FAA4F;AAC5F,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG3D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Meeting } from './meetings.js';
|
|
2
|
+
export declare const MAX_RECURRENCE_COUNT = 999;
|
|
3
|
+
type Series = Pick<Meeting, 'start' | 'end' | 'zone' | 'repeat' | 'until' | 'count'>;
|
|
4
|
+
export interface SeriesSlot {
|
|
5
|
+
/** 0 for the first occurrence. */
|
|
6
|
+
index: number;
|
|
7
|
+
start: number;
|
|
8
|
+
}
|
|
9
|
+
/** The start of the `index`-th occurrence, ignoring the end of the series. */
|
|
10
|
+
export declare function seriesStart(meeting: Series, index: number): number;
|
|
11
|
+
/** Whether the series still has an occurrence at this index and start. */
|
|
12
|
+
export declare function withinSeries(meeting: Series, index: number, start: number): boolean;
|
|
13
|
+
/** Series occurrences that overlap `[from, to)`, in start order, at most `limit`. */
|
|
14
|
+
export declare function seriesBetween(meeting: Series, from: number, to: number, limit?: number): SeriesSlot[];
|
|
15
|
+
/** The index of the occurrence that starts exactly at `start`, or null when there is none. */
|
|
16
|
+
export declare function seriesIndexOf(meeting: Series, start: number): number | null;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=recurrence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recurrence.d.ts","sourceRoot":"","sources":["../../teams/recurrence.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;AAErF,MAAM,WAAW,UAAU;IAC1B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAID,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKnF;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,SAAM,GACT,UAAU,EAAE,CAmBd;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
import { type ChatMember } from './chats.js';
|
|
3
|
+
export interface RosterEntry extends ChatMember {
|
|
4
|
+
lastSeen: number;
|
|
5
|
+
}
|
|
6
|
+
export interface Roster {
|
|
7
|
+
/** Add yourself, or refresh your name and last-seen time. Cheap: writes only when needed. */
|
|
8
|
+
register: () => void;
|
|
9
|
+
list: () => RosterEntry[];
|
|
10
|
+
}
|
|
11
|
+
export declare function createRoster(doc: Y.Doc, user: ChatMember, now?: () => number): Roster;
|
|
12
|
+
//# sourceMappingURL=roster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../../teams/roster.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,SAAS,CAAC;AAMxD,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC9C,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACtB,6FAA6F;IAC7F,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,WAAW,EAAE,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,MAAM,CA4B/F"}
|
|
@@ -10,18 +10,39 @@ export interface TeamsServerConfig {
|
|
|
10
10
|
iceTransportPolicy?: 'all' | 'relay';
|
|
11
11
|
/** Bearer token sent as `?token=` on both sockets. Treat it as a secret. */
|
|
12
12
|
token?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Signed session from the server's `POST /auth/session` (see `requestSession`), sent as
|
|
15
|
+
* `?session=` on both sockets. The server takes the user id from it, not from the client's claim.
|
|
16
|
+
* Short-lived and secret: never persist it with the settings.
|
|
17
|
+
*/
|
|
18
|
+
sessionToken?: string;
|
|
13
19
|
}
|
|
14
20
|
export interface ServerConfigResult {
|
|
15
21
|
config: TeamsServerConfig;
|
|
16
22
|
/** Human-readable problems; the offending field is left out of `config`. */
|
|
17
23
|
issues: string[];
|
|
24
|
+
/**
|
|
25
|
+
* True when the input came from a URL or fragment, which anyone can craft in a link: a UI should
|
|
26
|
+
* ask the user to confirm before connecting (it can carry a token to an attacker's server).
|
|
27
|
+
*/
|
|
28
|
+
untrusted?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface ParseServerConfigOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Protocol of the page hosting the workspace (`https:`). Defaults to `location.protocol` when a
|
|
33
|
+
* `location` exists. On an `https:` page only `wss://` endpoints are accepted (loopback hosts
|
|
34
|
+
* excepted), so a token is never sent in clear text.
|
|
35
|
+
*/
|
|
36
|
+
pageProtocol?: string;
|
|
37
|
+
/** Where the input came from; `url` and `fragment` mark the result `untrusted`. */
|
|
38
|
+
source?: 'settings' | 'storage' | 'file' | 'url' | 'fragment';
|
|
18
39
|
}
|
|
19
40
|
/** Public STUN only: enough on open networks, never enough behind symmetric NAT (add TURN). */
|
|
20
41
|
export declare const DEFAULT_ICE_SERVERS: readonly IceServer[];
|
|
21
42
|
/** Validate untrusted server settings into a usable config plus a list of issues. */
|
|
22
|
-
export declare function parseServerConfig(input: unknown): ServerConfigResult;
|
|
43
|
+
export declare function parseServerConfig(input: unknown, options?: ParseServerConfigOptions): ServerConfigResult;
|
|
23
44
|
/** `base/room?token=...` for a sync or signaling endpoint. The room is URL-encoded. */
|
|
24
|
-
export declare function endpointUrl(base: string, roomId: string, token?: string): string;
|
|
45
|
+
export declare function endpointUrl(base: string, roomId: string, token?: string, params?: Record<string, string>): string;
|
|
25
46
|
/** The local-only config: no server, same-browser tabs. */
|
|
26
47
|
export declare function localServerConfig(): TeamsServerConfig;
|
|
27
48
|
//# sourceMappingURL=server-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../teams/server-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACrC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../teams/server-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACrC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,4EAA4E;IAC5E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;CAC9D;AAED,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,EAAE,SAAS,SAAS,EAA+C,CAAC;AAkDpG,qFAAqF;AACrF,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,wBAA6B,GACpC,kBAAkB,CAsCpB;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACjC,MAAM,CAMR;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,IAAI,iBAAiB,CAErD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TeamsServerConfig } from './server-config.js';
|
|
2
|
+
export interface TeamsSession {
|
|
3
|
+
/** Pass as `config.sessionToken`. */
|
|
4
|
+
token: string;
|
|
5
|
+
/** The id the server authenticated: use it as the workspace user id. */
|
|
6
|
+
userId: string;
|
|
7
|
+
/** Epoch milliseconds; request a new session before then. */
|
|
8
|
+
expiresAt: number;
|
|
9
|
+
}
|
|
10
|
+
export interface RequestSessionOptions {
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
fetch?: typeof fetch;
|
|
13
|
+
}
|
|
14
|
+
/** Ask the server of `config` for a session. Rejects with a generic message on any refusal. */
|
|
15
|
+
export declare function requestTeamsSession(config: TeamsServerConfig, credentials: {
|
|
16
|
+
userId: string;
|
|
17
|
+
credential?: string;
|
|
18
|
+
}, options?: RequestSessionOptions): Promise<TeamsSession>;
|
|
19
|
+
//# sourceMappingURL=server-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-session.d.ts","sourceRoot":"","sources":["../../teams/server-session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC5B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB;AAED,+FAA+F;AAC/F,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACpD,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
|