@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.
- package/dist/267-73762b.js +1 -0
- package/dist/610-87aecf.js +2 -0
- package/dist/610-87aecf.js.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/types/components/search/ask-box/form.d.ts +2 -0
- package/types/components/search/ask-box/index.d.ts +2 -0
- package/types/components/search/ask-box/screens/start-screen.d.ts +2 -0
- package/types/components/search/ask-box/state.d.ts +2 -0
- package/types/components/search/icons/ask-icon.d.ts +2 -0
- package/types/components/search/icons/index.d.ts +1 -0
- package/types/components/search/mode-provider.d.ts +5 -0
- package/types/components/search/search-box/form.d.ts +2 -0
- package/types/components/search/search-box/index.d.ts +7 -0
- package/types/components/search/{results.d.ts → search-box/results.d.ts} +1 -1
- package/types/components/search/search-box/screens/error-screen.d.ts +2 -0
- package/types/components/search/{screens → search-box/screens}/results-screen.d.ts +7 -4
- package/types/components/search/search-box/state.d.ts +9 -0
- package/types/models/ask.d.ts +22 -0
- package/types/models/index.d.ts +1 -0
- package/dist/267-b6fa96.js +0 -1
- package/dist/913-88a4f7.js +0 -2
- package/dist/913-88a4f7.js.map +0 -1
- package/types/components/search/screen-state.d.ts +0 -10
- package/types/components/search/search-box.d.ts +0 -11
- /package/dist/{913.css → 610.css} +0 -0
- /package/types/components/search/{screens → ask-box/screens}/error-screen.d.ts +0 -0
- /package/types/components/search/{screens → search-box/screens}/no-result-screen.d.ts +0 -0
- /package/types/components/search/{screens → search-box/screens}/start-screen.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@topwrite/reader",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.64-alpha.7+f354b86",
|
|
4
4
|
"author": "yunwuxin <tzzhangyajun@qq.com> (https://github.com/yunwuxin)",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"optional": true
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "f354b86a0f4a6f1743e9f9ec4a9dc8daaee22a49"
|
|
60
60
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ResultItem } from '../results';
|
|
3
|
+
import { SearchResult } from '../../../../models/search';
|
|
3
4
|
interface ResultsScreenProps {
|
|
4
5
|
activeIndex?: number;
|
|
5
|
-
inputRef: React.MutableRefObject<null | HTMLInputElement>;
|
|
6
6
|
onItemClick: (item: SearchResult) => void;
|
|
7
7
|
onActive: (index: number) => void;
|
|
8
|
-
collections:
|
|
8
|
+
collections: {
|
|
9
|
+
title: string;
|
|
10
|
+
items: ResultItem[];
|
|
11
|
+
}[];
|
|
9
12
|
}
|
|
10
13
|
export declare function ResultsScreen({ collections, ...props }: ResultsScreenProps): JSX.Element;
|
|
11
14
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SearchResult } from '../../../models/search';
|
|
3
|
+
export interface StateProps {
|
|
4
|
+
onlyCurrentPart: boolean;
|
|
5
|
+
activeIndex?: number;
|
|
6
|
+
onItemClick: (item: SearchResult) => void;
|
|
7
|
+
onActive: (index: number) => void;
|
|
8
|
+
}
|
|
9
|
+
export default function State({ onlyCurrentPart, ...props }: StateProps): JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Model } from '@topwrite/common';
|
|
2
|
+
interface Article {
|
|
3
|
+
title: string;
|
|
4
|
+
path: string;
|
|
5
|
+
}
|
|
6
|
+
export type AskHandler = (keyword: string, callback: (text: string) => Promise<void>) => Promise<Article[]>;
|
|
7
|
+
interface AskState {
|
|
8
|
+
enable: boolean;
|
|
9
|
+
handler?: AskHandler;
|
|
10
|
+
status: 'idle' | 'loading' | 'stalled' | 'error';
|
|
11
|
+
query: string;
|
|
12
|
+
answer: string;
|
|
13
|
+
articles: Article[];
|
|
14
|
+
stream?: TransformStream;
|
|
15
|
+
}
|
|
16
|
+
declare class Ask extends Model<AskState> {
|
|
17
|
+
initialState: AskState;
|
|
18
|
+
fetch(query: string): AsyncGenerator<import("redux").AnyAction, void, unknown>;
|
|
19
|
+
setHandler(handler?: AskHandler): Generator<import("redux").AnyAction, void, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export declare const ask: Ask;
|
|
22
|
+
export {};
|
package/types/models/index.d.ts
CHANGED
package/dist/267-b6fa96.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_topwrite_reader=self.webpackChunk_topwrite_reader||[]).push([[267],{53267:e=>{e.exports=JSON.parse('{"2QzYmY":"取消","47GdDb":"关闭","4R5GEq":"首页","51pt/B":"未命名分组","IHXx7d":"本文档使用 {link} 构建","Z+slnL":"没有结果:","fTNnxP":"回到顶部","inUHj3":"选中","k+fk3r":"导航","lXhmij":"没有最近搜索","n24ytq":"未命名文档","n632UI":"搜索文档","xUjLTE":"搜索"}')}}]);
|
package/dist/913-88a4f7.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_topwrite_reader=self.webpackChunk_topwrite_reader||[]).push([[913],{48913:(e,n,r)=>{"use strict";r.r(n),r.d(n,{default:()=>ce});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),o=r.n(t),c=r(6322),s=r.n(c),a=r(45990),i=r.n(a),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 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:"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 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:"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"})})}var w,D=r(97192),S=["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 k(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){s()(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 C="Ctrl";var N=(0,h.forwardRef)((function(e,n){e.className;var r=u()(e,S),t=(0,h.useState)(null),o=i()(t,2),c=o[0],s=o[1];(0,h.useEffect)((function(){"undefined"!=typeof navigator&&s(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"⌘":C)}),[]);var a=(0,D.cw)();return(0,d.jsxs)(P,k(k({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:a.$t({id:"xUjLTE",defaultMessage:[{type:0,value:"搜索"}]})})]}),null!==c&&(0,d.jsxs)("span",{className:"DocSearch-Button-Keys",children:[(0,d.jsx)("span",{className:"DocSearch-Button-Key",children:c===C?(0,d.jsx)(y,{}):c}),(0,d.jsx)("span",{className:"DocSearch-Button-Key",children:"K"})]})]}))})),P=D.zo.button(w||(w=o()(["\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"]))),M=r(61533),E=(r(43934),r(81044),r(93344),r(65251),64);function L(){var e=(0,D.cw)();return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"DocSearch-Logo"}),(0,d.jsxs)("ul",{className:"DocSearch-Commands",children:[(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(H,{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:"选中"}]})})]}),(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(H,{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)(H,{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:"导航"}]})})]}),(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"DocSearch-Commands-Key",children:(0,d.jsx)(H,{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:"关闭"}]})})]})]})]})}function H(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})})}var R=r(12611);function B(e){var n=e.autoFocus,r=e.inputRef,t=e.isFromSelection,o=e.initialQuery,c=e.onClose,s=e.placeholder,a=(0,D.tT)("search"),l=i()(a,2),u=l[0].query,j=l[1].fetch;f().useEffect((function(){n&&r.current&&r.current.focus()}),[n,r]),f().useEffect((function(){t&&r.current&&(r.current.select(),j(o))}),[t,r]);var x=(0,h.useCallback)((function(){r.current&&(r.current.value="",j(""))}),[j]),b=(0,h.useMemo)((function(){return(0,R.debounce)(j,500)}),[j]),g=(0,h.useCallback)((function(e){b(e.target.value)}),[b]),y=(0,D.cw)();return(0,d.jsxs)(d.Fragment,{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:o,placeholder:s,className:"DocSearch-Input",ref:r,autoFocus:n,maxLength:E,onChange:g}),(0,d.jsx)("button",{title:"Clear the query",className:"DocSearch-Reset",hidden:!u,onClick:x,children:(0,d.jsx)(v,{})})]}),(0,d.jsx)("button",{className:"DocSearch-Cancel",onClick:c,children:y.$t({id:"2QzYmY",defaultMessage:[{type:0,value:"取消"}]})})]})}r(8213),r(32766);function I(){return(0,d.jsxs)("div",{className:"DocSearch-ErrorScreen",children:[(0,d.jsx)("div",{className:"DocSearch-Screen-Icon",children:(0,d.jsx)(b,{})}),(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 A(){var e=(0,D.v9)("search").query,n=(0,D.cw)();return(0,d.jsxs)("div",{className:"DocSearch-NoResults",children:[(0,d.jsx)("div",{className:"DocSearch-Screen-Icon",children:(0,d.jsx)(g,{})}),(0,d.jsxs)("p",{className:"DocSearch-Title",children:[n.$t({id:"Z+slnL",defaultMessage:[{type:0,value:"没有结果:"}]}),' "',(0,d.jsx)("strong",{children:e}),'"']})]})}var K=r(9491),T=["title","items"];function z(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 F(e){var n=e.title,r=e.items,t=u()(e,T);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)($,function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?z(Object(r),!0).forEach((function(n){s()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}({item:e},t),n)}))})]})}function $(e){var n=e.item,r=e.onItemClick,t=e.onActive,o=e.activeIndex,c=(0,h.useCallback)((function(){t(n.id)}),[t,n]);return(0,d.jsx)("li",{className:"DocSearch-Hit",onClick:function(){r(n)},onMouseMove:c,"aria-selected":o===n.id,children:(0,d.jsx)(K.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 q=["collections"];function U(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 V(e){var n=e.collections,r=u()(e,q);return(0,d.jsx)("div",{className:"DocSearch-Dropdown-Container",children:n.map((function(e,n){return(0,d.jsx)(F,function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?U(Object(r),!0).forEach((function(n){s()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):U(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}({title:e.title,items:e.items},r),n)}))})}function Q(e){var n=(0,D.v9)("search").status,r=(0,D.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:"没有最近搜索"}]})})})}var W=r(68158),Z=["onlyCurrentPart"];function _(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 Y(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?_(Object(r),!0).forEach((function(n){s()(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}var G,J=function(e){var n=e.onlyCurrentPart,r=u()(e,Z),t=(0,D.v9)("search"),o=t.status,c=t.query,s=t.results,a=(0,D.CQ)().summary,i=(0,D.cw)(),l=(0,W.ZP)(),f=(0,h.useMemo)((function(){var e,r=0;if(a.isSinglePart())e=[{title:"",items:s}];else{var t=l?a.getArticlePart(l):null,o=a.getParts();t&&n&&(o=o.filter((function(e){return e.level===t.level}))),e=o.map((function(e){return{level:e.level,title:n?"":e.title||i.$t({id:"51pt/B",defaultMessage:[{type:0,value:"未命名分组"}]}),items:s.filter((function(n){var r=a.getArticle((function(e){return e.path===n.path}));return!!r&&a.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 Y(Y({},e),{},{items:e.items.map((function(e){return Y(Y({},e),{},{id:r++})}))})}))}),[s]);if("error"===o)return(0,d.jsx)(I,{});var p=f.length>0;return c?p?(0,d.jsx)(V,Y(Y({},r),{},{collections:f})):(0,d.jsx)(A,{}):(0,d.jsx)(Q,{hasCollections:p})};function X(e){var n=e.onClose,r=void 0===n?R.noop:n,t=e.onlyCurrentPart,o=void 0!==t&&t,c=(0,D.v9)("search"),s=c.query,a=c.results,l=(0,D.cw)(),u=(0,h.useState)(void 0),p=i()(u,2),v=p[0],m=p[1],j=(0,h.useRef)(null),x=(0,h.useRef)(null),b=(0,h.useRef)(null),g=(0,h.useRef)(null),y=(0,h.useRef)(null),w=(0,h.useRef)("undefined"!=typeof window?window.getSelection().toString().slice(0,E):"").current,S=(0,h.useRef)(s||w).current,O=(0,h.useCallback)((function(e){m(e)}),[m]);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",o),function(){n.removeEventListener("keydown",o)}}function o(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===r&&(e.preventDefault(),t.focus()):document.activeElement===t&&(e.preventDefault(),r.focus()))}}),[n])}({container:j.current}),(0,h.useEffect)((function(){return document.body.classList.add("DocSearch--active"),function(){document.body.classList.remove("DocSearch--active")}}),[]),(0,h.useEffect)((function(){g.current&&(g.current.scrollTop=0)}),[s]),(0,h.useEffect)((function(){S.length>0&&y.current&&y.current.focus()}),[S]),(0,h.useEffect)((function(){function e(){if(x.current){var e=.01*window.innerHeight;x.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),(0,h.useEffect)((function(){var e=function(e){var n;return null===(n=g.current)||void 0===n?void 0:n.getElementsByClassName("DocSearch-Hit").item(e)},n=function(n){"ArrowUp"===n.key||"ArrowDown"===n.key?(n.preventDefault(),m((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(),m((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)}}),[m,a]),(0,d.jsx)(ne,{ref:j,className:"DocSearch DocSearch-Container",onMouseDown:function(e){e.target===e.currentTarget&&r()},children:(0,d.jsxs)("div",{className:"DocSearch-Modal",ref:x,children:[(0,d.jsx)("header",{className:"DocSearch-SearchBar",ref:b,children:(0,d.jsx)(B,{initialQuery:S,placeholder:l.$t({id:"n632UI",defaultMessage:[{type:0,value:"搜索文档"}]}),autoFocus:0===S.length,onClose:r,inputRef:y,isFromSelection:Boolean(S)&&S===w})}),(0,d.jsx)("div",{className:"DocSearch-Dropdown",ref:g,children:(0,d.jsx)(J,{onlyCurrentPart:o,onActive:O,activeIndex:v,onItemClick:function(){r()},inputRef:y})}),(0,d.jsx)("footer",{className:"DocSearch-Footer",children:(0,d.jsx)(L,{})})]})})}var ee,ne=D.zo.div(G||(G=o()(["\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-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"]))),re=["as","className"];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 oe(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){s()(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}function ce(e){var n=e.as,r=e.className,t=u()(e,re),o=(0,h.useRef)(null),c=(0,h.useState)(!1),s=i()(c,2),a=s[0],l=s[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,o=e.onInput,c=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()),c&&c.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[n,r,t,o,c])}({isOpen:a,onOpen:p,onClose:v,onInput:(0,h.useCallback)((function(){l(!0)}),[l]),searchButtonRef:o});var m=n||N;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(se,{}),(0,d.jsx)(m,{onClick:p,className:r,ref:o}),a&&(0,M.createPortal)((0,d.jsx)(X,oe(oe({},t),{},{onClose:v})),document.body)]})}var se=(0,D.vJ)(ee||(ee=o()(["\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),o=TypeError;e.exports=function(e,n){if(!delete e[n])throw o("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),o=r(80764),c=r(52427),s=r(44247),a=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=o(j.sort),b=o(j.push),g=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,o="";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),o.charAt(o.length-1)!==n&&(o+=n);return"DGBEFHACIJK"!==o}}));t({target:"Array",proto:!0,forced:g||!y||!w||!D},{sort:function(e){void 0!==e&&c(e);var n=s(this);if(D)return void 0===e?x(n):x(n,e);var r,t,o=[],u=a(n);for(t=0;t<u;t++)t in n&&b(o,n[t]);for(d(o,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=a(o),t=0;t<r;)n[t]=o[t++];for(;t<u;)i(n,t++);return n}})}}]);
|
|
2
|
-
//# sourceMappingURL=913-88a4f7.js.map
|
package/dist/913-88a4f7.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"913-88a4f7.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/doc-search-button.tsx","webpack://@topwrite/reader/./src/components/search/constants.ts","webpack://@topwrite/reader/./src/components/search/footer.tsx","webpack://@topwrite/reader/./src/components/search/search-box.tsx","webpack://@topwrite/reader/./src/components/search/screens/error-screen.tsx","webpack://@topwrite/reader/./src/components/search/screens/no-result-screen.tsx","webpack://@topwrite/reader/./src/components/search/results.tsx","webpack://@topwrite/reader/./src/components/search/screens/results-screen.tsx","webpack://@topwrite/reader/./src/components/search/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/screen-state.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","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","export const MAX_QUERY_SIZE = 64;\r\n","import React from 'react';\r\nimport { useIntl } from '@topwrite/common';\r\n\r\nexport function Footer() {\r\n const intl = useIntl();\r\n\r\n return (\r\n <>\r\n <div className='DocSearch-Logo'></div>\r\n <ul className='DocSearch-Commands'>\r\n <li>\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>\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 <li>\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 </ul>\r\n </>\r\n );\r\n}\r\n\r\ninterface CommandIconProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction CommandIcon(props: CommandIconProps) {\r\n return (\r\n <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\n","import React, { MutableRefObject, useCallback, useMemo } from 'react';\r\nimport { MAX_QUERY_SIZE } from './constants';\r\nimport { LoadingIcon, ResetIcon, SearchIcon } from './icons';\r\nimport { debounce } from 'lodash';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\n\r\ninterface SearchBoxProps {\r\n autoFocus: boolean;\r\n inputRef: MutableRefObject<HTMLInputElement | null>;\r\n isFromSelection: boolean;\r\n placeholder?: string;\r\n initialQuery: string;\r\n\r\n onClose(): void;\r\n}\r\n\r\nexport function SearchBox({\r\n autoFocus,\r\n inputRef,\r\n isFromSelection,\r\n initialQuery,\r\n onClose,\r\n placeholder\r\n\r\n}: SearchBoxProps) {\r\n\r\n const [{ query }, { fetch }] = useModel('search');\r\n\r\n React.useEffect(() => {\r\n if (autoFocus && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, [autoFocus, inputRef]);\r\n\r\n React.useEffect(() => {\r\n if (isFromSelection && inputRef.current) {\r\n inputRef.current.select();\r\n fetch(initialQuery);\r\n }\r\n }, [isFromSelection, inputRef]);\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 const intl = useIntl();\r\n\r\n return <>\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={placeholder}\r\n className='DocSearch-Input'\r\n ref={inputRef}\r\n autoFocus={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 </>;\r\n}\r\n","import { ErrorIcon } from '../icons';\r\n\r\nexport function ErrorScreen() {\r\n return (\r\n <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}\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 { Results } from '../results';\r\nimport React from 'react';\r\nimport { SearchResult } from '../../../models/search';\r\n\r\ninterface ResultsScreenProps {\r\n activeIndex?: number;\r\n inputRef: React.MutableRefObject<null | HTMLInputElement>;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n collections: any;\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 { 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 React, { useMemo } from 'react';\r\nimport { ErrorScreen } from './screens/error-screen';\r\nimport { NoResultsScreen } from './screens/no-result-screen';\r\nimport { ResultsScreen } from './screens/results-screen';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { SearchResult } from '../../models/search';\r\nimport { useBook, useIntl, useSelector } from '@topwrite/common';\r\nimport useArticle from '../../lib/use-article';\r\n\r\nexport interface ScreenStateProps {\r\n onlyCurrentPart: boolean;\r\n activeIndex?: number;\r\n inputRef: React.MutableRefObject<null | HTMLInputElement>;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n}\r\n\r\nexport const ScreenState = ({ onlyCurrentPart, ...props }: ScreenStateProps) => {\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 { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { MAX_QUERY_SIZE } from './constants';\r\nimport { DocSearchProps } from './doc-search';\r\nimport { Footer } from './footer';\r\nimport { SearchBox } from './search-box';\r\nimport { noop } from 'lodash';\r\nimport { ScreenState } from './screen-state';\r\nimport { useTrapFocus } from './hooks/use-trap-focus';\r\nimport { styled, useIntl, useSelector } from '@topwrite/common';\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\r\n const { query, results } = useSelector('search');\r\n const intl = useIntl();\r\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\r\n\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const modalRef = useRef<HTMLDivElement | null>(null);\r\n const formElementRef = useRef<HTMLDivElement | null>(null);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const initialQueryFromSelection = useRef(\r\n typeof window !== 'undefined'\r\n ? window.getSelection()!.toString().slice(0, MAX_QUERY_SIZE)\r\n : ''\r\n ).current;\r\n\r\n const initialQuery = useRef(\r\n query || initialQueryFromSelection\r\n ).current;\r\n\r\n const onActive = useCallback((index) => {\r\n setActiveIndex(index);\r\n }, [setActiveIndex]);\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 if (dropdownRef.current) {\r\n dropdownRef.current.scrollTop = 0;\r\n }\r\n }, [query]);\r\n\r\n useEffect(() => {\r\n if (initialQuery.length > 0) {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }\r\n }, [initialQuery]);\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 useEffect(() => {\r\n\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 <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 <header className='DocSearch-SearchBar' ref={formElementRef}>\r\n <SearchBox\r\n initialQuery={initialQuery}\r\n placeholder={intl.$t({ defaultMessage: '搜索文档' })}\r\n autoFocus={initialQuery.length === 0}\r\n onClose={onClose}\r\n inputRef={inputRef}\r\n isFromSelection={\r\n Boolean(initialQuery) &&\r\n initialQuery === initialQueryFromSelection\r\n }\r\n />\r\n </header>\r\n <div className='DocSearch-Dropdown' ref={dropdownRef}>\r\n <ScreenState\r\n onlyCurrentPart={onlyCurrentPart}\r\n onActive={onActive}\r\n activeIndex={activeIndex}\r\n onItemClick={() => {\r\n onClose();\r\n }}\r\n inputRef={inputRef}\r\n />\r\n </div>\r\n <footer className='DocSearch-Footer'>\r\n <Footer />\r\n </footer>\r\n </div>\r\n </Container>\r\n );\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-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\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 <>\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 </>;\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","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","MAX_QUERY_SIZE","Footer","_Fragment","CommandIcon","SearchBox","autoFocus","inputRef","isFromSelection","initialQuery","onClose","placeholder","_useModel","useModel","_useModel2","query","fetch","React","current","focus","select","onReset","useCallback","value","debounced","useMemo","debounce","handleSearch","e","target","onSubmit","event","preventDefault","defaultValue","maxLength","onChange","title","hidden","onClick","ErrorScreen","NoResultsScreen","useSelector","Results","items","map","item","index","Result","_ref2","onItemClick","onActive","activeIndex","onMouseMove","Link","path","body","ResultsScreen","collections","collection","StartScreen","status","hasCollections","ScreenState","onlyCurrentPart","_useSelector","results","summary","useBook","article","useArticle","isSinglePart","currentPart","getArticlePart","parts","getParts","filter","part","level","result","getArticle","sort","a","length","DocSearchModal","_ref$onClose","noop","_ref$onlyCurrentPart","undefined","setActiveIndex","containerRef","useRef","modalRef","formElementRef","dropdownRef","initialQueryFromSelection","window","getSelection","toString","slice","container","focusableElements","querySelectorAll","firstElement","lastElement","addEventListener","trapFocus","removeEventListener","shiftKey","document","activeElement","useTrapFocus","classList","add","remove","scrollTop","setFullViewportHeight","vh","innerHeight","style","setProperty","concat","getActiveItem","_dropdownRef$current","getElementsByClassName","onKeyDown","arguments","activeItem","scrollIntoViewIfNeeded","scrollIntoView","requestAnimationFrame","_activeItem$getElemen","getElementsByTagName","dispatchEvent","Event","bubbles","Container","onMouseDown","currentTarget","Boolean","DocSearch","as","searchButtonRef","isOpen","setIsOpen","onOpen","onInput","keyCode","metaKey","ctrlKey","element","tagName","isContentEditable","isEditingContent","contains","String","fromCharCode","useKeyboardEvents","Component","GlobalStyle","createPortal","createGlobalStyle","tryToString","$TypeError","TypeError","module","exports","O","P","firefox","match","UA","webkit","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","push","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":""}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { SearchResult } from '../../models/search';
|
|
3
|
-
export interface ScreenStateProps {
|
|
4
|
-
onlyCurrentPart: boolean;
|
|
5
|
-
activeIndex?: number;
|
|
6
|
-
inputRef: React.MutableRefObject<null | HTMLInputElement>;
|
|
7
|
-
onItemClick: (item: SearchResult) => void;
|
|
8
|
-
onActive: (index: number) => void;
|
|
9
|
-
}
|
|
10
|
-
export declare const ScreenState: ({ onlyCurrentPart, ...props }: ScreenStateProps) => JSX.Element;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { MutableRefObject } from 'react';
|
|
2
|
-
interface SearchBoxProps {
|
|
3
|
-
autoFocus: boolean;
|
|
4
|
-
inputRef: MutableRefObject<HTMLInputElement | null>;
|
|
5
|
-
isFromSelection: boolean;
|
|
6
|
-
placeholder?: string;
|
|
7
|
-
initialQuery: string;
|
|
8
|
-
onClose(): void;
|
|
9
|
-
}
|
|
10
|
-
export declare function SearchBox({ autoFocus, inputRef, isFromSelection, initialQuery, onClose, placeholder }: SearchBoxProps): JSX.Element;
|
|
11
|
-
export {};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|