@loicngr/kobo 1.11.39 → 1.11.41
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/AGENTS.md +101 -32
- package/CHANGELOG.md +8 -0
- package/README.md +6 -4
- package/dist/mcp-server/kobo-tasks-handlers.js +16 -9
- package/dist/mcp-server/kobo-tasks-server.js +13 -2
- package/dist/mcp-server/workspace-dialogue-client.js +28 -0
- package/dist/server/db/mcp-message-schema.js +16 -0
- package/dist/server/db/migrations.js +4 -0
- package/dist/server/db/schema.js +4 -0
- package/dist/server/db/search-schema.js +53 -0
- package/dist/server/index.js +17 -86
- package/dist/server/middleware/network-auth-middleware.js +5 -1
- package/dist/server/routes/changelog.js +4 -49
- package/dist/server/routes/git.js +2 -2
- package/dist/server/routes/images.js +65 -5
- package/dist/server/routes/mcp.js +47 -0
- package/dist/server/routes/pull-requests.js +1 -1
- package/dist/server/routes/search.js +13 -4
- package/dist/server/routes/settings.js +5 -0
- package/dist/server/routes/workspaces.js +250 -248
- package/dist/server/services/agent/engines/claude-code/engine.js +31 -33
- package/dist/server/services/agent/engines/codex/engine.js +37 -8
- package/dist/server/services/agent/engines/codex/event-mapper.js +3 -1
- package/dist/server/services/agent/engines/codex/options-builder.js +4 -3
- package/dist/server/services/agent/engines/codex/server-requests.js +8 -1
- package/dist/server/services/agent/orchestrator.js +20 -3
- package/dist/server/services/attachment-service.js +122 -0
- package/dist/server/services/change-source-branch-service.js +10 -42
- package/dist/server/services/chat-receipt-service.js +33 -0
- package/dist/server/services/cron-service.js +27 -1
- package/dist/server/services/image-service.js +16 -7
- package/dist/server/services/mcp-client-context.js +12 -0
- package/dist/server/services/mcp-connection-info-service.js +63 -0
- package/dist/server/services/mcp-message-delivery-service.js +59 -0
- package/dist/server/services/mcp-message-request-service.js +64 -0
- package/dist/server/services/pr-checkout-service.js +10 -10
- package/dist/server/services/pr-watcher-service.js +14 -9
- package/dist/server/services/search/indexer.js +232 -0
- package/dist/server/services/search/worker.js +76 -0
- package/dist/server/services/search-service.js +104 -110
- package/dist/server/services/update-check-service.js +119 -0
- package/dist/server/services/websocket-service.js +121 -35
- package/dist/server/services/workspace-dialogue-service.js +128 -0
- package/dist/server/services/workspace-message-service.js +58 -0
- package/dist/server/services/workspace-permission-policy-service.js +33 -3
- package/dist/server/services/worktree-restore-service.js +2 -2
- package/dist/server/services/worktree-service.js +197 -124
- package/dist/server/utils/bounded-process.js +137 -0
- package/dist/server/utils/git-ops.js +76 -128
- package/dist/server/utils/git-repo-lock.js +27 -13
- package/dist/shared/attachments.js +58 -0
- package/dist/shared/workspace-dialogue-tools.js +89 -0
- package/dist/shared/workspace-message-types.js +19 -0
- package/package.json +2 -1
- package/src/client/dist/pwa/assets/{ActivityFeed-Chsw1Mh7.css → ActivityFeed-BYR5x7aa.css} +1 -1
- package/src/client/dist/pwa/assets/ActivityFeed-DTIe6O9o.js +8 -0
- package/src/client/dist/pwa/assets/{ChangelogPage-D8563008.js → ChangelogPage-BWeu0YeI.js} +1 -1
- package/src/client/dist/pwa/assets/{ComparisonPanel-Bd0X08sg.js → ComparisonPanel-o_EHlTwV.js} +2 -2
- package/src/client/dist/pwa/assets/CreatePage-CGi88k6z.css +1 -0
- package/src/client/dist/pwa/assets/CreatePage-DbY5gBv8.js +2 -0
- package/src/client/dist/pwa/assets/DashboardPage-CIo_gesD.js +1 -0
- package/src/client/dist/pwa/assets/{DiffViewer-DnR79ycb.css → DiffViewer-DEPOa3D7.css} +1 -1
- package/src/client/dist/pwa/assets/DiffViewer-DEcf48KI.js +8 -0
- package/src/client/dist/pwa/assets/{DocumentsPanel-BJsJ0fNs.js → DocumentsPanel-D9vcB91W.js} +1 -1
- package/src/client/dist/pwa/assets/{DrawerToggleButton-BVLO5K5d.js → DrawerToggleButton-Ca0_CxSl.js} +1 -1
- package/src/client/dist/pwa/assets/GitPanel-DCmB2R5i.js +3 -0
- package/src/client/dist/pwa/assets/{HealthPage-RFZS7Lao.js → HealthPage-_q3vy_xn.js} +1 -1
- package/src/client/dist/pwa/assets/MainLayout-Duwnq3cc.js +2 -0
- package/src/client/dist/pwa/assets/{QBtnDropdown-X8oNU5Mb.js → QBtnDropdown-BeiZIHVA.js} +1 -1
- package/src/client/dist/pwa/assets/{QDrawer-Cij17skX.js → QDrawer-Fj3M9QGD.js} +1 -1
- package/src/client/dist/pwa/assets/QSelect-DtSUuK8t.js +1 -0
- package/src/client/dist/pwa/assets/{QTooltip-CwcCGSWq.js → QTooltip-DwkX8eQ6.js} +1 -1
- package/src/client/dist/pwa/assets/SchedulePanel-BAA4Aajn.css +1 -0
- package/src/client/dist/pwa/assets/SchedulePanel-BlZDd7TK.js +1 -0
- package/src/client/dist/pwa/assets/SearchPage-BGc1oQSM.css +1 -0
- package/src/client/dist/pwa/assets/SearchPage-BGi1yRxU.js +1 -0
- package/src/client/dist/pwa/assets/SettingsPage-DnO-ImWE.js +9 -0
- package/src/client/dist/pwa/assets/SettingsPage-sVlsJQ0b.css +1 -0
- package/src/client/dist/pwa/assets/{SplitWorkspacePage-D7lGFRKs.js → SplitWorkspacePage-vz6jN1DM.js} +1 -1
- package/src/client/dist/pwa/assets/{TerminalPanel-DI8DHb9e.js → TerminalPanel-IdPIGp2_.js} +9 -9
- package/src/client/dist/pwa/assets/{TouchPan-B3nrkCY8.js → TouchPan-DTJqxVp9.js} +1 -1
- package/src/client/dist/pwa/assets/{TourReplayButton-DU1UShMY.js → TourReplayButton-Bj2GGyhU.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-C-yN5IX8.js → WorkspaceAttentionLabels-BBaGZlwv.js} +1 -1
- package/src/client/dist/pwa/assets/WorkspacePage-DCg9zSxz.css +1 -0
- package/src/client/dist/pwa/assets/WorkspacePage-Dy0spsfi.js +4 -0
- package/src/client/dist/pwa/assets/{browser-f9MHQjfi.js → browser-BFj5wwbS.js} +1 -1
- package/src/client/dist/pwa/assets/{build-path-tree-BWBzP8os.js → build-path-tree-C-HSiySk.js} +1 -1
- package/src/client/dist/pwa/assets/de-BdLe7apJ.js +17 -0
- package/src/client/dist/pwa/assets/{documents-C2cLnEBQ.js → documents-C2Xnjh9Z.js} +1 -1
- package/src/client/dist/pwa/assets/{editor.api-sw146MWN.js → editor.api-BbKfnNmv.js} +1 -1
- package/src/client/dist/pwa/assets/{efforts-C5ZZgCH4.js → efforts-BM7fdaaL.js} +1 -1
- package/src/client/dist/pwa/assets/engineFeatures-b74YRODT.js +1 -0
- package/src/client/dist/pwa/assets/es-C1LM-3aq.js +17 -0
- package/src/client/dist/pwa/assets/expand-template-DiDWiIkx.js +1 -0
- package/src/client/dist/pwa/assets/{format-BwWP6Aay.js → format-CnbUxAmw.js} +1 -1
- package/src/client/dist/pwa/assets/{formatters-DyWtO-nR.js → formatters-B2uUIbAY.js} +1 -1
- package/src/client/dist/pwa/assets/fr-KCK6r5ga.js +17 -0
- package/src/client/dist/pwa/assets/{freemarker2-DZ5Hm8UH.js → freemarker2-Cu1vGY0x.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-BRUGpTA7.js → handlebars-CETuqLyz.js} +1 -1
- package/src/client/dist/pwa/assets/{html-DNOayNNs.js → html-BTNpr39P.js} +1 -1
- package/src/client/dist/pwa/assets/i18n-BkUirOzl.js +1 -0
- package/src/client/dist/pwa/assets/index-mvh5w1cM.js +20 -0
- package/src/client/dist/pwa/assets/it-BM6t0IGU.js +17 -0
- package/src/client/dist/pwa/assets/{javascript-C0tDQU3z.js → javascript-C7Ncb6V7.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-CN46O6OF.js → liquid-D0hUdg4x.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-DM-lrr8Q.js → mdx-BK5H1Xst.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco-contributions-CkN7y-8c.js → monaco-contributions-BBW6JNgz.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco.contribution-2BcAOLjc.js → monaco.contribution-1LZrAlY4.js} +2 -2
- package/src/client/dist/pwa/assets/network-auth-CVGS__6a.js +1 -0
- package/src/client/dist/pwa/assets/{notify-theme-a91Tcr6o.js → notify-theme-DIKLxr8F.js} +1 -1
- package/src/client/dist/pwa/assets/{pending-diff-open-DOtELZfB.js → pending-diff-open-B02zuH1j.js} +1 -1
- package/src/client/dist/pwa/assets/{permissionModes-C-9Crj-c.js → permissionModes-C3otN1Vk.js} +1 -1
- package/src/client/dist/pwa/assets/{project-color-BRe4oyNx.js → project-color-BUcW_eZA.js} +1 -1
- package/src/client/dist/pwa/assets/{python-BRpJG6sZ.js → python-DEeUVvnp.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-CehCmvHl.js → razor-CG6cL8ya.js} +1 -1
- package/src/client/dist/pwa/assets/{render-chat-markdown-DlbQLZ02.js → render-chat-markdown-Ct_T5TPN.js} +1 -1
- package/src/client/dist/pwa/assets/{typescript-Dt_8mVuj.js → typescript-CSQAg5UC.js} +1 -1
- package/src/client/dist/pwa/assets/use-search-index-status-DtLzygcy.js +1 -0
- package/src/client/dist/pwa/assets/use-tours-_6HwJ_Rp.js +2 -0
- package/src/client/dist/pwa/assets/{workspace-templates-GCObcjO6.js → workspace-templates-B8WWsWEI.js} +1 -1
- package/src/client/dist/pwa/assets/{xml-_gOwdzB4.js → xml-BSB4-DXR.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-BxeBqpGf.js → yaml-CSGKph85.js} +1 -1
- package/src/client/dist/pwa/index.html +1 -1
- package/src/client/dist/pwa/sw.js +1 -1
- package/src/mcp-server/README.md +169 -9
- package/src/mcp-server/kobo-tasks-handlers.ts +14 -11
- package/src/mcp-server/kobo-tasks-server.ts +19 -2
- package/src/mcp-server/workspace-dialogue-client.ts +34 -0
- package/src/client/dist/pwa/assets/ActivityFeed-BzzvcOmq.js +0 -8
- package/src/client/dist/pwa/assets/CreatePage-A3pVradx.css +0 -1
- package/src/client/dist/pwa/assets/CreatePage-Bon8qIka.js +0 -2
- package/src/client/dist/pwa/assets/DashboardPage-DYxdxEul.js +0 -1
- package/src/client/dist/pwa/assets/DiffViewer-BpsLNxnj.js +0 -8
- package/src/client/dist/pwa/assets/GitPanel-Cal_wzC0.js +0 -3
- package/src/client/dist/pwa/assets/MainLayout-vvyiRcql.js +0 -2
- package/src/client/dist/pwa/assets/QSelect-xd-AlGo_.js +0 -1
- package/src/client/dist/pwa/assets/SchedulePanel-BunlzsOY.css +0 -1
- package/src/client/dist/pwa/assets/SchedulePanel-CXRUsz6G.js +0 -1
- package/src/client/dist/pwa/assets/SearchPage-CVgRa025.css +0 -1
- package/src/client/dist/pwa/assets/SearchPage-DopbgLxh.js +0 -1
- package/src/client/dist/pwa/assets/SettingsPage-Do9d0Pov.css +0 -1
- package/src/client/dist/pwa/assets/SettingsPage-Jx6TnOzR.js +0 -9
- package/src/client/dist/pwa/assets/WorkspacePage-BAC6u9OP.css +0 -1
- package/src/client/dist/pwa/assets/WorkspacePage-DKRpdpPg.js +0 -4
- package/src/client/dist/pwa/assets/de-QkDLrcGq.js +0 -17
- package/src/client/dist/pwa/assets/engineFeatures-CAVMDawq.js +0 -1
- package/src/client/dist/pwa/assets/es-BgQFKlo8.js +0 -17
- package/src/client/dist/pwa/assets/expand-template-B6xAlAaM.js +0 -1
- package/src/client/dist/pwa/assets/fr-DAdLWjNM.js +0 -17
- package/src/client/dist/pwa/assets/i18n-CBez_vip.js +0 -1
- package/src/client/dist/pwa/assets/index-VL3fI9a3.js +0 -20
- package/src/client/dist/pwa/assets/it-Bumaewp1.js +0 -17
- package/src/client/dist/pwa/assets/network-auth-KYS4snQH.js +0 -1
- package/src/client/dist/pwa/assets/use-tours-CSVM_54K.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.mcp-config[data-v-2ac25d1e]{white-space:pre-wrap;overflow-wrap:anywhere;background:#00000029;border-radius:4px;font-size:12px;overflow-x:auto}.mcp-url[data-v-2ac25d1e]{overflow-wrap:anywhere;min-width:0}.notification-sounds-grid[data-v-41966330]{grid-template-columns:1fr;gap:12px;display:grid}.notification-sound-card[data-v-41966330]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle)}.volume-label[data-v-41966330]{min-width:58px}.volume-value[data-v-41966330]{text-align:right;min-width:40px}.settings-nav__list[data-v-fac6b946]{padding:0}.settings-nav__item[data-v-fac6b946]{border-radius:var(--kobo-radius-sm);color:var(--kobo-text-2);min-height:30px;transition:background-color var(--kobo-duration-micro) var(--kobo-ease-out), color var(--kobo-duration-micro) var(--kobo-ease-out);padding:6px 12px;font-size:13px;font-weight:500}.settings-nav__item[data-v-fac6b946]:hover{background-color:var(--kobo-hover);color:var(--kobo-text)}.settings-nav__item--active[data-v-fac6b946]{background-color:var(--kobo-hover);color:var(--kobo-text);position:relative}.settings-nav__item--active[data-v-fac6b946]:before{content:"";background-color:var(--kobo-accent);border-radius:1px;width:2px;position:absolute;top:6px;bottom:6px;left:-8px}.settings-nav__icon[data-v-fac6b946]{min-width:24px;color:inherit}.settings-nav__label[data-v-fac6b946]{padding-left:4px}.whip-shortcut-recorder[data-v-d8618bd9]{min-width:180px}.settings-page.q-page[data-v-173a9cce]{background-color:var(--kobo-bg);flex-direction:column;min-height:100vh;padding:0;display:flex;position:relative}.purge-docs[data-v-173a9cce]{background-color:#ffffff05;border:1px solid #ffffff0f}.purge-docs-code[data-v-173a9cce]{font-family:var(--kobo-font-mono,monospace);color:var(--kobo-text-2);white-space:pre-wrap;word-break:break-all;background-color:#00000059;border:1px solid #ffffff0f;border-radius:4px;margin:6px 0;padding:8px 10px;font-size:11px}.settings-load-error[data-v-173a9cce]{align-items:flex-start;gap:var(--kobo-space-sm);padding:var(--kobo-space-md);border:1px solid var(--kobo-danger);border-radius:var(--kobo-radius-sm);background:var(--kobo-surface);color:var(--kobo-text);flex-shrink:0;display:flex}.settings-load-error__detail[data-v-173a9cce],.settings-load-error__hint[data-v-173a9cce]{color:var(--kobo-text-3);font-size:12px}.settings-layout[data-v-173a9cce]{flex:auto;align-items:stretch;min-height:0;display:flex;position:relative;overflow:hidden}.settings-nav[data-v-173a9cce]{background-color:var(--kobo-surface);border-right:1px solid var(--kobo-border-subtle);flex-shrink:0;width:240px;padding:24px 12px;overflow-y:auto}.settings-nav__title[data-v-173a9cce]{font-family:var(--kobo-font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--kobo-text-3);margin-bottom:16px;padding:0 12px;font-size:11px;font-weight:600}.settings-content[data-v-173a9cce]{flex:1;min-width:0;padding:24px 32px 80px;overflow-y:auto}.settings-content__header[data-v-173a9cce]{border-bottom:1px solid var(--kobo-border-subtle);background-color:var(--kobo-bg);z-index:2;align-items:center;gap:var(--kobo-space-sm);margin-top:-24px;margin-bottom:24px;padding-top:24px;padding-bottom:16px;display:flex;position:sticky;top:-24px}.settings-content__nav-toggle[data-v-173a9cce]{color:var(--kobo-text-2)}.settings-content__title[data-v-173a9cce]{font-family:var(--kobo-font-sans);color:var(--kobo-text);margin:0;font-size:22px;font-weight:600;line-height:1.2}.settings-panels[data-v-173a9cce]{background:0 0}.settings-global-wrap[data-v-173a9cce]{display:block}.settings-card[data-v-173a9cce]{background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-md)}.settings-subcard[data-v-173a9cce]{background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-md);margin-bottom:16px}.notification-sounds-grid[data-v-173a9cce]{grid-template-columns:1fr;gap:12px;display:grid}.notification-sound-card[data-v-173a9cce]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle)}.voice-model-row[data-v-173a9cce]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);transition:border-color var(--kobo-duration-short) var(--kobo-ease-out)}.voice-model-row--active[data-v-173a9cce]{border-color:var(--kobo-accent)}.voice-models-dir[data-v-173a9cce]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);padding:6px 10px}.template-card[data-v-173a9cce]{background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle)}.settings-input[data-v-173a9cce] .q-field__control{background:var(--kobo-surface-2);border-color:var(--kobo-border-subtle)}.settings-input[data-v-173a9cce] .q-field__native,.settings-input[data-v-173a9cce] input,.settings-input[data-v-173a9cce] textarea{color:var(--kobo-text)}.settings-input[data-v-173a9cce] .q-field__label{color:var(--kobo-text-3)}.mono-textarea[data-v-173a9cce] textarea{font-family:var(--kobo-font-mono);font-size:13px}.mono-guide[data-v-173a9cce]{white-space:pre-wrap;background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);font-family:var(--kobo-font-mono);color:var(--kobo-text-2);margin:0;padding:8px 10px;font-size:12px;line-height:1.35}.readonly-input[data-v-173a9cce] .q-field__control{background:var(--kobo-bg)}.readonly-input[data-v-173a9cce] input{color:var(--kobo-text-3)}.project-list-col[data-v-173a9cce]{flex-shrink:0;align-self:flex-start;width:30%;min-width:200px;max-width:280px;max-height:calc(100vh - 140px);position:sticky;top:0;overflow:hidden}.project-form-col[data-v-173a9cce]{flex:1;min-width:0}.project-item[data-v-173a9cce]:hover{background-color:#ffffff08}.project-item--active[data-v-173a9cce]{border-left:2px solid var(--kobo-accent);background-color:var(--kobo-hover)!important}.save-btn--dirty[data-v-173a9cce]{border-radius:var(--kobo-radius-sm);transition:box-shadow var(--kobo-duration-short) var(--kobo-ease-out);box-shadow:0 0 0 2px var(--kobo-accent)!important}.settings-savebar[data-v-173a9cce]{z-index:30;background-color:var(--kobo-surface);border-top:1px solid var(--kobo-border-subtle);justify-content:space-between;align-items:center;gap:16px;padding:12px 32px;display:flex;position:absolute;bottom:0;left:240px;right:0}.settings-savebar--full[data-v-173a9cce]{padding:var(--kobo-space-md) var(--kobo-space-lg);left:0}.settings-savebar__label[data-v-173a9cce]{font-family:var(--kobo-font-sans);color:var(--kobo-text-2);font-size:13px;font-weight:500}.settings-savebar__action[data-v-173a9cce]{border-radius:var(--kobo-radius-sm);padding:6px 16px;font-size:13px;font-weight:500;background-color:var(--kobo-accent)!important;color:var(--kobo-accent-fg)!important}.settings-savebar__action[data-v-173a9cce]:hover{background-color:var(--kobo-accent-hover)!important}.save-bar-enter-active[data-v-173a9cce],.save-bar-leave-active[data-v-173a9cce]{transition:transform var(--kobo-duration-medium) var(--kobo-ease-out), opacity var(--kobo-duration-medium) var(--kobo-ease-out)}.save-bar-enter-from[data-v-173a9cce],.save-bar-leave-to[data-v-173a9cce]{opacity:0;transform:translateY(100%)}
|
package/src/client/dist/pwa/assets/{SplitWorkspacePage-D7lGFRKs.js → SplitWorkspacePage-vz6jN1DM.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,j as t,ot as n,ut as r,v as i}from"./reactivity.esm-bundler-DEJj9cFv.js";import{C as a,F as o,J as s,L as c,O as l,P as u,X as d,Y as f,_ as p,d as m,h,l as g,p as _,u as v,y,z as b}from"./runtime-core.esm-bundler-CDnVUfeZ.js";import{S as x,b as S,et as C,t as w,tt as T,y as E}from"./QBtn-CZaBclNw.js";import{a as D,i as O}from"./pinia-BKqmoVru.js";import{t as k}from"./use-id-BIuaWKkB.js";import{E as A,
|
|
1
|
+
import{S as e,j as t,ot as n,ut as r,v as i}from"./reactivity.esm-bundler-DEJj9cFv.js";import{C as a,F as o,J as s,L as c,O as l,P as u,X as d,Y as f,_ as p,d as m,h,l as g,p as _,u as v,y,z as b}from"./runtime-core.esm-bundler-CDnVUfeZ.js";import{S as x,b as S,et as C,t as w,tt as T,y as E}from"./QBtn-CZaBclNw.js";import{a as D,i as O}from"./pinia-BKqmoVru.js";import{t as k}from"./use-id-BIuaWKkB.js";import{E as A,O as j,Tt as M,i as N,n as P,p as F,r as I,t as L,w as R}from"./index-mvh5w1cM.js";import{t as z}from"./QSelect-DtSUuK8t.js";import{a as B,i as V,n as H,r as U}from"./use-tours-_6HwJ_Rp.js";import{t as W}from"./TouchPan-DTJqxVp9.js";import{t as G}from"./QPage-DaX9sMQC.js";import{t as K}from"./workspace-page-layout-Dw9NhZsL.js";var q=T({name:`QSplitter`,props:{...D,modelValue:{type:Number,required:!0},reverse:Boolean,unit:{type:String,default:`%`,validator:e=>[`%`,`px`].includes(e)},limits:{type:Array,validator:e=>e.length!==2||typeof e[0]!=`number`||typeof e[1]!=`number`?!1:e[0]>=0&&e[0]<=e[1]},emitImmediately:Boolean,horizontal:Boolean,disable:Boolean,beforeClass:[Array,String,Object],afterClass:[Array,String,Object],separatorClass:[Array,String,Object],separatorStyle:[Array,String,Object],separatorAriaLabel:String},emits:[`update:modelValue`],setup(t,{slots:n,emit:r}){let i=E(),o=O(t,i),c=e(null),u={before:e(null),after:e(null)},f=k(),p=g(()=>`q-splitter no-wrap ${t.horizontal?`q-splitter--horizontal column`:`q-splitter--vertical row`} q-splitter--${t.disable?`disabled`:`workable`}`+(o()?` q-splitter--dark`:``)),m=g(()=>t.horizontal?`height`:`width`),h=g(()=>t.reverse?`after`:`before`),_=g(()=>t.limits===void 0?t.unit===`%`?[10,90]:[50,1/0]:t.limits);function v(e){return(t.unit===`%`?e:Math.round(e))+t.unit}let y=g(()=>({[h.value]:{[m.value]:v(t.modelValue)}})),b,w,T,D,A;function j(e){if(e.isFirst){let e=c.value.getBoundingClientRect()[m.value];b=t.horizontal?`up`:`left`,w=t.unit===`%`?100:e,T=Math.min(w,_.value[1],Math.max(_.value[0],t.modelValue)),D=(t.reverse?-1:1)*(t.horizontal?1:i.lang.rtl?-1:1)*(t.unit===`%`?e===0?0:100/e:1),c.value.classList.add(`q-splitter--active`);return}if(e.isFinal){A!==t.modelValue&&r(`update:modelValue`,A),c.value.classList.remove(`q-splitter--active`);return}let n=T+D*(e.direction===b?-1:1)*e.distance[t.horizontal?`y`:`x`];A=Math.min(w,_.value[1],Math.max(_.value[0],n)),u[h.value].value.style[m.value]=v(A),t.emitImmediately&&t.modelValue!==A&&r(`update:modelValue`,A)}let M=g(()=>[[W,t.disable?void 0:j,void 0,{[t.horizontal?`vertical`:`horizontal`]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]),N=g(()=>{let e={role:`separator`,"aria-orientation":t.horizontal?`horizontal`:`vertical`,"aria-label":t.separatorAriaLabel||i.lang.label.resize};if(t.disable)e[`aria-disabled`]=`true`;else{let n=_.value;e.tabindex=0,e[`aria-controls`]=f.value,e[`aria-valuemin`]=n[0],n[1]!==1/0&&(e[`aria-valuemax`]=n[1]),e[`aria-valuenow`]=Math.round(t.modelValue*100)/100}return e}),P=null;function F(e){let{keyCode:n}=e,a=t.horizontal?[38,40]:[37,39];if(n!==13&&n!==36&&n!==35&&!a.includes(n))return;C(e);let o=_.value,s=t.unit===`%`?100:c.value.getBoundingClientRect()[m.value],l;if(n===13)t.modelValue===o[0]?l=P===null?t.modelValue:P:(P=t.modelValue,l=o[0]);else if(n===36)l=o[0];else if(n===35)l=o[1];else{let e=(n===a[0]?-1:1)*(t.reverse?-1:1)*(t.horizontal?1:i.lang.rtl?-1:1);l=t.modelValue+e*(t.unit===`%`?1:10)}let u=Math.min(s,o[1],Math.max(o[0],l));u!==t.modelValue&&r(`update:modelValue`,u)}function I(e,t){e<t[0]?r(`update:modelValue`,t[0]):e>t[1]&&r(`update:modelValue`,t[1])}return s(()=>t.modelValue,e=>{I(e,_.value)}),s(()=>t.limits,()=>{l(()=>{I(t.modelValue,_.value)})}),()=>{let e=[a(`div`,{ref:u.before,id:h.value===`before`?f.value:void 0,class:[`q-splitter__panel q-splitter__before`+(t.reverse?` col`:``),t.beforeClass],style:y.value.before},x(n.before)),a(`div`,{class:[`q-splitter__separator`,t.separatorClass],style:t.separatorStyle,...N.value,onKeydown:t.disable?void 0:F},[d(a(`div`,{class:`q-splitter__separator-area absolute-full`},x(n.separator)),M.value)]),a(`div`,{ref:u.after,id:h.value===`after`?f.value:void 0,class:[`q-splitter__panel q-splitter__after`+(t.reverse?``:` col`),t.afterClass],style:y.value.after},x(n.after))];return a(`div`,{class:p.value,ref:c},S(n.default,e))}}}),J={class:`split-header`,"data-tour":`split-controls`},Y={class:`split-pane-header`},ee={class:`split-recipient`,"aria-live":`polite`},te=[`src`,`title`],ne={key:1,class:`split-empty`},X=B(y({__name:`SplitWorkspacePage`,setup(e){let a=F(),l=U(),d=L(),y=P(),{t:x}=M(),S=[`before`,`after`],C=i([``,``]),T=i([``,``]),E=[null,null],D=i(0),O=null;try{O=localStorage.getItem(`kobo:splitRatio`)}catch{}let k=i(A(O)),B=g(()=>[...a.workspaces,...a.archivedWorkspaces].map(e=>({label:e.name,value:e.id})));function W(e){return B.value.find(t=>t.value===C.value[e])?.label||C.value[e]||x(`split.choose`)}function X(e,t){E[e]=t}function Z(e){try{return E[e]?.contentWindow?.koboPane}catch{return}}async function re(e,t){D.value=e;let n=Z(e);n?(await n.navigate(t),Q()):T.value[e]||(C.value[e]=t,T.value[e]=R(t))}function Q(){for(let e of[0,1]){let t=Z(e);t?.ready()&&(C.value[e]=t.workspaceId()??``),E[e]&&document.activeElement===E[e]&&(D.value=e)}d.name===`split`&&[0,1].every(e=>!T.value[e]||Z(e)?.ready())&&j(y,{left:C.value[0]||void 0,right:C.value[1]||void 0})}function ie(){try{localStorage.setItem(`kobo:splitRatio`,String(k.value))}catch{}}s(()=>[d.query.left,d.query.right],([e,t])=>{for(let[n,r]of[e,t].entries()){let e=typeof r==`string`?r:``;C.value[n]!==e&&(C.value[n]=e,T.value[n]=C.value[n]?R(C.value[n]):``)}},{immediate:!0});let{scheduleAutoRun:ae}=H(),$;return u(()=>{I(`split-panes`,()=>[0,1].some(e=>Z(e)?.hasUnsavedWork())),$=setInterval(Q,500),ae(`split`)}),o(()=>{N(`split-panes`),clearInterval($)}),(e,i)=>(c(),m(G,{class:`split-page`,"style-fn":t(K)},{default:f(()=>[v(`header`,J,[p(w,{flat:``,dense:``,"no-caps":``,label:e.$t(`layout.toggleWorkspaces`),onClick:i[0]||=e=>t(l).toggleLeft()},null,8,[`label`]),v(`strong`,null,r(e.$t(`split.title`)),1),p(V),p(w,{flat:``,dense:``,"no-caps":``,label:e.$t(`split.close`),onClick:i[1]||=e=>t(y).push({name:`workspace`,params:{id:C.value[D.value]||void 0}})},null,8,[`label`])]),p(q,{modelValue:k.value,"onUpdate:modelValue":[i[2]||=e=>k.value=e,ie],limits:[25,75],horizontal:e.$q.screen.lt.md,class:`split-body`},h({_:2},[b(S,(t,i)=>({name:t,fn:f(()=>[v(`section`,{class:n([`split-pane`,{"split-pane--active":D.value===i}])},[v(`div`,Y,[p(z,{"model-value":C.value[i],options:B.value,"emit-value":``,"map-options":``,dense:``,outlined:``,label:e.$t(i===0?`split.left`:`split.right`),class:`split-select`,"onUpdate:modelValue":e=>re(i,e)},null,8,[`model-value`,`options`,`label`,`onUpdate:modelValue`]),v(`span`,ee,r(e.$t(`split.recipient`,{name:W(i)})),1)]),T.value[i]?(c(),_(`iframe`,{key:0,ref:e=>X(i,e),src:T.value[i],title:e.$t(`split.recipient`,{name:W(i)}),class:`split-frame`,onLoad:Q},null,40,te)):(c(),_(`div`,ne,r(e.$t(`split.choose`)),1))],2)])}))]),1032,[`modelValue`,`horizontal`])]),_:1},8,[`style-fn`]))}}),[[`__scopeId`,`data-v-f921b7b1`]]);export{X as default};
|