@topwrite/reader 1.0.33-alpha.2 → 1.0.33-alpha.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topwrite/reader",
3
- "version": "1.0.33-alpha.2+aa8d086",
3
+ "version": "1.0.33-alpha.3+9f60fb4",
4
4
  "author": "yunwuxin <tzzhangyajun@qq.com> (https://github.com/yunwuxin)",
5
5
  "license": "ISC",
6
6
  "types": "types/index.d.ts",
@@ -53,5 +53,5 @@
53
53
  "optional": true
54
54
  }
55
55
  },
56
- "gitHead": "aa8d0868c1359c05d7ab5af02d79946d3fb1011c"
56
+ "gitHead": "9f60fb40a8b256cf41a1e9ab4168a4958ce17f54"
57
57
  }
@@ -6,7 +6,7 @@ export default function Heading({ depth, id, children, ...props }: HeadingHTMLAt
6
6
  suppressHydrationWarning?: boolean | undefined;
7
7
  accessKey?: string | undefined;
8
8
  className?: string | undefined;
9
- contentEditable?: "inherit" | (boolean | "true" | "false") | undefined;
9
+ contentEditable?: (boolean | "true" | "false") | "inherit" | undefined;
10
10
  contextMenu?: string | undefined;
11
11
  dir?: string | undefined;
12
12
  draggable?: (boolean | "true" | "false") | undefined;
@@ -18,7 +18,7 @@ export default function Heading({ depth, id, children, ...props }: HeadingHTMLAt
18
18
  style?: import("react").CSSProperties | undefined;
19
19
  tabIndex?: number | undefined;
20
20
  title?: string | undefined;
21
- translate?: "no" | "yes" | undefined;
21
+ translate?: "yes" | "no" | undefined;
22
22
  radioGroup?: string | undefined;
23
23
  role?: import("react").AriaRole | undefined;
24
24
  about?: string | undefined;
@@ -41,7 +41,7 @@ export default function Heading({ depth, id, children, ...props }: HeadingHTMLAt
41
41
  results?: number | undefined;
42
42
  security?: string | undefined;
43
43
  unselectable?: "on" | "off" | undefined;
44
- inputMode?: "search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
44
+ inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
45
45
  is?: string | undefined;
46
46
  'aria-activedescendant'?: string | undefined;
47
47
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -52,16 +52,16 @@ export default function Heading({ depth, id, children, ...props }: HeadingHTMLAt
52
52
  'aria-colindex'?: number | undefined;
53
53
  'aria-colspan'?: number | undefined;
54
54
  'aria-controls'?: string | undefined;
55
- 'aria-current'?: boolean | "page" | "time" | "date" | "true" | "false" | "step" | "location" | undefined;
55
+ 'aria-current'?: boolean | "page" | "time" | "true" | "false" | "step" | "location" | "date" | undefined;
56
56
  'aria-describedby'?: string | undefined;
57
57
  'aria-details'?: string | undefined;
58
58
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
59
- 'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
59
+ 'aria-dropeffect'?: "link" | "copy" | "none" | "execute" | "move" | "popup" | undefined;
60
60
  'aria-errormessage'?: string | undefined;
61
61
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
62
62
  'aria-flowto'?: string | undefined;
63
63
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
64
- 'aria-haspopup'?: boolean | "dialog" | "menu" | "grid" | "listbox" | "tree" | "true" | "false" | undefined;
64
+ 'aria-haspopup'?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
65
65
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
66
66
  'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
67
67
  'aria-keyshortcuts'?: string | undefined;
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_topwrite_reader=self.webpackChunk_topwrite_reader||[]).push([[107],{8107:(e,t,n)=>{n.r(t),n.d(t,{default:()=>E});var s={};n.r(s),n.d(s,{book:()=>c,page:()=>u,search:()=>p});var i=n(4246),r=n(7363),a=n(131),o=n(4153);class l extends a.Hn{}const c=new l;var d=n(4942);class h extends a.Hn{constructor(){super(...arguments),(0,d.Z)(this,"initialState",{loading:!1,request:a.WY.create(),config:{}})}subscription(e){let{fetch:t}=e,n=o.m8.location;o.m8.listen((async e=>{let{location:s}=e;n.pathname!==s.pathname&&(t(s.pathname),requestAnimationFrame((()=>{window.scrollTo(0,0)}))),n=s}))}async*fetch(e){yield this.setState((e=>{e.loading=!0}));const{request:t,config:n}=yield*this.getState("page");try{const s=decodeURI(e);let{data:i}=await t.get(s,n);"string"==typeof i&&(i=(0,a.He)(i));const{file:r,lfs:o}=i;yield this.setState((e=>{e.file=new a.$B(r),e.lfs=o}))}catch(e){yield this.setState((t=>{t.error=e}))}finally{yield this.setState((e=>{e.loading=!1}))}}*intercept(e){const{request:t}=yield*this.getState("page");e(t.interceptors)}*updateConfig(e){yield this.setState((t=>{e(t.config)}))}}const u=new h;class f extends a.Hn{constructor(){super(...arguments),(0,d.Z)(this,"initialState",{status:"idle",results:[],query:""})}async*fetch(e){if(e=e.trim()){yield this.setState((t=>{t.query=e,t.status="loading"}));let{handler:t}=yield*this.getState("search");if(!t){const{summary:n}=yield*this.getState("book");t=()=>{const t=[];return n.getArticle((n=>{const s=n.getPath();return n.title.includes(e)&&s&&t.push({title:n.title,path:s}),!1})),t}}try{const n=await t(e);yield this.setState((e=>{e.results=n,e.status="idle"}))}catch{yield this.setState((e=>{e.results=[],e.status="error"}))}}else yield this.setState((t=>{t.query=e,t.status="idle",t.results=[]}))}*setHandler(e){yield this.setState((t=>{t.handler=e}))}}const p=new f;var g,y,m=n(8891),w=n(168);function x(){return(0,i.jsx)(v,{children:(0,i.jsx)(S,{})})}const S=a.zo.div(g||(g=(0,w.Z)(["\n @keyframes spinner-border {\n to {\n transform: rotate(360deg)\n }\n }\n\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: -0.125em;\n border: 0.25em solid #3c60ff;\n border-right-color: transparent;\n border-radius: 50%;\n animation: 0.75s linear infinite spinner-border;\n"]))),v=a.zo.div(y||(y=(0,w.Z)(["\n position: fixed;\n top: 0;\n left: 0;\n height: 100vh;\n width: 100vw;\n display: flex;\n align-items: center;\n justify-content: center;\n"])));var b=n(8926),j=n(3784),k=n(1579),q=n(7092),C=n(2573);function Z(){const{summary:e}=(0,a.CQ)(),t=(0,j.Z)(),n=(0,q.Z)(),s=(0,r.useMemo)((()=>e.getArticle((e=>e.getPath()===n.path))),[e,n]);(0,r.useEffect)((()=>{window.dispatchEvent(new Event("bootstrapped"))}),[]);const o=(0,C.Z)();return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(a.ql,{children:[(0,i.jsx)("title",{children:"".concat(s?"".concat(s.title," - "):"").concat(t)}),(0,i.jsx)("link",{rel:"shortcut icon",href:o,type:"image/png"})]}),(0,i.jsxs)(k.Q3.Provider,{value:s,children:[(0,i.jsx)(a.cu,{role:"app"}),(0,i.jsx)(a.cu,{role:"page"})]})]})}async function H(e){return"en"===e?n.e(7).then(n.t.bind(n,2007,19)):n.e(267).then(n.t.bind(n,3267,19))}function E(){const[e,t]=(0,r.useState)();return(0,a.bd)((async()=>{try{const{location:e}=(0,o.fi)();let n=(0,a.He)();if(!n){n=(await a.WY.get(e.toString())).data}let{id:r,summary:l,file:c,config:d={},options:h={},lfs:u,pluginsCenter:f}=n;d=a.De.createFromObject(d),l=a.ER.create(l);const p=new a.fy(r,d,l),g={page:{config:{params:m.parse(e.search)},file:new a.$B(c),lfs:u},options:h},y=await(0,a.W3)("reader",p,s,g,H,f),w=(0,i.jsx)(y,{children:(0,i.jsx)(C.C,{children:(0,i.jsx)(b.eC,{children:(0,i.jsx)(Z,{})})})});t(w)}catch(n){var e;if(console.error(n),a.WY.isAxiosError(n))t((null===(e=n.response)||void 0===e?void 0:e.data)||n.message);else t(n.message)}}),[]),e||(0,i.jsx)(x,{})}}}]);
2
- //# sourceMappingURL=107-aac715.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"107-aac715.js","mappings":"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","sources":["webpack://@topwrite/reader/./src/models/book.ts","webpack://@topwrite/reader/./src/models/page.ts","webpack://@topwrite/reader/./src/models/search.ts","webpack://@topwrite/reader/./src/components/page-loader.tsx","webpack://@topwrite/reader/./src/components/page.tsx","webpack://@topwrite/reader/./src/components/app.tsx"],"sourcesContent":["import { Book as BookType, Model } from '@topwrite/common';\r\n\r\nclass Book extends Model<BookType> {\r\n\r\n}\r\n\r\nexport const book = new Book();\r\n","import { ActionsType, File, getPayload, Model, request, RequestConfig, RequestInstance } from '@topwrite/common';\r\nimport { history } from '@/lib/history';\r\n\r\ninterface PageState {\r\n loading: boolean;\r\n error?: Error;\r\n request: RequestInstance;\r\n config: RequestConfig;\r\n file: File;\r\n lfs?: {\r\n url: string\r\n files: {\r\n [index: string]: string\r\n }\r\n };\r\n}\r\n\r\ntype Interceptors = RequestInstance['interceptors']\r\n\r\nclass Page extends Model<PageState> {\r\n\r\n initialState = {\r\n loading: false,\r\n request: request.create(),\r\n config: {},\r\n };\r\n\r\n subscription({ fetch }: ActionsType<Page>) {\r\n let prevLocation = history.location;\r\n history.listen(async ({ location }) => {\r\n if (prevLocation.pathname !== location.pathname) {\r\n fetch(location.pathname);\r\n requestAnimationFrame(() => {\r\n window.scrollTo(0, 0);\r\n });\r\n }\r\n prevLocation = location;\r\n });\r\n }\r\n\r\n async *fetch(pathname: string) {\r\n\r\n yield this.setState(state => {\r\n state.loading = true;\r\n });\r\n\r\n const { request, config } = yield *this.getState('page');\r\n\r\n try {\r\n const url = decodeURI(pathname);\r\n\r\n let { data } = await request.get(url, config);\r\n\r\n if (typeof data === 'string') {\r\n data = getPayload(data);\r\n }\r\n const { file, lfs } = data;\r\n\r\n yield this.setState(state => {\r\n state.file = new File(file);\r\n state.lfs = lfs;\r\n });\r\n } catch (e: any) {\r\n yield this.setState(state => {\r\n state.error = e;\r\n });\r\n } finally {\r\n yield this.setState(state => {\r\n state.loading = false;\r\n });\r\n }\r\n }\r\n\r\n *intercept(handler: (interceptors: Interceptors) => void) {\r\n const { request } = yield *this.getState('page');\r\n\r\n handler(request.interceptors);\r\n }\r\n\r\n *updateConfig(updater: (config: RequestConfig) => void) {\r\n yield this.setState(state => {\r\n updater(state.config);\r\n });\r\n }\r\n}\r\n\r\nexport const page = new Page();\r\n","import { Model } from '@topwrite/common';\r\n\r\nexport interface SearchResult {\r\n title: string\r\n path: string\r\n body?: string\r\n}\r\n\r\nexport type SearchHandler = (keyword: string) => Promise<SearchResult[]> | SearchResult[]\r\n\r\ninterface SearchState {\r\n handler?: SearchHandler\r\n results: SearchResult[]\r\n query: string\r\n status: 'loading' | 'error' | 'idle'\r\n}\r\n\r\nclass Search extends Model<SearchState> {\r\n\r\n initialState: SearchState = {\r\n status: 'idle',\r\n results: [],\r\n query: ''\r\n };\r\n\r\n async *fetch(query: string) {\r\n query = query.trim();\r\n\r\n if (query) {\r\n yield this.setState(state => {\r\n state.query = query;\r\n state.status = 'loading';\r\n });\r\n\r\n let { handler } = yield *this.getState('search');\r\n if (!handler) {\r\n const { summary } = yield *this.getState('book');\r\n\r\n handler = () => {\r\n const results: SearchResult[] = [];\r\n summary.getArticle((article) => {\r\n const path = article.getPath();\r\n if (article.title.includes(query) && path) {\r\n results.push({\r\n title: article.title,\r\n path: path\r\n });\r\n }\r\n return false;\r\n });\r\n return results;\r\n };\r\n }\r\n\r\n try {\r\n const results = await handler(query);\r\n\r\n yield this.setState(state => {\r\n state.results = results;\r\n state.status = 'idle';\r\n });\r\n } catch {\r\n yield this.setState(state => {\r\n state.results = [];\r\n state.status = 'error';\r\n });\r\n }\r\n } else {\r\n yield this.setState(state => {\r\n state.query = query;\r\n state.status = 'idle';\r\n state.results = [];\r\n });\r\n }\r\n\r\n }\r\n\r\n *setHandler(handler?: SearchHandler) {\r\n yield this.setState((state) => {\r\n state.handler = handler;\r\n });\r\n }\r\n\r\n}\r\n\r\nexport const search = new Search();\r\n","import { styled } from '@topwrite/common';\r\n\r\nexport default function PageLoader() {\r\n\r\n return <Container>\r\n <Spinner />\r\n </Container>;\r\n}\r\n\r\nconst Spinner = styled.div`\r\n @keyframes spinner-border {\r\n to {\r\n transform: rotate(360deg)\r\n }\r\n }\r\n\r\n display: inline-block;\r\n width: 2rem;\r\n height: 2rem;\r\n vertical-align: -0.125em;\r\n border: 0.25em solid #3c60ff;\r\n border-right-color: transparent;\r\n border-radius: 50%;\r\n animation: 0.75s linear infinite spinner-border;\r\n`;\r\n\r\nconst Container = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n height: 100vh;\r\n width: 100vw;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\n","import { InjectedComponent, useBook, Helmet } from '@topwrite/common';\r\nimport useTitle from '@/lib/use-title';\r\nimport { useEffect, useMemo } from 'react';\r\nimport { ArticleContext } from '@/lib/use-article';\r\nimport useFile from '@/lib/use-file';\r\nimport useLogo from '@/lib/use-logo';\r\n\r\nexport default function Page() {\r\n const { summary } = useBook();\r\n const title = useTitle();\r\n const file = useFile();\r\n\r\n const article = useMemo(() => {\r\n return summary.getArticle(article => article.getPath() === file.path);\r\n }, [summary, file]);\r\n\r\n useEffect(() => {\r\n window.dispatchEvent(new Event('bootstrapped'));\r\n }, []);\r\n\r\n const logo = useLogo();\r\n\r\n return <>\r\n <Helmet>\r\n <title>{`${article ? `${article.title} - ` : ''}${title}`}</title>\r\n <link rel='shortcut icon' href={logo} type='image/png' />\r\n </Helmet>\r\n <ArticleContext.Provider value={article}>\r\n {/* todo 废弃的app */}\r\n <InjectedComponent role='app' />\r\n <InjectedComponent role='page' />\r\n </ArticleContext.Provider>\r\n </>;\r\n}\r\n","import { ReactElement, useState } from 'react';\r\nimport { Book, Config, createApplication, File, getPayload, request, Summary, useAsyncEffect } from '@topwrite/common';\r\nimport { createHistory } from '@/lib/history';\r\nimport * as models from '@/models';\r\nimport queryString from 'query-string';\r\nimport PageLoader from '@/components/page-loader';\r\nimport { CssProvider } from '@/lib/use-css';\r\nimport Page from '@/components/page';\r\nimport { LogoProvider } from '@/lib/use-logo';\r\n\r\nasync function loadLocaleData(locale: string) {\r\n switch (locale) {\r\n case 'en':\r\n return import('../lang/en.json');\r\n default:\r\n return import('../lang/zh-CN.json');\r\n }\r\n}\r\n\r\nexport default function App() {\r\n const [app, setApp] = useState<ReactElement>();\r\n\r\n useAsyncEffect(async () => {\r\n\r\n try {\r\n const { location } = createHistory();\r\n\r\n let payload = getPayload();\r\n\r\n if (!payload) {\r\n //调试时远程获取\r\n const response = await request.get(location.toString());\r\n payload = response.data;\r\n }\r\n\r\n let { id, summary, file, config = {}, options = {}, lfs, pluginsCenter } = payload;\r\n\r\n config = Config.createFromObject(config);\r\n\r\n summary = Summary.create(summary);\r\n\r\n const book = new Book(id, config, summary);\r\n\r\n const initialState = {\r\n page: {\r\n config: {\r\n params: queryString.parse(location.search)\r\n },\r\n file: new File(file),\r\n lfs,\r\n },\r\n options\r\n };\r\n\r\n const Application = await createApplication('reader', book, models, initialState, loadLocaleData, pluginsCenter);\r\n\r\n const app = <Application>\r\n <LogoProvider>\r\n <CssProvider>\r\n <Page />\r\n </CssProvider>\r\n </LogoProvider>\r\n </Application>;\r\n\r\n setApp(app);\r\n } catch (e: any) {\r\n console.error(e);\r\n if (request.isAxiosError(e)) {\r\n setApp(e.response?.data || e.message);\r\n } else {\r\n setApp(e.message);\r\n }\r\n }\r\n }, []);\r\n\r\n if (app) {\r\n return app;\r\n }\r\n return <PageLoader />;\r\n}\r\n"],"names":["Book","book","Page","loading","request","config","subscription","fetch","prevLocation","async","location","pathname","requestAnimationFrame","window","scrollTo","this","setState","state","getState","url","decodeURI","data","get","file","lfs","e","error","handler","interceptors","updater","page","Search","status","results","query","trim","summary","getArticle","article","path","getPath","title","includes","push","search","PageLoader","Container","Spinner","useMemo","useEffect","dispatchEvent","Event","logo","rel","href","type","value","role","loadLocaleData","locale","App","app","setApp","useState","payload","toString","id","options","pluginsCenter","initialState","params","Application","console","response","message"],"sourceRoot":""}