@hienlh/ppm 0.22.1 → 0.22.3
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/CHANGELOG.md +27 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/abap-IN2yINdN.js.br +0 -0
- package/dist/web/assets/abap-IN2yINdN.js.gz +0 -0
- package/dist/web/assets/accounts-settings-section-DbJ7QQg4.js +1 -0
- package/dist/web/assets/accounts-settings-section-DbJ7QQg4.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-DbJ7QQg4.js.gz +0 -0
- package/dist/web/assets/actionscript-3-C_t772eR.js.br +0 -0
- package/dist/web/assets/actionscript-3-C_t772eR.js.gz +0 -0
- package/dist/web/assets/ada-DPme3emm.js.br +0 -0
- package/dist/web/assets/ada-DPme3emm.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-BLPcnhTM.js → ai-resource-editor-B24DvHYZ.js} +1 -1
- package/dist/web/assets/ai-resource-editor-B24DvHYZ.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-B24DvHYZ.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-BgEN9JJn.js +1 -0
- package/dist/web/assets/ai-settings-section-Bq1-gIlM.js +1 -0
- package/dist/web/assets/ai-settings-section-Bq1-gIlM.js.br +0 -0
- package/dist/web/assets/ai-settings-section-Bq1-gIlM.js.gz +0 -0
- package/dist/web/assets/andromeeda-DSV4i4mZ.js.br +0 -0
- package/dist/web/assets/andromeeda-DSV4i4mZ.js.gz +0 -0
- package/dist/web/assets/angular-html-G66FNlyn.js.br +0 -0
- package/dist/web/assets/angular-html-G66FNlyn.js.gz +0 -0
- package/dist/web/assets/angular-ts-B-PnUMyt.js.br +0 -0
- package/dist/web/assets/angular-ts-B-PnUMyt.js.gz +0 -0
- package/dist/web/assets/apache-CWr8s8I8.js.br +0 -0
- package/dist/web/assets/apache-CWr8s8I8.js.gz +0 -0
- package/dist/web/assets/apex-Z20JnDF5.js.br +0 -0
- package/dist/web/assets/apex-Z20JnDF5.js.gz +0 -0
- package/dist/web/assets/{api-client-C1ZwRL4Y.js → api-client-Jn3njtNw.js} +1 -1
- package/dist/web/assets/api-client-Jn3njtNw.js.br +0 -0
- package/dist/web/assets/api-client-Jn3njtNw.js.gz +0 -0
- package/dist/web/assets/api-client-rSFnnCj4.js +1 -0
- package/dist/web/assets/{api-settings-_7Q-ULxp.js → api-settings-BxijvPBR.js} +1 -1
- package/dist/web/assets/api-settings-BxijvPBR.js.br +0 -0
- package/dist/web/assets/api-settings-BxijvPBR.js.gz +0 -0
- package/dist/web/assets/{api-themes-DRAERo4Q.js → api-themes-B3RwKXw-.js} +1 -1
- package/dist/web/assets/apl-BmDqqwE8.js.br +0 -0
- package/dist/web/assets/apl-BmDqqwE8.js.gz +0 -0
- package/dist/web/assets/{appearance-settings-section-CiMdk3sb.js → appearance-settings-section-DEPNZnJ2.js} +1 -1
- package/dist/web/assets/appearance-settings-section-DEPNZnJ2.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-DEPNZnJ2.js.gz +0 -0
- package/dist/web/assets/applescript-BKNPu3ga.js.br +0 -0
- package/dist/web/assets/applescript-BKNPu3ga.js.gz +0 -0
- package/dist/web/assets/ara-hWdY3O96.js.br +0 -0
- package/dist/web/assets/ara-hWdY3O96.js.gz +0 -0
- package/dist/web/assets/asciidoc-eynhq496.js.br +0 -0
- package/dist/web/assets/asciidoc-eynhq496.js.gz +0 -0
- package/dist/web/assets/asm-Bu02Kq4P.js.br +0 -0
- package/dist/web/assets/asm-Bu02Kq4P.js.gz +0 -0
- package/dist/web/assets/astro-BfwMNfxr.js.br +0 -0
- package/dist/web/assets/astro-BfwMNfxr.js.gz +0 -0
- package/dist/web/assets/{audio-preview-DsYvgKqj.js → audio-preview-D9nCryTq.js} +1 -1
- package/dist/web/assets/audio-preview-D9nCryTq.js.br +0 -0
- package/dist/web/assets/audio-preview-D9nCryTq.js.gz +0 -0
- package/dist/web/assets/aurora-x-BHBGXbIZ.js.br +0 -0
- package/dist/web/assets/aurora-x-BHBGXbIZ.js.gz +0 -0
- package/dist/web/assets/awk-B4ojezyv.js.br +0 -0
- package/dist/web/assets/awk-B4ojezyv.js.gz +0 -0
- package/dist/web/assets/ayu-dark-D0GQzFi9.js.br +0 -0
- package/dist/web/assets/ayu-dark-D0GQzFi9.js.gz +0 -0
- package/dist/web/assets/ayu-light-BVYb5Yn8.js.br +0 -0
- package/dist/web/assets/ayu-light-BVYb5Yn8.js.gz +0 -0
- package/dist/web/assets/ayu-mirage-BGFW6oNb.js.br +0 -0
- package/dist/web/assets/ayu-mirage-BGFW6oNb.js.gz +0 -0
- package/dist/web/assets/ballerina-B6Og3IKT.js.br +0 -0
- package/dist/web/assets/ballerina-B6Og3IKT.js.gz +0 -0
- package/dist/web/assets/bat-D8YFILfx.js.br +0 -0
- package/dist/web/assets/bat-D8YFILfx.js.gz +0 -0
- package/dist/web/assets/beancount-BjlbBBuX.js.br +0 -0
- package/dist/web/assets/beancount-BjlbBBuX.js.gz +0 -0
- package/dist/web/assets/berry-Cz1ygeoj.js.br +0 -0
- package/dist/web/assets/berry-Cz1ygeoj.js.gz +0 -0
- package/dist/web/assets/bibtex-CVkJceJh.js.br +0 -0
- package/dist/web/assets/bibtex-CVkJceJh.js.gz +0 -0
- package/dist/web/assets/bicep-DrhYI5GX.js.br +0 -0
- package/dist/web/assets/bicep-DrhYI5GX.js.gz +0 -0
- package/dist/web/assets/bird2-BV-KJtmc.js.br +0 -0
- package/dist/web/assets/bird2-BV-KJtmc.js.gz +0 -0
- package/dist/web/assets/blade-BsFV4pnN.js.br +0 -0
- package/dist/web/assets/blade-BsFV4pnN.js.gz +0 -0
- package/dist/web/assets/{branch-review-tab-B1pFjlKM.js → branch-review-tab-ruiWErmR.js} +1 -1
- package/dist/web/assets/branch-review-tab-ruiWErmR.js.br +0 -0
- package/dist/web/assets/branch-review-tab-ruiWErmR.js.gz +0 -0
- package/dist/web/assets/bsl-Cw9Outng.js.br +0 -0
- package/dist/web/assets/bsl-Cw9Outng.js.gz +0 -0
- package/dist/web/assets/button-B9CTrsEf.js.br +0 -0
- package/dist/web/assets/button-B9CTrsEf.js.gz +0 -0
- package/dist/web/assets/c-CuLlvxbG.js.br +0 -0
- package/dist/web/assets/c-CuLlvxbG.js.gz +0 -0
- package/dist/web/assets/c3-CI7-1CJ0.js.br +0 -0
- package/dist/web/assets/c3-CI7-1CJ0.js.gz +0 -0
- package/dist/web/assets/cadence-DjxhNP3Q.js.br +0 -0
- package/dist/web/assets/cadence-DjxhNP3Q.js.gz +0 -0
- package/dist/web/assets/cairo-DOK5Wqnd.js.br +0 -0
- package/dist/web/assets/cairo-DOK5Wqnd.js.gz +0 -0
- package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.br +0 -0
- package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.gz +0 -0
- package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.br +0 -0
- package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.gz +0 -0
- package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.br +0 -0
- package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.gz +0 -0
- package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.br +0 -0
- package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.gz +0 -0
- package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.br +0 -0
- package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.gz +0 -0
- package/dist/web/assets/chat-tab-BeBe2z3X.js +15 -0
- package/dist/web/assets/chat-tab-BeBe2z3X.js.br +0 -0
- package/dist/web/assets/chat-tab-BeBe2z3X.js.gz +0 -0
- package/dist/web/assets/clarity-BWrJ7UmT.js.br +0 -0
- package/dist/web/assets/clarity-BWrJ7UmT.js.gz +0 -0
- package/dist/web/assets/clojure-C94fh2hb.js.br +0 -0
- package/dist/web/assets/clojure-C94fh2hb.js.gz +0 -0
- package/dist/web/assets/cmake-CtvCkMsG.js.br +0 -0
- package/dist/web/assets/cmake-CtvCkMsG.js.gz +0 -0
- package/dist/web/assets/cobol-DRaRy4FK.js.br +0 -0
- package/dist/web/assets/cobol-DRaRy4FK.js.gz +0 -0
- package/dist/web/assets/code-editor-C7XqHn9o.js +7 -0
- package/dist/web/assets/code-editor-C7XqHn9o.js.br +0 -0
- package/dist/web/assets/code-editor-C7XqHn9o.js.gz +0 -0
- package/dist/web/assets/codeql-BOoP5HY2.js.br +0 -0
- package/dist/web/assets/codeql-BOoP5HY2.js.gz +0 -0
- package/dist/web/assets/{codex-daily-guard-CaCQJ4r_.js → codex-daily-guard-DetGq_en.js} +1 -1
- package/dist/web/assets/codex-daily-guard-DetGq_en.js.br +0 -0
- package/dist/web/assets/codex-daily-guard-DetGq_en.js.gz +0 -0
- package/dist/web/assets/coffee-DvXuBmEJ.js.br +0 -0
- package/dist/web/assets/coffee-DvXuBmEJ.js.gz +0 -0
- package/dist/web/assets/common-lisp-B9nlMFJd.js.br +0 -0
- package/dist/web/assets/common-lisp-B9nlMFJd.js.gz +0 -0
- package/dist/web/assets/{conflict-editor-B7u_p49h.js → conflict-editor-DHUpVDGB.js} +3 -3
- package/dist/web/assets/conflict-editor-DHUpVDGB.js.br +0 -0
- package/dist/web/assets/conflict-editor-DHUpVDGB.js.gz +0 -0
- package/dist/web/assets/context-menu-C6pIsf83.js.br +0 -0
- package/dist/web/assets/context-menu-C6pIsf83.js.gz +0 -0
- package/dist/web/assets/coq-CgzIQiSH.js.br +0 -0
- package/dist/web/assets/coq-CgzIQiSH.js.gz +0 -0
- package/dist/web/assets/cpp-zCmm8rKA.js.br +0 -0
- package/dist/web/assets/cpp-zCmm8rKA.js.gz +0 -0
- package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.br +0 -0
- package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.gz +0 -0
- package/dist/web/assets/crystal-CdQx6lB6.js.br +0 -0
- package/dist/web/assets/crystal-CdQx6lB6.js.gz +0 -0
- package/dist/web/assets/csharp-4xAIx3jw.js.br +0 -0
- package/dist/web/assets/csharp-4xAIx3jw.js.gz +0 -0
- package/dist/web/assets/css-D4YoLYGn.js.br +0 -0
- package/dist/web/assets/css-D4YoLYGn.js.gz +0 -0
- package/dist/web/assets/csv-C2v-ZakW.js.br +0 -0
- package/dist/web/assets/csv-C2v-ZakW.js.gz +0 -0
- package/dist/web/assets/csv-parser-DpCmuupp.js.br +0 -0
- package/dist/web/assets/csv-parser-DpCmuupp.js.gz +0 -0
- package/dist/web/assets/{csv-preview-CttjJU1e.js → csv-preview-DXGt24yG.js} +1 -1
- package/dist/web/assets/csv-preview-DXGt24yG.js.br +0 -0
- package/dist/web/assets/csv-preview-DXGt24yG.js.gz +0 -0
- package/dist/web/assets/cue-Bbznh_an.js.br +0 -0
- package/dist/web/assets/cue-Bbznh_an.js.gz +0 -0
- package/dist/web/assets/cypher-BKhVEARF.js.br +0 -0
- package/dist/web/assets/cypher-BKhVEARF.js.gz +0 -0
- package/dist/web/assets/d-D6IhWopl.js.br +0 -0
- package/dist/web/assets/d-D6IhWopl.js.gz +0 -0
- package/dist/web/assets/dark-plus-xAWu790O.js.br +0 -0
- package/dist/web/assets/dark-plus-xAWu790O.js.gz +0 -0
- package/dist/web/assets/dart-Bj6S9O1j.js.br +0 -0
- package/dist/web/assets/dart-Bj6S9O1j.js.gz +0 -0
- package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.br +0 -0
- package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.gz +0 -0
- package/dist/web/assets/data-grid-types-C5bthITf.js.br +0 -0
- package/dist/web/assets/data-grid-types-C5bthITf.js.gz +0 -0
- package/dist/web/assets/{database-viewer-Ca4HxIfx.js → database-viewer-zMGckF4c.js} +1 -1
- package/dist/web/assets/database-viewer-zMGckF4c.js.br +0 -0
- package/dist/web/assets/database-viewer-zMGckF4c.js.gz +0 -0
- package/dist/web/assets/dax-CF2zvaqq.js.br +0 -0
- package/dist/web/assets/dax-CF2zvaqq.js.gz +0 -0
- package/dist/web/assets/desktop-CnmyxMKE.js.br +0 -0
- package/dist/web/assets/desktop-CnmyxMKE.js.gz +0 -0
- package/dist/web/assets/dialog-B84_DJQ8.js.br +0 -0
- package/dist/web/assets/dialog-B84_DJQ8.js.gz +0 -0
- package/dist/web/assets/diff-Qi8WuJsI.js.br +0 -0
- package/dist/web/assets/diff-Qi8WuJsI.js.gz +0 -0
- package/dist/web/assets/{diff-viewer-9-XjLIwa.js → diff-viewer-D8ORwKJO.js} +1 -1
- package/dist/web/assets/diff-viewer-D8ORwKJO.js.br +0 -0
- package/dist/web/assets/diff-viewer-D8ORwKJO.js.gz +0 -0
- package/dist/web/assets/dist-Bjseolz4.js.br +0 -0
- package/dist/web/assets/dist-Bjseolz4.js.gz +0 -0
- package/dist/web/assets/dist-Czq7BUMy.js.br +0 -0
- package/dist/web/assets/dist-Czq7BUMy.js.gz +0 -0
- package/dist/web/assets/docker-vLbbNP5d.js.br +0 -0
- package/dist/web/assets/docker-vLbbNP5d.js.gz +0 -0
- package/dist/web/assets/{docx-preview-CXuk-emm.js → docx-preview-Gzi4QBez.js} +1 -1
- package/dist/web/assets/docx-preview-Gzi4QBez.js.br +0 -0
- package/dist/web/assets/docx-preview-Gzi4QBez.js.gz +0 -0
- package/dist/web/assets/dotenv-DJMvvNzn.js.br +0 -0
- package/dist/web/assets/dotenv-DJMvvNzn.js.gz +0 -0
- package/dist/web/assets/dracula-CtAh2rhB.js.br +0 -0
- package/dist/web/assets/dracula-CtAh2rhB.js.gz +0 -0
- package/dist/web/assets/dracula-soft-CXtuAAf6.js.br +0 -0
- package/dist/web/assets/dracula-soft-CXtuAAf6.js.gz +0 -0
- package/dist/web/assets/dream-maker-D5YQyK49.js.br +0 -0
- package/dist/web/assets/dream-maker-D5YQyK49.js.gz +0 -0
- package/dist/web/assets/edge-E8QLt7oi.js.br +0 -0
- package/dist/web/assets/edge-E8QLt7oi.js.gz +0 -0
- package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.br +0 -0
- package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.gz +0 -0
- package/dist/web/assets/{editor-language-service-D0DuEOs_.js → editor-language-service-DlXOJKTM.js} +1 -1
- package/dist/web/assets/editor-language-service-DlXOJKTM.js.br +0 -0
- package/dist/web/assets/editor-language-service-DlXOJKTM.js.gz +0 -0
- package/dist/web/assets/elixir-DPb_-72P.js.br +0 -0
- package/dist/web/assets/elixir-DPb_-72P.js.gz +0 -0
- package/dist/web/assets/elm-BMzJY5b0.js.br +0 -0
- package/dist/web/assets/elm-BMzJY5b0.js.gz +0 -0
- package/dist/web/assets/emacs-lisp-CGTjbiqF.js.br +0 -0
- package/dist/web/assets/emacs-lisp-CGTjbiqF.js.gz +0 -0
- package/dist/web/assets/erb-AABQNtMK.js.br +0 -0
- package/dist/web/assets/erb-AABQNtMK.js.gz +0 -0
- package/dist/web/assets/erlang-CEIKOkfP.js.br +0 -0
- package/dist/web/assets/erlang-CEIKOkfP.js.gz +0 -0
- package/dist/web/assets/esm-B9RVMpwV.js.br +0 -0
- package/dist/web/assets/esm-B9RVMpwV.js.gz +0 -0
- package/dist/web/assets/everforest-dark-D59p7vAQ.js.br +0 -0
- package/dist/web/assets/everforest-dark-D59p7vAQ.js.gz +0 -0
- package/dist/web/assets/everforest-light-B3Qtud3V.js.br +0 -0
- package/dist/web/assets/everforest-light-B3Qtud3V.js.gz +0 -0
- package/dist/web/assets/explorer-body-CvLKavSL.js +2 -0
- package/dist/web/assets/explorer-body-CvLKavSL.js.br +0 -0
- package/dist/web/assets/explorer-body-CvLKavSL.js.gz +0 -0
- package/dist/web/assets/explorer-window-content-DLPV_kMF.js +1 -0
- package/dist/web/assets/explorer-window-content-DLPV_kMF.js.br +0 -0
- package/dist/web/assets/explorer-window-content-DLPV_kMF.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-HkY7geS5.js → extension-manager-section-CAy3LVt7.js} +1 -1
- package/dist/web/assets/extension-manager-section-CAy3LVt7.js.br +0 -0
- package/dist/web/assets/extension-manager-section-CAy3LVt7.js.gz +0 -0
- package/dist/web/assets/{extension-webview-DZG8YHX9.js → extension-webview-BHg6PTCh.js} +1 -1
- package/dist/web/assets/extension-webview-BHg6PTCh.js.br +0 -0
- package/dist/web/assets/extension-webview-BHg6PTCh.js.gz +0 -0
- package/dist/web/assets/fennel-BCyHNUwf.js.br +0 -0
- package/dist/web/assets/fennel-BCyHNUwf.js.gz +0 -0
- package/dist/web/assets/{file-icons-BXdvggK2.js → file-icons-wS-OmEVu.js} +1 -1
- package/dist/web/assets/file-icons-wS-OmEVu.js.br +0 -0
- package/dist/web/assets/file-icons-wS-OmEVu.js.gz +0 -0
- package/dist/web/assets/file-icons.generated-BtBErEwb.css.br +0 -0
- package/dist/web/assets/file-icons.generated-BtBErEwb.css.gz +0 -0
- package/dist/web/assets/{file-store-ojgMXgAw.js → file-store-Ds3qJ4hC.js} +1 -1
- package/dist/web/assets/file-store-Ds3qJ4hC.js.br +0 -0
- package/dist/web/assets/file-store-Ds3qJ4hC.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-qnRtkX05.js → files-settings-section-ND3D08W7.js} +1 -1
- package/dist/web/assets/files-settings-section-ND3D08W7.js.br +0 -0
- package/dist/web/assets/files-settings-section-ND3D08W7.js.gz +0 -0
- package/dist/web/assets/fish-DDDlLV2G.js.br +0 -0
- package/dist/web/assets/fish-DDDlLV2G.js.gz +0 -0
- package/dist/web/assets/fluent-By54R9tl.js.br +0 -0
- package/dist/web/assets/fluent-By54R9tl.js.gz +0 -0
- package/dist/web/assets/{format-file-meta-C77h04cZ.js → format-file-meta-PPi3ptkm.js} +1 -1
- package/dist/web/assets/format-file-meta-PPi3ptkm.js.br +0 -0
- package/dist/web/assets/format-file-meta-PPi3ptkm.js.gz +0 -0
- package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.br +0 -0
- package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.gz +0 -0
- package/dist/web/assets/fortran-free-form-tP8mRym_.js.br +0 -0
- package/dist/web/assets/fortran-free-form-tP8mRym_.js.gz +0 -0
- package/dist/web/assets/fsharp-DCI4qAz_.js.br +0 -0
- package/dist/web/assets/fsharp-DCI4qAz_.js.gz +0 -0
- package/dist/web/assets/gdresource-Vb2kO1MG.js.br +0 -0
- package/dist/web/assets/gdresource-Vb2kO1MG.js.gz +0 -0
- package/dist/web/assets/gdscript-nHC2z6Te.js.br +0 -0
- package/dist/web/assets/gdscript-nHC2z6Te.js.gz +0 -0
- package/dist/web/assets/gdshader-K-cSmPlW.js.br +0 -0
- package/dist/web/assets/gdshader-K-cSmPlW.js.gz +0 -0
- package/dist/web/assets/general-settings-section-SJbTkh0b.js +1 -0
- package/dist/web/assets/general-settings-section-SJbTkh0b.js.br +0 -0
- package/dist/web/assets/general-settings-section-SJbTkh0b.js.gz +0 -0
- package/dist/web/assets/genie-BAcRhvEe.js.br +0 -0
- package/dist/web/assets/genie-BAcRhvEe.js.gz +0 -0
- package/dist/web/assets/gherkin-CcifxMLb.js.br +0 -0
- package/dist/web/assets/gherkin-CcifxMLb.js.gz +0 -0
- package/dist/web/assets/git-commit-BMI_OWn-.js.br +0 -0
- package/dist/web/assets/git-commit-BMI_OWn-.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-2sGpfEla.js → git-log-panel-_yL7W4EQ.js} +1 -1
- package/dist/web/assets/git-log-panel-_yL7W4EQ.js.br +0 -0
- package/dist/web/assets/git-log-panel-_yL7W4EQ.js.gz +0 -0
- package/dist/web/assets/{git-repo-store-88Z8v-pF.js → git-repo-store-BCEPfUGT.js} +1 -1
- package/dist/web/assets/git-repo-store-BCEPfUGT.js.br +0 -0
- package/dist/web/assets/git-repo-store-BCEPfUGT.js.gz +0 -0
- package/dist/web/assets/github-dark-67KKlMdB.js.br +0 -0
- package/dist/web/assets/github-dark-67KKlMdB.js.gz +0 -0
- package/dist/web/assets/github-dark-default-tja8pidR.js.br +0 -0
- package/dist/web/assets/github-dark-default-tja8pidR.js.gz +0 -0
- package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.br +0 -0
- package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.gz +0 -0
- package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.br +0 -0
- package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.gz +0 -0
- package/dist/web/assets/github-light-CbJxE7n3.js.br +0 -0
- package/dist/web/assets/github-light-CbJxE7n3.js.gz +0 -0
- package/dist/web/assets/github-light-default-DRQmdHxt.js.br +0 -0
- package/dist/web/assets/github-light-default-DRQmdHxt.js.gz +0 -0
- package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.br +0 -0
- package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.gz +0 -0
- package/dist/web/assets/gleam-D4LCl2ri.js.br +0 -0
- package/dist/web/assets/gleam-D4LCl2ri.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-f0hyITiF.js → glide-data-grid-CfH4uK1t.js} +4 -4
- package/dist/web/assets/glide-data-grid-CfH4uK1t.js.br +0 -0
- package/dist/web/assets/glide-data-grid-CfH4uK1t.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-nthEL3fk.css.br +0 -0
- package/dist/web/assets/glide-data-grid-nthEL3fk.css.gz +0 -0
- package/dist/web/assets/glimmer-js-BmNNiR0Z.js.br +0 -0
- package/dist/web/assets/glimmer-js-BmNNiR0Z.js.gz +0 -0
- package/dist/web/assets/glimmer-ts-DQE2Ufha.js.br +0 -0
- package/dist/web/assets/glimmer-ts-DQE2Ufha.js.gz +0 -0
- package/dist/web/assets/glsl-BcIDsxRJ.js.br +0 -0
- package/dist/web/assets/glsl-BcIDsxRJ.js.gz +0 -0
- package/dist/web/assets/gn-COY8zZmC.js.br +0 -0
- package/dist/web/assets/gn-COY8zZmC.js.gz +0 -0
- package/dist/web/assets/gnuplot-ROk1VitR.js.br +0 -0
- package/dist/web/assets/gnuplot-ROk1VitR.js.gz +0 -0
- package/dist/web/assets/go-H30c3p0C.js.br +0 -0
- package/dist/web/assets/go-H30c3p0C.js.gz +0 -0
- package/dist/web/assets/graphql-DGKSLmGH.js.br +0 -0
- package/dist/web/assets/graphql-DGKSLmGH.js.gz +0 -0
- package/dist/web/assets/groovy-DBLCaelV.js.br +0 -0
- package/dist/web/assets/groovy-DBLCaelV.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-CprxuYA-.js +1 -0
- package/dist/web/assets/group-chat-tab-CprxuYA-.js.br +0 -0
- package/dist/web/assets/group-chat-tab-CprxuYA-.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.br +0 -0
- package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.br +0 -0
- package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.br +0 -0
- package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.gz +0 -0
- package/dist/web/assets/hack-YiC8bEIb.js.br +0 -0
- package/dist/web/assets/hack-YiC8bEIb.js.gz +0 -0
- package/dist/web/assets/haml-DjblxAsz.js.br +0 -0
- package/dist/web/assets/haml-DjblxAsz.js.gz +0 -0
- package/dist/web/assets/handlebars-BQepOXaU.js.br +0 -0
- package/dist/web/assets/handlebars-BQepOXaU.js.gz +0 -0
- package/dist/web/assets/haskell-DA1JV-MC.js.br +0 -0
- package/dist/web/assets/haskell-DA1JV-MC.js.gz +0 -0
- package/dist/web/assets/haxe-V9RTRc5E.js.br +0 -0
- package/dist/web/assets/haxe-V9RTRc5E.js.gz +0 -0
- package/dist/web/assets/hcl-hr1lyZ10.js.br +0 -0
- package/dist/web/assets/hcl-hr1lyZ10.js.gz +0 -0
- package/dist/web/assets/hjson-D3vW3i7X.js.br +0 -0
- package/dist/web/assets/hjson-D3vW3i7X.js.gz +0 -0
- package/dist/web/assets/hlsl-BB85gfJT.js.br +0 -0
- package/dist/web/assets/hlsl-BB85gfJT.js.gz +0 -0
- package/dist/web/assets/horizon-DU8OOnj8.js.br +0 -0
- package/dist/web/assets/horizon-DU8OOnj8.js.gz +0 -0
- package/dist/web/assets/horizon-bright-DNMUclW6.js.br +0 -0
- package/dist/web/assets/horizon-bright-DNMUclW6.js.gz +0 -0
- package/dist/web/assets/houston-DAiZKf6T.js.br +0 -0
- package/dist/web/assets/houston-DAiZKf6T.js.gz +0 -0
- package/dist/web/assets/html-Cayj_2GP.js.br +0 -0
- package/dist/web/assets/html-Cayj_2GP.js.gz +0 -0
- package/dist/web/assets/http-BeLfdGdz.js.br +0 -0
- package/dist/web/assets/http-BeLfdGdz.js.gz +0 -0
- package/dist/web/assets/hurl-D9rypCLK.js.br +0 -0
- package/dist/web/assets/hurl-D9rypCLK.js.gz +0 -0
- package/dist/web/assets/hxml-clG8mmSH.js.br +0 -0
- package/dist/web/assets/hxml-clG8mmSH.js.gz +0 -0
- package/dist/web/assets/hy-C6Zv0LMe.js.br +0 -0
- package/dist/web/assets/hy-C6Zv0LMe.js.gz +0 -0
- package/dist/web/assets/icons-DQjqk0lJ.js.br +0 -0
- package/dist/web/assets/icons-DQjqk0lJ.js.gz +0 -0
- package/dist/web/assets/{image-preview-CzCc4_Do.js → image-preview-xFLgpolc.js} +1 -1
- package/dist/web/assets/imba-Didnp6Y-.js.br +0 -0
- package/dist/web/assets/imba-Didnp6Y-.js.gz +0 -0
- package/dist/web/assets/index-8M7JWSZx.js +52 -0
- package/dist/web/assets/index-8M7JWSZx.js.br +0 -0
- package/dist/web/assets/index-8M7JWSZx.js.gz +0 -0
- package/dist/web/assets/index-CWL5emyr.css +1 -0
- package/dist/web/assets/index-CWL5emyr.css.br +0 -0
- package/dist/web/assets/index-CWL5emyr.css.gz +0 -0
- package/dist/web/assets/ini-m0T7q4gQ.js.br +5 -0
- package/dist/web/assets/ini-m0T7q4gQ.js.gz +0 -0
- package/dist/web/assets/java-Buy07jGn.js.br +0 -0
- package/dist/web/assets/java-Buy07jGn.js.gz +0 -0
- package/dist/web/assets/javascript-Cjq3CbRL.js.br +0 -0
- package/dist/web/assets/javascript-Cjq3CbRL.js.gz +0 -0
- package/dist/web/assets/jinja-BShBWfs5.js.br +0 -0
- package/dist/web/assets/jinja-BShBWfs5.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-CeLmhvu1.js → jira-watcher-section-_pTAalcO.js} +1 -1
- package/dist/web/assets/jira-watcher-section-_pTAalcO.js.br +0 -0
- package/dist/web/assets/jira-watcher-section-_pTAalcO.js.gz +0 -0
- package/dist/web/assets/jison-dN2Nf_Dr.js.br +0 -0
- package/dist/web/assets/jison-dN2Nf_Dr.js.gz +0 -0
- package/dist/web/assets/json-BSVu8IqD.js.br +0 -0
- package/dist/web/assets/json-BSVu8IqD.js.gz +0 -0
- package/dist/web/assets/json5-NN_Vb7e6.js.br +0 -0
- package/dist/web/assets/json5-NN_Vb7e6.js.gz +0 -0
- package/dist/web/assets/jsonc-BdyZhBUw.js.br +0 -0
- package/dist/web/assets/jsonc-BdyZhBUw.js.gz +0 -0
- package/dist/web/assets/jsonl-BsDSNvwi.js.br +0 -0
- package/dist/web/assets/jsonl-BsDSNvwi.js.gz +0 -0
- package/dist/web/assets/jsonnet-Gm963F-U.js.br +0 -0
- package/dist/web/assets/jsonnet-Gm963F-U.js.gz +0 -0
- package/dist/web/assets/jssm-Ds3bKWgJ.js.br +0 -0
- package/dist/web/assets/jssm-Ds3bKWgJ.js.gz +0 -0
- package/dist/web/assets/jsx-BT5mW58X.js.br +0 -0
- package/dist/web/assets/jsx-BT5mW58X.js.gz +0 -0
- package/dist/web/assets/julia-5U0vR-uJ.js.br +0 -0
- package/dist/web/assets/julia-5U0vR-uJ.js.gz +0 -0
- package/dist/web/assets/just-BMppVRy6.js.br +0 -0
- package/dist/web/assets/just-BMppVRy6.js.gz +0 -0
- package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.br +0 -0
- package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.gz +0 -0
- package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.br +0 -0
- package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.gz +0 -0
- package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.br +0 -0
- package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.gz +0 -0
- package/dist/web/assets/kdl-Bx4kZef-.js.br +0 -0
- package/dist/web/assets/kdl-Bx4kZef-.js.gz +0 -0
- package/dist/web/assets/keybindings-store-BwDohs5S.js +1 -0
- package/dist/web/assets/{keyboard-shortcuts-section-PVz6kuh2.js → keyboard-shortcuts-section-DpW1qIXk.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-DpW1qIXk.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-DpW1qIXk.js.gz +0 -0
- package/dist/web/assets/kotlin-qvaVvCcm.js.br +0 -0
- package/dist/web/assets/kotlin-qvaVvCcm.js.gz +0 -0
- package/dist/web/assets/kusto-BPLyNCN6.js.br +0 -0
- package/dist/web/assets/kusto-BPLyNCN6.js.gz +0 -0
- package/dist/web/assets/laserwave-Sf8ZEhWP.js.br +0 -0
- package/dist/web/assets/laserwave-Sf8ZEhWP.js.gz +0 -0
- package/dist/web/assets/latex-DSSOKjis.js.br +0 -0
- package/dist/web/assets/latex-DSSOKjis.js.gz +0 -0
- package/dist/web/assets/lean-DGe6uqgk.js.br +0 -0
- package/dist/web/assets/lean-DGe6uqgk.js.gz +0 -0
- package/dist/web/assets/less-CqM85x-9.js.br +0 -0
- package/dist/web/assets/less-CqM85x-9.js.gz +0 -0
- package/dist/web/assets/lib-DBeVwCnC.js.br +0 -0
- package/dist/web/assets/lib-DBeVwCnC.js.gz +0 -0
- package/dist/web/assets/libesm-CPh1Av0r.js.br +0 -0
- package/dist/web/assets/libesm-CPh1Av0r.js.gz +0 -0
- package/dist/web/assets/light-plus-DBtKwhFA.js.br +0 -0
- package/dist/web/assets/light-plus-DBtKwhFA.js.gz +0 -0
- package/dist/web/assets/liquid-C24dKoyI.js.br +0 -0
- package/dist/web/assets/liquid-C24dKoyI.js.gz +0 -0
- package/dist/web/assets/llvm-Dpbq3gky.js.br +0 -0
- package/dist/web/assets/llvm-Dpbq3gky.js.gz +0 -0
- package/dist/web/assets/log-qKMcPm9S.js.br +0 -0
- package/dist/web/assets/log-qKMcPm9S.js.gz +0 -0
- package/dist/web/assets/logo-DFo7i5KH.js.br +0 -0
- package/dist/web/assets/logo-DFo7i5KH.js.gz +0 -0
- package/dist/web/assets/lua-DNOsnyhn.js.br +0 -0
- package/dist/web/assets/lua-DNOsnyhn.js.gz +0 -0
- package/dist/web/assets/luau-DGlqWFyL.js.br +0 -0
- package/dist/web/assets/luau-DGlqWFyL.js.gz +0 -0
- package/dist/web/assets/make-CixdvUQe.js.br +0 -0
- package/dist/web/assets/make-CixdvUQe.js.gz +0 -0
- package/dist/web/assets/markdown-CmRnbngE.js.br +0 -0
- package/dist/web/assets/markdown-CmRnbngE.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-BzkIv5_4.js +1 -0
- package/dist/web/assets/markdown-renderer-CjEg_HGP.js +3 -0
- package/dist/web/assets/markdown-renderer-CjEg_HGP.js.br +0 -0
- package/dist/web/assets/markdown-renderer-CjEg_HGP.js.gz +0 -0
- package/dist/web/assets/marko-26MHO_Q9.js.br +0 -0
- package/dist/web/assets/marko-26MHO_Q9.js.gz +0 -0
- package/dist/web/assets/material-theme-WDUbafB-.js.br +0 -0
- package/dist/web/assets/material-theme-WDUbafB-.js.gz +0 -0
- package/dist/web/assets/material-theme-darker-u8y2xpOk.js.br +0 -0
- package/dist/web/assets/material-theme-darker-u8y2xpOk.js.gz +0 -0
- package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.br +0 -0
- package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.gz +0 -0
- package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.br +0 -0
- package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.gz +0 -0
- package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.br +0 -0
- package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.gz +0 -0
- package/dist/web/assets/matlab-B38sOJee.js.br +0 -0
- package/dist/web/assets/matlab-B38sOJee.js.gz +0 -0
- package/dist/web/assets/mdc-Dhw9mGrC.js.br +0 -0
- package/dist/web/assets/mdc-Dhw9mGrC.js.gz +0 -0
- package/dist/web/assets/mdx-C8QrE_IW.js.br +0 -0
- package/dist/web/assets/mdx-C8QrE_IW.js.gz +0 -0
- package/dist/web/assets/{media-url-yfqHpPz0.js → media-url-BmIBOO3z.js} +1 -1
- package/dist/web/assets/mermaid-BQ-eeU8A.js.br +0 -0
- package/dist/web/assets/mermaid-BQ-eeU8A.js.gz +0 -0
- package/dist/web/assets/min-dark-D4gNa5tv.js.br +0 -0
- package/dist/web/assets/min-dark-D4gNa5tv.js.gz +0 -0
- package/dist/web/assets/min-light-Dfbhn_PL.js.br +0 -0
- package/dist/web/assets/min-light-Dfbhn_PL.js.gz +0 -0
- package/dist/web/assets/mipsasm-bLOhJkdm.js.br +0 -0
- package/dist/web/assets/mipsasm-bLOhJkdm.js.gz +0 -0
- package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.br +0 -0
- package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-CUG_owdf.js → mobile-explorer-sheet-DjeEB2i8.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-DjeEB2i8.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-DjeEB2i8.js.gz +0 -0
- package/dist/web/assets/mojo-B0BCOMQW.js.br +0 -0
- package/dist/web/assets/mojo-B0BCOMQW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js +1 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.br +0 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.gz +0 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js +1 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.br +0 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.gz +0 -0
- package/dist/web/assets/monaco/vs/azcli-BA0tQDCg.js +1 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.br +0 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.gz +0 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js +1 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js.br +0 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js.gz +0 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js +2 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.br +0 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js +1 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.br +0 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.gz +0 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js +1 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.br +0 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js +1 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.br +0 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js +1 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.br +0 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.gz +0 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js +1 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.br +0 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.gz +0 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js +1 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.br +0 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js +3 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.br +0 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.br +0 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js +1 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.br +0 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.gz +0 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js +1 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.br +0 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.gz +0 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js +1 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.br +0 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js +1 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js.br +0 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css +1 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css.br +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css.gz +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js +5 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js.br +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js.gz +0 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js +903 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.br +0 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.gz +0 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js +1 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.br +0 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.gz +0 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js +1 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.br +0 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.br +0 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.gz +0 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js +1 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.br +0 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js +1 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.br +0 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js +1 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.br +0 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.gz +0 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js +1 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.br +0 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js +1 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.br +0 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js +1 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.br +0 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.br +0 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js +1 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.br +0 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.gz +0 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js +1 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.br +0 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.gz +0 -0
- package/dist/web/assets/monaco/vs/javascript-PczUCGdz.js +1 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js +7 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.br +0 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js +1 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.br +0 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js +1 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.br +0 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.gz +0 -0
- package/dist/web/assets/monaco/vs/language/css/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/html/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/json/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/typescript/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js +2 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.br +0 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js +1 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.br +0 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.gz +0 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js +1 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.br +0 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.gz +0 -0
- package/dist/web/assets/monaco/vs/loader.js +1368 -0
- package/dist/web/assets/monaco/vs/loader.js.br +0 -0
- package/dist/web/assets/monaco/vs/loader.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.br +0 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js +1 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js.br +0 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js.gz +0 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js +1 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.br +0 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.gz +0 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js +1 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.br +0 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js +1 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.br +0 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js +1 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.br +0 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.gz +0 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js +1 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.br +0 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js +1 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.br +0 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.gz +0 -0
- package/dist/web/assets/monaco/vs/nls.messages-loader.js +1 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js +1 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.br +0 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js +1 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.br +0 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.br +0 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.gz +0 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js +1 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.br +0 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js +1 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.br +0 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js +1 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.br +0 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js +1 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.br +0 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.gz +0 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js +1 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.br +0 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.br +0 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js +1 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.br +0 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js +2 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.br +0 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js +1 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.br +0 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.gz +0 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js +1 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.br +0 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.gz +0 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js +1 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.br +0 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.gz +0 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js +1 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.br +0 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.gz +0 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js +1 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.br +0 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.gz +0 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js +1 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.br +0 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.gz +0 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js +1 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.br +0 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.gz +0 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.br +0 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js +1 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.br +0 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.gz +0 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js +1 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.br +0 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js +1 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js.br +0 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js +1 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.br +0 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js +1 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.br +0 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js +3 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.br +0 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.gz +0 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js +1 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.br +0 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js +1 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.br +0 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js +1 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.br +0 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js +1 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.br +0 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js +1 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.br +0 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.gz +0 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js +1 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.br +0 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.gz +0 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js +3 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js.br +0 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js.gz +0 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.br +0 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js +1 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.br +0 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.gz +0 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js +11 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.br +0 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js +1 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.br +0 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.gz +0 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js +1 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.br +0 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.gz +0 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js +1 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.br +0 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js +1 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.br +0 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.gz +0 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js +298 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.br +0 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.gz +0 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js +1 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.br +0 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.gz +0 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js +1 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.br +0 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.gz +0 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js +1 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.br +0 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.gz +0 -0
- package/dist/web/assets/monokai-Bdw_07OM.js.br +0 -0
- package/dist/web/assets/monokai-Bdw_07OM.js.gz +0 -0
- package/dist/web/assets/moonbit-BFdGaeuk.js.br +0 -0
- package/dist/web/assets/moonbit-BFdGaeuk.js.gz +0 -0
- package/dist/web/assets/move-CyXQFGPM.js.br +0 -0
- package/dist/web/assets/move-CyXQFGPM.js.gz +0 -0
- package/dist/web/assets/narrat-9DvTD3_3.js.br +0 -0
- package/dist/web/assets/narrat-9DvTD3_3.js.gz +0 -0
- package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.br +0 -0
- package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.gz +0 -0
- package/dist/web/assets/nextflow-xH4oJTex.js.br +0 -0
- package/dist/web/assets/nextflow-xH4oJTex.js.gz +0 -0
- package/dist/web/assets/nginx-CMz4w0M8.js.br +0 -0
- package/dist/web/assets/nginx-CMz4w0M8.js.gz +0 -0
- package/dist/web/assets/night-owl-feYm66V0.js.br +0 -0
- package/dist/web/assets/night-owl-feYm66V0.js.gz +0 -0
- package/dist/web/assets/night-owl-light-DALqFjvx.js.br +0 -0
- package/dist/web/assets/night-owl-light-DALqFjvx.js.gz +0 -0
- package/dist/web/assets/nim-D8FnIYsx.js.br +0 -0
- package/dist/web/assets/nim-D8FnIYsx.js.gz +0 -0
- package/dist/web/assets/nix-C1kPA9Sw.js.br +0 -0
- package/dist/web/assets/nix-C1kPA9Sw.js.gz +0 -0
- package/dist/web/assets/nord-1dvrj1Al.js.br +0 -0
- package/dist/web/assets/nord-1dvrj1Al.js.gz +0 -0
- package/dist/web/assets/notification-store-D8VycLI7.js +1 -0
- package/dist/web/assets/{notifications-settings-section-DqlPDfNX.js → notifications-settings-section-4gjKK-DH.js} +1 -1
- package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.br +5 -0
- package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.gz +0 -0
- package/dist/web/assets/number-overlay-editor-CRGwULhR.js.br +0 -0
- package/dist/web/assets/number-overlay-editor-CRGwULhR.js.gz +0 -0
- package/dist/web/assets/nushell-DSQ_9Uqj.js.br +0 -0
- package/dist/web/assets/nushell-DSQ_9Uqj.js.gz +0 -0
- package/dist/web/assets/objective-c-Dhcn5ZK8.js.br +0 -0
- package/dist/web/assets/objective-c-Dhcn5ZK8.js.gz +0 -0
- package/dist/web/assets/objective-cpp-CGVYCSrp.js.br +0 -0
- package/dist/web/assets/objective-cpp-CGVYCSrp.js.gz +0 -0
- package/dist/web/assets/ocaml-rxXW21An.js.br +0 -0
- package/dist/web/assets/ocaml-rxXW21An.js.gz +0 -0
- package/dist/web/assets/odin-ClSJX2DE.js.br +0 -0
- package/dist/web/assets/odin-ClSJX2DE.js.gz +0 -0
- package/dist/web/assets/onboarding-entry-kqfwlUXT.js +1 -0
- package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js +1 -0
- package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.br +0 -0
- package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.gz +0 -0
- package/dist/web/assets/one-dark-pro-3gbWDfFW.js.br +0 -0
- package/dist/web/assets/one-dark-pro-3gbWDfFW.js.gz +0 -0
- package/dist/web/assets/one-light-C2q5ZZAw.js.br +0 -0
- package/dist/web/assets/one-light-C2q5ZZAw.js.gz +0 -0
- package/dist/web/assets/openscad-eHXeafBl.js.br +0 -0
- package/dist/web/assets/openscad-eHXeafBl.js.gz +0 -0
- package/dist/web/assets/{overview-panel-Di-3aV9p.js → overview-panel-CF7BuqLZ.js} +1 -1
- package/dist/web/assets/overview-panel-CF7BuqLZ.js.br +0 -0
- package/dist/web/assets/overview-panel-CF7BuqLZ.js.gz +0 -0
- package/dist/web/assets/panel-store-D20Zuf3i.js +1 -0
- package/dist/web/assets/panel-store-D20Zuf3i.js.br +0 -0
- package/dist/web/assets/panel-store-D20Zuf3i.js.gz +0 -0
- package/dist/web/assets/pascal-kKha3Txs.js.br +0 -0
- package/dist/web/assets/pascal-kKha3Txs.js.gz +0 -0
- package/dist/web/assets/{pdf-preview-CmBI6E7d.js → pdf-preview-OvVOptPh.js} +1 -1
- package/dist/web/assets/pdf-preview-OvVOptPh.js.br +0 -0
- package/dist/web/assets/pdf-preview-OvVOptPh.js.gz +0 -0
- package/dist/web/assets/perl-D9iNWYwb.js.br +0 -0
- package/dist/web/assets/perl-D9iNWYwb.js.gz +0 -0
- package/dist/web/assets/php-Bw3Qo0Zv.js.br +0 -0
- package/dist/web/assets/php-Bw3Qo0Zv.js.gz +0 -0
- package/dist/web/assets/pkl-CTiPytg-.js.br +0 -0
- package/dist/web/assets/pkl-CTiPytg-.js.gz +0 -0
- package/dist/web/assets/plastic-D1Ygezi4.js.br +0 -0
- package/dist/web/assets/plastic-D1Ygezi4.js.gz +0 -0
- package/dist/web/assets/plsql-D_gbgZIr.js.br +0 -0
- package/dist/web/assets/plsql-D_gbgZIr.js.gz +0 -0
- package/dist/web/assets/po-BkhbDUnq.js.br +0 -0
- package/dist/web/assets/po-BkhbDUnq.js.gz +0 -0
- package/dist/web/assets/poimandres-Do6NywrA.js.br +0 -0
- package/dist/web/assets/poimandres-Do6NywrA.js.gz +0 -0
- package/dist/web/assets/polar-B3B23wca.js.br +0 -0
- package/dist/web/assets/polar-B3B23wca.js.gz +0 -0
- package/dist/web/assets/postcss-Dv_YBvWd.js.br +0 -0
- package/dist/web/assets/postcss-Dv_YBvWd.js.gz +0 -0
- package/dist/web/assets/{postgres-viewer-8ZAqEALv.js → postgres-viewer-DBwUXRLA.js} +1 -1
- package/dist/web/assets/postgres-viewer-DBwUXRLA.js.br +0 -0
- package/dist/web/assets/postgres-viewer-DBwUXRLA.js.gz +0 -0
- package/dist/web/assets/powerquery-fKJWI-Sh.js.br +0 -0
- package/dist/web/assets/powerquery-fKJWI-Sh.js.gz +0 -0
- package/dist/web/assets/powershell-B4Y7KIgx.js.br +0 -0
- package/dist/web/assets/powershell-B4Y7KIgx.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-Cji-Mil-.js → ppmbot-settings-section-ByROaaIk.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-ByROaaIk.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-ByROaaIk.js.gz +0 -0
- package/dist/web/assets/prisma-J--XdTXX.js.br +0 -0
- package/dist/web/assets/prisma-J--XdTXX.js.gz +0 -0
- package/dist/web/assets/problems-panel-D-iHH0j8.js +1 -0
- package/dist/web/assets/problems-panel-D-iHH0j8.js.br +0 -0
- package/dist/web/assets/problems-panel-D-iHH0j8.js.gz +0 -0
- package/dist/web/assets/{process-table-CiIqlOIK.js → process-table-CSgGG2La.js} +1 -1
- package/dist/web/assets/process-table-CSgGG2La.js.br +0 -0
- package/dist/web/assets/process-table-CSgGG2La.js.gz +0 -0
- package/dist/web/assets/{project-framework-store-B70Q3dNM.js → project-framework-store-ViZgce6y.js} +1 -1
- package/dist/web/assets/{project-store-B87hLRSk.js → project-store-hNvwfqX3.js} +1 -1
- package/dist/web/assets/project-store-hNvwfqX3.js.br +0 -0
- package/dist/web/assets/project-store-hNvwfqX3.js.gz +0 -0
- package/dist/web/assets/prolog-BBTg4Vb3.js.br +0 -0
- package/dist/web/assets/prolog-BBTg4Vb3.js.gz +0 -0
- package/dist/web/assets/proto-DWlum3T8.js.br +0 -0
- package/dist/web/assets/proto-DWlum3T8.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-BjI4IFgp.js → proxy-settings-section-Cz98fxZn.js} +1 -1
- package/dist/web/assets/proxy-settings-section-Cz98fxZn.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-Cz98fxZn.js.gz +0 -0
- package/dist/web/assets/pug-fT5JC6Vm.js.br +0 -0
- package/dist/web/assets/pug-fT5JC6Vm.js.gz +0 -0
- package/dist/web/assets/puppet-ZiUfc9JV.js.br +0 -0
- package/dist/web/assets/puppet-ZiUfc9JV.js.gz +0 -0
- package/dist/web/assets/purescript-CmT8SCHB.js.br +0 -0
- package/dist/web/assets/purescript-CmT8SCHB.js.gz +0 -0
- package/dist/web/assets/python-BURpj-fq.js.br +0 -0
- package/dist/web/assets/python-BURpj-fq.js.gz +0 -0
- package/dist/web/assets/qml-P_wEDB1w.js.br +0 -0
- package/dist/web/assets/qml-P_wEDB1w.js.gz +0 -0
- package/dist/web/assets/qss-C-zdz0i5.js.br +0 -0
- package/dist/web/assets/qss-C-zdz0i5.js.gz +0 -0
- package/dist/web/assets/{query-audit-section-By6qyqdB.js → query-audit-section-OsYip7HO.js} +1 -1
- package/dist/web/assets/query-audit-section-OsYip7HO.js.br +0 -0
- package/dist/web/assets/query-audit-section-OsYip7HO.js.gz +0 -0
- package/dist/web/assets/r-K56BeS-s.js.br +0 -0
- package/dist/web/assets/r-K56BeS-s.js.gz +0 -0
- package/dist/web/assets/racket-gkn6Z_Jw.js.br +0 -0
- package/dist/web/assets/racket-gkn6Z_Jw.js.gz +0 -0
- package/dist/web/assets/raku-C0ZBuKlx.js.br +0 -0
- package/dist/web/assets/raku-C0ZBuKlx.js.gz +0 -0
- package/dist/web/assets/razor-Drrt2_Ph.js.br +0 -0
- package/dist/web/assets/razor-Drrt2_Ph.js.gz +0 -0
- package/dist/web/assets/red-BWZ6x-3p.js.br +0 -0
- package/dist/web/assets/red-BWZ6x-3p.js.gz +0 -0
- package/dist/web/assets/reg-Dt_EsyGR.js.br +0 -0
- package/dist/web/assets/reg-Dt_EsyGR.js.gz +0 -0
- package/dist/web/assets/regexp-CT6BLG2C.js.br +0 -0
- package/dist/web/assets/regexp-CT6BLG2C.js.gz +0 -0
- package/dist/web/assets/rel-MJ2LcyzJ.js.br +0 -0
- package/dist/web/assets/rel-MJ2LcyzJ.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-eXYvwgx7.js → remote-desktop-clipboard-notice-fjTRSMfw.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-fjTRSMfw.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-fjTRSMfw.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-BGzXIOnN.js +2 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-BGzXIOnN.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-BGzXIOnN.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-Dt8Akc3p.js → remote-desktop-mobile-view-DC-_I2st.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-DC-_I2st.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-DC-_I2st.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate-t83fqbID.js → remote-desktop-readiness-gate-BBFhTM_C.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-BBFhTM_C.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-BBFhTM_C.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-S1LNG0iM.js +1 -0
- package/dist/web/assets/remote-desktop-window-content-S1LNG0iM.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-S1LNG0iM.js.gz +0 -0
- package/dist/web/assets/resolve-theme-B_ukrg_8.js.br +0 -0
- package/dist/web/assets/resolve-theme-B_ukrg_8.js.gz +0 -0
- package/dist/web/assets/riscv-BZYWzMAA.js.br +0 -0
- package/dist/web/assets/riscv-BZYWzMAA.js.gz +0 -0
- package/dist/web/assets/ron-CLbwHWMn.js.br +0 -0
- package/dist/web/assets/ron-CLbwHWMn.js.gz +0 -0
- package/dist/web/assets/rose-pine-BPiI_daR.js.br +0 -0
- package/dist/web/assets/rose-pine-BPiI_daR.js.gz +0 -0
- package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.br +0 -0
- package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.gz +0 -0
- package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.br +0 -0
- package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.gz +0 -0
- package/dist/web/assets/rosmsg-yt4151pJ.js.br +0 -0
- package/dist/web/assets/rosmsg-yt4151pJ.js.gz +0 -0
- package/dist/web/assets/rst-Dr2mW4-h.js.br +0 -0
- package/dist/web/assets/rst-Dr2mW4-h.js.gz +0 -0
- package/dist/web/assets/ruby-C6EpUsTY.js.br +0 -0
- package/dist/web/assets/ruby-C6EpUsTY.js.gz +0 -0
- package/dist/web/assets/{run-in-terminal-CdefEe_R.js → run-in-terminal-Bu3ph5pY.js} +1 -1
- package/dist/web/assets/rust-1dAcengL.js.br +0 -0
- package/dist/web/assets/rust-1dAcengL.js.gz +0 -0
- package/dist/web/assets/sas-D8ZEeP6v.js.br +0 -0
- package/dist/web/assets/sas-D8ZEeP6v.js.gz +0 -0
- package/dist/web/assets/sass-DUgtQJsg.js.br +0 -0
- package/dist/web/assets/sass-DUgtQJsg.js.gz +0 -0
- package/dist/web/assets/scala-CxoGYpS0.js.br +0 -0
- package/dist/web/assets/scala-CxoGYpS0.js.gz +0 -0
- package/dist/web/assets/{schedules-settings-section-BVkpW5ms.js → schedules-settings-section-BERxYmYn.js} +1 -1
- package/dist/web/assets/schedules-settings-section-BERxYmYn.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-BERxYmYn.js.gz +0 -0
- package/dist/web/assets/scheme-B2K3u9e3.js.br +0 -0
- package/dist/web/assets/scheme-B2K3u9e3.js.gz +0 -0
- package/dist/web/assets/scroll-area-BzeiOd-B.js.br +0 -0
- package/dist/web/assets/scroll-area-BzeiOd-B.js.gz +0 -0
- package/dist/web/assets/scss-ITL7jQ1f.js.br +0 -0
- package/dist/web/assets/scss-ITL7jQ1f.js.gz +0 -0
- package/dist/web/assets/sdbl-C0Ygk0n6.js.br +0 -0
- package/dist/web/assets/sdbl-C0Ygk0n6.js.gz +0 -0
- package/dist/web/assets/{send-to-chat-F207yH3u.js → send-to-chat-DuRTOS7_.js} +1 -1
- package/dist/web/assets/send-to-chat-DuRTOS7_.js.br +0 -0
- package/dist/web/assets/send-to-chat-DuRTOS7_.js.gz +0 -0
- package/dist/web/assets/settings-body-C31PdcMj.js +2 -0
- package/dist/web/assets/settings-body-C31PdcMj.js.br +0 -0
- package/dist/web/assets/settings-body-C31PdcMj.js.gz +0 -0
- package/dist/web/assets/{settings-store-krC6bc79.js → settings-store-DhU2tx3Y.js} +2 -2
- package/dist/web/assets/settings-store-DhU2tx3Y.js.br +0 -0
- package/dist/web/assets/settings-store-DhU2tx3Y.js.gz +0 -0
- package/dist/web/assets/{settings-tab-7DKVUTbM.js → settings-tab-D6QZSBqI.js} +1 -1
- package/dist/web/assets/{settings-window-content-3_39TeX-.js → settings-window-content-DLLcDkV0.js} +1 -1
- package/dist/web/assets/shaderlab-mW-IIlhk.js.br +0 -0
- package/dist/web/assets/shaderlab-mW-IIlhk.js.gz +0 -0
- package/dist/web/assets/shellscript-C2CvhqMk.js.br +0 -0
- package/dist/web/assets/shellscript-C2CvhqMk.js.gz +0 -0
- package/dist/web/assets/slack-dark-DYdgzRGj.js.br +0 -0
- package/dist/web/assets/slack-dark-DYdgzRGj.js.gz +0 -0
- package/dist/web/assets/slack-ochin-X-WD0WCg.js.br +0 -0
- package/dist/web/assets/slack-ochin-X-WD0WCg.js.gz +0 -0
- package/dist/web/assets/smalltalk-Dp7g_zb9.js.br +0 -0
- package/dist/web/assets/smalltalk-Dp7g_zb9.js.gz +0 -0
- package/dist/web/assets/snazzy-light-DWHWr-a6.js.br +0 -0
- package/dist/web/assets/snazzy-light-DWHWr-a6.js.gz +0 -0
- package/dist/web/assets/solarized-dark-CxdLsjvb.js.br +0 -0
- package/dist/web/assets/solarized-dark-CxdLsjvb.js.gz +0 -0
- package/dist/web/assets/solarized-light-Cz9rAvG5.js.br +0 -0
- package/dist/web/assets/solarized-light-Cz9rAvG5.js.gz +0 -0
- package/dist/web/assets/solidity-D33gHHdn.js.br +0 -0
- package/dist/web/assets/solidity-D33gHHdn.js.gz +0 -0
- package/dist/web/assets/soy-SdY0Qjtr.js.br +0 -0
- package/dist/web/assets/soy-SdY0Qjtr.js.gz +0 -0
- package/dist/web/assets/sparql-ftqZo2i-.js.br +0 -0
- package/dist/web/assets/sparql-ftqZo2i-.js.gz +0 -0
- package/dist/web/assets/splunk-BFbOroYw.js.br +0 -0
- package/dist/web/assets/splunk-BFbOroYw.js.gz +0 -0
- package/dist/web/assets/sql-ChpxvmdY.js.br +0 -0
- package/dist/web/assets/sql-ChpxvmdY.js.gz +0 -0
- package/dist/web/assets/{sql-query-editor-CQB7Yp7U.js → sql-query-editor-BXaAQmLJ.js} +1 -1
- package/dist/web/assets/sql-query-editor-BXaAQmLJ.js.br +0 -0
- package/dist/web/assets/sql-query-editor-BXaAQmLJ.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer-Bd7rjr1D.js → sqlite-viewer-DWpzKvve.js} +1 -1
- package/dist/web/assets/sqlite-viewer-DWpzKvve.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-DWpzKvve.js.gz +0 -0
- package/dist/web/assets/ssh-config-CUuSQ6JG.js.br +0 -0
- package/dist/web/assets/ssh-config-CUuSQ6JG.js.gz +0 -0
- package/dist/web/assets/stata-Bj7Yjb4b.js.br +0 -0
- package/dist/web/assets/stata-Bj7Yjb4b.js.gz +0 -0
- package/dist/web/assets/stylus-DDihP0_W.js.br +0 -0
- package/dist/web/assets/stylus-DDihP0_W.js.gz +0 -0
- package/dist/web/assets/surrealql-CLhYGAfB.js.br +0 -0
- package/dist/web/assets/surrealql-CLhYGAfB.js.gz +0 -0
- package/dist/web/assets/svelte-DTAlRHhK.js.br +0 -0
- package/dist/web/assets/svelte-DTAlRHhK.js.gz +0 -0
- package/dist/web/assets/swift-XoalUn4x.js.br +0 -0
- package/dist/web/assets/swift-XoalUn4x.js.gz +0 -0
- package/dist/web/assets/synthwave-84-DjkG0Bff.js.br +0 -0
- package/dist/web/assets/synthwave-84-DjkG0Bff.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-DsRXeMyU.js → system-monitor-body-CKoLYd_G.js} +2 -2
- package/dist/web/assets/system-monitor-body-CKoLYd_G.js.br +0 -0
- package/dist/web/assets/system-monitor-body-CKoLYd_G.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-CerUeEbU.js +1 -0
- package/dist/web/assets/{system-monitor-window-content-ClPo4-El.js → system-monitor-window-content-CYFnoCgb.js} +1 -1
- package/dist/web/assets/system-verilog-f_pLKMYd.js.br +0 -0
- package/dist/web/assets/system-verilog-f_pLKMYd.js.gz +0 -0
- package/dist/web/assets/systemd-DjDcLfxp.js.br +0 -0
- package/dist/web/assets/systemd-DjDcLfxp.js.gz +0 -0
- package/dist/web/assets/{tab-host-window-content-d2TAD4PU.js → tab-host-window-content-CloVeb9a.js} +1 -1
- package/dist/web/assets/tab-host-window-content-CloVeb9a.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-CloVeb9a.js.gz +0 -0
- package/dist/web/assets/{tab-store-OJa1GPCq.js → tab-store-krAuHQ6_.js} +1 -1
- package/dist/web/assets/talonscript-BpUzYcDl.js.br +0 -0
- package/dist/web/assets/talonscript-BpUzYcDl.js.gz +0 -0
- package/dist/web/assets/tasl-DP-cUbg8.js.br +0 -0
- package/dist/web/assets/tasl-DP-cUbg8.js.gz +0 -0
- package/dist/web/assets/tcl-BHoy-dfE.js.br +0 -0
- package/dist/web/assets/tcl-BHoy-dfE.js.gz +0 -0
- package/dist/web/assets/{team-member-sheet-7d2Qp-ie.js → team-member-sheet-BXmTXQCt.js} +2 -2
- package/dist/web/assets/team-member-sheet-BXmTXQCt.js.br +0 -0
- package/dist/web/assets/team-member-sheet-BXmTXQCt.js.gz +0 -0
- package/dist/web/assets/{team-member-window-content-Bctg2gmg.js → team-member-window-content-BST7Cs5l.js} +1 -1
- package/dist/web/assets/team-member-window-content-BST7Cs5l.js.br +0 -0
- package/dist/web/assets/team-member-window-content-BST7Cs5l.js.gz +0 -0
- package/dist/web/assets/templ-BMfhACxb.js.br +0 -0
- package/dist/web/assets/templ-BMfhACxb.js.gz +0 -0
- package/dist/web/assets/terminal-tab-BVZhZnTh.js +3 -0
- package/dist/web/assets/terminal-tab-BVZhZnTh.js.br +0 -0
- package/dist/web/assets/terminal-tab-BVZhZnTh.js.gz +0 -0
- package/dist/web/assets/terraform-vCVxN25B.js.br +0 -0
- package/dist/web/assets/terraform-vCVxN25B.js.gz +0 -0
- package/dist/web/assets/tex-BcssM-QA.js.br +0 -0
- package/dist/web/assets/tex-BcssM-QA.js.gz +0 -0
- package/dist/web/assets/tokyo-night-D0u4xZba.js.br +0 -0
- package/dist/web/assets/tokyo-night-D0u4xZba.js.gz +0 -0
- package/dist/web/assets/toml-BS8D0__A.js.br +0 -0
- package/dist/web/assets/toml-BS8D0__A.js.gz +0 -0
- package/dist/web/assets/{tool-cards-CmLLRACd.js → tool-cards-F7hDZH6M.js} +5 -5
- package/dist/web/assets/tool-cards-F7hDZH6M.js.br +0 -0
- package/dist/web/assets/tool-cards-F7hDZH6M.js.gz +0 -0
- package/dist/web/assets/ts-tags-CrR5IYI8.js.br +0 -0
- package/dist/web/assets/ts-tags-CrR5IYI8.js.gz +0 -0
- package/dist/web/assets/tsx-DF8YeRgG.js.br +0 -0
- package/dist/web/assets/tsx-DF8YeRgG.js.gz +0 -0
- package/dist/web/assets/turtle-Bhx1GlIy.js.br +0 -0
- package/dist/web/assets/turtle-Bhx1GlIy.js.gz +0 -0
- package/dist/web/assets/twig-DchfUmyI.js.br +0 -0
- package/dist/web/assets/twig-DchfUmyI.js.gz +0 -0
- package/dist/web/assets/typescript-CAVD2Wb6.js.br +0 -0
- package/dist/web/assets/typescript-CAVD2Wb6.js.gz +0 -0
- package/dist/web/assets/typespec-D7mchdY_.js.br +0 -0
- package/dist/web/assets/typespec-D7mchdY_.js.gz +0 -0
- package/dist/web/assets/typst-CeXzq6Yw.js.br +0 -0
- package/dist/web/assets/typst-CeXzq6Yw.js.gz +0 -0
- package/dist/web/assets/{use-blob-url-CPtCcY3i.js → use-blob-url-DMGlPCQD.js} +1 -1
- package/dist/web/assets/{use-inline-blame-sDMjcz1-.js → use-inline-blame-BmY9SN79.js} +3 -3
- package/dist/web/assets/use-inline-blame-BmY9SN79.js.br +0 -0
- package/dist/web/assets/use-inline-blame-BmY9SN79.js.gz +0 -0
- package/dist/web/assets/{use-lsp-CBgID-EU.js → use-lsp-CEq09fZR.js} +1 -1
- package/dist/web/assets/use-lsp-CEq09fZR.js.br +0 -0
- package/dist/web/assets/use-lsp-CEq09fZR.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-gvhJ_jZh.js → use-monaco-theme-CBB5mAYT.js} +1 -1
- package/dist/web/assets/{use-websocket-C9wlRliB.js → use-websocket-BfuA8Guj.js} +1 -1
- package/dist/web/assets/utils-Bmf_8h7Y.js.br +0 -0
- package/dist/web/assets/utils-Bmf_8h7Y.js.gz +0 -0
- package/dist/web/assets/v-DhzO54je.js.br +0 -0
- package/dist/web/assets/v-DhzO54je.js.gz +0 -0
- package/dist/web/assets/vala-Dw_RAk3E.js.br +0 -0
- package/dist/web/assets/vala-Dw_RAk3E.js.gz +0 -0
- package/dist/web/assets/vb-CiXdNh2Y.js.br +0 -0
- package/dist/web/assets/vb-CiXdNh2Y.js.gz +0 -0
- package/dist/web/assets/vendor-markdown-CuWCHIVb.js.br +0 -0
- package/dist/web/assets/vendor-markdown-CuWCHIVb.js.gz +0 -0
- package/dist/web/assets/vendor-mermaid-BitiXJlL.js.br +0 -0
- package/dist/web/assets/vendor-mermaid-BitiXJlL.js.gz +0 -0
- package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.br +0 -0
- package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.gz +0 -0
- package/dist/web/assets/vendor-xterm-DkTCHfhq.css.br +0 -0
- package/dist/web/assets/vendor-xterm-DkTCHfhq.css.gz +0 -0
- package/dist/web/assets/vendor-xterm-JV4hEJsv.js.br +0 -0
- package/dist/web/assets/vendor-xterm-JV4hEJsv.js.gz +0 -0
- package/dist/web/assets/verilog-fITdxqwV.js.br +0 -0
- package/dist/web/assets/verilog-fITdxqwV.js.gz +0 -0
- package/dist/web/assets/vesper-B1wm_At7.js.br +0 -0
- package/dist/web/assets/vesper-B1wm_At7.js.gz +0 -0
- package/dist/web/assets/vhdl-ebHjqKp9.js.br +0 -0
- package/dist/web/assets/vhdl-ebHjqKp9.js.gz +0 -0
- package/dist/web/assets/{video-preview-CSDK5j6H.js → video-preview-C9Aqfcru.js} +1 -1
- package/dist/web/assets/video-preview-C9Aqfcru.js.br +0 -0
- package/dist/web/assets/video-preview-C9Aqfcru.js.gz +0 -0
- package/dist/web/assets/viml-Dgmnoxoo.js.br +0 -0
- package/dist/web/assets/viml-Dgmnoxoo.js.gz +0 -0
- package/dist/web/assets/vitesse-black-BZ5gMb7l.js.br +0 -0
- package/dist/web/assets/vitesse-black-BZ5gMb7l.js.gz +0 -0
- package/dist/web/assets/vitesse-dark-Lij7kkOt.js.br +0 -0
- package/dist/web/assets/vitesse-dark-Lij7kkOt.js.gz +0 -0
- package/dist/web/assets/vitesse-light-DW6Wq7VC.js.br +0 -0
- package/dist/web/assets/vitesse-light-DW6Wq7VC.js.gz +0 -0
- package/dist/web/assets/vue-1EL6Pw1h.js.br +0 -0
- package/dist/web/assets/vue-1EL6Pw1h.js.gz +0 -0
- package/dist/web/assets/vue-html-BPQNwPC6.js.br +0 -0
- package/dist/web/assets/vue-html-BPQNwPC6.js.gz +0 -0
- package/dist/web/assets/vue-vine-Bb_dsWLt.js.br +0 -0
- package/dist/web/assets/vue-vine-Bb_dsWLt.js.gz +0 -0
- package/dist/web/assets/vyper-6FxDnVNg.js.br +0 -0
- package/dist/web/assets/vyper-6FxDnVNg.js.gz +0 -0
- package/dist/web/assets/wasm-BDxaNPCj.js.br +0 -0
- package/dist/web/assets/wasm-BDxaNPCj.js.gz +0 -0
- package/dist/web/assets/wasm-DKhAtzfe.js.br +0 -0
- package/dist/web/assets/wasm-DKhAtzfe.js.gz +0 -0
- package/dist/web/assets/wenyan-C0k0DYG_.js.br +0 -0
- package/dist/web/assets/wenyan-C0k0DYG_.js.gz +0 -0
- package/dist/web/assets/wgsl-Y2zagbdn.js.br +0 -0
- package/dist/web/assets/wgsl-Y2zagbdn.js.gz +0 -0
- package/dist/web/assets/wikitext-C4QGWzkY.js.br +0 -0
- package/dist/web/assets/wikitext-C4QGWzkY.js.gz +0 -0
- package/dist/web/assets/{window-pip-registry-yD6esSju.js → window-pip-registry-D1oXq-Dq.js} +1 -1
- package/dist/web/assets/window-store-UC1jJeLM.js.br +0 -0
- package/dist/web/assets/window-store-UC1jJeLM.js.gz +0 -0
- package/dist/web/assets/wit-CQESzjHy.js.br +0 -0
- package/dist/web/assets/wit-CQESzjHy.js.gz +0 -0
- package/dist/web/assets/wolfram-B-ia69Ia.js.br +0 -0
- package/dist/web/assets/wolfram-B-ia69Ia.js.gz +0 -0
- package/dist/web/assets/ws-auth-BG-cdrQ8.js +1 -0
- package/dist/web/assets/xml-dxkLNA0K.js.br +0 -0
- package/dist/web/assets/xml-dxkLNA0K.js.gz +0 -0
- package/dist/web/assets/xsl-Bw2adwrl.js.br +0 -0
- package/dist/web/assets/xsl-Bw2adwrl.js.gz +0 -0
- package/dist/web/assets/yaml-CEYYTQPm.js.br +0 -0
- package/dist/web/assets/yaml-CEYYTQPm.js.gz +0 -0
- package/dist/web/assets/zenscript-BggWXIeJ.js.br +0 -0
- package/dist/web/assets/zenscript-BggWXIeJ.js.gz +0 -0
- package/dist/web/assets/zig-CbaUfBQe.js.br +0 -0
- package/dist/web/assets/zig-CbaUfBQe.js.gz +0 -0
- package/dist/web/index.html +17 -17
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +1 -1
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/docs/architecture/ai-chat-and-providers.md +10 -0
- package/docs/architecture/workspace-and-ui.md +76 -0
- package/docs/project-roadmap.md +6 -0
- package/package.json +1 -1
- package/scripts/release.sh +6 -0
- package/src/cli/commands/init.ts +1 -0
- package/src/providers/codex-app-server/codex-event-mapper.ts +7 -3
- package/src/providers/codex-app-server/codex-history.ts +26 -7
- package/src/providers/codex-app-server/codex-provider.ts +16 -4
- package/src/server/index.ts +5 -0
- package/src/server/routes/chat.ts +4 -8
- package/src/server/routes/files.ts +11 -75
- package/src/server/routes/html-preview.ts +116 -0
- package/src/server/routes/settings.ts +19 -6
- package/src/services/chat.service.ts +2 -4
- package/src/services/config.service.ts +2 -0
- package/src/services/project-content-search.service.ts +119 -0
- package/src/types/chat.ts +19 -1
- package/src/types/config.ts +12 -1
- package/src/web/app.tsx +9 -1
- package/src/web/components/chat/chat-history-bar.tsx +11 -6
- package/src/web/components/chat/chat-tab.tsx +187 -39
- package/src/web/components/chat/chat-welcome.tsx +2 -0
- package/src/web/components/chat/message-events.tsx +6 -6
- package/src/web/components/chat/message-input.tsx +47 -1
- package/src/web/components/chat/model-thinking-selector.tsx +37 -6
- package/src/web/components/chat/new-chat-provider-gate.tsx +68 -0
- package/src/web/components/chat/session-list-panel.tsx +2 -6
- package/src/web/components/chat/session-picker.tsx +2 -6
- package/src/web/components/editor/code-editor.tsx +65 -12
- package/src/web/components/editor/html-preview-toolbar.tsx +80 -0
- package/src/web/components/editor/html-preview.tsx +30 -0
- package/src/web/components/explorer/search-panel.tsx +37 -6
- package/src/web/components/git/git-status-panel.tsx +32 -4
- package/src/web/components/layout/editor-panel.tsx +1 -1
- package/src/web/components/layout/mobile-drawer.tsx +6 -4
- package/src/web/components/layout/project-switcher.tsx +1 -0
- package/src/web/components/layout/reparenting-tab.tsx +4 -2
- package/src/web/components/layout/sidebar.tsx +1 -1
- package/src/web/components/layout/tab-bar.tsx +1 -1
- package/src/web/components/onboarding/onboarding-entry.tsx +15 -0
- package/src/web/components/onboarding/onboarding-file-help.tsx +31 -0
- package/src/web/components/onboarding/onboarding-guide.tsx +45 -0
- package/src/web/components/onboarding/onboarding-hint.tsx +43 -0
- package/src/web/components/onboarding/onboarding-quick-orientation.tsx +81 -0
- package/src/web/components/onboarding/onboarding-root.tsx +137 -0
- package/src/web/components/onboarding/onboarding-run-document-preview.tsx +23 -0
- package/src/web/components/onboarding/onboarding-setup.tsx +50 -0
- package/src/web/components/onboarding/onboarding-step-transition.tsx +27 -0
- package/src/web/components/onboarding/use-onboarding-session-check.ts +32 -0
- package/src/web/components/settings/ai-settings-section.tsx +36 -0
- package/src/web/components/settings/general-settings-section.tsx +7 -0
- package/src/web/components/terminal/terminal-tab.tsx +15 -1
- package/src/web/hooks/use-chat.ts +14 -1
- package/src/web/hooks/use-draft.ts +25 -4
- package/src/web/hooks/use-session-history.ts +2 -6
- package/src/web/hooks/use-usage.ts +6 -4
- package/src/web/lib/api-client.ts +7 -1
- package/src/web/lib/api-settings.ts +1 -0
- package/src/web/lib/chat-attempt-lifecycle.ts +46 -0
- package/src/web/lib/new-chat-provider.ts +8 -0
- package/src/web/lib/onboarding/onboarding-copy.ts +57 -0
- package/src/web/lib/onboarding/onboarding-state.ts +77 -0
- package/src/web/lib/onboarding/onboarding-steps.ts +16 -0
- package/src/web/lib/onboarding/onboarding-types.ts +39 -0
- package/src/web/lib/onboarding/run-instructions.ts +22 -0
- package/src/web/stores/onboarding-store.ts +74 -0
- package/src/web/stores/panel-store.ts +46 -3
- package/vite.config.ts +5 -1
- package/dist/web/assets/accounts-settings-section-D3BylchP.js +0 -1
- package/dist/web/assets/ai-settings-section-BtR7rF-T.js +0 -1
- package/dist/web/assets/ai-settings-section-r9JctHNM.js +0 -1
- package/dist/web/assets/api-client-pQL53cDQ.js +0 -1
- package/dist/web/assets/chat-tab-DZagX06m.js +0 -15
- package/dist/web/assets/code-editor-BJhOEsnZ.js +0 -7
- package/dist/web/assets/explorer-body-VdCBqcZu.js +0 -2
- package/dist/web/assets/explorer-window-content-BIsbl7Th.js +0 -1
- package/dist/web/assets/general-settings-section-BAFSZmCE.js +0 -1
- package/dist/web/assets/group-chat-tab-Ck6sk7yY.js +0 -1
- package/dist/web/assets/index-BH99TIE0.css +0 -1
- package/dist/web/assets/index-CEZVxM4G.js +0 -52
- package/dist/web/assets/keybindings-store-C_3ChOEf.js +0 -1
- package/dist/web/assets/markdown-renderer-C140Ijk0.js +0 -3
- package/dist/web/assets/markdown-renderer-Dz7-DYUg.js +0 -1
- package/dist/web/assets/notification-store-6vib1ISy.js +0 -1
- package/dist/web/assets/panel-store-CboGJAwh.js +0 -1
- package/dist/web/assets/problems-panel-a6_hrWvl.js +0 -1
- package/dist/web/assets/remote-desktop-mobile-sheet-Doh-fci-.js +0 -2
- package/dist/web/assets/remote-desktop-window-content-CguhZMmx.js +0 -1
- package/dist/web/assets/settings-body-CoIxYAh6.js +0 -2
- package/dist/web/assets/streaming-store-BYukdB56.js +0 -1
- package/dist/web/assets/system-monitor-tab-DdSZgux3.js +0 -1
- package/dist/web/assets/terminal-tab-0HQic25V.js +0 -3
- package/dist/web/assets/ws-auth-CEYVQ8NH.js +0 -1
- /package/dist/web/assets/{csv-parser-_oDBUkwQ.js → csv-parser-DpCmuupp.js} +0 -0
- /package/dist/web/assets/{edit-diff-preview-BGGGecVw.js → edit-diff-preview-CVv7EOFu.js} +0 -0
- /package/dist/web/assets/{format-bytes-D1AQyUCt.js → format-bytes-CmnPxZjG.js} +0 -0
- /package/dist/web/assets/{lib-CD6pOS4u.js → lib-DBeVwCnC.js} +0 -0
- /package/dist/web/assets/{separator-TRMsJUYe.js → separator-tjXX_Sky.js} +0 -0
- /package/dist/web/assets/{use-open-team-member-C3mrUzIC.js → use-open-team-member-CHpGPALV.js} +0 -0
- /package/dist/web/assets/{vendor-xterm-BHEY6Ctu.js → vendor-xterm-JV4hEJsv.js} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { usePanelStore } from "@/stores/panel-store";
|
|
1
2
|
import { useState, useRef, useCallback, useEffect, memo, type KeyboardEvent, type DragEvent, type ClipboardEvent } from "react";
|
|
2
3
|
import { ArrowUp, Square, Paperclip, Loader2, Mic, MicOff, Zap, ListOrdered, Clock, Bot, X } from "@/lib/icons";
|
|
3
4
|
import { useVoiceInput } from "@/hooks/use-voice-input";
|
|
@@ -68,6 +69,7 @@ export interface ChatAttachment {
|
|
|
68
69
|
export type MessagePriority = 'now' | 'next' | 'later';
|
|
69
70
|
|
|
70
71
|
interface MessageInputProps {
|
|
72
|
+
draftReady?: boolean;
|
|
71
73
|
/** Tab id of the owning chat tab — addresses "Send to Chat" at this tab only. */
|
|
72
74
|
tabId?: string;
|
|
73
75
|
onSend: (content: string, attachments: ChatAttachment[], priority?: MessagePriority) => void;
|
|
@@ -95,6 +97,13 @@ interface MessageInputProps {
|
|
|
95
97
|
initialValue?: string;
|
|
96
98
|
/** Bumping this counter clears the textarea (e.g. parent cancels an edit). */
|
|
97
99
|
clearSignal?: number;
|
|
100
|
+
/**
|
|
101
|
+
* A message that could not be sent, handed back. A fresh `nonce` applies it even
|
|
102
|
+
* when `text` equals the last one — `initialValue` cannot do this, because it only
|
|
103
|
+
* reacts to a *changed* value, and the text of a failed send is often exactly the
|
|
104
|
+
* draft the composer was already prefilled with.
|
|
105
|
+
*/
|
|
106
|
+
restore?: { text: string; nonce: number } | null;
|
|
98
107
|
/** Called on content change for draft auto-save */
|
|
99
108
|
onContentChange?: (content: string, attachments?: Array<{ name: string; path: string }>) => void;
|
|
100
109
|
/** Returns this session's user messages, oldest first — powers ArrowUp/Down recall */
|
|
@@ -128,6 +137,7 @@ interface MessageInputProps {
|
|
|
128
137
|
|
|
129
138
|
export const MessageInput = memo(function MessageInput({
|
|
130
139
|
tabId,
|
|
140
|
+
draftReady = true,
|
|
131
141
|
onSend,
|
|
132
142
|
isStreaming,
|
|
133
143
|
onCancel,
|
|
@@ -144,6 +154,7 @@ export const MessageInput = memo(function MessageInput({
|
|
|
144
154
|
onExternalPathsConsumed,
|
|
145
155
|
initialValue,
|
|
146
156
|
clearSignal,
|
|
157
|
+
restore,
|
|
147
158
|
onContentChange,
|
|
148
159
|
getUserHistory,
|
|
149
160
|
autoFocus,
|
|
@@ -312,11 +323,46 @@ export const MessageInput = memo(function MessageInput({
|
|
|
312
323
|
}
|
|
313
324
|
}, [initialValue]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
314
325
|
|
|
326
|
+
// A tour suggestion is an explicit user action. Hydrated or typed drafts always win.
|
|
327
|
+
useEffect(() => {
|
|
328
|
+
const suggest = (event: Event) => {
|
|
329
|
+
const detail = (event as CustomEvent).detail;
|
|
330
|
+
if (!draftReady || disabled || isStreaming || valueRef.current || attachments.length || agentTag || !tabId) return;
|
|
331
|
+
if (detail?.projectName !== projectName || (detail.tabId && detail.tabId !== tabId) || typeof detail.text !== "string") return;
|
|
332
|
+
const panels = usePanelStore.getState();
|
|
333
|
+
const active = detail.tabId
|
|
334
|
+
? Object.values(panels.panels).some((panel) => panel.activeTabId === tabId)
|
|
335
|
+
: panels.panels[panels.focusedPanelId]?.activeTabId === tabId;
|
|
336
|
+
if (!active || document.hidden) return;
|
|
337
|
+
writeTextareas(detail.text);
|
|
338
|
+
onContentChange?.(detail.text);
|
|
339
|
+
getVisibleTextarea()?.focus();
|
|
340
|
+
};
|
|
341
|
+
window.addEventListener("ppm:onboarding-prompt", suggest);
|
|
342
|
+
return () => window.removeEventListener("ppm:onboarding-prompt", suggest);
|
|
343
|
+
}, [draftReady, disabled, isStreaming, attachments.length, agentTag, tabId, projectName, onContentChange, writeTextareas, getVisibleTextarea]);
|
|
344
|
+
|
|
315
345
|
// Parent-driven clear (e.g. cancelling an edit) — skip initial mount (0).
|
|
316
346
|
useEffect(() => {
|
|
317
347
|
if (clearSignal) writeTextareas("");
|
|
318
348
|
}, [clearSignal]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
319
349
|
|
|
350
|
+
// An unsent message coming back. The send can fail up to ~45 s after Enter, by which
|
|
351
|
+
// time the user may be typing something new — so the text goes AFTER what is there
|
|
352
|
+
// rather than over it. Reported as a content change so it is saved as the draft
|
|
353
|
+
// again; `writeTextareas` alone tells nobody.
|
|
354
|
+
useEffect(() => {
|
|
355
|
+
if (!restore?.nonce || !restore.text) return;
|
|
356
|
+
const current = valueRef.current;
|
|
357
|
+
const next = current.trim() ? `${current}\n\n${restore.text}` : restore.text;
|
|
358
|
+
writeTextareas(next);
|
|
359
|
+
onContentChange?.(next, attachments.filter((a) => a.status === "ready" && a.serverPath).map((a) => ({ name: a.name, path: a.serverPath! })));
|
|
360
|
+
setTimeout(() => {
|
|
361
|
+
const ta = getVisibleTextarea();
|
|
362
|
+
if (ta) { ta.focus(); ta.selectionStart = ta.selectionEnd = ta.value.length; }
|
|
363
|
+
}, 50);
|
|
364
|
+
}, [restore?.nonce]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
365
|
+
|
|
320
366
|
// Auto-focus on mount when requested
|
|
321
367
|
useEffect(() => {
|
|
322
368
|
if (!autoFocus) return;
|
|
@@ -826,7 +872,7 @@ export const MessageInput = memo(function MessageInput({
|
|
|
826
872
|
const showCancel = isStreaming && !hasContent;
|
|
827
873
|
|
|
828
874
|
return (
|
|
829
|
-
<div className="p-2 md:p-3">
|
|
875
|
+
<div data-onboarding="chat-input" className="p-2 md:p-3">
|
|
830
876
|
{/* Rounded input container */}
|
|
831
877
|
<div
|
|
832
878
|
className="border border-border rounded-[var(--rad)] bg-panel shadow-[var(--shadow-float)] cursor-text"
|
|
@@ -10,6 +10,10 @@ interface ModelOption {
|
|
|
10
10
|
label: string;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
// Shared by chat tabs; keep successful lists visible while refreshing an old entry.
|
|
14
|
+
const modelCache = new Map<string, { models: ModelOption[]; expiry: number }>();
|
|
15
|
+
const MODEL_CACHE_TTL = 5 * 60 * 1000;
|
|
16
|
+
|
|
13
17
|
interface ModelThinkingSelectorProps {
|
|
14
18
|
model: string | null;
|
|
15
19
|
effort: string | null;
|
|
@@ -46,18 +50,44 @@ export function ModelThinkingSelector({
|
|
|
46
50
|
providerId,
|
|
47
51
|
disabled,
|
|
48
52
|
}: ModelThinkingSelectorProps) {
|
|
49
|
-
const
|
|
53
|
+
const cacheKey = JSON.stringify([projectName, providerId]);
|
|
54
|
+
const cached = modelCache.get(cacheKey);
|
|
55
|
+
const [modelResult, setModelResult] = useState<{
|
|
56
|
+
projectName: string;
|
|
57
|
+
providerId: string;
|
|
58
|
+
models: ModelOption[];
|
|
59
|
+
error?: boolean;
|
|
60
|
+
} | null>(null);
|
|
61
|
+
// Never render another provider/project's options, even before effects run.
|
|
62
|
+
const result = modelResult?.projectName === projectName && modelResult.providerId === providerId
|
|
63
|
+
? modelResult : cached ? { ...cached, error: false } : null;
|
|
64
|
+
const models = result?.models ?? [];
|
|
65
|
+
const loading = Boolean(projectName && providerId && !result);
|
|
66
|
+
const modelStatus = loading ? "Loading models..." : result?.error
|
|
67
|
+
? "Unable to load models" : models.length === 0 ? "No models available" : null;
|
|
50
68
|
const [open, setOpen] = useState(false);
|
|
51
69
|
const panelRef = useRef<HTMLDivElement>(null);
|
|
52
70
|
const isMobile = useIsMobile();
|
|
53
71
|
|
|
54
72
|
useEffect(() => {
|
|
73
|
+
let active = true;
|
|
74
|
+
setModelResult(null);
|
|
55
75
|
if (!projectName || !providerId) return;
|
|
76
|
+
const entry = modelCache.get(cacheKey);
|
|
77
|
+
if (entry && Date.now() < entry.expiry) return;
|
|
56
78
|
api
|
|
57
79
|
.get<ModelOption[]>(`${projectUrl(projectName)}/chat/providers/${providerId}/models`)
|
|
58
|
-
.then(
|
|
59
|
-
|
|
60
|
-
|
|
80
|
+
.then((models) => {
|
|
81
|
+
// The backend also returns [] on discovery failure. Don't replace a usable list.
|
|
82
|
+
const usable = models.length > 0 ? models : entry?.models ?? models;
|
|
83
|
+
if (active && models.length > 0) modelCache.set(cacheKey, { models, expiry: Date.now() + MODEL_CACHE_TTL });
|
|
84
|
+
if (active) setModelResult({ projectName, providerId, models: usable });
|
|
85
|
+
})
|
|
86
|
+
.catch(() => {
|
|
87
|
+
if (active) setModelResult({ projectName, providerId, models: entry?.models ?? [], error: !entry });
|
|
88
|
+
});
|
|
89
|
+
return () => { active = false; };
|
|
90
|
+
}, [projectName, providerId, cacheKey]);
|
|
61
91
|
|
|
62
92
|
useEffect(() => {
|
|
63
93
|
if (disabled) setOpen(false);
|
|
@@ -77,9 +107,9 @@ export function ModelThinkingSelector({
|
|
|
77
107
|
}, [open, isMobile]);
|
|
78
108
|
|
|
79
109
|
const current = models.find((m) => m.value === model);
|
|
80
|
-
const modelDisplay =
|
|
110
|
+
const modelDisplay = loading ? "Loading models..." : current ? shortLabel(current.label) : "Model";
|
|
81
111
|
const effortValue = effort ?? DEFAULT_EFFORT;
|
|
82
|
-
const showModelList = models.length >
|
|
112
|
+
const showModelList = models.length > 0 || Boolean(modelStatus);
|
|
83
113
|
const chipText = chipLabel(modelDisplay, effortValue);
|
|
84
114
|
|
|
85
115
|
const pick = (fn: () => void) => {
|
|
@@ -93,6 +123,7 @@ export function ModelThinkingSelector({
|
|
|
93
123
|
{showModelList && (
|
|
94
124
|
<div className="flex-1 min-w-0 py-1">
|
|
95
125
|
<SectionLabel>Model</SectionLabel>
|
|
126
|
+
{modelStatus && <div role="status" className="px-3 py-2 text-xs text-text-secondary">{modelStatus}</div>}
|
|
96
127
|
{models.map((m) => (
|
|
97
128
|
<OptionRow key={m.value} active={m.value === model} onClick={() => pick(() => onModelChange(m.value))}>
|
|
98
129
|
<span className="flex-1 truncate">{shortLabel(m.label)}</span>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { useEffect, useState, type ReactNode } from "react";
|
|
2
|
+
import { getAISettings, type AISettings } from "@/lib/api-settings";
|
|
3
|
+
import { api, projectUrl } from "@/lib/api-client";
|
|
4
|
+
import { resolveNewChatProvider } from "@/lib/new-chat-provider";
|
|
5
|
+
import { usePanelStore } from "@/stores/panel-store";
|
|
6
|
+
|
|
7
|
+
/** Do not mount chat (or claim an account) until its initial provider is known. */
|
|
8
|
+
export function NewChatProviderGate({ tabId, metadata, children }: {
|
|
9
|
+
tabId: string;
|
|
10
|
+
metadata: Record<string, unknown>;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}) {
|
|
13
|
+
const [error, setError] = useState(false);
|
|
14
|
+
const [attempt, setAttempt] = useState(0);
|
|
15
|
+
const [unavailable, setUnavailable] = useState<{
|
|
16
|
+
provider: string; settings: AISettings; alternatives: Array<{ id: string; name: string }>;
|
|
17
|
+
} | null>(null);
|
|
18
|
+
const pending = metadata.providerPending === true;
|
|
19
|
+
const source = metadata.focusedProviderOnOpen as string | undefined;
|
|
20
|
+
const projectName = metadata.projectName as string | undefined;
|
|
21
|
+
|
|
22
|
+
function selectProvider(providerId: string, settings: AISettings) {
|
|
23
|
+
const store = usePanelStore.getState();
|
|
24
|
+
const tab = store.getPanelForTab(tabId)?.tabs.find((t) => t.id === tabId);
|
|
25
|
+
if (!tab?.metadata?.providerPending) return;
|
|
26
|
+
store.updateTab(tabId, { metadata: {
|
|
27
|
+
...tab.metadata,
|
|
28
|
+
providerId,
|
|
29
|
+
providerPending: undefined,
|
|
30
|
+
focusedProviderOnOpen: undefined,
|
|
31
|
+
permissionMode: tab.metadata.permissionMode ?? settings.providers[providerId]?.permission_mode ?? "bypassPermissions",
|
|
32
|
+
} });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!pending) return;
|
|
37
|
+
let cancelled = false;
|
|
38
|
+
setError(false);
|
|
39
|
+
setUnavailable(null);
|
|
40
|
+
Promise.all([
|
|
41
|
+
getAISettings(),
|
|
42
|
+
projectName ? api.get<Array<{ id: string; name: string }>>(`${projectUrl(projectName)}/chat/providers`) : Promise.resolve(null),
|
|
43
|
+
]).then(([settings, providers]) => {
|
|
44
|
+
if (cancelled) return;
|
|
45
|
+
const providerId = resolveNewChatProvider(settings, source);
|
|
46
|
+
if (providers && !providers.some((p) => p.id === providerId)) {
|
|
47
|
+
setUnavailable({ provider: providerId, settings, alternatives: providers });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
selectProvider(providerId, settings);
|
|
51
|
+
}).catch(() => { if (!cancelled) setError(true); });
|
|
52
|
+
return () => { cancelled = true; };
|
|
53
|
+
}, [pending, source, projectName, tabId, attempt]);
|
|
54
|
+
|
|
55
|
+
if (!pending) return children;
|
|
56
|
+
if (unavailable) return <div className="flex h-full flex-col items-center justify-center gap-3 p-4 text-sm text-muted-foreground" role="status">
|
|
57
|
+
<p>{unavailable.provider} is not available. Choose a provider for this chat.</p>
|
|
58
|
+
{unavailable.alternatives.map((p) => <button key={p.id} className="text-primary underline"
|
|
59
|
+
onClick={() => selectProvider(p.id, unavailable.settings)}>Use {p.name}</button>)}
|
|
60
|
+
<button className="text-primary underline" onClick={() => setAttempt((n) => n + 1)}>Check again</button>
|
|
61
|
+
</div>;
|
|
62
|
+
return <div className="flex h-full items-center justify-center gap-2 text-sm text-muted-foreground" role="status">
|
|
63
|
+
{error ? <>
|
|
64
|
+
Could not load chat settings.
|
|
65
|
+
<button className="text-primary underline" onClick={() => setAttempt((n) => n + 1)}>Retry</button>
|
|
66
|
+
</> : "Preparing chat…"}
|
|
67
|
+
</div>;
|
|
68
|
+
}
|
|
@@ -8,7 +8,7 @@ import { SessionContextMenu } from "./session-context-menu";
|
|
|
8
8
|
import { ProviderBadge } from "./provider-selector";
|
|
9
9
|
import { useNotificationStore, notificationTint } from "@/stores/notification-store";
|
|
10
10
|
import { cn } from "@/lib/utils";
|
|
11
|
-
import type
|
|
11
|
+
import { compareSessionsByActivity, type SessionInfo, type ProjectTag } from "../../../types/chat";
|
|
12
12
|
|
|
13
13
|
const MAX_RECENT_SESSIONS = 5;
|
|
14
14
|
const FETCH_SESSIONS_LIMIT = 20;
|
|
@@ -62,11 +62,7 @@ export function SessionListPanel({ projectName, onSelectSession, className }: Se
|
|
|
62
62
|
}
|
|
63
63
|
setSessions((prev) => {
|
|
64
64
|
const updated = prev.map((s) => s.id === session.id ? { ...s, pinned: !s.pinned } : s);
|
|
65
|
-
return updated.sort(
|
|
66
|
-
if (a.pinned && !b.pinned) return -1;
|
|
67
|
-
if (!a.pinned && b.pinned) return 1;
|
|
68
|
-
return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
|
|
69
|
-
});
|
|
65
|
+
return updated.sort(compareSessionsByActivity);
|
|
70
66
|
});
|
|
71
67
|
} catch {
|
|
72
68
|
// silently ignore
|
|
@@ -3,7 +3,7 @@ import { api, projectUrl } from "@/lib/api-client";
|
|
|
3
3
|
import { Plus, Trash2, MessageSquare, ChevronDown, Pin, PinOff, Search, X } from "@/lib/icons";
|
|
4
4
|
import { useDebouncedValue } from "@/hooks/use-debounced-value";
|
|
5
5
|
import { ProviderBadge } from "./provider-selector";
|
|
6
|
-
import type
|
|
6
|
+
import { compareSessionsByActivity, type SessionInfo } from "../../../types/chat";
|
|
7
7
|
|
|
8
8
|
interface SessionPickerProps {
|
|
9
9
|
currentSessionId: string | null;
|
|
@@ -81,11 +81,7 @@ export function SessionPicker({
|
|
|
81
81
|
}
|
|
82
82
|
setSessions((prev) => {
|
|
83
83
|
const updated = prev.map((s) => s.id === session.id ? { ...s, pinned: !s.pinned } : s);
|
|
84
|
-
return updated.sort(
|
|
85
|
-
if (a.pinned && !b.pinned) return -1;
|
|
86
|
-
if (!a.pinned && b.pinned) return 1;
|
|
87
|
-
return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
|
|
88
|
-
});
|
|
84
|
+
return updated.sort(compareSessionsByActivity);
|
|
89
85
|
});
|
|
90
86
|
} catch {
|
|
91
87
|
// Silently fail
|
|
@@ -5,6 +5,8 @@ import { api, projectUrl } from "@/lib/api-client";
|
|
|
5
5
|
import { useShallow } from "zustand/react/shallow";
|
|
6
6
|
import { useTabStore } from "@/stores/tab-store";
|
|
7
7
|
import { usePanelStore } from "@/stores/panel-store";
|
|
8
|
+
import { emitOnboardingEvidence } from "@/lib/onboarding/onboarding-types";
|
|
9
|
+
import { OnboardingRunDocumentPreview } from "@/components/onboarding/onboarding-run-document-preview";
|
|
8
10
|
import { useSettingsStore } from "@/stores/settings-store";
|
|
9
11
|
import { basename } from "@/lib/utils";
|
|
10
12
|
import { useMonacoTheme } from "@/lib/use-monaco-theme";
|
|
@@ -18,6 +20,8 @@ import { LspStatus } from "./lsp-status";
|
|
|
18
20
|
import { Loader2, FileWarning, Play, Database, ExternalLink, X, GripHorizontal, ShieldCheck, ShieldOff } from "@/lib/icons";
|
|
19
21
|
import { EditorBreadcrumb } from "./editor-breadcrumb";
|
|
20
22
|
import { EditorToolbar } from "./editor-toolbar";
|
|
23
|
+
import { HtmlPreview } from "./html-preview";
|
|
24
|
+
import { HtmlPreviewToolbar } from "./html-preview-toolbar";
|
|
21
25
|
import { EditorLanguagePicker } from "./editor-language-picker";
|
|
22
26
|
import { SaveAsDialog } from "./save-as-dialog";
|
|
23
27
|
import { EditorMobileToolbar } from "./editor-mobile-toolbar";
|
|
@@ -87,6 +91,14 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
87
91
|
const [encoding, setEncoding] = useState<string>("utf-8");
|
|
88
92
|
const [loading, setLoading] = useState(true);
|
|
89
93
|
const [error, setError] = useState<string | null>(null);
|
|
94
|
+
const [loadedFile, setLoadedFile] = useState<string | null>(null);
|
|
95
|
+
const activeTabId = useTabStore((s) => s.activeTabId);
|
|
96
|
+
const [onboardingRefresh, setOnboardingRefresh] = useState(0);
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
const refresh = () => setOnboardingRefresh((n) => n + 1);
|
|
99
|
+
window.addEventListener("ppm:onboarding-refresh", refresh);
|
|
100
|
+
return () => window.removeEventListener("ppm:onboarding-refresh", refresh);
|
|
101
|
+
}, []);
|
|
90
102
|
const [unsaved, setUnsaved] = useState(false);
|
|
91
103
|
const saveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
92
104
|
const latestContentRef = useRef<string>("");
|
|
@@ -136,6 +148,11 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
136
148
|
const isAudio = AUDIO_EXTS.has(ext);
|
|
137
149
|
const isSqlite = SQLITE_EXTS.has(ext);
|
|
138
150
|
const isMarkdown = ext === "md" || ext === "mdx";
|
|
151
|
+
const isHtml = (ext === "html" || ext === "htm") && !isUntitled && inlineContent == null;
|
|
152
|
+
const [htmlMode, setHtmlMode] = useState<"edit" | "preview">("preview");
|
|
153
|
+
const [htmlRevision, setHtmlRevision] = useState(0);
|
|
154
|
+
const [htmlCodeOpened, setHtmlCodeOpened] = useState(false);
|
|
155
|
+
const htmlPreviewVisible = isHtml && htmlMode === "preview";
|
|
139
156
|
const isCsv = ext === "csv";
|
|
140
157
|
// Explicit language override (from language picker / New DB Query); falls back to file extension.
|
|
141
158
|
const langOverride = metadata?.language as string | undefined;
|
|
@@ -322,6 +339,17 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
322
339
|
// Detect external (absolute) file path — not relative to project
|
|
323
340
|
const isExternalFile = filePath ? /^(\/|[A-Za-z]:[/\\])/.test(filePath) : false;
|
|
324
341
|
|
|
342
|
+
useEffect(() => {
|
|
343
|
+
if (!projectName || !filePath || !tabId || activeTabId !== tabId || loading || error || !mounted ||
|
|
344
|
+
loadedFile !== `${projectName}:${filePath}` || inlineContent != null || isUntitled || isSqlite || encoding === "base64" ||
|
|
345
|
+
htmlPreviewVisible || isImage || isPdf || isDocx || isVideo || isAudio || (isMarkdown && mdMode === "preview") || (isCsv && csvMode === "table")) return;
|
|
346
|
+
const node = mounted.editor.getDomNode();
|
|
347
|
+
const visible = !!node?.isConnected && !!node.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });
|
|
348
|
+
if (visible) emitOnboardingEvidence({ type: "file-ready", projectName, tabId, visible,
|
|
349
|
+
isRunDocument: /^(readme(?:\..*)?|package\.json)$/i.test(basename(filePath)) });
|
|
350
|
+
}, [onboardingRefresh, projectName, filePath, tabId, activeTabId, loading, error, mounted, loadedFile, inlineContent, isUntitled,
|
|
351
|
+
isSqlite, encoding, isImage, isPdf, isDocx, isVideo, isAudio, isMarkdown, mdMode, isCsv, csvMode, htmlPreviewVisible]);
|
|
352
|
+
|
|
325
353
|
// Load file content
|
|
326
354
|
useEffect(() => {
|
|
327
355
|
if (inlineContent != null) { setLoading(false); return; }
|
|
@@ -338,6 +366,8 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
338
366
|
|
|
339
367
|
setLoading(true);
|
|
340
368
|
setError(null);
|
|
369
|
+
setLoadedFile(null);
|
|
370
|
+
let cancelled = false;
|
|
341
371
|
|
|
342
372
|
const readUrl = isExternalFile
|
|
343
373
|
? `/api/fs/read?path=${encodeURIComponent(filePath)}`
|
|
@@ -346,17 +376,20 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
346
376
|
api
|
|
347
377
|
.get<{ content: string; encoding?: string }>(readUrl)
|
|
348
378
|
.then((data) => {
|
|
379
|
+
if (cancelled) return;
|
|
349
380
|
setContent(data.content);
|
|
350
|
-
|
|
381
|
+
setEncoding(data.encoding ?? "utf-8");
|
|
382
|
+
setLoadedFile(`${projectName}:${filePath}`);
|
|
351
383
|
latestContentRef.current = data.content;
|
|
352
384
|
setLoading(false);
|
|
353
385
|
})
|
|
354
386
|
.catch((err) => {
|
|
387
|
+
if (cancelled) return;
|
|
355
388
|
setError(err instanceof Error ? err.message : "Failed to load file");
|
|
356
389
|
setLoading(false);
|
|
357
390
|
});
|
|
358
391
|
|
|
359
|
-
return () => { if (saveTimerRef.current) clearTimeout(saveTimerRef.current); };
|
|
392
|
+
return () => { cancelled = true; if (saveTimerRef.current) clearTimeout(saveTimerRef.current); };
|
|
360
393
|
}, [filePath, projectName, isImage, isPdf, isDocx, isExternalFile, isUntitled]);
|
|
361
394
|
|
|
362
395
|
// Manual reload: re-fetch content from disk (fallback when fs watch misses a change)
|
|
@@ -448,7 +481,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
448
481
|
// buffer no server can serve must not switch the built-in worker back on underneath the
|
|
449
482
|
// project file in the next tab.
|
|
450
483
|
const lspWanted = lspEnabled && !isTouchOnly;
|
|
451
|
-
const lspOn = lspWanted && lspServable;
|
|
484
|
+
const lspOn = lspWanted && lspServable && !htmlPreviewVisible;
|
|
452
485
|
const [lsp, setLsp] = useState<EditorLspState>({ status: null, diagnostics: [] });
|
|
453
486
|
const handleLspState = useCallback((next: EditorLspState) => setLsp(next), []);
|
|
454
487
|
|
|
@@ -782,6 +815,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
782
815
|
return (
|
|
783
816
|
<div
|
|
784
817
|
ref={containerRef}
|
|
818
|
+
data-onboarding="file"
|
|
785
819
|
className="flex flex-col h-full w-full overflow-hidden"
|
|
786
820
|
style={mobileHeight ? { height: `${mobileHeight}px`, maxHeight: `${mobileHeight}px` } : undefined}
|
|
787
821
|
>
|
|
@@ -807,7 +841,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
807
841
|
</div>
|
|
808
842
|
)}
|
|
809
843
|
{/* Breadcrumb + Toolbar bar — desktop only */}
|
|
810
|
-
{filePath && projectName && tabId && (
|
|
844
|
+
{!isHtml && filePath && projectName && tabId && (
|
|
811
845
|
<div className="hidden md:flex items-center h-7 border-b border-border bg-background shrink-0">
|
|
812
846
|
<EditorBreadcrumb
|
|
813
847
|
filePath={filePath}
|
|
@@ -850,7 +884,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
850
884
|
)}
|
|
851
885
|
|
|
852
886
|
{/* Language + SQL toolbar for untitled / external files (no project breadcrumb) */}
|
|
853
|
-
{inlineContent == null && tabId && (isUntitled || (filePath && !projectName)) && (
|
|
887
|
+
{!isHtml && inlineContent == null && tabId && (isUntitled || (filePath && !projectName)) && (
|
|
854
888
|
<div className="hidden md:flex items-center h-7 border-b border-border bg-background shrink-0 px-2">
|
|
855
889
|
<span className="text-xs text-muted-foreground truncate flex-1">
|
|
856
890
|
{isUntitled ? `Untitled-${metadata?.untitledNumber ?? 1}` : (filePath ? basename(filePath) : "Untitled")}
|
|
@@ -860,15 +894,33 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
860
894
|
</div>
|
|
861
895
|
)}
|
|
862
896
|
|
|
897
|
+
{isHtml && filePath && (
|
|
898
|
+
<HtmlPreviewToolbar mode={htmlMode} onModeChange={(mode) => {
|
|
899
|
+
if (mode === "edit") setHtmlCodeOpened(true);
|
|
900
|
+
setHtmlMode(mode);
|
|
901
|
+
}}
|
|
902
|
+
onRefresh={() => { setHtmlMode("preview"); setHtmlRevision((value) => value + 1); }} unsaved={unsaved}
|
|
903
|
+
onReloadCode={reloadFile} refreshing={refreshing}
|
|
904
|
+
breadcrumb={projectName && tabId ? <EditorBreadcrumb filePath={filePath} projectName={projectName} tabId={tabId} className="flex items-center min-w-0 overflow-x-auto scrollbar-none gap-0.5" /> : <span className="truncate text-xs text-muted-foreground">{basename(filePath)}</span>}
|
|
905
|
+
filePath={filePath} projectName={projectName} wordWrap={wrapOn} onToggleWordWrap={toggleWrap}
|
|
906
|
+
inlineBlame={inlineBlame} onToggleInlineBlame={canBlame ? toggleInlineBlame : undefined}
|
|
907
|
+
language={effectiveLanguage} onLanguageChange={handleLanguageChange}
|
|
908
|
+
lspEnabled={lspWanted} onToggleLsp={lspServable && !isTouchOnly ? setLspEnabled : undefined} />
|
|
909
|
+
)}
|
|
910
|
+
|
|
863
911
|
{/* Content area */}
|
|
864
|
-
{
|
|
912
|
+
{htmlPreviewVisible && filePath && (
|
|
913
|
+
<HtmlPreview filePath={filePath} projectName={projectName} revision={htmlRevision} />
|
|
914
|
+
)}
|
|
915
|
+
{htmlPreviewVisible && !htmlCodeOpened ? null : isCsv && csvMode === "table" ? (
|
|
865
916
|
<Suspense fallback={<div className="flex items-center justify-center h-full"><Loader2 className="size-5 animate-spin text-text-subtle" /></div>}>
|
|
866
917
|
<CsvPreview content={content ?? ""} onContentChange={handleChange} wordWrap={wrapOn} />
|
|
867
918
|
</Suspense>
|
|
868
919
|
) : isMarkdown && mdMode === "preview" ? (
|
|
869
|
-
<MarkdownPreview content={content ?? ""}
|
|
920
|
+
<MarkdownPreview content={content ?? ""} projectName={projectName} filePath={filePath} tabId={tabId}
|
|
921
|
+
ready={!loading && !error && loadedFile === `${projectName}:${filePath}` && inlineContent == null && !isUntitled} />
|
|
870
922
|
) : (
|
|
871
|
-
<div className="flex-1 overflow-hidden min-h-0">
|
|
923
|
+
<div className={htmlPreviewVisible ? "hidden" : "flex-1 overflow-hidden min-h-0"}>
|
|
872
924
|
<Editor
|
|
873
925
|
height="100%"
|
|
874
926
|
key={effectiveLanguage}
|
|
@@ -930,7 +982,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
|
|
|
930
982
|
)}
|
|
931
983
|
|
|
932
984
|
{/* Mobile toolbar — bottom, like terminal */}
|
|
933
|
-
{isMobile && (
|
|
985
|
+
{isMobile && !htmlPreviewVisible && (
|
|
934
986
|
<EditorMobileToolbar
|
|
935
987
|
editorRef={editorRef}
|
|
936
988
|
readOnly={inlineContent != null}
|
|
@@ -1047,11 +1099,12 @@ function LoadingSpinner() {
|
|
|
1047
1099
|
return <div className="flex items-center justify-center h-full"><Loader2 className="size-5 animate-spin text-text-subtle" /></div>;
|
|
1048
1100
|
}
|
|
1049
1101
|
|
|
1050
|
-
function MarkdownPreview({ content }: { content: string }) {
|
|
1102
|
+
function MarkdownPreview({ content, ...context }: { content: string; projectName?: string; filePath?: string; tabId?: string; ready: boolean }) {
|
|
1051
1103
|
return (
|
|
1052
1104
|
<Suspense fallback={<div className="animate-pulse h-4 bg-muted rounded m-4" />}>
|
|
1053
|
-
<
|
|
1105
|
+
<OnboardingRunDocumentPreview {...context}>
|
|
1106
|
+
<MarkdownRenderer content={content} className="flex-1 overflow-auto p-4" />
|
|
1107
|
+
</OnboardingRunDocumentPreview>
|
|
1054
1108
|
</Suspense>
|
|
1055
1109
|
);
|
|
1056
1110
|
}
|
|
1057
|
-
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { Code, Eye, MoreHorizontal, RefreshCw, Download, WrapText, UserRound, Zap, FileCode } from "@/lib/icons";
|
|
3
|
+
import { downloadFile } from "@/lib/file-download";
|
|
4
|
+
import { EDITOR_LANGUAGES } from "./editor-language-picker";
|
|
5
|
+
import {
|
|
6
|
+
DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem,
|
|
7
|
+
DropdownMenuCheckboxItem, DropdownMenuSeparator, DropdownMenuSub,
|
|
8
|
+
DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuRadioGroup, DropdownMenuRadioItem,
|
|
9
|
+
} from "@/components/ui/dropdown-menu";
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
mode: "edit" | "preview";
|
|
13
|
+
onModeChange: (mode: "edit" | "preview") => void;
|
|
14
|
+
onRefresh: () => void;
|
|
15
|
+
onReloadCode: () => void;
|
|
16
|
+
refreshing: boolean;
|
|
17
|
+
unsaved: boolean;
|
|
18
|
+
breadcrumb?: ReactNode;
|
|
19
|
+
filePath: string;
|
|
20
|
+
projectName?: string;
|
|
21
|
+
wordWrap: boolean;
|
|
22
|
+
onToggleWordWrap: () => void;
|
|
23
|
+
inlineBlame: boolean;
|
|
24
|
+
onToggleInlineBlame?: () => void;
|
|
25
|
+
language: string;
|
|
26
|
+
onLanguageChange: (language: string) => void;
|
|
27
|
+
lspEnabled: boolean;
|
|
28
|
+
onToggleLsp?: (enabled: boolean) => void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const actionClass = "flex items-center justify-center gap-1.5 rounded px-2 min-h-11 min-w-11 md:min-h-7 md:min-w-7 text-xs text-muted-foreground hover:text-foreground hover:bg-muted";
|
|
32
|
+
// Keep action icons near the edge; checked states occupy the trailing slot.
|
|
33
|
+
const menuClass = "min-h-11 md:min-h-8 px-2";
|
|
34
|
+
const checkboxClass = `${menuClass} pr-8 [&>span]:left-auto [&>span]:right-2`;
|
|
35
|
+
|
|
36
|
+
/** One row shared by code and preview; auxiliary editor actions live in the menu. */
|
|
37
|
+
export function HtmlPreviewToolbar(props: Props) {
|
|
38
|
+
const { mode, onModeChange, onRefresh, unsaved, breadcrumb } = props;
|
|
39
|
+
return (
|
|
40
|
+
<div className="flex items-center gap-2 md:gap-1 border-b border-border bg-background px-2 shrink-0 h-12 md:h-8"
|
|
41
|
+
role="toolbar" aria-label="HTML preview">
|
|
42
|
+
<div className="hidden md:flex flex-1 min-w-0 overflow-hidden">{breadcrumb}</div>
|
|
43
|
+
{mode === "preview" && (
|
|
44
|
+
<button type="button" onClick={onRefresh} title="Reload the original HTML file" aria-label="Refresh preview" className={actionClass}>
|
|
45
|
+
<RefreshCw className="size-4" />
|
|
46
|
+
</button>
|
|
47
|
+
)}
|
|
48
|
+
{([["edit", "Code", Code], ["preview", "Preview", Eye]] as const).map(([value, label, Icon]) => (
|
|
49
|
+
<button key={value} type="button" aria-pressed={mode === value} onClick={() => onModeChange(value)}
|
|
50
|
+
className={`${actionClass} ${mode === value ? "bg-muted text-foreground" : ""}`}>
|
|
51
|
+
<Icon className="size-3.5" />{label}
|
|
52
|
+
</button>
|
|
53
|
+
))}
|
|
54
|
+
{unsaved && <span role="status" title="Preview uses the saved file" aria-label="Preview uses the saved file" className="text-amber-500 text-xs">●</span>}
|
|
55
|
+
<DropdownMenu>
|
|
56
|
+
<DropdownMenuTrigger asChild>
|
|
57
|
+
<button type="button" title="More HTML actions" aria-label="More HTML actions" className={`${actionClass} ml-auto md:ml-0`}>
|
|
58
|
+
<MoreHorizontal className="size-4" />
|
|
59
|
+
</button>
|
|
60
|
+
</DropdownMenuTrigger>
|
|
61
|
+
<DropdownMenuContent align="end" className="w-52">
|
|
62
|
+
{mode === "edit" && <DropdownMenuItem className={menuClass} disabled={unsaved || props.refreshing} onSelect={props.onReloadCode}><RefreshCw />Reload code from disk</DropdownMenuItem>}
|
|
63
|
+
<DropdownMenuItem className={menuClass} onSelect={() => void downloadFile(props.projectName ?? "", props.filePath)}><Download />Download</DropdownMenuItem>
|
|
64
|
+
<DropdownMenuSeparator />
|
|
65
|
+
<DropdownMenuCheckboxItem className={checkboxClass} checked={props.wordWrap} onCheckedChange={props.onToggleWordWrap}><WrapText className="size-4 text-muted-foreground" />Word wrap</DropdownMenuCheckboxItem>
|
|
66
|
+
{props.onToggleInlineBlame && <DropdownMenuCheckboxItem className={checkboxClass} checked={props.inlineBlame} onCheckedChange={props.onToggleInlineBlame}><UserRound className="size-4 text-muted-foreground" />Inline blame</DropdownMenuCheckboxItem>}
|
|
67
|
+
{props.onToggleLsp && <DropdownMenuCheckboxItem className={checkboxClass} checked={props.lspEnabled} onCheckedChange={props.onToggleLsp}><Zap className="size-4 text-muted-foreground" />Language server</DropdownMenuCheckboxItem>}
|
|
68
|
+
<DropdownMenuSub>
|
|
69
|
+
<DropdownMenuSubTrigger className={`${menuClass} gap-2`}><FileCode className="size-4 text-muted-foreground" />Editor language</DropdownMenuSubTrigger>
|
|
70
|
+
<DropdownMenuSubContent className="max-h-80 overflow-y-auto">
|
|
71
|
+
<DropdownMenuRadioGroup value={props.language} onValueChange={props.onLanguageChange}>
|
|
72
|
+
{EDITOR_LANGUAGES.map((language) => <DropdownMenuRadioItem key={language.id} className="min-h-11 md:min-h-8" value={language.id}>{language.label}</DropdownMenuRadioItem>)}
|
|
73
|
+
</DropdownMenuRadioGroup>
|
|
74
|
+
</DropdownMenuSubContent>
|
|
75
|
+
</DropdownMenuSub>
|
|
76
|
+
</DropdownMenuContent>
|
|
77
|
+
</DropdownMenu>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { api } from "@/lib/api-client";
|
|
3
|
+
import { Loader2 } from "@/lib/icons";
|
|
4
|
+
|
|
5
|
+
/** The server also enforces the sandbox, including when a preview URL is opened directly. */
|
|
6
|
+
export function HtmlPreview({ filePath, projectName, revision }: {
|
|
7
|
+
filePath: string;
|
|
8
|
+
projectName?: string;
|
|
9
|
+
revision: number;
|
|
10
|
+
}) {
|
|
11
|
+
const [url, setUrl] = useState<string>();
|
|
12
|
+
const [error, setError] = useState<string>();
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const controller = new AbortController();
|
|
15
|
+
setUrl(undefined);
|
|
16
|
+
setError(undefined);
|
|
17
|
+
const timeout = setTimeout(() => controller.abort(new Error("Preview request timed out. Try Refresh.")), 30_000);
|
|
18
|
+
let active = true;
|
|
19
|
+
api.post<{ url: string }>("/api/html-preview", { filePath, projectName }, { signal: controller.signal })
|
|
20
|
+
.then((data) => { if (active) setUrl(data.url); })
|
|
21
|
+
.catch((reason: unknown) => { if (active) setError(reason instanceof Error ? reason.message : "Could not open HTML preview"); })
|
|
22
|
+
.finally(() => clearTimeout(timeout));
|
|
23
|
+
return () => { active = false; clearTimeout(timeout); controller.abort(); };
|
|
24
|
+
}, [filePath, projectName, revision]);
|
|
25
|
+
|
|
26
|
+
if (error) return <div role="alert" className="p-4 text-sm text-destructive">{error}. Use Refresh to retry.</div>;
|
|
27
|
+
if (!url) return <div role="status" className="flex flex-1 items-center justify-center gap-2 text-sm text-muted-foreground"><Loader2 className="size-5 animate-spin" />Loading preview…</div>;
|
|
28
|
+
return <iframe title="HTML preview" src={url} sandbox="allow-scripts" referrerPolicy="no-referrer"
|
|
29
|
+
className="flex-1 min-h-0 w-full border-0 bg-white" />;
|
|
30
|
+
}
|