@topwrite/reader 1.0.63 → 1.0.64-alpha.7

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-73762b.js +1 -0
  2. package/dist/610-87aecf.js +2 -0
  3. package/dist/610-87aecf.js.map +1 -0
  4. package/dist/index.js +6 -6
  5. package/dist/index.js.map +1 -1
  6. package/package.json +2 -2
  7. package/types/components/search/ask-box/form.d.ts +2 -0
  8. package/types/components/search/ask-box/index.d.ts +2 -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 +2 -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 +2 -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 +22 -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('{"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:()=>Oe});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),O=["className"];function k(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?k(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(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,O),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=(r(70888),(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,B,H,R,I=function(){return(0,h.useContext)(L)};function T(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 K(){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)(T,{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)(T,{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)(T,{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)(T,{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)(T,{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)(B||(B=c()(["\n background-color: rgba(0, 0, 0, 0.1);\n "])))})),q=S.zo.div(H||(H=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=64,V=r(12611);function Z(){var e=(0,S.tT)("search"),n=i()(e,2),r=n[0].query,t=n[1].fetch,c=(0,S.cw)(),o=(0,h.useRef)(null),a=(0,h.useRef)(r).current;f().useEffect((function(){o.current&&o.current.focus()}),[]);var s=(0,h.useCallback)((function(){o.current&&(o.current.value="",t(""))}),[t]),l=(0,h.useMemo)((function(){return(0,V.debounce)(t,500)}),[t]),u=(0,h.useCallback)((function(e){l(e.target.value)}),[l]);return(0,d.jsx)("header",{className:"DocSearch-SearchBar",children:(0,d.jsxs)("form",{className:"DocSearch-Form",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:a,placeholder:c.$t({id:"U3+qBB",defaultMessage:[{type:0,value:"搜索文档..."}]}),className:"DocSearch-Input",ref:o,autoFocus:!0,maxLength:U,onChange:u}),(0,d.jsx)("button",{title:"Clear the query",className:"DocSearch-Reset",hidden:!r,onClick:s,children:(0,d.jsx)(v,{})})]})})}r(8213),r(32766);var W=r(68158);function _(){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 G(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 X(){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 J=r(9491),Y=["title","items"];function Q(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,Y);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?Q(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Q(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)(J.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,ae,se=["onlyCurrentPart"];function ie(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 le(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?ie(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function ue(e){var n=e.onlyCurrentPart,r=u()(e,se),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,W.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 le(le({},e),{},{items:e.items.map((function(e){return le(le({},e),{},{id:r++})}))})}))}),[a]);if("error"===c)return(0,d.jsx)(_,{});var p=f.length>0;return o?p?(0,d.jsx)(ce,le(le({},r),{},{collections:f})):(0,d.jsx)(X,{}):(0,d.jsx)(G,{hasCollections:p})}function de(e){var n=e.onClose,r=void 0===n?V.noop:n,t=e.onlyCurrentPart,c=void 0!==t&&t,o=(0,S.v9)("search"),a=o.query,s=o.results,l=(0,h.useState)(void 0),u=i()(l,2),f=u[0],p=u[1],v=(0,h.useRef)(null),m=(0,h.useCallback)((function(e){p(e)}),[p]);return(0,h.useEffect)((function(){v.current&&(v.current.scrollTop=0)}),[a]),(0,h.useEffect)((function(){var e=function(e){var n;return null===(n=v.current)||void 0===n?void 0:n.getElementsByClassName("DocSearch-Hit").item(e)},n=function(n){"ArrowUp"===n.key||"ArrowDown"===n.key?(n.preventDefault(),p((function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;"ArrowUp"===n.key?--r:++r,r<0&&(r=s.length-1),r>=s.length&&(r=0);var t=e(r);return t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1)),r}))):"Enter"===n.key&&(n.preventDefault(),p((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)}}),[p,s]),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Z,{}),(0,d.jsx)("div",{className:"DocSearch-Dropdown",ref:v,children:(0,d.jsx)(ue,{onlyCurrentPart:c,onActive:m,activeIndex:f,onItemClick:function(){r()}})})]})}function he(){var e=(0,S.tT)("ask"),n=i()(e,2)[1].fetch,r=(0,S.cw)(),t=(0,h.useRef)(null);(0,h.useEffect)((function(){t.current&&t.current.focus()}),[]);var c=(0,h.useCallback)((function(e){e.preventDefault(),t.current&&(n(t.current.value),t.current.value="")}),[t,n]);return(0,d.jsx)("header",{className:"DocSearch-SearchBar",children:(0,d.jsxs)("form",{className:"DocSearch-Form",onSubmit:c,children:[(0,d.jsx)("label",{className:"DocSearch-MagnifierLabel",children:(0,d.jsx)(w,{})}),(0,d.jsx)("input",{placeholder:r.$t({id:"OyX2KZ",defaultMessage:[{type:0,value:"问一个问题..."}]}),className:"DocSearch-Input",ref:t,autoFocus:!0,maxLength:U})]})})}function fe(){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助理,你可以向我提问关于本文档的任何问题"}]})})})}function pe(){var e=(0,S.v9)("ask"),n=e.status,r=e.query,t=e.answer;return"error"===n?(0,d.jsx)(_,{}):r?(0,d.jsx)("div",{className:"DocSearch-Dropdown-Container",children:(0,d.jsxs)(je,{children:[(0,d.jsx)("h2",{children:r}),"loading"===n?(0,d.jsx)(me,{children:(0,d.jsx)(p,{})}):(0,d.jsx)(S.UG,{aside:!1,children:t})]})}):(0,d.jsx)(fe,{})}var ve,me=S.zo.div(oe||(oe=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"]))),je=S.zo.div(ae||(ae=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 xe(){var e=(0,S.v9)("ask"),n=e.query,r=e.answer,t=(0,h.useRef)(null);return(0,h.useEffect)((function(){t.current&&(t.current.scrollTop=0)}),[n]),(0,h.useEffect)((function(){t.current&&(t.current.scrollTop=t.current.scrollHeight)}),[r]),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(he,{}),(0,d.jsx)("div",{className:"DocSearch-Dropdown",ref:t,children:(0,d.jsx)(pe,{})})]})}function ge(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),u=(0,S.v9)("search").status;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)(ye,{ref:s,className:["DocSearch","DocSearch-Container","loading"===u&&"DocSearch-Container--Stalled"].filter(Boolean).join(" "),onMouseDown:function(e){e.target===e.currentTarget&&r()},children:(0,d.jsxs)("div",{className:"DocSearch-Modal",ref:l,children:["search"===a?(0,d.jsx)(de,{onlyCurrentPart:c,onClose:r}):(0,d.jsx)(xe,{}),(0,d.jsx)(K,{})]})})}var be,ye=S.zo.div(ve||(ve=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 @media (max-width: 750px) {\n .DocSearch-Footer {\n display: none;\n }\n }\n\n .DocSearch-Label {\n line-height: 1;\n }\n\n"]))),we=["as","className"];function De(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?De(Object(r),!0).forEach((function(n){a()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):De(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function Oe(e){var n=e.as,r=e.className,t=u()(e,we),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)(ke,{}),(0,d.jsx)(m,{onClick:p,className:r,ref:c}),s&&(0,E.createPortal)((0,d.jsx)(ge,Se(Se({},t),{},{onClose:v})),document.body)]})}var ke=(0,S.vJ)(be||(be=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-87aecf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"610-87aecf.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\nexport default function Form() {\r\n\r\n const [{ query }, { 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='DocSearch-Form'\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 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 </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 { noop } from 'lodash';\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 = noop,\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 />\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 } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\n\r\nexport default function Form() {\r\n const [, { 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='DocSearch-Form'\r\n onSubmit={handleAsk}\r\n >\r\n <label className='DocSearch-MagnifierLabel'>\r\n <AskIcon />\r\n </label>\r\n <input\r\n placeholder={intl.$t({ defaultMessage: '问一个问题...' })}\r\n className='DocSearch-Input'\r\n ref={inputRef}\r\n autoFocus\r\n maxLength={MAX_QUERY_SIZE}\r\n />\r\n </form>\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\n\r\nexport default function State() {\r\n const { status, query, answer } = useSelector('ask');\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>\r\n <h2>{query}</h2>\r\n {status === 'loading' ? <Loading><LoadingIcon /></Loading> : <Markdown aside={false}>\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 { useSelector } from '@topwrite/common';\r\n\r\nexport default function AskBox() {\r\n\r\n const { query, 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) {\r\n dropdownRef.current.scrollTop = dropdownRef.current.scrollHeight;\r\n }\r\n }, [answer]);\r\n\r\n return <>\r\n <Form />\r\n <div className='DocSearch-Dropdown' ref={dropdownRef}>\r\n <State />\r\n </div>\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, useSelector } 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 const { status } = useSelector('search');\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={[\r\n 'DocSearch',\r\n 'DocSearch-Container',\r\n status === 'loading' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\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 />}\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 @media (max-width: 750px) {\r\n .DocSearch-Footer {\r\n display: none;\r\n }\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","_useModel","useModel","_useModel2","query","fetch","inputRef","useRef","initialQuery","current","React","focus","onReset","useCallback","debounced","useMemo","debounce","handleSearch","e","target","onSubmit","event","preventDefault","defaultValue","placeholder","autoFocus","maxLength","onChange","title","hidden","ErrorScreen","StartScreen","status","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","filter","part","level","result","getArticle","sort","a","length","SearchBox","_ref$onClose","onClose","noop","_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","answer","Answer","Loading","Markdown","aside","AskBox","scrollHeight","DocSearchModal","containerRef","modalRef","container","focusableElements","querySelectorAll","firstElement","lastElement","trapFocus","shiftKey","document","activeElement","useTrapFocus","classList","add","remove","setFullViewportHeight","vh","innerHeight","style","setProperty","concat","Boolean","join","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":""}