@topwrite/reader 1.0.63 → 1.0.64-alpha.8

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 (30) hide show
  1. package/dist/267-efd799.js +1 -0
  2. package/dist/610-77ed2c.js +2 -0
  3. package/dist/610-77ed2c.js.map +1 -0
  4. package/dist/index.js +6 -6
  5. package/dist/index.js.map +1 -1
  6. package/package.json +3 -3
  7. package/types/components/search/ask-box/form.d.ts +6 -0
  8. package/types/components/search/ask-box/index.d.ts +6 -0
  9. package/types/components/search/ask-box/screens/start-screen.d.ts +2 -0
  10. package/types/components/search/ask-box/state.d.ts +6 -0
  11. package/types/components/search/icons/ask-icon.d.ts +2 -0
  12. package/types/components/search/icons/index.d.ts +1 -0
  13. package/types/components/search/mode-provider.d.ts +5 -0
  14. package/types/components/search/search-box/form.d.ts +6 -0
  15. package/types/components/search/search-box/index.d.ts +7 -0
  16. package/types/components/search/{results.d.ts → search-box/results.d.ts} +1 -1
  17. package/types/components/search/search-box/screens/error-screen.d.ts +2 -0
  18. package/types/components/search/{screens → search-box/screens}/results-screen.d.ts +7 -4
  19. package/types/components/search/search-box/state.d.ts +9 -0
  20. package/types/models/ask.d.ts +16 -0
  21. package/types/models/index.d.ts +1 -0
  22. package/dist/267-b6fa96.js +0 -1
  23. package/dist/913-88a4f7.js +0 -2
  24. package/dist/913-88a4f7.js.map +0 -1
  25. package/types/components/search/screen-state.d.ts +0 -10
  26. package/types/components/search/search-box.d.ts +0 -11
  27. /package/dist/{913.css → 610.css} +0 -0
  28. /package/types/components/search/{screens → ask-box/screens}/error-screen.d.ts +0 -0
  29. /package/types/components/search/{screens → search-box/screens}/no-result-screen.d.ts +0 -0
  30. /package/types/components/search/{screens → search-box/screens}/start-screen.d.ts +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_topwrite_reader=self.webpackChunk_topwrite_reader||[]).push([[267],{53267:e=>{e.exports=JSON.parse('{"2QzYmY":"取消","47GdDb":"关闭","4R5GEq":"首页","51pt/B":"未命名分组","FDRhoz":"发送","IHXx7d":"本文档使用 {link} 构建","OyX2KZ":"问一个问题...","U3+qBB":"搜索文档...","Z+slnL":"没有结果:","fTNnxP":"回到顶部","inUHj3":"选中","k+fk3r":"导航","lLNl8o":"智问","lXhmij":"没有最近搜索","n24ytq":"未命名文档","xUjLTE":"搜索","zg86wv":"我是一个智能AI助理,你可以向我提问关于本文档的任何问题"}')}}]);
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk_topwrite_reader=self.webpackChunk_topwrite_reader||[]).push([[610],{32610:(e,n,r)=>{"use strict";r.r(n),r.d(n,{default:()=>Ne});r(25444),r(82814),r(44703),r(63583),r(19855),r(25013),r(77389),r(37607),r(55126),r(87462),r(5148);var t=r(28056),c=r.n(t),o=r(6322),a=r.n(o),s=r(45990),i=r.n(s),l=r(34889),u=r.n(l),d=r(20264),h=(r(38664),r(80532),r(87363)),f=r.n(h);function p(){return(0,d.jsx)("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5",children:(0,d.jsx)("g",{fill:"none",fillRule:"evenodd",children:(0,d.jsxs)("g",{transform:"translate(1 1)",strokeWidth:"2",children:[(0,d.jsx)("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),(0,d.jsx)("path",{d:"M36 18c0-9.94-8.06-18-18-18",children:(0,d.jsx)("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})})]})})})}function v(){return(0,d.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",children:(0,d.jsx)("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"})})}function m(){return(0,d.jsx)("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20",children:(0,d.jsx)("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"})})}function j(){return(0,d.jsx)("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20",children:(0,d.jsxs)("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),(0,d.jsx)("path",{d:"M8 17l-6-6 6-6"})]})})}function x(){return(0,d.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",children:(0,d.jsx)("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"})})}function g(){return(0,d.jsx)("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"})})}function b(){return(0,d.jsx)("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"})})}function y(){return(0,d.jsx)("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon",children:(0,d.jsx)("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"})})}function w(){return(0,d.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",preserveAspectRatio:"xMidYMid meet",children:(0,d.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 2.491A1.246 1.246 0 108 0a1.246 1.246 0 000 2.491zm0 2.436a.858.858 0 100-1.716.858.858 0 000 1.716zm.858 7.004a.858.858 0 11-1.716 0 .858.858 0 011.716 0zM11.073 8a.858.858 0 101.716 0 .858.858 0 00-1.716 0zm-7.004.858a.858.858 0 110-1.716.858.858 0 010 1.716zm6.104-3.03a.858.858 0 101.213-1.214.858.858 0 00-1.213 1.213zm-4.346 5.558a.858.858 0 11-1.213-1.213.858.858 0 011.213 1.213zm4.346-1.213a.858.858 0 101.213 1.213.858.858 0 00-1.213-1.213zm-5.56-4.346a.858.858 0 111.214-1.213.858.858 0 01-1.213 1.213zM8 16a1.246 1.246 0 100-2.491A1.246 1.246 0 008 16zm6.754-6.754a1.246 1.246 0 110-2.492 1.246 1.246 0 010 2.492zM0 8a1.246 1.246 0 102.491 0A1.246 1.246 0 000 8zm14.472-2.298a1.246 1.246 0 11-1.245-2.158 1.246 1.246 0 011.245 2.158zM1.072 12a1.246 1.246 0 102.157-1.246A1.246 1.246 0 001.072 12zm9.226 2.472a1.246 1.246 0 112.158-1.245 1.246 1.246 0 01-2.158 1.245zM4 1.072a1.246 1.246 0 101.246 2.157A1.246 1.246 0 004 1.072zm8.456 1.701a1.246 1.246 0 11-2.158-1.245 1.246 1.246 0 012.158 1.245zM4 14.928a1.246 1.246 0 101.246-2.158A1.246 1.246 0 004 14.928zm9.226-2.472a1.246 1.246 0 111.246-2.157 1.246 1.246 0 01-1.245 2.157zM1.072 4a1.246 1.246 0 102.157 1.246A1.246 1.246 0 001.072 4z",fill:"currentColor"})})}var D,S=r(97192),k=["className"];function O(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function C(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?O(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}var N="Ctrl";var M=(0,h.forwardRef)((function(e,n){e.className;var r=u()(e,k),t=(0,h.useState)(null),c=i()(t,2),o=c[0],a=c[1];(0,h.useEffect)((function(){"undefined"!=typeof navigator&&a(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"⌘":N)}),[]);var s=(0,S.cw)();return(0,d.jsxs)(P,C(C({type:"button",className:"DocSearch DocSearch-Button"},r),{},{ref:n,children:[(0,d.jsxs)("span",{className:"DocSearch-Button-Container",children:[(0,d.jsx)(m,{}),(0,d.jsx)("span",{className:"DocSearch-Button-Placeholder",children:s.$t({id:"xUjLTE",defaultMessage:[{type:0,value:"搜索"}]})})]}),null!==o&&(0,d.jsxs)("span",{className:"DocSearch-Button-Keys",children:[(0,d.jsx)("span",{className:"DocSearch-Button-Key",children:o===N?(0,d.jsx)(y,{}):o}),(0,d.jsx)("span",{className:"DocSearch-Button-Key",children:"K"})]})]}))})),P=S.zo.button(D||(D=c()(["\n .DocSearch-Button-Keys {\n min-width: 0;\n padding: .125rem .25rem;\n background: rgba(0, 0, 0, 0.08);\n border-radius: .25rem;\n }\n\n .DocSearch-Button-Key {\n top: 1px;\n width: auto;\n height: 1.25rem;\n padding-right: .125rem;\n padding-left: .125rem;\n margin-right: 0;\n font-size: .875rem;\n background: none;\n box-shadow: none;\n }\n"]))),E=r(61533),L=(0,h.createContext)(["search",function(){}]);function z(e){var n=e.children,r=(0,h.useState)("search"),t=i()(r,2),c=t[0],o=t[1];return(0,d.jsx)(L.Provider,{value:[c,o],children:n})}var A,H,B,R,I=function(){return(0,h.useContext)(L)};function K(e){return(0,d.jsx)("svg",{width:"15",height:"15",children:(0,d.jsx)("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2",children:e.children})})}function T(){var e=(0,S.cw)(),n=I(),r=i()(n,2),t=r[0],c=r[1],o=(0,S.v9)("ask").enable,a="search"==t?[(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(K,{children:(0,d.jsx)("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"})})}),(0,d.jsx)("span",{className:"DocSearch-Label",children:e.$t({id:"inUHj3",defaultMessage:[{type:0,value:"选中"}]})})]},"select"),(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(K,{children:(0,d.jsx)("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"})})}),(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(K,{children:(0,d.jsx)("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"})})}),(0,d.jsx)("span",{className:"DocSearch-Label",children:e.$t({id:"k+fk3r",defaultMessage:[{type:0,value:"导航"}]})})]},"navigate")]:[(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(K,{children:(0,d.jsx)("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"})})}),(0,d.jsx)("span",{className:"DocSearch-Label",children:e.$t({id:"FDRhoz",defaultMessage:[{type:0,value:"发送"}]})})]},"send")];return a.push((0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(K,{children:(0,d.jsx)("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"})})}),(0,d.jsx)("span",{className:"DocSearch-Label",children:e.$t({id:"47GdDb",defaultMessage:[{type:0,value:"关闭"}]})})]},"close")),(0,d.jsxs)(F,{className:"DocSearch-Footer",children:[(0,d.jsx)("ul",{className:"DocSearch-Commands",children:a}),o&&(0,d.jsxs)(q,{children:[(0,d.jsx)($,{$active:"search"===t,onClick:function(){return c("search")},children:e.$t({id:"xUjLTE",defaultMessage:[{type:0,value:"搜索"}]})}),(0,d.jsx)($,{$active:"ask"===t,onClick:function(){return c("ask")},children:e.$t({id:"lLNl8o",defaultMessage:[{type:0,value:"智问"}]})})]})]})}var $=S.zo.div(A||(A=c()(["\n padding: 0 8px;\n border-radius: 2px;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n line-height: 22px;\n color: var(--docsearch-muted-color);\n\n ",";\n"])),(function(e){return e.$active&&(0,S.iv)(H||(H=c()(["\n background-color: rgba(0, 0, 0, 0.1);\n "])))})),q=S.zo.div(B||(B=c()(["\n height: 32px;\n padding: 4px;\n border-radius: 2px;\n display: flex;\n flex-direction: row;\n align-items: center;\n border: 1px solid rgb(212, 217, 225, 0.4);\n"]))),F=S.zo.footer(R||(R=c()(["\n flex-direction: row !important;\n"]))),U=(r(70888),64),V=r(12611);function Y(e){var n=e.onClose,r=(0,S.tT)("search"),t=i()(r,2),c=t[0],o=c.query,a=c.status,s=t[1].fetch,l=(0,S.cw)(),u=(0,h.useRef)(null),j=(0,h.useRef)(o).current;f().useEffect((function(){u.current&&u.current.focus()}),[]);var x=(0,h.useCallback)((function(){u.current&&(u.current.value="",s(""))}),[s]),g=(0,h.useMemo)((function(){return(0,V.debounce)(s,500)}),[s]),b=(0,h.useCallback)((function(e){g(e.target.value)}),[g]);return(0,d.jsxs)("header",{className:"DocSearch-SearchBar",children:[(0,d.jsxs)("form",{className:["DocSearch-Form","loading"===a&&"DocSearch-Container--Stalled"].filter(Boolean).join(" "),onSubmit:function(e){e.preventDefault()},children:[(0,d.jsx)("label",{className:"DocSearch-MagnifierLabel",children:(0,d.jsx)(m,{})}),(0,d.jsx)("div",{className:"DocSearch-LoadingIndicator",children:(0,d.jsx)(p,{})}),(0,d.jsx)("input",{defaultValue:j,placeholder:l.$t({id:"U3+qBB",defaultMessage:[{type:0,value:"搜索文档..."}]}),className:"DocSearch-Input",enterKeyHint:"done",ref:u,autoFocus:!0,maxLength:U,onChange:b}),(0,d.jsx)("button",{title:"Clear the query",className:"DocSearch-Reset",hidden:!o,onClick:x,children:(0,d.jsx)(v,{})})]}),(0,d.jsx)("button",{className:"DocSearch-Cancel",onClick:n,children:l.$t({id:"2QzYmY",defaultMessage:[{type:0,value:"取消"}]})})]})}r(8213),r(32766);var Z=r(68158);function W(){return(0,d.jsxs)("div",{className:"DocSearch-ErrorScreen",children:[(0,d.jsx)("div",{className:"DocSearch-Screen-Icon",children:(0,d.jsx)(g,{})}),(0,d.jsx)("p",{className:"DocSearch-Title",children:"Unable to fetch results"}),(0,d.jsx)("p",{className:"DocSearch-Help",children:"You might want to check your network connection."})]})}function _(e){var n=(0,S.v9)("search").status,r=(0,S.cw)();return"idle"!==n||e.hasCollections?null:(0,d.jsx)("div",{className:"DocSearch-StartScreen",children:(0,d.jsx)("p",{className:"DocSearch-Help",children:r.$t({id:"lXhmij",defaultMessage:[{type:0,value:"没有最近搜索"}]})})})}function G(){var e=(0,S.v9)("search").query,n=(0,S.cw)();return(0,d.jsxs)("div",{className:"DocSearch-NoResults",children:[(0,d.jsx)("div",{className:"DocSearch-Screen-Icon",children:(0,d.jsx)(b,{})}),(0,d.jsxs)("p",{className:"DocSearch-Title",children:[n.$t({id:"Z+slnL",defaultMessage:[{type:0,value:"没有结果:"}]}),' "',(0,d.jsx)("strong",{children:e}),'"']})]})}var Q=r(9491),X=["title","items"];function J(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function ee(e){var n=e.title,r=e.items,t=u()(e,X);return(0,d.jsxs)("section",{className:"DocSearch-Hits",children:[(0,d.jsx)("div",{className:"DocSearch-Hit-source",children:n}),(0,d.jsx)("ul",{children:r.map((function(e,n){return(0,d.jsx)(ne,function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?J(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):J(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}({item:e},t),n)}))})]})}function ne(e){var n=e.item,r=e.onItemClick,t=e.onActive,c=e.activeIndex,o=(0,h.useCallback)((function(){t(n.id)}),[t,n]);return(0,d.jsx)("li",{className:"DocSearch-Hit",onClick:function(){r(n)},onMouseMove:o,"aria-selected":c===n.id,children:(0,d.jsx)(Q.Z,{to:n.path,children:(0,d.jsxs)("div",{className:"DocSearch-Hit-Container",children:[(0,d.jsx)("div",{className:"DocSearch-Hit-icon",children:(0,d.jsx)(x,{})}),(0,d.jsxs)("div",{className:"DocSearch-Hit-content-wrapper",children:[(0,d.jsx)("span",{className:"DocSearch-Hit-title",children:n.title}),n.body&&(0,d.jsx)("span",{className:"DocSearch-Hit-path",children:n.body})]}),(0,d.jsx)("div",{className:"DocSearch-Hit-action",children:(0,d.jsx)(j,{})})]})})})}var re=["collections"];function te(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function ce(e){var n=e.collections,r=u()(e,re);return(0,d.jsx)("div",{className:"DocSearch-Dropdown-Container",children:n.map((function(e,n){return(0,d.jsx)(ee,function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?te(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):te(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}({title:e.title,items:e.items},r),n)}))})}var oe=["onlyCurrentPart"];function ae(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function se(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?ae(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ae(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function ie(e){var n=e.onlyCurrentPart,r=u()(e,oe),t=(0,S.v9)("search"),c=t.status,o=t.query,a=t.results,s=(0,S.CQ)().summary,i=(0,S.cw)(),l=(0,Z.ZP)(),f=(0,h.useMemo)((function(){var e,r=0;if(s.isSinglePart())e=[{title:"",items:a}];else{var t=l?s.getArticlePart(l):null,c=s.getParts();t&&n&&(c=c.filter((function(e){return e.level===t.level}))),e=c.map((function(e){return{level:e.level,title:n?"":e.title||i.$t({id:"51pt/B",defaultMessage:[{type:0,value:"未命名分组"}]}),items:a.filter((function(n){var r=s.getArticle((function(e){return e.path===n.path}));return!!r&&s.getArticlePart(r)===e}))}})),t&&!n&&(e=e.sort((function(e){return e.level===t.level?-1:1})))}return e.filter((function(e){return e.items.length>0})).map((function(e){return se(se({},e),{},{items:e.items.map((function(e){return se(se({},e),{},{id:r++})}))})}))}),[a]);if("error"===c)return(0,d.jsx)(W,{});var p=f.length>0;return o?p?(0,d.jsx)(ce,se(se({},r),{},{collections:f})):(0,d.jsx)(G,{}):(0,d.jsx)(_,{hasCollections:p})}function le(e){var n=e.onClose,r=e.onlyCurrentPart,t=void 0!==r&&r,c=(0,S.v9)("search"),o=c.query,a=c.results,s=(0,h.useState)(void 0),l=i()(s,2),u=l[0],f=l[1],p=(0,h.useRef)(null),v=(0,h.useCallback)((function(e){f(e)}),[f]);return(0,h.useEffect)((function(){p.current&&(p.current.scrollTop=0)}),[o]),(0,h.useEffect)((function(){var e=function(e){var n;return null===(n=p.current)||void 0===n?void 0:n.getElementsByClassName("DocSearch-Hit").item(e)},n=function(n){"ArrowUp"===n.key||"ArrowDown"===n.key?(n.preventDefault(),f((function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;"ArrowUp"===n.key?--r:++r,r<0&&(r=a.length-1),r>=a.length&&(r=0);var t=e(r);return t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1)),r}))):"Enter"===n.key&&(n.preventDefault(),f((function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,r=e(n);return r&&requestAnimationFrame((function(){var e;null===(e=r.getElementsByTagName("a").item(0))||void 0===e||e.dispatchEvent(new Event("click",{bubbles:!0}))})),n})))};return window.addEventListener("keydown",n),function(){window.removeEventListener("keydown",n)}}),[f,a]),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Y,{onClose:n}),(0,d.jsx)("div",{className:"DocSearch-Dropdown",ref:p,children:(0,d.jsx)(ie,{onlyCurrentPart:t,onActive:v,activeIndex:u,onItemClick:function(){n()}})})]})}function ue(e){var n=e.onClose,r=(0,S.tT)("ask"),t=i()(r,2),c=t[0].status,o=t[1].fetch,a=(0,S.cw)(),s=(0,h.useRef)(null);(0,h.useEffect)((function(){s.current&&s.current.focus()}),[]);var l=(0,h.useCallback)((function(e){e.preventDefault(),s.current&&(o(s.current.value),s.current.value="")}),[s,o]);return(0,d.jsxs)("header",{className:"DocSearch-SearchBar",children:[(0,d.jsxs)("form",{className:["DocSearch-Form","loading"===c||"stalled"===c&&"DocSearch-Container--Stalled"].filter(Boolean).join(" "),onSubmit:l,children:[(0,d.jsx)("label",{className:"DocSearch-MagnifierLabel",children:(0,d.jsx)(w,{})}),(0,d.jsx)("div",{className:"DocSearch-LoadingIndicator",children:(0,d.jsx)(p,{})}),(0,d.jsx)("input",{placeholder:a.$t({id:"OyX2KZ",defaultMessage:[{type:0,value:"问一个问题..."}]}),className:"DocSearch-Input",ref:s,autoFocus:!0,enterKeyHint:"send",disabled:"loading"===c||"stalled"===c,maxLength:U})]}),(0,d.jsx)("button",{className:"DocSearch-Cancel",onClick:n,children:a.$t({id:"2QzYmY",defaultMessage:[{type:0,value:"取消"}]})})]})}function de(){var e=(0,S.cw)();return(0,d.jsx)("div",{className:"DocSearch-StartScreen",children:(0,d.jsx)("p",{className:"DocSearch-Help",children:e.$t({id:"zg86wv",defaultMessage:[{type:0,value:"我是一个智能AI助理,你可以向我提问关于本文档的任何问题"}]})})})}var he,fe,pe=r(61386);function ve(e){var n=e.onClose,r=(0,S.v9)("ask"),t=r.status,c=r.query,o=r.answer,a=(0,h.useMemo)((function(){return{a:pe.Z}}),[]);return"error"===t?(0,d.jsx)(W,{}):c?(0,d.jsx)("div",{className:"DocSearch-Dropdown-Container",children:(0,d.jsxs)(xe,{onClick:function(e){e.target instanceof HTMLAnchorElement&&n()},children:[(0,d.jsx)("h2",{children:c}),"loading"===t?(0,d.jsx)(je,{children:(0,d.jsx)(p,{})}):(0,d.jsx)(S.UG,{aside:!1,inject:!1,components:a,children:o})]})}):(0,d.jsx)(de,{})}var me,je=S.zo.div(he||(he=c()(["\n align-items: center;\n color: var(--docsearch-highlight-color);\n display: flex;\n justify-content: center;\n\n svg {\n height: 24px;\n width: 24px\n }\n"]))),xe=S.zo.div(fe||(fe=c()(["\n margin-top: 16px;\n margin-bottom: 16px;\n background: var(--docsearch-hit-background);\n padding: 16px;\n box-shadow: var(--docsearch-hit-shadow);\n border-radius: 4px;\n\n h2 {\n padding-bottom: .4em;\n font-size: 1.3em;\n line-height: 1.2;\n border-bottom: 1px solid #eeeeee;\n margin-top: 0;\n margin-bottom: 1em;\n }\n"])));function ge(e){var n=e.onClose,r=(0,S.v9)("ask"),t=r.query,c=r.status,o=r.answer,a=(0,h.useRef)(null);return(0,h.useEffect)((function(){a.current&&(a.current.scrollTop=0)}),[t]),(0,h.useEffect)((function(){a.current&&"stalled"===c&&(a.current.scrollTop=a.current.scrollHeight)}),[o,c]),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(ue,{onClose:n}),(0,d.jsx)(ye,{ref:a,children:(0,d.jsx)(ve,{onClose:n})})]})}var be,ye=S.zo.div(me||(me=c()(["\n max-height: calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\n min-height: var(--docsearch-spacing);\n overflow-y: auto;\n padding: 0 var(--docsearch-spacing);\n scrollbar-color: var(--docsearch-muted-color) var(--docsearch-modal-background);\n scrollbar-width: thin;\n\n @media (max-width: 768px) {\n max-height: calc(var(--docsearch-vh, 1vh) * 100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\n }\n @media (max-width: 768px) {\n height: 100%;\n }\n"])));function we(e){var n=e.onClose,r=void 0===n?V.noop:n,t=e.onlyCurrentPart,c=void 0!==t&&t,o=I(),a=i()(o,1)[0],s=(0,h.useRef)(null),l=(0,h.useRef)(null);return function(e){var n=e.container;f().useEffect((function(){if(n){var e=n.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),r=e[0],t=e[e.length-1];return n.addEventListener("keydown",c),function(){n.removeEventListener("keydown",c)}}function c(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===r&&(e.preventDefault(),t.focus()):document.activeElement===t&&(e.preventDefault(),r.focus()))}}),[n])}({container:s.current}),(0,h.useEffect)((function(){return document.body.classList.add("DocSearch--active"),function(){document.body.classList.remove("DocSearch--active")}}),[]),(0,h.useEffect)((function(){function e(){if(l.current){var e=.01*window.innerHeight;l.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),(0,d.jsx)(Se,{ref:s,className:"DocSearch DocSearch-Container",onMouseDown:function(e){e.target===e.currentTarget&&r()},children:(0,d.jsxs)("div",{className:"DocSearch-Modal",ref:l,children:["search"===a?(0,d.jsx)(le,{onlyCurrentPart:c,onClose:r}):(0,d.jsx)(ge,{onClose:r}),(0,d.jsx)(T,{})]})})}var De,Se=S.zo.div(be||(be=c()(["\n .DocSearch-Commands-Key {\n padding-left: 1px;\n font-size: .875rem;\n background-color: rgba(0, 0, 0, 0.1);\n background-image: none;\n box-shadow: none;\n }\n\n .DocSearch-Title {\n &:not(:last-child) {\n margin-bottom: 16px;\n }\n }\n\n .DocSearch-Hits {\n ul {\n box-shadow: var(--docsearch-hit-shadow);\n border-radius: 4px;\n margin-bottom: 4px;\n margin-top: 3px;\n }\n }\n\n .DocSearch-Hit {\n padding-bottom: 0;\n border-radius: 0;\n\n a {\n border-radius: 0;\n border-top: 1px solid rgb(212, 217, 225, 0.4);\n box-shadow: none;\n }\n\n &:first-child {\n a {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-top-width: 0;\n }\n }\n\n &:last-child {\n a {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n }\n }\n\n .DocSearch-Hit-content-wrapper {\n line-height: 1.3;\n }\n\n .DocSearch-Hit-title {\n font-size: 1em;\n }\n\n .DocSearch-Help {\n font-size: 1em;\n }\n\n .DocSearch-Label {\n line-height: 1;\n }\n\n"]))),ke=["as","className"];function Oe(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function Ce(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Oe(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Oe(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function Ne(e){var n=e.as,r=e.className,t=u()(e,ke),c=(0,h.useRef)(null),o=(0,h.useState)(!1),a=i()(o,2),s=a[0],l=a[1],p=(0,h.useCallback)((function(){l(!0)}),[l]),v=(0,h.useCallback)((function(){l(!1)}),[l]);!function(e){var n=e.isOpen,r=e.onOpen,t=e.onClose,c=e.onInput,o=e.searchButtonRef;f().useEffect((function(){function e(e){(27===e.keyCode&&n||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var n=e.target,r=n.tagName;return n.isContentEditable||"INPUT"===r||"SELECT"===r||"TEXTAREA"===r}(e)&&"/"===e.key&&!n)&&(e.preventDefault(),n?t():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||r()),o&&o.current===document.activeElement&&c&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&c(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[n,r,t,c,o])}({isOpen:s,onOpen:p,onClose:v,onInput:(0,h.useCallback)((function(){l(!0)}),[l]),searchButtonRef:c});var m=n||M;return(0,d.jsxs)(z,{children:[(0,d.jsx)(Me,{}),(0,d.jsx)(m,{onClick:p,className:r,ref:c}),s&&(0,E.createPortal)((0,d.jsx)(we,Ce(Ce({},t),{},{onClose:v})),document.body)]})}var Me=(0,S.vJ)(De||(De=c()(["\n :root:root {\n --docsearch-primary-color: var(--ttw-primary-color, #3c60ff);\n --docsearch-hit-height: 48px;\n --docsearch-searchbox-height: 48px;\n }\n"])))},51455:(e,n,r)=>{"use strict";var t=r(74259),c=TypeError;e.exports=function(e,n){if(!delete e[n])throw c("Cannot delete property "+t(n)+" of "+t(e))}},97695:(e,n,r)=>{var t=r(75531).match(/firefox\/(\d+)/i);e.exports=!!t&&+t[1]},31270:(e,n,r)=>{var t=r(75531);e.exports=/MSIE|Trident/.test(t)},5614:(e,n,r)=>{var t=r(75531).match(/AppleWebKit\/(\d+)\./);e.exports=!!t&&+t[1]},32766:(e,n,r)=>{"use strict";var t=r(46367),c=r(80764),o=r(52427),a=r(44247),s=r(61166),i=r(51455),l=r(38943),u=r(82170),d=r(98110),h=r(3939),f=r(97695),p=r(31270),v=r(27098),m=r(5614),j=[],x=c(j.sort),g=c(j.push),b=u((function(){j.sort(void 0)})),y=u((function(){j.sort(null)})),w=h("sort"),D=!u((function(){if(v)return v<70;if(!(f&&f>3)){if(p)return!0;if(m)return m<603;var e,n,r,t,c="";for(e=65;e<76;e++){switch(n=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(t=0;t<47;t++)j.push({k:n+t,v:r})}for(j.sort((function(e,n){return n.v-e.v})),t=0;t<j.length;t++)n=j[t].k.charAt(0),c.charAt(c.length-1)!==n&&(c+=n);return"DGBEFHACIJK"!==c}}));t({target:"Array",proto:!0,forced:b||!y||!w||!D},{sort:function(e){void 0!==e&&o(e);var n=a(this);if(D)return void 0===e?x(n):x(n,e);var r,t,c=[],u=s(n);for(t=0;t<u;t++)t in n&&g(c,n[t]);for(d(c,function(e){return function(n,r){return void 0===r?-1:void 0===n?1:void 0!==e?+e(n,r)||0:l(n)>l(r)?1:-1}}(e)),r=s(c),t=0;t<r;)n[t]=c[t++];for(;t<u;)i(n,t++);return n}})}}]);
2
+ //# sourceMappingURL=610-77ed2c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"610-77ed2c.js","mappings":"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","sources":["webpack://@topwrite/reader/./src/components/search/icons/loading-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/reset-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/search-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/select-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/content-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/error-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/no-results-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/control-key-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/ask-icon.tsx","webpack://@topwrite/reader/./src/components/search/doc-search-button.tsx","webpack://@topwrite/reader/./src/components/search/mode-provider.tsx","webpack://@topwrite/reader/./src/components/search/footer.tsx","webpack://@topwrite/reader/./src/components/search/constants.ts","webpack://@topwrite/reader/./src/components/search/search-box/form.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/error-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/no-result-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/results.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/results-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/state.tsx","webpack://@topwrite/reader/./src/components/search/search-box/index.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/form.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/state.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/index.tsx","webpack://@topwrite/reader/./src/components/search/doc-search-modal.tsx","webpack://@topwrite/reader/./src/components/search/hooks/use-trap-focus.ts","webpack://@topwrite/reader/./src/components/search/doc-search.tsx","webpack://@topwrite/reader/./src/components/search/hooks/use-keyboard-events.ts","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/delete-property-or-throw.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-ff-version.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-webkit-version.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/modules/es.array.sort.js"],"sourcesContent":["export function LoadingIcon() {\r\n return (\r\n <svg viewBox='0 0 38 38' stroke='currentColor' strokeOpacity='.5'>\r\n <g fill='none' fillRule='evenodd'>\r\n <g transform='translate(1 1)' strokeWidth='2'>\r\n <circle strokeOpacity='.3' cx='18' cy='18' r='18' />\r\n <path d='M36 18c0-9.94-8.06-18-18-18'>\r\n <animateTransform\r\n attributeName='transform'\r\n type='rotate'\r\n from='0 18 18'\r\n to='360 18 18'\r\n dur='1s'\r\n repeatCount='indefinite'\r\n />\r\n </path>\r\n </g>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n","export function ResetIcon() {\r\n return (\r\n <svg width='20' height='20' viewBox='0 0 20 20'>\r\n <path\r\n d='M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z'\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function SearchIcon() {\r\n return (\r\n <svg\r\n width='20'\r\n height='20'\r\n className='DocSearch-Search-Icon'\r\n viewBox='0 0 20 20'\r\n >\r\n <path\r\n d='M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z'\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function SelectIcon() {\r\n return (\r\n <svg\r\n className='DocSearch-Hit-Select-Icon'\r\n width='20'\r\n height='20'\r\n viewBox='0 0 20 20'\r\n >\r\n <g\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n <path d='M18 3v4c0 2-2 4-4 4H2' />\r\n <path d='M8 17l-6-6 6-6' />\r\n </g>\r\n </svg>\r\n );\r\n}\r\n","export function ContentIcon() {\r\n return (\r\n <svg width='20' height='20' viewBox='0 0 20 20'>\r\n <path\r\n d='M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4'\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function ErrorIcon() {\r\n return (\r\n <svg\r\n width='40'\r\n height='40'\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n fillRule='evenodd'\r\n stroke='currentColor'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n <path\r\n d='M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0'></path>\r\n </svg>\r\n );\r\n}\r\n","export function NoResultsIcon() {\r\n return (\r\n <svg\r\n width='40'\r\n height='40'\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n fillRule='evenodd'\r\n stroke='currentColor'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n <path\r\n d='M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2'></path>\r\n </svg>\r\n );\r\n}\r\n","export function ControlKeyIcon() {\r\n return (\r\n <svg width='15' height='15' className='DocSearch-Control-Key-Icon'>\r\n <path\r\n d='M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953'\r\n strokeWidth='1.2'\r\n stroke='currentColor'\r\n fill='none'\r\n strokeLinecap='square'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function AskIcon() {\r\n return <svg width='16' height='16' viewBox='0 0 16 16' fill='none' preserveAspectRatio='xMidYMid meet'>\r\n <path fillRule='evenodd' clipRule='evenodd' d='M8 2.491A1.246 1.246 0 108 0a1.246 1.246 0 000 2.491zm0 2.436a.858.858 0 100-1.716.858.858 0 000 1.716zm.858 7.004a.858.858 0 11-1.716 0 .858.858 0 011.716 0zM11.073 8a.858.858 0 101.716 0 .858.858 0 00-1.716 0zm-7.004.858a.858.858 0 110-1.716.858.858 0 010 1.716zm6.104-3.03a.858.858 0 101.213-1.214.858.858 0 00-1.213 1.213zm-4.346 5.558a.858.858 0 11-1.213-1.213.858.858 0 011.213 1.213zm4.346-1.213a.858.858 0 101.213 1.213.858.858 0 00-1.213-1.213zm-5.56-4.346a.858.858 0 111.214-1.213.858.858 0 01-1.213 1.213zM8 16a1.246 1.246 0 100-2.491A1.246 1.246 0 008 16zm6.754-6.754a1.246 1.246 0 110-2.492 1.246 1.246 0 010 2.492zM0 8a1.246 1.246 0 102.491 0A1.246 1.246 0 000 8zm14.472-2.298a1.246 1.246 0 11-1.245-2.158 1.246 1.246 0 011.245 2.158zM1.072 12a1.246 1.246 0 102.157-1.246A1.246 1.246 0 001.072 12zm9.226 2.472a1.246 1.246 0 112.158-1.245 1.246 1.246 0 01-2.158 1.245zM4 1.072a1.246 1.246 0 101.246 2.157A1.246 1.246 0 004 1.072zm8.456 1.701a1.246 1.246 0 11-2.158-1.245 1.246 1.246 0 012.158 1.245zM4 14.928a1.246 1.246 0 101.246-2.158A1.246 1.246 0 004 14.928zm9.226-2.472a1.246 1.246 0 111.246-2.157 1.246 1.246 0 01-1.245 2.157zM1.072 4a1.246 1.246 0 102.157 1.246A1.246 1.246 0 001.072 4z' fill='currentColor'></path>\r\n </svg>;\r\n}\r\n","import { ComponentProps, forwardRef, useEffect, useState } from 'react';\r\nimport { ControlKeyIcon, SearchIcon } from './icons';\r\nimport { styled, useIntl } from '@topwrite/common';\r\n\r\nexport type DocSearchButtonProps = ComponentProps<'button'>\r\n\r\nconst ACTION_KEY_DEFAULT = 'Ctrl' as const;\r\nconst ACTION_KEY_APPLE = '⌘' as const;\r\n\r\nfunction isAppleDevice() {\r\n return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n}\r\n\r\nexport const DocSearchButton = forwardRef<HTMLButtonElement, DocSearchButtonProps>(({ className, ...props }, ref) => {\r\n const [key, setKey] = useState<typeof ACTION_KEY_APPLE | typeof ACTION_KEY_DEFAULT | null>(null);\r\n\r\n useEffect(() => {\r\n if (typeof navigator !== 'undefined') {\r\n setKey(isAppleDevice() ? ACTION_KEY_APPLE : ACTION_KEY_DEFAULT);\r\n }\r\n }, []);\r\n\r\n const intl = useIntl();\r\n\r\n return <Button\r\n type='button'\r\n className='DocSearch DocSearch-Button'\r\n {...props}\r\n ref={ref}\r\n >\r\n <span className='DocSearch-Button-Container'>\r\n <SearchIcon />\r\n <span className='DocSearch-Button-Placeholder'>{intl.$t({ defaultMessage: '搜索' })}</span>\r\n </span>\r\n {key !== null && (\r\n <span className='DocSearch-Button-Keys'>\r\n <span className='DocSearch-Button-Key'>\r\n {key === ACTION_KEY_DEFAULT ? <ControlKeyIcon /> : key}\r\n </span>\r\n <span className='DocSearch-Button-Key'>K</span>\r\n </span>\r\n )}\r\n </Button>;\r\n});\r\n\r\nconst Button = styled.button`\r\n .DocSearch-Button-Keys {\r\n min-width: 0;\r\n padding: .125rem .25rem;\r\n background: rgba(0, 0, 0, 0.08);\r\n border-radius: .25rem;\r\n }\r\n\r\n .DocSearch-Button-Key {\r\n top: 1px;\r\n width: auto;\r\n height: 1.25rem;\r\n padding-right: .125rem;\r\n padding-left: .125rem;\r\n margin-right: 0;\r\n font-size: .875rem;\r\n background: none;\r\n box-shadow: none;\r\n }\r\n`\r\n","import { createContext, Dispatch, ReactNode, SetStateAction, useContext, useState } from 'react';\r\n\r\nconst Context = createContext<[string, Dispatch<SetStateAction<string>>]>(['search', () => (void 0)]);\r\n\r\nexport default function({ children }: { children: ReactNode }) {\r\n const [mode, setMode] = useState('search');\r\n\r\n return <Context.Provider value={[mode, setMode]}>\r\n {children}\r\n </Context.Provider>;\r\n}\r\n\r\nexport const useMode = () => {\r\n return useContext(Context);\r\n};\r\n","import React from 'react';\r\nimport { css, styled, useIntl, useSelector } from '@topwrite/common';\r\nimport { useMode } from './mode-provider';\r\n\r\ninterface CommandIconProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction CommandIcon(props: CommandIconProps) {\r\n return <svg width='15' height='15'>\r\n <g\r\n fill='none'\r\n stroke='currentColor'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n strokeWidth='1.2'\r\n >\r\n {props.children}\r\n </g>\r\n </svg>;\r\n}\r\n\r\nexport function Footer() {\r\n const intl = useIntl();\r\n const [mode, setMode] = useMode();\r\n const { enable } = useSelector('ask');\r\n\r\n const commands = mode == 'search' ? [\r\n <li key='select'>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '选中' })}</span>\r\n </li>,\r\n <li key='navigate'>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M7.5 3.5v8M10.5 8.5l-3 3-3-3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M7.5 11.5v-8M10.5 6.5l-3-3-3 3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '导航' })}</span>\r\n </li>,\r\n ] : [\r\n <li key='send'>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '发送' })}</span>\r\n </li>,\r\n ];\r\n\r\n commands.push(\r\n <li key='close'>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path\r\n d='M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '关闭' })}</span>\r\n </li>\r\n );\r\n\r\n return <Container className='DocSearch-Footer'>\r\n <ul className='DocSearch-Commands'>\r\n {commands}\r\n </ul>\r\n {enable && <ModeSwitcher>\r\n <SwitcherButton $active={mode === 'search'} onClick={() => setMode('search')}>{intl.$t({ defaultMessage: '搜索' })}</SwitcherButton>\r\n <SwitcherButton $active={mode === 'ask'} onClick={() => setMode('ask')}>{intl.$t({ defaultMessage: '智问' })}</SwitcherButton>\r\n </ModeSwitcher>}\r\n </Container>;\r\n}\r\n\r\nconst SwitcherButton = styled.div<{ $active?: boolean }>`\r\n padding: 0 8px;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 22px;\r\n color: var(--docsearch-muted-color);\r\n\r\n ${props => props.$active && css`\r\n background-color: rgba(0, 0, 0, 0.1);\r\n `};\r\n`;\r\n\r\nconst ModeSwitcher = styled.div`\r\n height: 32px;\r\n padding: 4px;\r\n border-radius: 2px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n border: 1px solid rgb(212, 217, 225, 0.4);\r\n`;\r\n\r\nconst Container = styled.footer`\r\n flex-direction: row !important;\r\n`;\r\n","export const MAX_QUERY_SIZE = 64;\r\n","import { LoadingIcon, ResetIcon, SearchIcon } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\nimport React, { useCallback, useMemo, useRef } from 'react';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\nimport { debounce } from 'lodash';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function Form({ onClose }: Props) {\r\n\r\n const [{ query, status }, { fetch }] = useModel('search');\r\n const intl = useIntl();\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const initialQuery = useRef(query).current;\r\n\r\n React.useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, []);\r\n\r\n const onReset = useCallback(() => {\r\n if (inputRef.current) {\r\n inputRef.current.value = '';\r\n fetch('');\r\n }\r\n }, [fetch]);\r\n\r\n const debounced = useMemo(() => debounce(fetch, 500), [fetch]);\r\n\r\n const handleSearch = useCallback((e) => {\r\n debounced(e.target.value);\r\n }, [debounced]);\r\n\r\n return <header className='DocSearch-SearchBar'>\r\n <form\r\n className={[\r\n 'DocSearch-Form',\r\n status === 'loading' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\r\n onSubmit={(event) => {\r\n event.preventDefault();\r\n }}\r\n >\r\n <label className='DocSearch-MagnifierLabel'>\r\n <SearchIcon />\r\n </label>\r\n <div className='DocSearch-LoadingIndicator'>\r\n <LoadingIcon />\r\n </div>\r\n <input\r\n defaultValue={initialQuery}\r\n placeholder={intl.$t({ defaultMessage: '搜索文档...' })}\r\n className='DocSearch-Input'\r\n enterKeyHint='done'\r\n ref={inputRef}\r\n autoFocus\r\n maxLength={MAX_QUERY_SIZE}\r\n onChange={handleSearch}\r\n />\r\n <button\r\n title='Clear the query'\r\n className='DocSearch-Reset'\r\n hidden={!query}\r\n onClick={onReset}\r\n >\r\n <ResetIcon />\r\n </button>\r\n </form>\r\n <button className='DocSearch-Cancel' onClick={onClose}>\r\n {intl.$t({ defaultMessage: '取消' })}\r\n </button>\r\n </header>;\r\n}\r\n","import { ErrorIcon } from '../../icons';\r\n\r\nexport function ErrorScreen() {\r\n return <div className='DocSearch-ErrorScreen'>\r\n <div className='DocSearch-Screen-Icon'>\r\n <ErrorIcon />\r\n </div>\r\n <p className='DocSearch-Title'>Unable to fetch results</p>\r\n <p className='DocSearch-Help'>\r\n You might want to check your network connection.\r\n </p>\r\n </div>;\r\n}\r\n","import { useIntl, useSelector } from '@topwrite/common';\r\n\r\ninterface StartScreenProps {\r\n hasCollections: boolean;\r\n}\r\n\r\nexport function StartScreen(props: StartScreenProps) {\r\n\r\n const { status } = useSelector('search');\r\n const intl = useIntl();\r\n\r\n if (status === 'idle' && !props.hasCollections) {\r\n return (\r\n <div className='DocSearch-StartScreen'>\r\n <p className='DocSearch-Help'>{intl.$t({ defaultMessage: '没有最近搜索' })}</p>\r\n </div>\r\n );\r\n }\r\n\r\n return null;\r\n}\r\n","import { NoResultsIcon } from '../../icons';\r\nimport { useIntl, useSelector } from '@topwrite/common';\r\n\r\nexport function NoResultsScreen() {\r\n\r\n const { query } = useSelector('search');\r\n const intl = useIntl();\r\n\r\n return (\r\n <div className='DocSearch-NoResults'>\r\n <div className='DocSearch-Screen-Icon'>\r\n <NoResultsIcon />\r\n </div>\r\n <p className='DocSearch-Title'>\r\n {intl.$t({ defaultMessage: '没有结果:' })} \"<strong>{query}</strong>\"\r\n </p>\r\n </div>\r\n );\r\n}\r\n","import { useCallback } from 'react';\r\nimport { SearchResult } from '../../../models/search';\r\nimport Link from '../../link';\r\nimport { ContentIcon, SelectIcon } from '../icons';\r\n\r\nexport interface ResultItem extends SearchResult {\r\n id: number;\r\n}\r\n\r\ninterface ResultsProps {\r\n items: ResultItem[];\r\n title: string;\r\n activeIndex?: number;\r\n\r\n onItemClick(item: ResultItem): void;\r\n\r\n onActive(index: number): void;\r\n}\r\n\r\nexport function Results({ title, items, ...props }: ResultsProps) {\r\n return <section className='DocSearch-Hits'>\r\n <div className='DocSearch-Hit-source'>{title}</div>\r\n <ul>\r\n {items.map((item, index) => {\r\n return <Result\r\n key={index}\r\n item={item}\r\n {...props}\r\n />;\r\n })}\r\n </ul>\r\n </section>;\r\n}\r\n\r\ninterface ResultProps {\r\n activeIndex?: number;\r\n\r\n onItemClick(item: ResultItem): void;\r\n\r\n onActive(index: number): void;\r\n\r\n item: ResultItem;\r\n}\r\n\r\nfunction Result({\r\n item,\r\n onItemClick,\r\n onActive,\r\n activeIndex\r\n}: ResultProps) {\r\n\r\n const onMouseMove = useCallback(() => {\r\n onActive(item.id);\r\n }, [onActive, item]);\r\n\r\n return <li\r\n className='DocSearch-Hit'\r\n onClick={() => {\r\n onItemClick(item);\r\n }}\r\n onMouseMove={onMouseMove}\r\n aria-selected={activeIndex === item.id}\r\n >\r\n <Link to={item.path}>\r\n <div className='DocSearch-Hit-Container'>\r\n <div className='DocSearch-Hit-icon'>\r\n <ContentIcon />\r\n </div>\r\n <div className='DocSearch-Hit-content-wrapper'>\r\n <span className='DocSearch-Hit-title'>{item.title}</span>\r\n {item.body && <span className='DocSearch-Hit-path'>{item.body}</span>}\r\n </div>\r\n <div className='DocSearch-Hit-action'>\r\n <SelectIcon />\r\n </div>\r\n </div>\r\n </Link>\r\n </li>;\r\n}\r\n","import { ResultItem, Results } from '../results';\r\nimport { SearchResult } from '../../../../models/search';\r\n\r\ninterface ResultsScreenProps {\r\n activeIndex?: number;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n collections: { title: string, items: ResultItem[] }[];\r\n}\r\n\r\nexport function ResultsScreen({ collections, ...props }: ResultsScreenProps) {\r\n return <div className='DocSearch-Dropdown-Container'>\r\n {collections.map((collection, index) => {\r\n return <Results\r\n key={index}\r\n title={collection.title}\r\n items={collection.items}\r\n {...props}\r\n />;\r\n })}\r\n </div>;\r\n}\r\n","import { useMemo } from 'react';\r\nimport { SearchResult } from '../../../models/search';\r\nimport { useBook, useIntl, useSelector } from '@topwrite/common';\r\nimport useArticle from '../../../lib/use-article';\r\nimport { ErrorScreen } from './screens/error-screen';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { NoResultsScreen } from './screens/no-result-screen';\r\nimport { ResultsScreen } from './screens/results-screen';\r\n\r\nexport interface StateProps {\r\n onlyCurrentPart: boolean;\r\n activeIndex?: number;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n}\r\n\r\nexport default function State({ onlyCurrentPart, ...props }: StateProps) {\r\n\r\n const { status, query, results } = useSelector('search');\r\n\r\n const { summary } = useBook();\r\n const intl = useIntl();\r\n const article = useArticle();\r\n\r\n const collections = useMemo(() => {\r\n let id = 0;\r\n let collections;\r\n if (summary.isSinglePart()) {\r\n collections = [{\r\n title: '',\r\n items: results,\r\n }];\r\n } else {\r\n const currentPart = article ? summary.getArticlePart(article) : null;\r\n let parts = summary.getParts();\r\n if (currentPart && onlyCurrentPart) {\r\n parts = parts.filter(part => part.level === currentPart.level);\r\n }\r\n\r\n collections = parts.map((part) => {\r\n return {\r\n level: part.level,\r\n title: onlyCurrentPart ? '' : (part.title || intl.$t({ defaultMessage: '未命名分组' })),\r\n items: results.filter((result) => {\r\n const article = summary.getArticle(article => article.path === result.path);\r\n if (article) {\r\n const articlePart = summary.getArticlePart(article);\r\n return articlePart === part;\r\n }\r\n return false;\r\n })\r\n };\r\n });\r\n\r\n if (currentPart && !onlyCurrentPart) {\r\n collections = collections.sort((a) => {\r\n return a.level === currentPart.level ? -1 : 1;\r\n });\r\n }\r\n }\r\n return collections.filter(collection => collection.items.length > 0).map((collection) => {\r\n return {\r\n ...collection,\r\n items: collection.items.map((item) => {\r\n return {\r\n ...item,\r\n id: id++\r\n };\r\n })\r\n };\r\n });\r\n }, [results]);\r\n\r\n if (status === 'error') {\r\n return <ErrorScreen />;\r\n }\r\n\r\n const hasCollections = collections.length > 0;\r\n\r\n if (!query) {\r\n return <StartScreen hasCollections={hasCollections} />;\r\n }\r\n\r\n if (!hasCollections) {\r\n return <NoResultsScreen />;\r\n }\r\n\r\n return <ResultsScreen {...props} collections={collections} />;\r\n}\r\n","import Form from './form';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from '@topwrite/common';\r\nimport State from './state';\r\n\r\ninterface SearchBoxProps {\r\n onClose(): void;\r\n\r\n onlyCurrentPart?: boolean;\r\n}\r\n\r\nexport default function SearchBox({\r\n onClose,\r\n onlyCurrentPart = false,\r\n}: SearchBoxProps) {\r\n const { query, results } = useSelector('search');\r\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const onActive = useCallback((index) => {\r\n setActiveIndex(index);\r\n }, [setActiveIndex]);\r\n\r\n useEffect(() => {\r\n if (dropdownRef.current) {\r\n dropdownRef.current.scrollTop = 0;\r\n }\r\n }, [query]);\r\n\r\n useEffect(() => {\r\n const getActiveItem = (activeIndex: number) => {\r\n return dropdownRef.current?.getElementsByClassName('DocSearch-Hit').item(activeIndex);\r\n };\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n setActiveIndex((activeIndex = -1) => {\r\n if (event.key === 'ArrowUp') {\r\n --activeIndex;\r\n } else {\r\n ++activeIndex;\r\n }\r\n if (activeIndex < 0) {\r\n activeIndex = results.length - 1;\r\n }\r\n if (activeIndex >= results.length) {\r\n activeIndex = 0;\r\n }\r\n\r\n const activeItem = getActiveItem(activeIndex);\r\n if (activeItem) {\r\n if ((activeItem as any).scrollIntoViewIfNeeded) {\r\n (activeItem as any).scrollIntoViewIfNeeded(false);\r\n } else {\r\n activeItem.scrollIntoView(false);\r\n }\r\n }\r\n\r\n return activeIndex;\r\n });\r\n } else if (event.key === 'Enter') {\r\n event.preventDefault();\r\n setActiveIndex((activeIndex = -1) => {\r\n const activeItem = getActiveItem(activeIndex);\r\n if (activeItem) {\r\n requestAnimationFrame(() => {\r\n activeItem.getElementsByTagName('a').item(0)\r\n ?.dispatchEvent(new Event('click', { bubbles: true }));\r\n });\r\n }\r\n return activeIndex;\r\n });\r\n }\r\n };\r\n window.addEventListener('keydown', onKeyDown);\r\n\r\n return () => {\r\n window.removeEventListener('keydown', onKeyDown);\r\n };\r\n }, [setActiveIndex, results]);\r\n\r\n return <>\r\n <Form onClose={onClose} />\r\n <div className='DocSearch-Dropdown' ref={dropdownRef}>\r\n <State\r\n onlyCurrentPart={onlyCurrentPart}\r\n onActive={onActive}\r\n activeIndex={activeIndex}\r\n onItemClick={() => {\r\n onClose();\r\n }}\r\n />\r\n </div>\r\n </>;\r\n}\r\n","import { FormEvent, useCallback, useEffect, useRef } from 'react';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\nimport { AskIcon, LoadingIcon } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function Form({ onClose }: Props) {\r\n const [{ status }, { fetch }] = useModel('ask');\r\n const intl = useIntl();\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, []);\r\n\r\n const handleAsk = useCallback((event: FormEvent) => {\r\n event.preventDefault();\r\n if (inputRef.current) {\r\n fetch(inputRef.current.value);\r\n inputRef.current.value = '';\r\n }\r\n }, [inputRef, fetch]);\r\n\r\n return <header className='DocSearch-SearchBar'>\r\n <form\r\n className={[\r\n 'DocSearch-Form',\r\n status === 'loading' || status === 'stalled' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\r\n onSubmit={handleAsk}\r\n >\r\n <label className='DocSearch-MagnifierLabel'>\r\n <AskIcon />\r\n </label>\r\n <div className='DocSearch-LoadingIndicator'>\r\n <LoadingIcon />\r\n </div>\r\n <input\r\n placeholder={intl.$t({ defaultMessage: '问一个问题...' })}\r\n className='DocSearch-Input'\r\n ref={inputRef}\r\n autoFocus\r\n enterKeyHint='send'\r\n disabled={status === 'loading' || status === 'stalled'}\r\n maxLength={MAX_QUERY_SIZE}\r\n />\r\n </form>\r\n <button className='DocSearch-Cancel' onClick={onClose}>\r\n {intl.$t({ defaultMessage: '取消' })}\r\n </button>\r\n </header>;\r\n}\r\n","import { useIntl } from '@topwrite/common';\r\n\r\n\r\nexport function StartScreen() {\r\n\r\n const intl = useIntl();\r\n\r\n return <div className='DocSearch-StartScreen'>\r\n <p className='DocSearch-Help'>{intl.$t({ defaultMessage: '我是一个智能AI助理,你可以向我提问关于本文档的任何问题' })}</p>\r\n </div>;\r\n}\r\n","import { Markdown, styled, useSelector } from '@topwrite/common';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { ErrorScreen } from '../search-box/screens/error-screen';\r\nimport { LoadingIcon } from '../icons';\r\nimport { useMemo } from 'react';\r\nimport Anchor from '../../anchor';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function State({ onClose }: Props) {\r\n const { status, query, answer } = useSelector('ask');\r\n\r\n const components = useMemo(() => {\r\n return {\r\n a: Anchor\r\n };\r\n }, []);\r\n\r\n if (status === 'error') {\r\n return <ErrorScreen />;\r\n }\r\n\r\n if (!query) {\r\n return <StartScreen />;\r\n }\r\n\r\n return <div className='DocSearch-Dropdown-Container'>\r\n <Answer onClick={(e) => {\r\n if (e.target instanceof HTMLAnchorElement) {\r\n onClose();\r\n }\r\n }}>\r\n <h2>{query}</h2>\r\n {status === 'loading' ?\r\n <Loading><LoadingIcon /></Loading> :\r\n <Markdown\r\n aside={false}\r\n inject={false}\r\n components={components}\r\n >\r\n {answer}\r\n </Markdown>}\r\n </Answer>\r\n </div>;\r\n}\r\n\r\nconst Loading = styled.div`\r\n align-items: center;\r\n color: var(--docsearch-highlight-color);\r\n display: flex;\r\n justify-content: center;\r\n\r\n svg {\r\n height: 24px;\r\n width: 24px\r\n }\r\n`;\r\n\r\nconst Answer = styled.div`\r\n margin-top: 16px;\r\n margin-bottom: 16px;\r\n background: var(--docsearch-hit-background);\r\n padding: 16px;\r\n box-shadow: var(--docsearch-hit-shadow);\r\n border-radius: 4px;\r\n\r\n h2 {\r\n padding-bottom: .4em;\r\n font-size: 1.3em;\r\n line-height: 1.2;\r\n border-bottom: 1px solid #eeeeee;\r\n margin-top: 0;\r\n margin-bottom: 1em;\r\n }\r\n`;\r\n","import Form from './form';\r\nimport State from './state';\r\nimport { useEffect, useRef } from 'react';\r\nimport { styled, useSelector } from '@topwrite/common';\r\n\r\ninterface AskBoxProps {\r\n onClose(): void;\r\n}\r\n\r\nexport default function AskBox({ onClose }: AskBoxProps) {\r\n\r\n const { query, status, answer } = useSelector('ask');\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (dropdownRef.current) {\r\n dropdownRef.current.scrollTop = 0;\r\n }\r\n }, [query]);\r\n\r\n useEffect(() => {\r\n if (dropdownRef.current && status === 'stalled') {\r\n dropdownRef.current.scrollTop = dropdownRef.current.scrollHeight;\r\n }\r\n }, [answer, status]);\r\n\r\n return <>\r\n <Form onClose={onClose} />\r\n <Container ref={dropdownRef}>\r\n <State onClose={onClose} />\r\n </Container>\r\n </>;\r\n}\r\n\r\nconst Container = styled.div`\r\n max-height: calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\r\n min-height: var(--docsearch-spacing);\r\n overflow-y: auto;\r\n padding: 0 var(--docsearch-spacing);\r\n scrollbar-color: var(--docsearch-muted-color) var(--docsearch-modal-background);\r\n scrollbar-width: thin;\r\n\r\n @media (max-width: 768px) {\r\n max-height: calc(var(--docsearch-vh, 1vh) * 100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\r\n }\r\n @media (max-width: 768px) {\r\n height: 100%;\r\n }\r\n`;\r\n","import { useEffect, useRef } from 'react';\r\nimport { DocSearchProps } from './doc-search';\r\nimport { Footer } from './footer';\r\nimport SearchBox from './search-box';\r\nimport { noop } from 'lodash';\r\nimport { useTrapFocus } from './hooks/use-trap-focus';\r\nimport { styled } from '@topwrite/common';\r\nimport AskBox from './ask-box';\r\nimport { useMode } from './mode-provider';\r\n\r\nexport interface DocSearchModalProps extends DocSearchProps {\r\n onClose?(): void;\r\n}\r\n\r\nexport function DocSearchModal({\r\n onClose = noop,\r\n onlyCurrentPart = false,\r\n}: DocSearchModalProps) {\r\n const [mode] = useMode();\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const modalRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useTrapFocus({ container: containerRef.current });\r\n\r\n useEffect(() => {\r\n document.body.classList.add('DocSearch--active');\r\n\r\n return () => {\r\n document.body.classList.remove('DocSearch--active');\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n function setFullViewportHeight() {\r\n if (modalRef.current) {\r\n const vh = window.innerHeight * 0.01;\r\n modalRef.current.style.setProperty('--docsearch-vh', `${vh}px`);\r\n }\r\n }\r\n\r\n setFullViewportHeight();\r\n\r\n window.addEventListener('resize', setFullViewportHeight);\r\n\r\n return () => {\r\n window.removeEventListener('resize', setFullViewportHeight);\r\n };\r\n }, []);\r\n\r\n return <Container\r\n ref={containerRef}\r\n className='DocSearch DocSearch-Container'\r\n onMouseDown={(event) => {\r\n if (event.target === event.currentTarget) {\r\n onClose();\r\n }\r\n }}\r\n >\r\n <div className='DocSearch-Modal' ref={modalRef}>\r\n {mode === 'search' ? <SearchBox\r\n onlyCurrentPart={onlyCurrentPart}\r\n onClose={onClose}\r\n /> : <AskBox onClose={onClose} />}\r\n <Footer />\r\n </div>\r\n </Container>;\r\n}\r\n\r\nconst Container = styled.div`\r\n .DocSearch-Commands-Key {\r\n padding-left: 1px;\r\n font-size: .875rem;\r\n background-color: rgba(0, 0, 0, 0.1);\r\n background-image: none;\r\n box-shadow: none;\r\n }\r\n\r\n .DocSearch-Title {\r\n &:not(:last-child) {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n\r\n .DocSearch-Hits {\r\n ul {\r\n box-shadow: var(--docsearch-hit-shadow);\r\n border-radius: 4px;\r\n margin-bottom: 4px;\r\n margin-top: 3px;\r\n }\r\n }\r\n\r\n .DocSearch-Hit {\r\n padding-bottom: 0;\r\n border-radius: 0;\r\n\r\n a {\r\n border-radius: 0;\r\n border-top: 1px solid rgb(212, 217, 225, 0.4);\r\n box-shadow: none;\r\n }\r\n\r\n &:first-child {\r\n a {\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-top-width: 0;\r\n }\r\n }\r\n\r\n &:last-child {\r\n a {\r\n border-bottom-left-radius: 4px;\r\n border-bottom-right-radius: 4px;\r\n }\r\n }\r\n }\r\n\r\n .DocSearch-Hit-content-wrapper {\r\n line-height: 1.3;\r\n }\r\n\r\n .DocSearch-Hit-title {\r\n font-size: 1em;\r\n }\r\n\r\n .DocSearch-Help {\r\n font-size: 1em;\r\n }\r\n\r\n .DocSearch-Label {\r\n line-height: 1;\r\n }\r\n\r\n`;\r\n","import React from 'react';\r\n\r\ninterface UseTrapFocusProps {\r\n container: HTMLElement | null;\r\n}\r\n\r\nexport function useTrapFocus({ container }: UseTrapFocusProps) {\r\n React.useEffect(() => {\r\n if (!container) {\r\n return undefined;\r\n }\r\n\r\n const focusableElements = container.querySelectorAll<HTMLElement>(\r\n 'a[href]:not([disabled]), button:not([disabled]), input:not([disabled])'\r\n );\r\n const firstElement = focusableElements[0];\r\n const lastElement = focusableElements[focusableElements.length - 1];\r\n\r\n function trapFocus(event: KeyboardEvent) {\r\n if (event.key !== 'Tab') {\r\n return;\r\n }\r\n\r\n if (event.shiftKey) {\r\n if (document.activeElement === firstElement) {\r\n event.preventDefault();\r\n lastElement.focus();\r\n }\r\n } else if (document.activeElement === lastElement) {\r\n event.preventDefault();\r\n firstElement.focus();\r\n }\r\n }\r\n\r\n container.addEventListener('keydown', trapFocus);\r\n\r\n return () => {\r\n container.removeEventListener('keydown', trapFocus);\r\n };\r\n }, [container]);\r\n}\r\n","import { useKeyboardEvents } from './hooks/use-keyboard-events';\r\nimport { ElementType, useCallback, useRef, useState } from 'react';\r\nimport { DocSearchButton } from './doc-search-button';\r\nimport { createPortal } from 'react-dom';\r\nimport { DocSearchModal } from './doc-search-modal';\r\nimport { createGlobalStyle } from '@topwrite/common';\r\nimport '@docsearch/css';\r\nimport ModeProvider from './mode-provider';\r\n\r\nexport interface DocSearchProps {\r\n as?: ElementType;\r\n className?: string;\r\n onlyCurrentPart?: boolean;\r\n}\r\n\r\nexport default function DocSearch({ as, className, ...props }: DocSearchProps) {\r\n const searchButtonRef = useRef<HTMLButtonElement>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const onOpen = useCallback(() => {\r\n setIsOpen(true);\r\n }, [setIsOpen]);\r\n\r\n const onClose = useCallback(() => {\r\n setIsOpen(false);\r\n }, [setIsOpen]);\r\n\r\n const onInput = useCallback(() => {\r\n setIsOpen(true);\r\n }, [setIsOpen]);\r\n\r\n useKeyboardEvents({\r\n isOpen,\r\n onOpen,\r\n onClose,\r\n onInput,\r\n searchButtonRef,\r\n });\r\n\r\n const Component = as || DocSearchButton;\r\n\r\n return <ModeProvider>\r\n <GlobalStyle />\r\n <Component onClick={onOpen} className={className} ref={searchButtonRef} />\r\n {isOpen && createPortal(\r\n <DocSearchModal\r\n {...props}\r\n onClose={onClose}\r\n />,\r\n document.body\r\n )}\r\n </ModeProvider>;\r\n}\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n :root:root {\r\n --docsearch-primary-color: var(--ttw-primary-color, #3c60ff);\r\n --docsearch-hit-height: 48px;\r\n --docsearch-searchbox-height: 48px;\r\n }\r\n`;\r\n","import React from 'react';\r\n\r\nexport interface UseDocSearchKeyboardEventsProps {\r\n isOpen: boolean;\r\n\r\n onOpen(): void;\r\n\r\n onClose(): void;\r\n\r\n onInput?(event: KeyboardEvent): void;\r\n\r\n searchButtonRef?: React.RefObject<HTMLButtonElement>;\r\n}\r\n\r\nfunction isEditingContent(event: KeyboardEvent): boolean {\r\n const element = event.target as HTMLElement;\r\n const tagName = element.tagName;\r\n\r\n return (\r\n element.isContentEditable ||\r\n tagName === 'INPUT' ||\r\n tagName === 'SELECT' ||\r\n tagName === 'TEXTAREA'\r\n );\r\n}\r\n\r\nexport function useKeyboardEvents({\r\n isOpen,\r\n onOpen,\r\n onClose,\r\n onInput,\r\n searchButtonRef,\r\n}: UseDocSearchKeyboardEventsProps) {\r\n React.useEffect(() => {\r\n function onKeyDown(event: KeyboardEvent) {\r\n function open() {\r\n // We check that no other DocSearch modal is showing before opening\r\n // another one.\r\n if (!document.body.classList.contains('DocSearch--active')) {\r\n onOpen();\r\n }\r\n }\r\n\r\n if (\r\n (event.keyCode === 27 && isOpen) ||\r\n // The `Cmd+K` shortcut both opens and closes the modal.\r\n (event.key === 'k' && (event.metaKey || event.ctrlKey)) ||\r\n // The `/` shortcut opens but doesn't close the modal because it's\r\n // a character.\r\n (!isEditingContent(event) && event.key === '/' && !isOpen)\r\n ) {\r\n event.preventDefault();\r\n\r\n if (isOpen) {\r\n onClose();\r\n } else if (!document.body.classList.contains('DocSearch--active')) {\r\n open();\r\n }\r\n }\r\n\r\n if (\r\n searchButtonRef &&\r\n searchButtonRef.current === document.activeElement &&\r\n onInput\r\n ) {\r\n if (/[a-zA-Z0-9]/.test(String.fromCharCode(event.keyCode))) {\r\n onInput(event);\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener('keydown', onKeyDown);\r\n\r\n return () => {\r\n window.removeEventListener('keydown', onKeyDown);\r\n };\r\n }, [isOpen, onOpen, onClose, onInput, searchButtonRef]);\r\n}\r\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n"],"names":["LoadingIcon","_jsx","viewBox","stroke","strokeOpacity","children","fill","fillRule","_jsxs","transform","strokeWidth","cx","cy","r","d","attributeName","type","from","to","dur","repeatCount","ResetIcon","width","height","strokeLinecap","strokeLinejoin","SearchIcon","className","SelectIcon","ContentIcon","ErrorIcon","NoResultsIcon","ControlKeyIcon","AskIcon","preserveAspectRatio","clipRule","ACTION_KEY_DEFAULT","DocSearchButton","forwardRef","_ref","ref","props","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","key","setKey","useEffect","navigator","test","platform","intl","useIntl","Button","_objectSpread","$t","id","defaultMessage","styled","_templateObject","_taggedTemplateLiteral","Context","createContext","mode","setMode","Provider","value","useMode","useContext","CommandIcon","Footer","_useMode","_useMode2","enable","useSelector","commands","push","Container","ModeSwitcher","SwitcherButton","onClick","$active","css","_templateObject2","_templateObject3","_templateObject4","MAX_QUERY_SIZE","Form","onClose","_useModel","useModel","_useModel2","_useModel2$","query","status","fetch","inputRef","useRef","initialQuery","current","React","focus","onReset","useCallback","debounced","useMemo","debounce","handleSearch","e","target","filter","Boolean","join","onSubmit","event","preventDefault","defaultValue","placeholder","enterKeyHint","autoFocus","maxLength","onChange","title","hidden","ErrorScreen","StartScreen","hasCollections","NoResultsScreen","Results","items","map","item","index","Result","_ref2","onItemClick","onActive","activeIndex","onMouseMove","Link","path","body","ResultsScreen","collections","collection","State","onlyCurrentPart","_useSelector","results","summary","useBook","article","useArticle","isSinglePart","currentPart","getArticlePart","parts","getParts","part","level","result","getArticle","sort","a","length","SearchBox","_ref$onlyCurrentPart","undefined","setActiveIndex","dropdownRef","scrollTop","getActiveItem","_dropdownRef$current","getElementsByClassName","onKeyDown","arguments","activeItem","scrollIntoViewIfNeeded","scrollIntoView","requestAnimationFrame","_activeItem$getElemen","getElementsByTagName","dispatchEvent","Event","bubbles","window","addEventListener","removeEventListener","_Fragment","handleAsk","disabled","answer","components","Anchor","Answer","HTMLAnchorElement","Loading","Markdown","aside","inject","AskBox","scrollHeight","DocSearchModal","_ref$onClose","noop","containerRef","modalRef","container","focusableElements","querySelectorAll","firstElement","lastElement","trapFocus","shiftKey","document","activeElement","useTrapFocus","classList","add","remove","setFullViewportHeight","vh","innerHeight","style","setProperty","concat","onMouseDown","currentTarget","DocSearch","as","searchButtonRef","isOpen","setIsOpen","onOpen","onInput","keyCode","metaKey","ctrlKey","element","tagName","isContentEditable","isEditingContent","contains","String","fromCharCode","useKeyboardEvents","Component","ModeProvider","GlobalStyle","createPortal","createGlobalStyle","tryToString","$TypeError","TypeError","module","exports","O","P","firefox","match","UA","webkit","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","toString","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","k","v","b","charAt","proto","forced","comparefn","array","this","itemsLength","arrayLength","x","y","getSortCompare"],"sourceRoot":""}