@nextclaw/ui 0.14.0 → 0.14.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/assets/{api-B50yVdT8.js → api-C6EDHBDR.js} +1 -1
  3. package/dist/assets/channels-list-page-DKj6m1Hc.js +8 -0
  4. package/dist/assets/chat-page-BXngLJY6.js +105 -0
  5. package/dist/assets/config-split-page-CjlmJy8X.js +1 -0
  6. package/dist/assets/{confirm-dialog-DRSelLdI.js → confirm-dialog-B39X0pYp.js} +1 -1
  7. package/dist/assets/desktop-update-config-DfUQ8nly.js +1 -0
  8. package/dist/assets/{dist-NZRV-BxD.js → dist-BIYV2-Ia.js} +1 -1
  9. package/dist/assets/{dist-D19wiQwB.js → dist-CmMro3nV.js} +1 -1
  10. package/dist/assets/doc-browser-B6Wc_TIY.js +1 -0
  11. package/dist/assets/doc-browser-CDtUtcim.js +1 -0
  12. package/dist/assets/{doc-browser-context-C8KPbj-p.js → doc-browser-context-DZbC9zVB.js} +1 -1
  13. package/dist/assets/{ellipsis-BYy8TP0A.js → ellipsis-DDpgTzgx.js} +1 -1
  14. package/dist/assets/{external-link-528k6MDD.js → external-link-D2cBOCqn.js} +1 -1
  15. package/dist/assets/index-DTb_XVIH.js +103 -0
  16. package/dist/assets/index-ayiPYhf1.css +1 -0
  17. package/dist/assets/mcp-marketplace-page-DZ9H0v05.js +1 -0
  18. package/dist/assets/mcp-marketplace-page-cnVWf7QQ.js +40 -0
  19. package/dist/assets/model-config-page-Bcb35AVv.js +1 -0
  20. package/dist/assets/plus-CYE1onU2.js +1 -0
  21. package/dist/assets/provider-scoped-model-input-kdoNp4HG.js +1 -0
  22. package/dist/assets/providers-config-page-CQSibSwO.js +1 -0
  23. package/dist/assets/{react-Dsotw5vM.js → react-DYQXXGbH.js} +1 -1
  24. package/dist/assets/remote-BlJDbXOI.js +1 -0
  25. package/dist/assets/rotate-cw-BWbvFDAX.js +1 -0
  26. package/dist/assets/runtime-config-page-Tn2yLQ0c.js +1 -0
  27. package/dist/assets/{save-CHDnDTok.js → save-BNVTgBVn.js} +1 -1
  28. package/dist/assets/search-CKCzwLId.js +1 -0
  29. package/dist/assets/search-config-page-DG5Q2hF1.js +1 -0
  30. package/dist/assets/{secrets-config-page-95yaH1fa.js → secrets-config-page-BXn5Uuwp.js} +2 -2
  31. package/dist/assets/select-CIRwTNP4.js +41 -0
  32. package/dist/assets/{tag-chip-Cr8GwpRE.js → tag-chip-DKhVFtTE.js} +1 -1
  33. package/dist/assets/{use-config-TzwzTgg0.js → use-config-DgKM9VIU.js} +1 -1
  34. package/dist/assets/x-Cm3JjYut.js +1 -0
  35. package/dist/index.html +14 -27
  36. package/package.json +9 -9
  37. package/src/app/presenters/app.presenter.ts +2 -0
  38. package/src/features/account/components/account-panel.tsx +2 -2
  39. package/src/features/chat/components/conversation/chat-conversation-header-section.tsx +1 -0
  40. package/src/features/chat/features/input/components/chat-input-bar.container.tsx +39 -80
  41. package/src/features/chat/features/input/hooks/use-chat-input-bar-query-state.ts +118 -0
  42. package/src/features/chat/features/input/utils/__tests__/chat-input-bar.utils.test.ts +2 -17
  43. package/src/features/chat/features/input/utils/chat-input-bar.utils.ts +1 -24
  44. package/src/features/chat/features/input/utils/chat-input-toolbar.utils.ts +0 -27
  45. package/src/features/chat/features/message/components/__tests__/chat-inline-panel-app-card.test.tsx +89 -0
  46. package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +9 -1
  47. package/src/features/chat/features/message/components/chat-inline-panel-app-card.tsx +115 -0
  48. package/src/features/chat/features/message/components/chat-message-list.container.tsx +4 -0
  49. package/src/features/chat/features/message/utils/__tests__/chat-message-show-content-tool-card.utils.test.ts +119 -1
  50. package/src/features/chat/features/message/utils/chat-inline-panel-app-card.utils.ts +51 -0
  51. package/src/features/chat/features/message/utils/chat-message-show-content-tool-card.utils.ts +28 -5
  52. package/src/features/chat/features/message/utils/chat-message-tool-card.utils.ts +4 -0
  53. package/src/features/chat/features/ncp/hooks/__tests__/use-ui-show-content-event.test.tsx +1 -0
  54. package/src/features/chat/features/ncp/utils/ncp-chat-query-derived.utils.ts +11 -3
  55. package/src/features/chat/features/session/components/session-header/__tests__/chat-session-header-actions.test.tsx +27 -0
  56. package/src/features/chat/features/session/components/session-header/chat-session-header-actions.tsx +19 -1
  57. package/src/features/chat/features/session/components/session-header/chat-session-metadata-dialog.tsx +46 -0
  58. package/src/features/chat/features/session/hooks/__tests__/use-selected-session-context-window-indicator.test.tsx +63 -0
  59. package/src/features/chat/features/session/hooks/use-selected-session-context-window-indicator.ts +7 -10
  60. package/src/features/chat/features/session/utils/__tests__/ncp-session-adapter.utils.test.ts +8 -0
  61. package/src/features/chat/features/session/utils/ncp-session-adapter.utils.ts +2 -0
  62. package/src/features/chat/features/session-type/hooks/use-chat-session-type-state.ts +1 -0
  63. package/src/features/chat/features/session-type/utils/chat-session-type.utils.ts +4 -0
  64. package/src/features/chat/index.ts +1 -0
  65. package/src/features/chat/managers/__tests__/chat-input.manager.test.ts +28 -0
  66. package/src/features/chat/managers/__tests__/chat-run-snapshot.manager.test.ts +129 -0
  67. package/src/features/chat/managers/__tests__/chat-run.manager.test.ts +34 -0
  68. package/src/features/chat/managers/__tests__/chat-session-preference-sync.manager.test.ts +143 -1
  69. package/src/features/chat/managers/__tests__/chat-thread.manager.test.ts +30 -0
  70. package/src/features/chat/managers/__tests__/recent-selection.manager.test.ts +37 -14
  71. package/src/features/chat/managers/chat-draft-intent.manager.ts +46 -0
  72. package/src/features/chat/managers/chat-input.manager.ts +13 -13
  73. package/src/features/chat/managers/chat-run.manager.ts +3 -0
  74. package/src/features/chat/managers/chat-session-preference-sync.manager.ts +19 -2
  75. package/src/features/chat/managers/chat-thread.manager.ts +4 -0
  76. package/src/features/chat/managers/chat-ui.manager.ts +2 -6
  77. package/src/features/chat/managers/recent-selection.manager.ts +21 -67
  78. package/src/features/chat/pages/__tests__/ncp-chat-page.test.ts +47 -1
  79. package/src/features/chat/pages/ncp-chat-page.tsx +18 -0
  80. package/src/features/chat/stores/chat-input.store.ts +7 -1
  81. package/src/features/chat/stores/recent-selection.store.ts +85 -0
  82. package/src/features/chat/types/chat-input-bar.types.ts +0 -1
  83. package/src/features/panel-apps/components/__tests__/panel-apps-list.test.tsx +137 -0
  84. package/src/features/panel-apps/components/panel-apps-list.tsx +119 -5
  85. package/src/features/panel-apps/index.ts +2 -0
  86. package/src/features/panel-apps/utils/panel-app-entry-match.utils.ts +17 -0
  87. package/src/shared/lib/api/chat-session-type.types.ts +7 -0
  88. package/src/shared/lib/api/ncp-session.types.ts +1 -0
  89. package/src/shared/lib/api/types.ts +3 -0
  90. package/src/shared/lib/i18n/locales/en-US/chat.json +4 -0
  91. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +10 -0
  92. package/src/shared/lib/i18n/locales/zh-CN/chat.json +4 -0
  93. package/src/shared/lib/i18n/locales/zh-CN/doc-browser.json +10 -0
  94. package/dist/assets/app-presenter-provider-BI-ewLbO.js +0 -3
  95. package/dist/assets/arrow-left-BOCJyLbQ.js +0 -1
  96. package/dist/assets/book-open-Bd2Xbrrc.js +0 -1
  97. package/dist/assets/channels-list-page-moJkpxtU.js +0 -8
  98. package/dist/assets/chat-page-CO27cl4v.js +0 -105
  99. package/dist/assets/config-split-page-CsQ2rIdq.js +0 -1
  100. package/dist/assets/desktop-update-config-qa-SynOc.js +0 -1
  101. package/dist/assets/doc-browser-2ddUJCA0.js +0 -1
  102. package/dist/assets/doc-browser-BjHUczQb.js +0 -1
  103. package/dist/assets/es2015-BUIIKCNh.js +0 -41
  104. package/dist/assets/host-capabilities-9bB_998Z.js +0 -1
  105. package/dist/assets/index-CMNrRhnG.js +0 -101
  106. package/dist/assets/index-UTmTW1eU.css +0 -1
  107. package/dist/assets/key-round-D3vD9dj7.js +0 -1
  108. package/dist/assets/loader-circle-DV9TSRns.js +0 -1
  109. package/dist/assets/mcp-marketplace-page-CS5Lh3oA.js +0 -1
  110. package/dist/assets/mcp-marketplace-page-DEOMcWb0.js +0 -40
  111. package/dist/assets/model-config-page-BSc4o7pb.js +0 -1
  112. package/dist/assets/notice-card-qqlbsOoR.js +0 -1
  113. package/dist/assets/plus-Bf9qhPDO.js +0 -1
  114. package/dist/assets/popover-BnmPOXe3.js +0 -1
  115. package/dist/assets/provider-scoped-model-input-Ca56s475.js +0 -1
  116. package/dist/assets/providers-config-page-D8Kf4U3u.js +0 -1
  117. package/dist/assets/refresh-cw-Bmx4wc9P.js +0 -1
  118. package/dist/assets/remote-DNMEy_c4.js +0 -1
  119. package/dist/assets/rotate-cw-CL0sVBel.js +0 -1
  120. package/dist/assets/runtime-config-page-CUFtKr0U.js +0 -1
  121. package/dist/assets/search-D7L-TCH-.js +0 -1
  122. package/dist/assets/search-config-page-CA3RVAef.js +0 -1
  123. package/dist/assets/status-dot-Dm4h-bjn.js +0 -1
  124. package/dist/assets/tabs-CJvw5Lqp.js +0 -1
  125. package/dist/assets/tooltip-Bxzi6aDL.js +0 -1
  126. package/dist/assets/trash-2-CSfX-BvU.js +0 -1
  127. package/dist/assets/x-fkIWvi07.js +0 -1
  128. package/src/features/chat/features/input/hooks/__tests__/use-chat-input-bar-controller.test.tsx +0 -152
  129. package/src/features/chat/features/input/hooks/use-chat-input-bar-controller.ts +0 -142
  130. /package/dist/assets/{config-hints-Cl2XAhzV.js → config-hints-CTqBnCDp.js} +0 -0
