@react-x11/components 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +979 -21
- package/dist/ansi/cast.d.ts +48 -0
- package/dist/ansi/cast.d.ts.map +1 -0
- package/dist/ansi/cast.js +135 -0
- package/dist/ansi/cast.js.map +1 -0
- package/dist/ansi/index.d.ts +10 -0
- package/dist/ansi/index.d.ts.map +1 -0
- package/dist/ansi/index.js +27 -0
- package/dist/ansi/index.js.map +1 -0
- package/dist/ansi/palette.d.ts +79 -0
- package/dist/ansi/palette.d.ts.map +1 -0
- package/dist/ansi/palette.js +155 -0
- package/dist/ansi/palette.js.map +1 -0
- package/dist/ansi/parse.d.ts +114 -0
- package/dist/ansi/parse.d.ts.map +1 -0
- package/dist/ansi/parse.js +687 -0
- package/dist/ansi/parse.js.map +1 -0
- package/dist/ansi/sgr.d.ts +87 -0
- package/dist/ansi/sgr.d.ts.map +1 -0
- package/dist/ansi/sgr.js +302 -0
- package/dist/ansi/sgr.js.map +1 -0
- package/dist/ansi/utf8.d.ts +15 -0
- package/dist/ansi/utf8.d.ts.map +1 -0
- package/dist/ansi/utf8.js +82 -0
- package/dist/ansi/utf8.js.map +1 -0
- package/dist/calendar/Calendar.d.ts +136 -0
- package/dist/calendar/Calendar.d.ts.map +1 -0
- package/dist/calendar/Calendar.js +460 -0
- package/dist/calendar/Calendar.js.map +1 -0
- package/dist/calendar/DatePicker.d.ts +52 -0
- package/dist/calendar/DatePicker.d.ts.map +1 -0
- package/dist/calendar/DatePicker.js +257 -0
- package/dist/calendar/DatePicker.js.map +1 -0
- package/dist/calendar/dates.d.ts +90 -0
- package/dist/calendar/dates.d.ts.map +1 -0
- package/dist/calendar/dates.js +236 -0
- package/dist/calendar/dates.js.map +1 -0
- package/dist/calendar/index.d.ts +8 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +15 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/charts/components.d.ts +141 -0
- package/dist/charts/components.d.ts.map +1 -0
- package/dist/charts/components.js +580 -0
- package/dist/charts/components.js.map +1 -0
- package/dist/charts/data.d.ts +198 -0
- package/dist/charts/data.d.ts.map +1 -0
- package/dist/charts/data.js +616 -0
- package/dist/charts/data.js.map +1 -0
- package/dist/charts/hx.d.ts +21 -0
- package/dist/charts/hx.d.ts.map +1 -0
- package/dist/charts/hx.js +15 -0
- package/dist/charts/hx.js.map +1 -0
- package/dist/charts/index.d.ts +27 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +38 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/node.d.ts +96 -0
- package/dist/charts/node.d.ts.map +1 -0
- package/dist/charts/node.js +720 -0
- package/dist/charts/node.js.map +1 -0
- package/dist/charts/render.d.ts +153 -0
- package/dist/charts/render.d.ts.map +1 -0
- package/dist/charts/render.js +762 -0
- package/dist/charts/render.js.map +1 -0
- package/dist/charts/scale.d.ts +42 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +173 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/spec.d.ts +91 -0
- package/dist/charts/spec.d.ts.map +1 -0
- package/dist/charts/spec.js +33 -0
- package/dist/charts/spec.js.map +1 -0
- package/dist/charts/timers.d.ts +6 -0
- package/dist/charts/timers.d.ts.map +1 -0
- package/dist/charts/timers.js +14 -0
- package/dist/charts/timers.js.map +1 -0
- package/dist/code/hx.d.ts +24 -0
- package/dist/code/hx.d.ts.map +1 -0
- package/dist/code/hx.js +25 -0
- package/dist/code/hx.js.map +1 -0
- package/dist/code/index.d.ts +45 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +93 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code-editor/completion.d.ts +26 -0
- package/dist/code-editor/completion.d.ts.map +1 -0
- package/dist/code-editor/completion.js +129 -0
- package/dist/code-editor/completion.js.map +1 -0
- package/dist/code-editor/doc.d.ts +35 -0
- package/dist/code-editor/doc.d.ts.map +1 -0
- package/dist/code-editor/doc.js +162 -0
- package/dist/code-editor/doc.js.map +1 -0
- package/dist/code-editor/hx.d.ts +13 -0
- package/dist/code-editor/hx.d.ts.map +1 -0
- package/dist/code-editor/hx.js +10 -0
- package/dist/code-editor/hx.js.map +1 -0
- package/dist/code-editor/index.d.ts +88 -0
- package/dist/code-editor/index.d.ts.map +1 -0
- package/dist/code-editor/index.js +401 -0
- package/dist/code-editor/index.js.map +1 -0
- package/dist/code-editor/node.d.ts +343 -0
- package/dist/code-editor/node.d.ts.map +1 -0
- package/dist/code-editor/node.js +1521 -0
- package/dist/code-editor/node.js.map +1 -0
- package/dist/code-language/hljs.d.ts +47 -0
- package/dist/code-language/hljs.d.ts.map +1 -0
- package/dist/code-language/hljs.js +211 -0
- package/dist/code-language/hljs.js.map +1 -0
- package/dist/code-language/index.d.ts +22 -0
- package/dist/code-language/index.d.ts.map +1 -0
- package/dist/code-language/index.js +20 -0
- package/dist/code-language/index.js.map +1 -0
- package/dist/code-language/languages/glsl.d.ts +4 -0
- package/dist/code-language/languages/glsl.d.ts.map +1 -0
- package/dist/code-language/languages/glsl.js +99 -0
- package/dist/code-language/languages/glsl.js.map +1 -0
- package/dist/code-language/languages/javascript.d.ts +10 -0
- package/dist/code-language/languages/javascript.d.ts.map +1 -0
- package/dist/code-language/languages/javascript.js +360 -0
- package/dist/code-language/languages/javascript.js.map +1 -0
- package/dist/code-language/languages/json.d.ts +4 -0
- package/dist/code-language/languages/json.d.ts.map +1 -0
- package/dist/code-language/languages/json.js +68 -0
- package/dist/code-language/languages/json.js.map +1 -0
- package/dist/code-language/languages/shell.d.ts +4 -0
- package/dist/code-language/languages/shell.d.ts.map +1 -0
- package/dist/code-language/languages/shell.js +189 -0
- package/dist/code-language/languages/shell.js.map +1 -0
- package/dist/code-language/languages/sql.d.ts +11 -0
- package/dist/code-language/languages/sql.d.ts.map +1 -0
- package/dist/code-language/languages/sql.js +133 -0
- package/dist/code-language/languages/sql.js.map +1 -0
- package/dist/code-language/lezer.d.ts +24 -0
- package/dist/code-language/lezer.d.ts.map +1 -0
- package/dist/code-language/lezer.js +148 -0
- package/dist/code-language/lezer.js.map +1 -0
- package/dist/code-language/registry.d.ts +19 -0
- package/dist/code-language/registry.d.ts.map +1 -0
- package/dist/code-language/registry.js +56 -0
- package/dist/code-language/registry.js.map +1 -0
- package/dist/code-language/runs.d.ts +35 -0
- package/dist/code-language/runs.d.ts.map +1 -0
- package/dist/code-language/runs.js +88 -0
- package/dist/code-language/runs.js.map +1 -0
- package/dist/code-language/stream.d.ts +70 -0
- package/dist/code-language/stream.d.ts.map +1 -0
- package/dist/code-language/stream.js +243 -0
- package/dist/code-language/stream.js.map +1 -0
- package/dist/code-language/textmate.d.ts +27 -0
- package/dist/code-language/textmate.d.ts.map +1 -0
- package/dist/code-language/textmate.js +86 -0
- package/dist/code-language/textmate.js.map +1 -0
- package/dist/code-language/theme.d.ts +26 -0
- package/dist/code-language/theme.d.ts.map +1 -0
- package/dist/code-language/theme.js +108 -0
- package/dist/code-language/theme.js.map +1 -0
- package/dist/code-language/timers.d.ts +7 -0
- package/dist/code-language/timers.d.ts.map +1 -0
- package/dist/code-language/timers.js +22 -0
- package/dist/code-language/timers.js.map +1 -0
- package/dist/code-language/types.d.ts +173 -0
- package/dist/code-language/types.d.ts.map +1 -0
- package/dist/code-language/types.js +41 -0
- package/dist/code-language/types.js.map +1 -0
- package/dist/codeblock/index.d.ts +69 -0
- package/dist/codeblock/index.d.ts.map +1 -0
- package/dist/codeblock/index.js +85 -0
- package/dist/codeblock/index.js.map +1 -0
- package/dist/color-picker/ColorField.d.ts +39 -0
- package/dist/color-picker/ColorField.d.ts.map +1 -0
- package/dist/color-picker/ColorField.js +239 -0
- package/dist/color-picker/ColorField.js.map +1 -0
- package/dist/color-picker/ColorPicker.d.ts +109 -0
- package/dist/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/color-picker/ColorPicker.js +757 -0
- package/dist/color-picker/ColorPicker.js.map +1 -0
- package/dist/color-picker/color.d.ts +105 -0
- package/dist/color-picker/color.d.ts.map +1 -0
- package/dist/color-picker/color.js +313 -0
- package/dist/color-picker/color.js.map +1 -0
- package/dist/color-picker/index.d.ts +8 -0
- package/dist/color-picker/index.d.ts.map +1 -0
- package/dist/color-picker/index.js +19 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/desktop-calendar/eds.d.ts +102 -0
- package/dist/desktop-calendar/eds.d.ts.map +1 -0
- package/dist/desktop-calendar/eds.js +356 -0
- package/dist/desktop-calendar/eds.js.map +1 -0
- package/dist/desktop-calendar/ical.d.ts +63 -0
- package/dist/desktop-calendar/ical.d.ts.map +1 -0
- package/dist/desktop-calendar/ical.js +57 -0
- package/dist/desktop-calendar/ical.js.map +1 -0
- package/dist/desktop-calendar/index.d.ts +72 -0
- package/dist/desktop-calendar/index.d.ts.map +1 -0
- package/dist/desktop-calendar/index.js +213 -0
- package/dist/desktop-calendar/index.js.map +1 -0
- package/dist/embed/client.d.ts +121 -0
- package/dist/embed/client.d.ts.map +1 -0
- package/dist/embed/client.js +203 -0
- package/dist/embed/client.js.map +1 -0
- package/dist/embed/host.d.ts +96 -0
- package/dist/embed/host.d.ts.map +1 -0
- package/dist/embed/host.js +266 -0
- package/dist/embed/host.js.map +1 -0
- package/dist/embed/index.d.ts +5 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/embed/index.js +13 -0
- package/dist/embed/index.js.map +1 -0
- package/dist/embed/timers.d.ts +6 -0
- package/dist/embed/timers.d.ts.map +1 -0
- package/dist/embed/timers.js +16 -0
- package/dist/embed/timers.js.map +1 -0
- package/dist/flow/draw.d.ts +45 -0
- package/dist/flow/draw.d.ts.map +1 -0
- package/dist/flow/draw.js +295 -0
- package/dist/flow/draw.js.map +1 -0
- package/dist/flow/index.d.ts +64 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +306 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/model.d.ts +158 -0
- package/dist/flow/model.d.ts.map +1 -0
- package/dist/flow/model.js +566 -0
- package/dist/flow/model.js.map +1 -0
- package/dist/flow/node.d.ts +429 -0
- package/dist/flow/node.d.ts.map +1 -0
- package/dist/flow/node.js +3025 -0
- package/dist/flow/node.js.map +1 -0
- package/dist/flow/paths.d.ts +43 -0
- package/dist/flow/paths.d.ts.map +1 -0
- package/dist/flow/paths.js +327 -0
- package/dist/flow/paths.js.map +1 -0
- package/dist/flow/types.d.ts +561 -0
- package/dist/flow/types.d.ts.map +1 -0
- package/dist/flow/types.js +2 -0
- package/dist/flow/types.js.map +1 -0
- package/dist/formula/hx.d.ts +24 -0
- package/dist/formula/hx.d.ts.map +1 -0
- package/dist/formula/hx.js +25 -0
- package/dist/formula/hx.js.map +1 -0
- package/dist/formula/index.d.ts +74 -0
- package/dist/formula/index.d.ts.map +1 -0
- package/dist/formula/index.js +155 -0
- package/dist/formula/index.js.map +1 -0
- package/dist/formula/katex.d.ts +78 -0
- package/dist/formula/katex.d.ts.map +1 -0
- package/dist/formula/katex.js +130 -0
- package/dist/formula/katex.js.map +1 -0
- package/dist/formula/layout.d.ts +103 -0
- package/dist/formula/layout.d.ts.map +1 -0
- package/dist/formula/layout.js +716 -0
- package/dist/formula/layout.js.map +1 -0
- package/dist/formula/node.d.ts +50 -0
- package/dist/formula/node.d.ts.map +1 -0
- package/dist/formula/node.js +351 -0
- package/dist/formula/node.js.map +1 -0
- package/dist/html/controls.d.ts +48 -0
- package/dist/html/controls.d.ts.map +1 -0
- package/dist/html/controls.js +195 -0
- package/dist/html/controls.js.map +1 -0
- package/dist/html/css/cascade.d.ts +51 -0
- package/dist/html/css/cascade.d.ts.map +1 -0
- package/dist/html/css/cascade.js +552 -0
- package/dist/html/css/cascade.js.map +1 -0
- package/dist/html/css/parse.d.ts +74 -0
- package/dist/html/css/parse.d.ts.map +1 -0
- package/dist/html/css/parse.js +464 -0
- package/dist/html/css/parse.js.map +1 -0
- package/dist/html/css/style.d.ts +142 -0
- package/dist/html/css/style.d.ts.map +1 -0
- package/dist/html/css/style.js +1145 -0
- package/dist/html/css/style.js.map +1 -0
- package/dist/html/css/ua.d.ts +5 -0
- package/dist/html/css/ua.d.ts.map +1 -0
- package/dist/html/css/ua.js +171 -0
- package/dist/html/css/ua.js.map +1 -0
- package/dist/html/css/values.d.ts +78 -0
- package/dist/html/css/values.d.ts.map +1 -0
- package/dist/html/css/values.js +330 -0
- package/dist/html/css/values.js.map +1 -0
- package/dist/html/dom.d.ts +112 -0
- package/dist/html/dom.d.ts.map +1 -0
- package/dist/html/dom.js +374 -0
- package/dist/html/dom.js.map +1 -0
- package/dist/html/hx.d.ts +24 -0
- package/dist/html/hx.d.ts.map +1 -0
- package/dist/html/hx.js +29 -0
- package/dist/html/hx.js.map +1 -0
- package/dist/html/index.d.ts +137 -0
- package/dist/html/index.d.ts.map +1 -0
- package/dist/html/index.js +339 -0
- package/dist/html/index.js.map +1 -0
- package/dist/html/layout/block.d.ts +58 -0
- package/dist/html/layout/block.d.ts.map +1 -0
- package/dist/html/layout/block.js +724 -0
- package/dist/html/layout/block.js.map +1 -0
- package/dist/html/layout/boxes.d.ts +261 -0
- package/dist/html/layout/boxes.d.ts.map +1 -0
- package/dist/html/layout/boxes.js +725 -0
- package/dist/html/layout/boxes.js.map +1 -0
- package/dist/html/layout/flex.d.ts +16 -0
- package/dist/html/layout/flex.d.ts.map +1 -0
- package/dist/html/layout/flex.js +242 -0
- package/dist/html/layout/flex.js.map +1 -0
- package/dist/html/layout/floats.d.ts +50 -0
- package/dist/html/layout/floats.d.ts.map +1 -0
- package/dist/html/layout/floats.js +110 -0
- package/dist/html/layout/floats.js.map +1 -0
- package/dist/html/layout/inline.d.ts +44 -0
- package/dist/html/layout/inline.d.ts.map +1 -0
- package/dist/html/layout/inline.js +700 -0
- package/dist/html/layout/inline.js.map +1 -0
- package/dist/html/layout/table.d.ts +5 -0
- package/dist/html/layout/table.d.ts.map +1 -0
- package/dist/html/layout/table.js +340 -0
- package/dist/html/layout/table.js.map +1 -0
- package/dist/html/node.d.ts +149 -0
- package/dist/html/node.d.ts.map +1 -0
- package/dist/html/node.js +861 -0
- package/dist/html/node.js.map +1 -0
- package/dist/html/paint.d.ts +48 -0
- package/dist/html/paint.d.ts.map +1 -0
- package/dist/html/paint.js +495 -0
- package/dist/html/paint.js.map +1 -0
- package/dist/html/resources.d.ts +48 -0
- package/dist/html/resources.d.ts.map +1 -0
- package/dist/html/resources.js +156 -0
- package/dist/html/resources.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/heights.d.ts +88 -0
- package/dist/internal/heights.d.ts.map +1 -0
- package/dist/internal/heights.js +203 -0
- package/dist/internal/heights.js.map +1 -0
- package/dist/internal/hx.d.ts +24 -0
- package/dist/internal/hx.d.ts.map +1 -0
- package/dist/internal/hx.js +27 -0
- package/dist/internal/hx.js.map +1 -0
- package/dist/internal/scroll.d.ts +62 -0
- package/dist/internal/scroll.d.ts.map +1 -0
- package/dist/internal/scroll.js +224 -0
- package/dist/internal/scroll.js.map +1 -0
- package/dist/internal/text.d.ts +6 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +44 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/timers.d.ts +8 -0
- package/dist/internal/timers.d.ts.map +1 -0
- package/dist/internal/timers.js +22 -0
- package/dist/internal/timers.js.map +1 -0
- package/dist/internal/widget.d.ts +40 -0
- package/dist/internal/widget.d.ts.map +1 -0
- package/dist/internal/widget.js +44 -0
- package/dist/internal/widget.js.map +1 -0
- package/dist/markdown/ast.d.ts +126 -0
- package/dist/markdown/ast.d.ts.map +1 -0
- package/dist/markdown/ast.js +8 -0
- package/dist/markdown/ast.js.map +1 -0
- package/dist/markdown/hx.d.ts +24 -0
- package/dist/markdown/hx.d.ts.map +1 -0
- package/dist/markdown/hx.js +25 -0
- package/dist/markdown/hx.js.map +1 -0
- package/dist/markdown/index.d.ts +90 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +413 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/parse.d.ts +8 -0
- package/dist/markdown/parse.d.ts.map +1 -0
- package/dist/markdown/parse.js +911 -0
- package/dist/markdown/parse.js.map +1 -0
- package/dist/markdown/spans.d.ts +20 -0
- package/dist/markdown/spans.d.ts.map +1 -0
- package/dist/markdown/spans.js +96 -0
- package/dist/markdown/spans.js.map +1 -0
- package/dist/media-player/backends.d.ts +64 -0
- package/dist/media-player/backends.d.ts.map +1 -0
- package/dist/media-player/backends.js +110 -0
- package/dist/media-player/backends.js.map +1 -0
- package/dist/media-player/control.d.ts +40 -0
- package/dist/media-player/control.d.ts.map +1 -0
- package/dist/media-player/control.js +44 -0
- package/dist/media-player/control.js.map +1 -0
- package/dist/media-player/hx.d.ts +24 -0
- package/dist/media-player/hx.d.ts.map +1 -0
- package/dist/media-player/hx.js +25 -0
- package/dist/media-player/hx.js.map +1 -0
- package/dist/media-player/index.d.ts +107 -0
- package/dist/media-player/index.d.ts.map +1 -0
- package/dist/media-player/index.js +219 -0
- package/dist/media-player/index.js.map +1 -0
- package/dist/media-player/mpv.d.ts +4 -0
- package/dist/media-player/mpv.d.ts.map +1 -0
- package/dist/media-player/mpv.js +120 -0
- package/dist/media-player/mpv.js.map +1 -0
- package/dist/media-player/vlc.d.ts +8 -0
- package/dist/media-player/vlc.d.ts.map +1 -0
- package/dist/media-player/vlc.js +83 -0
- package/dist/media-player/vlc.js.map +1 -0
- package/dist/richtext/index.d.ts +19 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +4 -0
- package/dist/richtext/index.js.map +1 -0
- package/dist/richtext/links.d.ts +12 -0
- package/dist/richtext/links.d.ts.map +1 -0
- package/dist/richtext/links.js +64 -0
- package/dist/richtext/links.js.map +1 -0
- package/dist/richtext/menu.d.ts +11 -0
- package/dist/richtext/menu.d.ts.map +1 -0
- package/dist/richtext/menu.js +43 -0
- package/dist/richtext/menu.js.map +1 -0
- package/dist/richtext/node.d.ts +151 -0
- package/dist/richtext/node.d.ts.map +1 -0
- package/dist/richtext/node.js +255 -0
- package/dist/richtext/node.js.map +1 -0
- package/dist/richtext/runs.d.ts +92 -0
- package/dist/richtext/runs.d.ts.map +1 -0
- package/dist/richtext/runs.js +158 -0
- package/dist/richtext/runs.js.map +1 -0
- package/dist/table/hx.d.ts +24 -0
- package/dist/table/hx.d.ts.map +1 -0
- package/dist/table/hx.js +25 -0
- package/dist/table/hx.js.map +1 -0
- package/dist/table/index.d.ts +169 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +890 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/rows.d.ts +136 -0
- package/dist/table/rows.d.ts.map +1 -0
- package/dist/table/rows.js +146 -0
- package/dist/table/rows.js.map +1 -0
- package/dist/terminal/backends.d.ts +105 -0
- package/dist/terminal/backends.d.ts.map +1 -0
- package/dist/terminal/backends.js +185 -0
- package/dist/terminal/backends.js.map +1 -0
- package/dist/terminal/hx.d.ts +24 -0
- package/dist/terminal/hx.d.ts.map +1 -0
- package/dist/terminal/hx.js +25 -0
- package/dist/terminal/hx.js.map +1 -0
- package/dist/terminal/index.d.ts +160 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +344 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/title.d.ts +24 -0
- package/dist/terminal/title.d.ts.map +1 -0
- package/dist/terminal/title.js +129 -0
- package/dist/terminal/title.js.map +1 -0
- package/dist/terminal/vt/colors.d.ts +63 -0
- package/dist/terminal/vt/colors.d.ts.map +1 -0
- package/dist/terminal/vt/colors.js +203 -0
- package/dist/terminal/vt/colors.js.map +1 -0
- package/dist/terminal/vt/diff.d.ts +117 -0
- package/dist/terminal/vt/diff.d.ts.map +1 -0
- package/dist/terminal/vt/diff.js +358 -0
- package/dist/terminal/vt/diff.js.map +1 -0
- package/dist/terminal/vt/fonts.d.ts +92 -0
- package/dist/terminal/vt/fonts.d.ts.map +1 -0
- package/dist/terminal/vt/fonts.js +178 -0
- package/dist/terminal/vt/fonts.js.map +1 -0
- package/dist/terminal/vt/index.d.ts +78 -0
- package/dist/terminal/vt/index.d.ts.map +1 -0
- package/dist/terminal/vt/index.js +312 -0
- package/dist/terminal/vt/index.js.map +1 -0
- package/dist/terminal/vt/keys.d.ts +74 -0
- package/dist/terminal/vt/keys.d.ts.map +1 -0
- package/dist/terminal/vt/keys.js +309 -0
- package/dist/terminal/vt/keys.js.map +1 -0
- package/dist/terminal/vt/mouse.d.ts +44 -0
- package/dist/terminal/vt/mouse.d.ts.map +1 -0
- package/dist/terminal/vt/mouse.js +106 -0
- package/dist/terminal/vt/mouse.js.map +1 -0
- package/dist/terminal/vt/node.d.ts +246 -0
- package/dist/terminal/vt/node.d.ts.map +1 -0
- package/dist/terminal/vt/node.js +1068 -0
- package/dist/terminal/vt/node.js.map +1 -0
- package/dist/terminal/vt/pty.d.ts +81 -0
- package/dist/terminal/vt/pty.d.ts.map +1 -0
- package/dist/terminal/vt/pty.js +201 -0
- package/dist/terminal/vt/pty.js.map +1 -0
- package/dist/terminal/vt/renderer.d.ts +179 -0
- package/dist/terminal/vt/renderer.d.ts.map +1 -0
- package/dist/terminal/vt/renderer.js +357 -0
- package/dist/terminal/vt/renderer.js.map +1 -0
- package/dist/terminal/vt/timers.d.ts +6 -0
- package/dist/terminal/vt/timers.d.ts.map +1 -0
- package/dist/terminal/vt/timers.js +16 -0
- package/dist/terminal/vt/timers.js.map +1 -0
- package/dist/terminal/vt/xterm.d.ts +142 -0
- package/dist/terminal/vt/xterm.d.ts.map +1 -0
- package/dist/terminal/vt/xterm.js +32 -0
- package/dist/terminal/vt/xterm.js.map +1 -0
- package/dist/terminal-output/hx.d.ts +24 -0
- package/dist/terminal-output/hx.d.ts.map +1 -0
- package/dist/terminal-output/hx.js +25 -0
- package/dist/terminal-output/hx.js.map +1 -0
- package/dist/terminal-output/index.d.ts +92 -0
- package/dist/terminal-output/index.d.ts.map +1 -0
- package/dist/terminal-output/index.js +179 -0
- package/dist/terminal-output/index.js.map +1 -0
- package/dist/terminal-output/runs.d.ts +27 -0
- package/dist/terminal-output/runs.d.ts.map +1 -0
- package/dist/terminal-output/runs.js +66 -0
- package/dist/terminal-output/runs.js.map +1 -0
- package/dist/three/canvas.d.ts +46 -0
- package/dist/three/canvas.d.ts.map +1 -0
- package/dist/three/canvas.js +305 -0
- package/dist/three/canvas.js.map +1 -0
- package/dist/three/events.d.ts +64 -0
- package/dist/three/events.d.ts.map +1 -0
- package/dist/three/events.js +146 -0
- package/dist/three/events.js.map +1 -0
- package/dist/three/geometries.d.ts +89 -0
- package/dist/three/geometries.d.ts.map +1 -0
- package/dist/three/geometries.js +345 -0
- package/dist/three/geometries.js.map +1 -0
- package/dist/three/globals.d.ts +7 -0
- package/dist/three/globals.d.ts.map +1 -0
- package/dist/three/globals.js +20 -0
- package/dist/three/globals.js.map +1 -0
- package/dist/three/hx.d.ts +9 -0
- package/dist/three/hx.d.ts.map +1 -0
- package/dist/three/hx.js +10 -0
- package/dist/three/hx.js.map +1 -0
- package/dist/three/index.d.ts +22 -0
- package/dist/three/index.d.ts.map +1 -0
- package/dist/three/index.js +24 -0
- package/dist/three/index.js.map +1 -0
- package/dist/three/jsx-dev-runtime.d.ts +19 -0
- package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/three/jsx-dev-runtime.js +2 -0
- package/dist/three/jsx-dev-runtime.js.map +1 -0
- package/dist/three/jsx-runtime.d.ts +19 -0
- package/dist/three/jsx-runtime.d.ts.map +1 -0
- package/dist/three/jsx-runtime.js +2 -0
- package/dist/three/jsx-runtime.js.map +1 -0
- package/dist/three/jsx.d.ts +198 -0
- package/dist/three/jsx.d.ts.map +1 -0
- package/dist/three/jsx.js +2 -0
- package/dist/three/jsx.js.map +1 -0
- package/dist/three/materials.d.ts +125 -0
- package/dist/three/materials.d.ts.map +1 -0
- package/dist/three/materials.js +229 -0
- package/dist/three/materials.js.map +1 -0
- package/dist/three/math.d.ts +146 -0
- package/dist/three/math.d.ts.map +1 -0
- package/dist/three/math.js +464 -0
- package/dist/three/math.js.map +1 -0
- package/dist/three/objects.d.ts +185 -0
- package/dist/three/objects.d.ts.map +1 -0
- package/dist/three/objects.js +309 -0
- package/dist/three/objects.js.map +1 -0
- package/dist/three/passes.d.ts +54 -0
- package/dist/three/passes.d.ts.map +1 -0
- package/dist/three/passes.js +78 -0
- package/dist/three/passes.js.map +1 -0
- package/dist/three/postprocess.d.ts +85 -0
- package/dist/three/postprocess.d.ts.map +1 -0
- package/dist/three/postprocess.js +503 -0
- package/dist/three/postprocess.js.map +1 -0
- package/dist/three/raycast.d.ts +24 -0
- package/dist/three/raycast.d.ts.map +1 -0
- package/dist/three/raycast.js +138 -0
- package/dist/three/raycast.js.map +1 -0
- package/dist/three/reconciler.d.ts +48 -0
- package/dist/three/reconciler.d.ts.map +1 -0
- package/dist/three/reconciler.js +416 -0
- package/dist/three/reconciler.js.map +1 -0
- package/dist/three/renderer-direct.d.ts +102 -0
- package/dist/three/renderer-direct.d.ts.map +1 -0
- package/dist/three/renderer-direct.js +782 -0
- package/dist/three/renderer-direct.js.map +1 -0
- package/dist/three/renderer-indirect.d.ts +68 -0
- package/dist/three/renderer-indirect.d.ts.map +1 -0
- package/dist/three/renderer-indirect.js +438 -0
- package/dist/three/renderer-indirect.js.map +1 -0
- package/dist/three/store.d.ts +81 -0
- package/dist/three/store.d.ts.map +1 -0
- package/dist/three/store.js +110 -0
- package/dist/three/store.js.map +1 -0
- package/dist/timeline/hx.d.ts +18 -0
- package/dist/timeline/hx.d.ts.map +1 -0
- package/dist/timeline/hx.js +10 -0
- package/dist/timeline/hx.js.map +1 -0
- package/dist/timeline/index.d.ts +152 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +383 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/tray-host/hx.d.ts +24 -0
- package/dist/tray-host/hx.d.ts.map +1 -0
- package/dist/tray-host/hx.js +25 -0
- package/dist/tray-host/hx.js.map +1 -0
- package/dist/tray-host/index.d.ts +110 -0
- package/dist/tray-host/index.d.ts.map +1 -0
- package/dist/tray-host/index.js +191 -0
- package/dist/tray-host/index.js.map +1 -0
- package/dist/tray-host/manager.d.ts +137 -0
- package/dist/tray-host/manager.d.ts.map +1 -0
- package/dist/tray-host/manager.js +462 -0
- package/dist/tray-host/manager.js.map +1 -0
- package/dist/tray-host/notify.d.ts +22 -0
- package/dist/tray-host/notify.d.ts.map +1 -0
- package/dist/tray-host/notify.js +74 -0
- package/dist/tray-host/notify.js.map +1 -0
- package/dist/tray-host/protocol.d.ts +106 -0
- package/dist/tray-host/protocol.d.ts.map +1 -0
- package/dist/tray-host/protocol.js +191 -0
- package/dist/tray-host/protocol.js.map +1 -0
- package/dist/tree/hx.d.ts +24 -0
- package/dist/tree/hx.d.ts.map +1 -0
- package/dist/tree/hx.js +25 -0
- package/dist/tree/hx.js.map +1 -0
- package/dist/tree/index.d.ts +221 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +751 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree/internal.d.ts +18 -0
- package/dist/tree/internal.d.ts.map +1 -0
- package/dist/tree/internal.js +66 -0
- package/dist/tree/internal.js.map +1 -0
- package/dist/tree/rows.d.ts +177 -0
- package/dist/tree/rows.d.ts.map +1 -0
- package/dist/tree/rows.js +179 -0
- package/dist/tree/rows.js.map +1 -0
- package/package.json +166 -12
- package/src/ansi/cast.ts +159 -0
- package/src/ansi/index.ts +53 -0
- package/src/ansi/palette.ts +226 -0
- package/src/ansi/parse.ts +780 -0
- package/src/ansi/sgr.ts +380 -0
- package/src/ansi/utf8.ts +84 -0
- package/src/calendar/Calendar.ts +744 -0
- package/src/calendar/DatePicker.ts +368 -0
- package/src/calendar/dates.ts +307 -0
- package/src/calendar/index.ts +51 -0
- package/src/charts/components.ts +864 -0
- package/src/charts/data.ts +776 -0
- package/src/charts/hx.ts +39 -0
- package/src/charts/index.ts +99 -0
- package/src/charts/node.ts +932 -0
- package/src/charts/render.ts +982 -0
- package/src/charts/scale.ts +214 -0
- package/src/charts/spec.ts +122 -0
- package/src/charts/timers.ts +24 -0
- package/src/code/hx.ts +51 -0
- package/src/code/index.ts +174 -0
- package/src/code-editor/completion.ts +161 -0
- package/src/code-editor/doc.ts +198 -0
- package/src/code-editor/hx.ts +26 -0
- package/src/code-editor/index.ts +615 -0
- package/src/code-editor/node.ts +1926 -0
- package/src/code-language/hljs.ts +302 -0
- package/src/code-language/index.ts +51 -0
- package/src/code-language/languages/glsl.ts +120 -0
- package/src/code-language/languages/javascript.ts +419 -0
- package/src/code-language/languages/json.ts +72 -0
- package/src/code-language/languages/shell.ts +221 -0
- package/src/code-language/languages/sql.ts +165 -0
- package/src/code-language/lezer.ts +190 -0
- package/src/code-language/registry.ts +66 -0
- package/src/code-language/runs.ts +128 -0
- package/src/code-language/stream.ts +306 -0
- package/src/code-language/textmate.ts +134 -0
- package/src/code-language/theme.ts +124 -0
- package/src/code-language/timers.ts +36 -0
- package/src/code-language/types.ts +252 -0
- package/src/codeblock/index.ts +146 -0
- package/src/color-picker/ColorField.ts +333 -0
- package/src/color-picker/ColorPicker.ts +1069 -0
- package/src/color-picker/color.ts +399 -0
- package/src/color-picker/index.ts +50 -0
- package/src/desktop-calendar/eds.ts +484 -0
- package/src/desktop-calendar/ical.ts +119 -0
- package/src/desktop-calendar/index.ts +287 -0
- package/src/embed/client.ts +311 -0
- package/src/embed/host.ts +432 -0
- package/src/embed/index.ts +33 -0
- package/src/embed/timers.ts +32 -0
- package/src/flow/draw.ts +418 -0
- package/src/flow/index.ts +473 -0
- package/src/flow/model.ts +687 -0
- package/src/flow/node.ts +3694 -0
- package/src/flow/paths.ts +403 -0
- package/src/flow/types.ts +634 -0
- package/src/formula/hx.ts +51 -0
- package/src/formula/index.ts +243 -0
- package/src/formula/katex.ts +209 -0
- package/src/formula/layout.ts +876 -0
- package/src/formula/node.ts +467 -0
- package/src/html/controls.ts +244 -0
- package/src/html/css/cascade.ts +606 -0
- package/src/html/css/parse.ts +500 -0
- package/src/html/css/style.ts +1371 -0
- package/src/html/css/ua.ts +174 -0
- package/src/html/css/values.ts +358 -0
- package/src/html/dom.ts +410 -0
- package/src/html/hx.ts +55 -0
- package/src/html/index.ts +545 -0
- package/src/html/layout/block.ts +876 -0
- package/src/html/layout/boxes.ts +981 -0
- package/src/html/layout/flex.ts +297 -0
- package/src/html/layout/floats.ts +125 -0
- package/src/html/layout/inline.ts +870 -0
- package/src/html/layout/table.ts +380 -0
- package/src/html/node.ts +967 -0
- package/src/html/paint.ts +605 -0
- package/src/html/resources.ts +214 -0
- package/src/index.ts +638 -0
- package/src/internal/heights.ts +222 -0
- package/src/internal/hx.ts +53 -0
- package/src/internal/scroll.ts +288 -0
- package/src/internal/text.ts +44 -0
- package/src/internal/timers.ts +44 -0
- package/src/internal/widget.ts +92 -0
- package/src/markdown/ast.ts +163 -0
- package/src/markdown/hx.ts +51 -0
- package/src/markdown/index.ts +686 -0
- package/src/markdown/parse.ts +1037 -0
- package/src/markdown/spans.ts +143 -0
- package/src/media-player/backends.ts +155 -0
- package/src/media-player/control.ts +70 -0
- package/src/media-player/hx.ts +51 -0
- package/src/media-player/index.ts +378 -0
- package/src/media-player/mpv.ts +146 -0
- package/src/media-player/vlc.ts +97 -0
- package/src/richtext/index.ts +42 -0
- package/src/richtext/links.ts +78 -0
- package/src/richtext/menu.ts +49 -0
- package/src/richtext/node.ts +406 -0
- package/src/richtext/runs.ts +253 -0
- package/src/table/hx.ts +51 -0
- package/src/table/index.ts +1270 -0
- package/src/table/rows.ts +275 -0
- package/src/terminal/backends.ts +242 -0
- package/src/terminal/hx.ts +51 -0
- package/src/terminal/index.ts +574 -0
- package/src/terminal/title.ts +172 -0
- package/src/terminal/vt/colors.ts +247 -0
- package/src/terminal/vt/diff.ts +467 -0
- package/src/terminal/vt/fonts.ts +233 -0
- package/src/terminal/vt/index.ts +443 -0
- package/src/terminal/vt/keys.ts +369 -0
- package/src/terminal/vt/mouse.ts +144 -0
- package/src/terminal/vt/node.ts +1242 -0
- package/src/terminal/vt/pty.ts +334 -0
- package/src/terminal/vt/renderer.ts +555 -0
- package/src/terminal/vt/timers.ts +31 -0
- package/src/terminal/vt/xterm.ts +193 -0
- package/src/terminal-output/hx.ts +51 -0
- package/src/terminal-output/index.ts +340 -0
- package/src/terminal-output/runs.ts +79 -0
- package/src/three/canvas.ts +451 -0
- package/src/three/events.ts +197 -0
- package/src/three/geometries.ts +429 -0
- package/src/three/globals.ts +34 -0
- package/src/three/hx.ts +22 -0
- package/src/three/index.ts +98 -0
- package/src/three/jsx-dev-runtime.ts +27 -0
- package/src/three/jsx-runtime.ts +38 -0
- package/src/three/jsx.ts +275 -0
- package/src/three/materials.ts +270 -0
- package/src/three/math.ts +585 -0
- package/src/three/objects.ts +397 -0
- package/src/three/passes.ts +90 -0
- package/src/three/postprocess.ts +677 -0
- package/src/three/raycast.ts +189 -0
- package/src/three/react-reconciler.d.ts +50 -0
- package/src/three/reconciler.ts +624 -0
- package/src/three/renderer-direct.ts +1055 -0
- package/src/three/renderer-indirect.ts +570 -0
- package/src/three/store.ts +207 -0
- package/src/timeline/hx.ts +31 -0
- package/src/timeline/index.ts +603 -0
- package/src/tray-host/hx.ts +51 -0
- package/src/tray-host/index.ts +331 -0
- package/src/tray-host/manager.ts +639 -0
- package/src/tray-host/notify.ts +102 -0
- package/src/tray-host/protocol.ts +235 -0
- package/src/tree/hx.ts +51 -0
- package/src/tree/index.ts +1127 -0
- package/src/tree/internal.ts +87 -0
- package/src/tree/rows.ts +334 -0
- package/src/index.d.ts +0 -2
- package/src/index.js +0 -9
- package/src/sparkline/index.d.ts +0 -29
- package/src/sparkline/index.js +0 -50
- package/src/sparkline/node.js +0 -72
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eds.d.ts","sourceRoot":"","sources":["../../src/desktop-calendar/eds.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA2B5C,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC;CACf;AAiBD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmBxC;AAkBD;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;;IAM1B,YAAY,GAAG,EAAE,UAAU,EAE1B;IAED,+DAA+D;IACzD,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6BpD;IAoDD;;;;;;;OAOG;IACG,aAAa,CACjB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,EACR,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;KAAO,GAClD,OAAO,CAAC,YAAY,CAAC,CAoCvB;IAgFD;;;;;;;;;;;;OAYG;IACG,KAAK,CACT,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,EACR,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,EAC1C,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;KAAO,GAClD,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAgE9B;IAED,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAY7B;CACF"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { loadIcal } from './ical.js';
|
|
2
|
+
const SOURCES_NAME = 'org.gnome.evolution.dataserver.Sources5';
|
|
3
|
+
const SOURCES_PATH = '/org/gnome/evolution/dataserver/SourceManager';
|
|
4
|
+
const OBJECT_MANAGER = 'org.freedesktop.DBus.ObjectManager';
|
|
5
|
+
const FACTORY_NAME = 'org.gnome.evolution.dataserver.Calendar8';
|
|
6
|
+
const FACTORY_PATH = '/org/gnome/evolution/dataserver/CalendarFactory';
|
|
7
|
+
const FACTORY_IFACE = 'org.gnome.evolution.dataserver.CalendarFactory';
|
|
8
|
+
const CAL_IFACE = 'org.gnome.evolution.dataserver.Calendar';
|
|
9
|
+
const VIEW_IFACE = 'org.gnome.evolution.dataserver.CalendarView';
|
|
10
|
+
/**
|
|
11
|
+
* `E_CAL_CLIENT_VIEW_FLAGS_NONE`. A view is created with
|
|
12
|
+
* `NOTIFY_INITIAL` instead, which makes `Start()` replay everything already
|
|
13
|
+
* matching the query as `ObjectsAdded` — the current contents, announced as
|
|
14
|
+
* if they had just changed.
|
|
15
|
+
*
|
|
16
|
+
* That is the wrong signal for a watcher whose answer to a change is to run
|
|
17
|
+
* the query again: the re-query tears the view down, starts a new one, and is
|
|
18
|
+
* told the same thing again, for as long as the app is open. Flags of NONE is
|
|
19
|
+
* the whole of "only tell me what changes from here".
|
|
20
|
+
*/
|
|
21
|
+
const VIEW_FLAGS_NONE = 0;
|
|
22
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
23
|
+
/** `20260807T113000Z` — what the S-expression query wants. */
|
|
24
|
+
function icalStamp(d) {
|
|
25
|
+
return (`${d.getUTCFullYear()}${pad(d.getUTCMonth() + 1)}${pad(d.getUTCDate())}T` +
|
|
26
|
+
`${pad(d.getUTCHours())}${pad(d.getUTCMinutes())}${pad(d.getUTCSeconds())}Z`);
|
|
27
|
+
}
|
|
28
|
+
/** The query EDS understands for "anything happening between these two". */
|
|
29
|
+
function rangeQuery(from, to) {
|
|
30
|
+
return `(occur-in-time-range? (make-time "${icalStamp(from)}") (make-time "${icalStamp(to)}"))`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A source's whole configuration is an ini-style keyfile carried in one D-Bus
|
|
34
|
+
* property, so it has to be parsed to find out whether a source is even a
|
|
35
|
+
* calendar (as opposed to an address book, a mail account or a task list).
|
|
36
|
+
*/
|
|
37
|
+
export function parseKeyFile(text) {
|
|
38
|
+
const out = {};
|
|
39
|
+
let section = null;
|
|
40
|
+
for (const raw of text.split('\n')) {
|
|
41
|
+
const line = raw.trim();
|
|
42
|
+
if (!line || line.startsWith('#'))
|
|
43
|
+
continue;
|
|
44
|
+
if (line.startsWith('[') && line.endsWith(']')) {
|
|
45
|
+
section = line.slice(1, -1);
|
|
46
|
+
out[section] = out[section] ?? {};
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (!section)
|
|
50
|
+
continue;
|
|
51
|
+
const eq = line.indexOf('=');
|
|
52
|
+
if (eq === -1)
|
|
53
|
+
continue;
|
|
54
|
+
const key = line.slice(0, eq).trim();
|
|
55
|
+
if (key.includes('['))
|
|
56
|
+
continue; // a DisplayName[ru] translation
|
|
57
|
+
out[section][key] = line.slice(eq + 1).trim();
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The desktop's calendars, read over a bus someone else owns.
|
|
63
|
+
*
|
|
64
|
+
* ```ts
|
|
65
|
+
* const ref = await sessionBus();
|
|
66
|
+
* if (!ref) return; // no bus here; no calendars
|
|
67
|
+
* const desktop = new DesktopCalendar(ref.bus);
|
|
68
|
+
* const { events } = await desktop.eventsBetween(from, to);
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* Nothing here closes the connection, because nothing here opened it. Call
|
|
72
|
+
* `dispose()` to drop the views this instance started, then release your own
|
|
73
|
+
* reference to the bus.
|
|
74
|
+
*/
|
|
75
|
+
export class DesktopCalendar {
|
|
76
|
+
#bus;
|
|
77
|
+
#open = new Map();
|
|
78
|
+
#views = [];
|
|
79
|
+
#timezones = new Set();
|
|
80
|
+
constructor(bus) {
|
|
81
|
+
this.#bus = bus;
|
|
82
|
+
}
|
|
83
|
+
/** Every calendar the desktop knows about, colour included. */
|
|
84
|
+
async listCalendars() {
|
|
85
|
+
const om = (await this.#bus
|
|
86
|
+
.getService(SOURCES_NAME)
|
|
87
|
+
.getInterface(SOURCES_PATH, OBJECT_MANAGER));
|
|
88
|
+
const managed = await om.GetManagedObjects();
|
|
89
|
+
const calendars = [];
|
|
90
|
+
for (const interfaces of Object.values(managed)) {
|
|
91
|
+
const src = interfaces['org.gnome.evolution.dataserver.Source'];
|
|
92
|
+
if (!src)
|
|
93
|
+
continue;
|
|
94
|
+
const cfg = parseKeyFile(String(src.Data ?? ''));
|
|
95
|
+
// no [Calendar] section means an address book, a task list or mail
|
|
96
|
+
if (!cfg.Calendar)
|
|
97
|
+
continue;
|
|
98
|
+
const ds = cfg['Data Source'] ?? {};
|
|
99
|
+
calendars.push({
|
|
100
|
+
uid: String(src.UID ?? ''),
|
|
101
|
+
name: ds.DisplayName ?? '',
|
|
102
|
+
enabled: ds.Enabled !== 'false',
|
|
103
|
+
color: cfg.Calendar.Color,
|
|
104
|
+
backend: cfg.Calendar.BackendName,
|
|
105
|
+
readOnly: !interfaces['org.gnome.evolution.dataserver.Source.Writable'],
|
|
106
|
+
account: cfg['GNOME Online Accounts']?.Account,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return calendars;
|
|
110
|
+
}
|
|
111
|
+
async #openCalendar(uid) {
|
|
112
|
+
const existing = this.#open.get(uid);
|
|
113
|
+
if (existing)
|
|
114
|
+
return existing;
|
|
115
|
+
const factory = (await this.#bus
|
|
116
|
+
.getService(FACTORY_NAME)
|
|
117
|
+
.getInterface(FACTORY_PATH, FACTORY_IFACE));
|
|
118
|
+
const [path, busName] = await factory.OpenCalendar(uid);
|
|
119
|
+
const cal = (await this.#bus
|
|
120
|
+
.getService(busName)
|
|
121
|
+
.getInterface(path, CAL_IFACE));
|
|
122
|
+
await cal.Open();
|
|
123
|
+
const entry = { cal, busName };
|
|
124
|
+
this.#open.set(uid, entry);
|
|
125
|
+
return entry;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Events reference timezones by id, but the payload rarely carries the
|
|
129
|
+
* matching VTIMEZONE — so definitions are fetched on demand and registered
|
|
130
|
+
* with ical.js. A backend that has none leaves the time floating, which is
|
|
131
|
+
* ical.js's own fallback and better than refusing the event.
|
|
132
|
+
*/
|
|
133
|
+
async #ensureTimezone(ICAL, cal, tzid) {
|
|
134
|
+
if (!tzid || this.#timezones.has(tzid) || ICAL.TimezoneService.has(tzid)) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.#timezones.add(tzid);
|
|
138
|
+
try {
|
|
139
|
+
const vtz = await cal.GetTimezone(tzid);
|
|
140
|
+
const comp = new ICAL.Component(ICAL.parse(vtz));
|
|
141
|
+
const sub = comp.name === 'vtimezone'
|
|
142
|
+
? comp
|
|
143
|
+
: comp.getFirstSubcomponent('vtimezone');
|
|
144
|
+
if (sub)
|
|
145
|
+
ICAL.TimezoneService.register(tzid, new ICAL.Timezone(sub));
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
/* no definition for it; ical.js falls back to floating time */
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Expanded occurrences between two `Date`s, across the calendars given (or
|
|
153
|
+
* every enabled one). Sorted by start.
|
|
154
|
+
*
|
|
155
|
+
* A backend that is offline or broken contributes an entry in `errors`
|
|
156
|
+
* rather than throwing: one unreachable CalDAV server must not blank a
|
|
157
|
+
* whole month of the user's own local calendar.
|
|
158
|
+
*/
|
|
159
|
+
async eventsBetween(from, to, options = {}) {
|
|
160
|
+
const ICAL = await loadIcal();
|
|
161
|
+
const list = options.calendars ??
|
|
162
|
+
(await this.listCalendars()).filter((c) => c.enabled);
|
|
163
|
+
const query = rangeQuery(from, to);
|
|
164
|
+
const perCalendar = await Promise.all(list.map(async (meta) => {
|
|
165
|
+
try {
|
|
166
|
+
const { cal } = await this.#openCalendar(meta.uid);
|
|
167
|
+
const objects = await cal.GetObjectList(query);
|
|
168
|
+
return {
|
|
169
|
+
events: await this.#expand(ICAL, cal, objects, from, to, meta),
|
|
170
|
+
error: null,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
return {
|
|
175
|
+
events: [],
|
|
176
|
+
error: {
|
|
177
|
+
calendar: meta,
|
|
178
|
+
message: err instanceof Error ? err.message : String(err),
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}));
|
|
183
|
+
const events = [];
|
|
184
|
+
const errors = [];
|
|
185
|
+
for (const chunk of perCalendar) {
|
|
186
|
+
events.push(...chunk.events);
|
|
187
|
+
if (chunk.error)
|
|
188
|
+
errors.push(chunk.error);
|
|
189
|
+
}
|
|
190
|
+
events.sort((a, b) => a.start.getTime() - b.start.getTime());
|
|
191
|
+
return { events, errors };
|
|
192
|
+
}
|
|
193
|
+
async #expand(ICAL, cal, objects, from, to, meta) {
|
|
194
|
+
const out = [];
|
|
195
|
+
for (const ics of objects) {
|
|
196
|
+
let comp;
|
|
197
|
+
try {
|
|
198
|
+
comp = new ICAL.Component(ICAL.parse(ics));
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
continue; // one unparseable object is not the range's problem
|
|
202
|
+
}
|
|
203
|
+
// Register any VTIMEZONE shipped inline, then any referenced by id.
|
|
204
|
+
for (const vtz of comp.getAllSubcomponents('vtimezone')) {
|
|
205
|
+
const tz = new ICAL.Timezone(vtz);
|
|
206
|
+
if (!ICAL.TimezoneService.has(tz.tzid)) {
|
|
207
|
+
ICAL.TimezoneService.register(tz.tzid, tz);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const vevents = comp.name === 'vevent' ? [comp] : comp.getAllSubcomponents('vevent');
|
|
211
|
+
for (const ve of vevents) {
|
|
212
|
+
for (const prop of ['dtstart', 'dtend']) {
|
|
213
|
+
const p = ve.getFirstProperty(prop);
|
|
214
|
+
if (p)
|
|
215
|
+
await this.#ensureTimezone(ICAL, cal, p.getParameter('tzid'));
|
|
216
|
+
}
|
|
217
|
+
const event = new ICAL.Event(ve);
|
|
218
|
+
// folded in by the recurrence iterator below
|
|
219
|
+
if (event.isRecurrenceException())
|
|
220
|
+
continue;
|
|
221
|
+
const push = (startTime, endTime) => {
|
|
222
|
+
const start = startTime.toJSDate();
|
|
223
|
+
const end = endTime ? endTime.toJSDate() : start;
|
|
224
|
+
if (end < from || start >= to)
|
|
225
|
+
return;
|
|
226
|
+
out.push({
|
|
227
|
+
uid: event.uid,
|
|
228
|
+
summary: event.summary || '',
|
|
229
|
+
location: event.location || undefined,
|
|
230
|
+
description: event.description || undefined,
|
|
231
|
+
start,
|
|
232
|
+
end,
|
|
233
|
+
allDay: event.startDate.isDate,
|
|
234
|
+
recurring: event.isRecurring(),
|
|
235
|
+
calendar: { uid: meta.uid, name: meta.name, color: meta.color },
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
if (!event.isRecurring()) {
|
|
239
|
+
push(event.startDate, event.endDate);
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const duration = event.duration;
|
|
243
|
+
const it = event.iterator();
|
|
244
|
+
let next;
|
|
245
|
+
// A malformed RRULE with no UNTIL and a tiny interval can iterate
|
|
246
|
+
// forever; the range check below normally ends it, and this is the
|
|
247
|
+
// backstop for the case where it cannot.
|
|
248
|
+
let guard = 0;
|
|
249
|
+
while ((next = it.next()) && guard++ < 2000) {
|
|
250
|
+
if (next.toJSDate() >= to)
|
|
251
|
+
break;
|
|
252
|
+
const end = next.clone();
|
|
253
|
+
end.addDuration(duration);
|
|
254
|
+
if (end.toJSDate() < from)
|
|
255
|
+
continue;
|
|
256
|
+
const details = event.getOccurrenceDetails(next);
|
|
257
|
+
push(details.startDate, details.endDate);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return out;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Live updates: `onChange` fires whenever anything in the range moves, so
|
|
265
|
+
* the caller can re-query. Returns an unsubscribe function.
|
|
266
|
+
*
|
|
267
|
+
* Deliberately a "something changed" signal rather than a patch — a
|
|
268
|
+
* recurrence master edited three months away can change what today looks
|
|
269
|
+
* like, and re-running the query is both simpler and correct.
|
|
270
|
+
*
|
|
271
|
+
* **Changes only.** What is in the range already is what `eventsBetween`
|
|
272
|
+
* answered; `onChange` fires for what happens after that. See
|
|
273
|
+
* {@link VIEW_FLAGS_NONE} for the loop that reporting the initial contents
|
|
274
|
+
* as a change costs a caller who re-queries on one.
|
|
275
|
+
*/
|
|
276
|
+
async watch(from, to, onChange, options = {}) {
|
|
277
|
+
const list = options.calendars ??
|
|
278
|
+
(await this.listCalendars()).filter((c) => c.enabled);
|
|
279
|
+
const query = rangeQuery(from, to);
|
|
280
|
+
const started = [];
|
|
281
|
+
for (const meta of list) {
|
|
282
|
+
try {
|
|
283
|
+
const { cal, busName } = await this.#openCalendar(meta.uid);
|
|
284
|
+
const viewPath = await cal.GetView(query);
|
|
285
|
+
const view = (await this.#bus
|
|
286
|
+
.getService(busName)
|
|
287
|
+
.getInterface(viewPath, VIEW_IFACE));
|
|
288
|
+
// Belt to `VIEW_FLAGS_NONE`'s braces, for a backend that would not
|
|
289
|
+
// take the flags: `Complete` closes the initial delivery, so anything
|
|
290
|
+
// before it is the replay rather than a change. Only armed when
|
|
291
|
+
// `SetFlags` failed — a view that never reports `Complete` would
|
|
292
|
+
// otherwise be watched in silence, and losing live updates is the
|
|
293
|
+
// worse half of the trade.
|
|
294
|
+
let replaying = false;
|
|
295
|
+
try {
|
|
296
|
+
await view.SetFlags(VIEW_FLAGS_NONE);
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
replaying = true;
|
|
300
|
+
}
|
|
301
|
+
await view.$subscribe('Complete', () => {
|
|
302
|
+
replaying = false;
|
|
303
|
+
});
|
|
304
|
+
for (const signal of [
|
|
305
|
+
'ObjectsAdded',
|
|
306
|
+
'ObjectsModified',
|
|
307
|
+
'ObjectsRemoved',
|
|
308
|
+
]) {
|
|
309
|
+
await view.$subscribe(signal, (objects) => {
|
|
310
|
+
if (replaying)
|
|
311
|
+
return;
|
|
312
|
+
onChange({
|
|
313
|
+
calendar: meta,
|
|
314
|
+
kind: signal,
|
|
315
|
+
count: Array.isArray(objects) ? objects.length : 0,
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
await view.Start();
|
|
320
|
+
started.push(view);
|
|
321
|
+
this.#views.push(view);
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
/* skip a calendar that will not open; the others still update */
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return async () => {
|
|
328
|
+
for (const view of started) {
|
|
329
|
+
this.#views = this.#views.filter((v) => v !== view);
|
|
330
|
+
try {
|
|
331
|
+
await view.Stop();
|
|
332
|
+
await view.Dispose();
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
/* already gone */
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
/** Stop every view this instance started. Does **not** touch the bus. */
|
|
341
|
+
async dispose() {
|
|
342
|
+
const views = this.#views;
|
|
343
|
+
this.#views = [];
|
|
344
|
+
for (const view of views) {
|
|
345
|
+
try {
|
|
346
|
+
await view.Stop();
|
|
347
|
+
await view.Dispose();
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
/* already gone */
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
this.#open.clear();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=eds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eds.js","sourceRoot":"","sources":["../../src/desktop-calendar/eds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/** An `ICAL.Time`. */
|
|
2
|
+
export interface IcalTime {
|
|
3
|
+
toJSDate(): Date;
|
|
4
|
+
clone(): IcalTime;
|
|
5
|
+
addDuration(duration: unknown): void;
|
|
6
|
+
/** True for a date without a time — an all-day event's start. */
|
|
7
|
+
isDate: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface IcalProperty {
|
|
10
|
+
getParameter(name: string): string | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface IcalComponent {
|
|
13
|
+
name: string;
|
|
14
|
+
getFirstSubcomponent(name: string): IcalComponent | null;
|
|
15
|
+
getAllSubcomponents(name: string): IcalComponent[];
|
|
16
|
+
getFirstProperty(name: string): IcalProperty | null;
|
|
17
|
+
}
|
|
18
|
+
export interface IcalRecurExpansion {
|
|
19
|
+
next(): IcalTime | null;
|
|
20
|
+
}
|
|
21
|
+
export interface IcalEvent {
|
|
22
|
+
uid: string;
|
|
23
|
+
summary: string;
|
|
24
|
+
location: string;
|
|
25
|
+
description: string;
|
|
26
|
+
startDate: IcalTime;
|
|
27
|
+
endDate: IcalTime;
|
|
28
|
+
duration: unknown;
|
|
29
|
+
isRecurring(): boolean;
|
|
30
|
+
isRecurrenceException(): boolean;
|
|
31
|
+
iterator(): IcalRecurExpansion;
|
|
32
|
+
getOccurrenceDetails(time: IcalTime): {
|
|
33
|
+
startDate: IcalTime;
|
|
34
|
+
endDate: IcalTime;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface IcalTimezone {
|
|
38
|
+
tzid: string;
|
|
39
|
+
}
|
|
40
|
+
/** What `import('ical.js')` gives back, as far as this package is concerned. */
|
|
41
|
+
export interface IcalModule {
|
|
42
|
+
parse(input: string): unknown;
|
|
43
|
+
Component: new (jcal: unknown) => IcalComponent;
|
|
44
|
+
Event: new (component: IcalComponent) => IcalEvent;
|
|
45
|
+
Timezone: new (component: IcalComponent) => IcalTimezone;
|
|
46
|
+
TimezoneService: {
|
|
47
|
+
has(tzid: string): boolean;
|
|
48
|
+
register(tzid: string, zone: IcalTimezone): void;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Thrown when the calendar is asked for events and `ical.js` is not there. */
|
|
52
|
+
export declare class IcalUnavailableError extends Error {
|
|
53
|
+
constructor(cause?: unknown);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Load `ical.js`, once.
|
|
57
|
+
*
|
|
58
|
+
* Deliberately **not** cached as a rejection: a failed load is almost always
|
|
59
|
+
* "not installed", but retrying costs nothing and a cached rejection would
|
|
60
|
+
* outlive an app that installed it and re-rendered.
|
|
61
|
+
*/
|
|
62
|
+
export declare function loadIcal(): Promise<IcalModule>;
|
|
63
|
+
//# sourceMappingURL=ical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ical.d.ts","sourceRoot":"","sources":["../../src/desktop-calendar/ical.ts"],"names":[],"mappings":"AAWA,sBAAsB;AACtB,MAAM,WAAW,QAAQ;IACvB,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,IAAI,QAAQ,CAAC;IAClB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IACzD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IACnD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,IAAI,OAAO,CAAC;IACvB,qBAAqB,IAAI,OAAO,CAAC;IACjC,QAAQ,IAAI,kBAAkB,CAAC;IAC/B,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG;QACpC,SAAS,EAAE,QAAQ,CAAC;QACpB,OAAO,EAAE,QAAQ,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,SAAS,EAAE,KAAK,IAAI,EAAE,OAAO,KAAK,aAAa,CAAC;IAChD,KAAK,EAAE,KAAK,SAAS,EAAE,aAAa,KAAK,SAAS,CAAC;IACnD,QAAQ,EAAE,KAAK,SAAS,EAAE,aAAa,KAAK,YAAY,CAAC;IACzD,eAAe,EAAE;QACf,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;KAClD,CAAC;CACH;AAED,+EAA+E;AAC/E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,KAAK,CAAC,EAAE,OAAO,EAQ1B;CACF;AAID;;;;;;GAMG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CA4BpD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// The slice of `ical.js` this package uses, and the loader that finds it.
|
|
2
|
+
//
|
|
3
|
+
// **`ical.js` is an `optionalDependency`, and these types are deliberately
|
|
4
|
+
// ours rather than the package's.** `import type … from 'ical.js'` would put
|
|
5
|
+
// the module in the type graph, and then an app that did not install it could
|
|
6
|
+
// not type-check against this package at all — which is the opposite of what
|
|
7
|
+
// "optional" means. So the surface is written out structurally, and the value
|
|
8
|
+
// arrives through a dynamic `import()` that is allowed to fail.
|
|
9
|
+
//
|
|
10
|
+
// react-x11 makes the same call with `dbus-native`, for the same reason.
|
|
11
|
+
/** Thrown when the calendar is asked for events and `ical.js` is not there. */
|
|
12
|
+
export class IcalUnavailableError extends Error {
|
|
13
|
+
constructor(cause) {
|
|
14
|
+
super("@react-x11/components: reading desktop calendar events needs 'ical.js', " +
|
|
15
|
+
'which is an optional dependency and is not installed. ' +
|
|
16
|
+
'Run `npm install ical.js`. Listing calendars does not need it.', { cause });
|
|
17
|
+
this.name = 'IcalUnavailableError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
let cached = null;
|
|
21
|
+
/**
|
|
22
|
+
* Load `ical.js`, once.
|
|
23
|
+
*
|
|
24
|
+
* Deliberately **not** cached as a rejection: a failed load is almost always
|
|
25
|
+
* "not installed", but retrying costs nothing and a cached rejection would
|
|
26
|
+
* outlive an app that installed it and re-rendered.
|
|
27
|
+
*/
|
|
28
|
+
export async function loadIcal() {
|
|
29
|
+
if (cached)
|
|
30
|
+
return cached;
|
|
31
|
+
const attempt = (async () => {
|
|
32
|
+
try {
|
|
33
|
+
// The specifier is built at run time so a bundler treats this as a
|
|
34
|
+
// genuinely optional import and does not fail the build resolving a
|
|
35
|
+
// package the app may well not have.
|
|
36
|
+
const name = 'ical.js';
|
|
37
|
+
const mod = (await import(/* @vite-ignore */ name));
|
|
38
|
+
// ical.js is CJS-with-a-default under some resolutions and a namespace
|
|
39
|
+
// under others; `parse` is on whichever one is real.
|
|
40
|
+
const resolved = typeof mod.parse === 'function' ? mod : mod.default;
|
|
41
|
+
if (!resolved || typeof resolved.parse !== 'function') {
|
|
42
|
+
throw new TypeError('ical.js did not export what was expected');
|
|
43
|
+
}
|
|
44
|
+
return resolved;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
throw new IcalUnavailableError(err);
|
|
48
|
+
}
|
|
49
|
+
})();
|
|
50
|
+
// Only a successful load is remembered.
|
|
51
|
+
cached = attempt.catch((err) => {
|
|
52
|
+
cached = null;
|
|
53
|
+
throw err;
|
|
54
|
+
});
|
|
55
|
+
return cached;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ical.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ical.js","sourceRoot":"","sources":["../../src/desktop-calendar/ical.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AA2DzE,+EAA+E;AAC/E,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,KAAe;QACzB,KAAK,CACH,0EAA0E;YACxE,wDAAwD;YACxD,gEAAgE,EAClE,EAAE,KAAK,EAAE,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,IAAI,MAAM,GAA+B,IAAI,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,KAAK,IAAyB,EAAE;QAC/C,IAAI,CAAC;YACH,mEAAmE;YACnE,oEAAoE;YACpE,qCAAqC;YACrC,MAAM,IAAI,GAAG,SAAS,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAEpC,CAAC;YACf,uEAAuE;YACvE,qDAAqD;YACrD,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACrE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACtD,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,wCAAwC;IACxC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtC,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { CalendarChange, DesktopCalendarError, DesktopCalendarInfo, DesktopEvent } from './eds.js';
|
|
2
|
+
export { DesktopCalendar, parseKeyFile } from './eds.js';
|
|
3
|
+
export type { CalendarChange, DesktopCalendarError, DesktopCalendarInfo, DesktopEvent, EventsResult, } from './eds.js';
|
|
4
|
+
export { IcalUnavailableError } from './ical.js';
|
|
5
|
+
/**
|
|
6
|
+
* Occurrences grouped by the local day they appear on — which is what a
|
|
7
|
+
* calendar grid actually renders.
|
|
8
|
+
*
|
|
9
|
+
* An all-day event spans `[start, end)` across possibly several days, and a
|
|
10
|
+
* timed one can cross midnight, so an event lands under **every** day it
|
|
11
|
+
* touches rather than only under its start.
|
|
12
|
+
*/
|
|
13
|
+
export declare function byDay(events: DesktopEvent[]): Map<string, DesktopEvent[]>;
|
|
14
|
+
export type DesktopCalendarStatus = 'idle' | 'loading' | 'ready' | 'unavailable';
|
|
15
|
+
export interface UseDesktopCalendarEventsOptions {
|
|
16
|
+
/** Start of the window to read, inclusive. */
|
|
17
|
+
from: Date;
|
|
18
|
+
/** End of the window, exclusive. */
|
|
19
|
+
to: Date;
|
|
20
|
+
/** Restrict to these calendar UIDs. Default: every enabled calendar. */
|
|
21
|
+
calendars?: string[];
|
|
22
|
+
/** Re-query when the desktop says something in the range changed. */
|
|
23
|
+
watch?: boolean;
|
|
24
|
+
/** Set false to hold off entirely — a picker that is not open yet. */
|
|
25
|
+
enabled?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface UseDesktopCalendarEventsResult {
|
|
28
|
+
events: DesktopEvent[];
|
|
29
|
+
/** The same events, keyed by `'YYYY-MM-DD'`, ready for `dayContent`. */
|
|
30
|
+
byDay: Map<string, DesktopEvent[]>;
|
|
31
|
+
/** Every calendar found, for a legend or a filter. */
|
|
32
|
+
calendars: DesktopCalendarInfo[];
|
|
33
|
+
/** Backends that would not answer. Not fatal; the rest still loaded. */
|
|
34
|
+
errors: DesktopCalendarError[];
|
|
35
|
+
status: DesktopCalendarStatus;
|
|
36
|
+
/** Why there are no events: no bus, or no `ical.js`. */
|
|
37
|
+
error: Error | null;
|
|
38
|
+
/** Re-query now. */
|
|
39
|
+
refresh: () => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The user's desktop calendar events, as rendering state.
|
|
43
|
+
*
|
|
44
|
+
* ```tsx
|
|
45
|
+
* const { byDay } = useDesktopCalendarEvents({ from, to });
|
|
46
|
+
*
|
|
47
|
+
* <Calendar
|
|
48
|
+
* dayContent={(day, state) =>
|
|
49
|
+
* byDay.get(day)?.slice(0, 3).map((ev) => (
|
|
50
|
+
* <box key={ev.uid} style={{ width: 4, height: 4, borderRadius: 2,
|
|
51
|
+
* backgroundColor: state.selected
|
|
52
|
+
* ? state.color
|
|
53
|
+
* : (ev.calendar.color ?? '$accent') }} />
|
|
54
|
+
* ))
|
|
55
|
+
* }
|
|
56
|
+
* />
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* **`from` and `to` are read by their timestamps, not their identity**, so
|
|
60
|
+
* `new Date(...)` inline in the render is fine and will not re-query on every
|
|
61
|
+
* paint. That is the mistake this hook would otherwise invite, and it costs a
|
|
62
|
+
* D-Bus round trip per frame.
|
|
63
|
+
*
|
|
64
|
+
* `status` is `'unavailable'` when there is no session bus or `ical.js` is not
|
|
65
|
+
* installed — both are ordinary on a machine that simply does not have them,
|
|
66
|
+
* so neither throws, and `error` says which it was. Treat it as "no calendar
|
|
67
|
+
* integration here", not as a failure to report.
|
|
68
|
+
*/
|
|
69
|
+
export declare function useDesktopCalendarEvents(options: UseDesktopCalendarEventsOptions): UseDesktopCalendarEventsResult;
|
|
70
|
+
/** A subscription that only reports *when* something changed. */
|
|
71
|
+
export type { CalendarChange as DesktopCalendarChange };
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/desktop-calendar/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAkBjD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAqBzE;AAED,MAAM,MAAM,qBAAqB,GAC/B,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAE/C,MAAM,WAAW,+BAA+B;IAC9C,8CAA8C;IAC9C,IAAI,EAAE,IAAI,CAAC;IACX,oCAAoC;IACpC,EAAE,EAAE,IAAI,CAAC;IACT,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,wEAAwE;IACxE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACnC,sDAAsD;IACtD,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,wEAAwE;IACxE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,wDAAwD;IACxD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,8BAA8B,CA+HhC;AAED,iEAAiE;AACjE,YAAY,EAAE,cAAc,IAAI,qBAAqB,EAAE,CAAC"}
|