@@ -1 +1 @@
1
- import{a as e,h as t,p as n,r,t as i,v as a}from"./react-Dsotw5vM.js";var o=`docs.nextclaw.io`,s=`nextclaw-docs.pages.dev`,c=new Set([o,`www.${o}`,s,`www.${s}`]),l=`https://${o}`,u=`home`,d=`nextclaw://new-tab`,f=`/guide/getting-started`;function p(e){return e===`zh`?`zh`:`en`}function m(e,t){let n=e.startsWith(`/`)?e:`/${e}`;return n===`/`||n===``?`/${t}/`:/^\/(en|zh)(\/|$)/.test(n)?n:`/${t}${n}`}function h(t){let n=p(e());try{let e=new URL(t,l);return c.has(e.hostname)&&(e.pathname=m(e.pathname,n)),e.toString()}catch{return new URL(`/${n}${f}`,l).toString()}}function g(){return h(f)}function _(e){try{return new URL(e).pathname.replace(/\.html$/,``).replace(/\/$/,``)}catch{return e}}function v(e,t,n=`Docs`){try{let r=new URL(e,l);if(r.protocol===`data:`)return t===`docs`?n:`Detail`;let i=r.pathname.split(`/`).filter(Boolean),a=i[i.length-1]??n;return decodeURIComponent(a).replace(/[-_]/g,` `).slice(0,40)||n}catch{return n}}function y(e){try{let t=new URL(e,window.location.origin);return c.has(t.hostname)}catch{return!1}}function b(e,t){return t===`docs`?h(e):e}function x(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var S=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return S(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return S(t)(e)}}}},C=(e,t)=>(n,r,i)=>{let a={storage:x(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,l=new Set,u=a.storage;if(!u)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let d=()=>{let e=a.partialize({...r()});return u.setItem(a.name,{state:e,version:a.version})},f=i.setState;i.setState=(e,t)=>(f(e,t),d());let p=e((...e)=>(n(...e),d()),r,i);i.getInitialState=()=>p;let m,h=()=>{if(!u)return;let e=++s;o=!1,c.forEach(e=>e(r()??p));let t=a.onRehydrateStorage?.call(a,r()??p)||void 0;return S(u.getItem.bind(u))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(m=a.merge(o,r()??p),n(m,!0),i)return d()}).then(()=>{e===s&&(t?.(m,void 0),m=r(),o=!0,l.forEach(e=>e(m)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(u=e.storage)},clearStorage:()=>{u?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(l.add(e),()=>{l.delete(e)})},a.skipHydration||h(),m||p},w=0;function T(){return w+=1,`doc-tab-${Date.now()}-${w}`}function E(e,t,n,i,a,o){let s=n?.trim()||v(e,t,t===`docs`?r(`docBrowserHelp`):`Detail`),c=a?.trim();return{id:T(),kind:t,title:s,currentUrl:e,resourceUri:c||void 0,dockIcon:o,dedupeKey:i,history:[e],historyIndex:0,navVersion:0}}function D(e){return{kind:e.kind,resourceUri:e.resourceUri,tabId:e.id,url:e.currentUrl}}function O(){let e=E(d,u,r(`docBrowserHomeTitle`));return{isOpen:!1,mode:`docked`,tabs:[e],activeTabId:e.id,activeHistory:[D(e)],activeHistoryIndex:0}}var k=`nextclaw.doc-browser.state`,A=1,j=8;function M(e){return!!e&&typeof e==`object`}function N(e){return e===`floating`||e===`docked`}function P(e,t){if(!Array.isArray(e))return[t];let n=e.filter(e=>typeof e==`string`&&e.trim().length>0);return n.length>0?n:[t]}function F(e,t,n,r){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):r}function I(e){if(!(!M(e)||typeof e.type!=`string`)){if(e.type===`builtin`&&typeof e.name==`string`&&e.name.trim().length>0)return{type:`builtin`,name:e.name.trim()};if(e.type===`url`&&typeof e.url==`string`&&e.url.trim().length>0)return{type:`url`,url:e.url.trim()};if(e.type===`text`&&typeof e.value==`string`&&e.value.trim().length>0)return{type:`text`,value:e.value.trim()}}}function L(e){if(!M(e)||typeof e.id!=`string`||typeof e.kind!=`string`||typeof e.title!=`string`||typeof e.currentUrl!=`string`||e.currentUrl.trim().length===0)return null;let t=P(e.history,e.currentUrl),n=F(e.historyIndex,0,t.length-1,t.length-1),r=F(e.navVersion,0,2**53-1,0),i=typeof e.dedupeKey==`string`&&e.dedupeKey.trim().length>0?e.dedupeKey:void 0,a=typeof e.resourceUri==`string`&&e.resourceUri.trim().length>0?e.resourceUri.trim():void 0,o=I(e.dockIcon);return{id:e.id,kind:e.kind,title:e.title,currentUrl:t[n]??e.currentUrl,resourceUri:a,dockIcon:o,dedupeKey:i,history:t,historyIndex:n,navVersion:r}}function R(e){return{kind:e.kind,resourceUri:e.resourceUri,tabId:e.id,url:e.currentUrl}}function z(e,t){if(!M(e)||typeof e.tabId!=`string`||typeof e.kind!=`string`||typeof e.url!=`string`||e.url.trim().length===0||!t.has(e.tabId))return null;let n=typeof e.resourceUri==`string`&&e.resourceUri.trim().length>0?e.resourceUri.trim():void 0;return{kind:e.kind,resourceUri:n,tabId:e.tabId,url:e.url}}function B(e){if(!M(e))return null;let t=Array.isArray(e.tabs)?e.tabs.map(L).filter(e=>e!==null).slice(-j):[];if(t.length===0)return null;let n=typeof e.activeTabId==`string`?e.activeTabId:null,r=t.some(e=>e.id===n)?n??t[0].id:t[0].id,i=new Map(t.map(e=>[e.id,e])),a=Array.isArray(e.activeHistory)?e.activeHistory.map(e=>z(e,i)).filter(e=>e!==null):[],o=[R(i.get(r)??t[0])],s=a.length>0?a:o,c=F(e.activeHistoryIndex,0,s.length-1,s.length-1),l=s[c],u=i.has(l.tabId)?l.tabId:r;return{isOpen:e.isOpen===!0,mode:N(e.mode)?e.mode:`docked`,tabs:t,activeTabId:u,activeHistory:s,activeHistoryIndex:c}}function V(e,t){return typeof t==`function`?t(e):t}var H=i()(C(e=>({snapshot:O(),setSnapshot:t=>e(e=>({snapshot:V(e.snapshot,t)}))}),{name:k,version:A,storage:x(()=>window.localStorage),partialize:e=>({snapshot:{isOpen:e.snapshot.isOpen,mode:e.snapshot.mode,tabs:e.snapshot.tabs.slice(-j),activeTabId:e.snapshot.activeTabId,activeHistory:e.snapshot.activeHistory,activeHistoryIndex:e.snapshot.activeHistoryIndex}}),merge:(e,t)=>{let n=B(M(e)?e.snapshot:null);return n?{...t,snapshot:n}:t}})),U=a(t(),1),W=n(),G=(0,U.createContext)(null);function K(){let e=(0,U.useContext)(G);if(!e)throw Error(`useDocBrowser must be used within DocBrowserProvider`);return e}function q({children:e,manager:t}){let n=H(e=>e.snapshot),r=(0,U.useMemo)(()=>n.tabs.find(e=>e.id===n.activeTabId)??n.tabs[0],[n.activeTabId,n.tabs]),i=(0,U.useMemo)(()=>({...n,currentTab:r,open:t.open,openTarget:t.openTarget,openNewTab:t.openNewTab,close:t.close,toggleMode:t.toggleMode,navigate:t.navigate,syncUrl:t.syncUrl,goBack:t.goBack,goForward:t.goForward,closeTab:t.closeTab,setActiveTab:t.setActiveTab}),[r,t,n]);return(0,W.jsx)(G.Provider,{value:i,children:e})}export{D as a,C as c,d,g as f,b as g,_ as h,O as i,l,y as m,K as n,E as o,v as p,H as r,x as s,q as t,u};
1
+ import{a as e,h as t,p as n,r,t as i,v as a}from"./react-DYQXXGbH.js";function o(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var s=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return s(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return s(t)(e)}}}},c=(e,t)=>(n,r,i)=>{let a={storage:o(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},c=!1,l=0,u=new Set,d=new Set,f=a.storage;if(!f)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let p=()=>{let e=a.partialize({...r()});return f.setItem(a.name,{state:e,version:a.version})},m=i.setState;i.setState=(e,t)=>(m(e,t),p());let h=e((...e)=>(n(...e),p()),r,i);i.getInitialState=()=>h;let g,_=()=>{if(!f)return;let e=++l;c=!1,u.forEach(e=>e(r()??h));let t=a.onRehydrateStorage?.call(a,r()??h)||void 0;return s(f.getItem.bind(f))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==l)return;let[i,o]=t;if(g=a.merge(o,r()??h),n(g,!0),i)return p()}).then(()=>{e===l&&(t?.(g,void 0),g=r(),c=!0,d.forEach(e=>e(g)))}).catch(n=>{e===l&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(f=e.storage)},clearStorage:()=>{f?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>_(),hasHydrated:()=>c,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},a.skipHydration||_(),g||h},l=`docs.nextclaw.io`,u=`nextclaw-docs.pages.dev`,d=new Set([l,`www.${l}`,u,`www.${u}`]),f=`https://${l}`,p=`home`,m=`nextclaw://new-tab`,h=`/guide/getting-started`;function g(e){return e===`zh`?`zh`:`en`}function _(e,t){let n=e.startsWith(`/`)?e:`/${e}`;return n===`/`||n===``?`/${t}/`:/^\/(en|zh)(\/|$)/.test(n)?n:`/${t}${n}`}function v(t){let n=g(e());try{let e=new URL(t,f);return d.has(e.hostname)&&(e.pathname=_(e.pathname,n)),e.toString()}catch{return new URL(`/${n}${h}`,f).toString()}}function y(){return v(h)}function b(e){try{return new URL(e).pathname.replace(/\.html$/,``).replace(/\/$/,``)}catch{return e}}function x(e,t,n=`Docs`){try{let r=new URL(e,f);if(r.protocol===`data:`)return t===`docs`?n:`Detail`;let i=r.pathname.split(`/`).filter(Boolean),a=i[i.length-1]??n;return decodeURIComponent(a).replace(/[-_]/g,` `).slice(0,40)||n}catch{return n}}function S(e){try{let t=new URL(e,window.location.origin);return d.has(t.hostname)}catch{return!1}}function C(e,t){return t===`docs`?v(e):e}var w=0;function T(){return w+=1,`doc-tab-${Date.now()}-${w}`}function E(e,t,n,i,a,o){let s=n?.trim()||x(e,t,t===`docs`?r(`docBrowserHelp`):`Detail`),c=a?.trim();return{id:T(),kind:t,title:s,currentUrl:e,resourceUri:c||void 0,dockIcon:o,dedupeKey:i,history:[e],historyIndex:0,navVersion:0}}function D(e){return{kind:e.kind,resourceUri:e.resourceUri,tabId:e.id,url:e.currentUrl}}function O(){let e=E(m,p,r(`docBrowserHomeTitle`));return{isOpen:!1,mode:`docked`,tabs:[e],activeTabId:e.id,activeHistory:[D(e)],activeHistoryIndex:0}}var k=`nextclaw.doc-browser.state`,A=1,j=8;function M(e){return!!e&&typeof e==`object`}function N(e){return e===`floating`||e===`docked`}function P(e,t){if(!Array.isArray(e))return[t];let n=e.filter(e=>typeof e==`string`&&e.trim().length>0);return n.length>0?n:[t]}function F(e,t,n,r){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):r}function I(e){if(!(!M(e)||typeof e.type!=`string`)){if(e.type===`builtin`&&typeof e.name==`string`&&e.name.trim().length>0)return{type:`builtin`,name:e.name.trim()};if(e.type===`url`&&typeof e.url==`string`&&e.url.trim().length>0)return{type:`url`,url:e.url.trim()};if(e.type===`text`&&typeof e.value==`string`&&e.value.trim().length>0)return{type:`text`,value:e.value.trim()}}}function L(e){if(!M(e)||typeof e.id!=`string`||typeof e.kind!=`string`||typeof e.title!=`string`||typeof e.currentUrl!=`string`||e.currentUrl.trim().length===0)return null;let t=P(e.history,e.currentUrl),n=F(e.historyIndex,0,t.length-1,t.length-1),r=F(e.navVersion,0,2**53-1,0),i=typeof e.dedupeKey==`string`&&e.dedupeKey.trim().length>0?e.dedupeKey:void 0,a=typeof e.resourceUri==`string`&&e.resourceUri.trim().length>0?e.resourceUri.trim():void 0,o=I(e.dockIcon);return{id:e.id,kind:e.kind,title:e.title,currentUrl:t[n]??e.currentUrl,resourceUri:a,dockIcon:o,dedupeKey:i,history:t,historyIndex:n,navVersion:r}}function R(e){return{kind:e.kind,resourceUri:e.resourceUri,tabId:e.id,url:e.currentUrl}}function z(e,t){if(!M(e)||typeof e.tabId!=`string`||typeof e.kind!=`string`||typeof e.url!=`string`||e.url.trim().length===0||!t.has(e.tabId))return null;let n=typeof e.resourceUri==`string`&&e.resourceUri.trim().length>0?e.resourceUri.trim():void 0;return{kind:e.kind,resourceUri:n,tabId:e.tabId,url:e.url}}function B(e){if(!M(e))return null;let t=Array.isArray(e.tabs)?e.tabs.map(L).filter(e=>e!==null).slice(-j):[];if(t.length===0)return null;let n=typeof e.activeTabId==`string`?e.activeTabId:null,r=t.some(e=>e.id===n)?n??t[0].id:t[0].id,i=new Map(t.map(e=>[e.id,e])),a=Array.isArray(e.activeHistory)?e.activeHistory.map(e=>z(e,i)).filter(e=>e!==null):[],o=[R(i.get(r)??t[0])],s=a.length>0?a:o,c=F(e.activeHistoryIndex,0,s.length-1,s.length-1),l=s[c],u=i.has(l.tabId)?l.tabId:r;return{isOpen:e.isOpen===!0,mode:N(e.mode)?e.mode:`docked`,tabs:t,activeTabId:u,activeHistory:s,activeHistoryIndex:c}}function V(e,t){return typeof t==`function`?t(e):t}var H=i()(c(e=>({snapshot:O(),setSnapshot:t=>e(e=>({snapshot:V(e.snapshot,t)}))}),{name:k,version:A,storage:o(()=>window.localStorage),partialize:e=>({snapshot:{isOpen:e.snapshot.isOpen,mode:e.snapshot.mode,tabs:e.snapshot.tabs.slice(-j),activeTabId:e.snapshot.activeTabId,activeHistory:e.snapshot.activeHistory,activeHistoryIndex:e.snapshot.activeHistoryIndex}}),merge:(e,t)=>{let n=B(M(e)?e.snapshot:null);return n?{...t,snapshot:n}:t}})),U=a(t(),1),W=n(),G=(0,U.createContext)(null);function K(){let e=(0,U.useContext)(G);if(!e)throw Error(`useDocBrowser must be used within DocBrowserProvider`);return e}function q({children:e,manager:t}){let n=H(e=>e.snapshot),r=(0,U.useMemo)(()=>n.tabs.find(e=>e.id===n.activeTabId)??n.tabs[0],[n.activeTabId,n.tabs]),i=(0,U.useMemo)(()=>({...n,currentTab:r,open:t.open,openTarget:t.openTarget,openNewTab:t.openNewTab,close:t.close,toggleMode:t.toggleMode,navigate:t.navigate,syncUrl:t.syncUrl,goBack:t.goBack,goForward:t.goForward,closeTab:t.closeTab,setActiveTab:t.setActiveTab}),[r,t,n]);return(0,W.jsx)(G.Provider,{value:i,children:e})}export{D as a,p as c,x as d,S as f,c as g,o as h,O as i,m as l,C as m,K as n,E as o,b as p,H as r,f as s,q as t,y as u};
@@ -1 +1 @@
1
- import{c as e}from"./dist-NZRV-BxD.js";var t=e(`Ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]);export{t};
1
+ import{c as e}from"./dist-BIYV2-Ia.js";var t=e(`Ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]);export{t};
@@ -1 +1 @@
1
- import{c as e}from"./dist-NZRV-BxD.js";var t=e(`ExternalLink`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]);export{t};
1
+ import{c as e}from"./dist-BIYV2-Ia.js";var t=e(`ExternalLink`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]);export{t};