@prose-reader/react-native 1.303.0 → 1.304.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,4 +30,4 @@ export declare const useProseReaderContext: () => {
30
30
  export declare const ReaderProvider: ({ children, reader, }: {
31
31
  children: React.ReactNode;
32
32
  reader: ReturnType<typeof useCreateReader>;
33
- }) => import("react").JSX.Element;
33
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@webview-bridge/react-native"),o=require("react"),m=require("../useLiveRef-Dg4CKqYn.cjs"),u=require("@prose-reader/streamer"),v=require("expo-file-system/next"),p=require("react/jsx-runtime"),b=e=>{const t=m.useLiveRef(e),[i]=o.useState(()=>c.bridge(({set:s})=>({pagination:void 0,setPagination:async a=>{s({pagination:a})},context:void 0,setContext:async a=>{s({context:a})},async getResource(a){return t.current.getResource(a)}})));return i},x=c.postMessageSchema({load:{validate:e=>e},turnRight:{validate:()=>{}},turnLeft:{validate:()=>{}}}),y=e=>{const[t,i]=o.useState(void 0),s=b(e),a=t?.postMessage;o.useEffect(()=>{s&&i(c.createWebView({bridge:s,debug:!0,postMessageSchema:x}))},[s]);const d=o.useCallback(g=>{a?.("load",{manifest:g})},[a]);return t?{webviewBridge:t,ReaderWebView:t.WebView,appBridge:s,load:d}:null},h=async(e,{orderByAlpha:t,name:i}={})=>{let s=e.list();t&&(s=s.slice().sort((r,n)=>u.sortByTitleComparator(r.name,n.name)));const a=r=>r.list().reduce((n,l)=>l instanceof v.Directory?[...n,...a(l)]:[...n,l],[]),d=s.reduce((r,n)=>n instanceof v.Directory?[...r,...a(n)]:[...r,n],[]);return{filename:i||"",records:d.map(r=>r instanceof v.Directory?{dir:!0,basename:u.getUriBasename(r.name),uri:r.uri.replace("file://",""),blob:()=>Promise.resolve(new Blob),string:()=>Promise.resolve(""),size:0}:{dir:!1,basename:u.getUriBasename(r.name),uri:r.uri.replace("file://",""),blob:async()=>new Blob([await r.arrayBuffer()]),string:async()=>r.text(),size:r.info().size??0,encodingFormat:r.type??void 0}),close:()=>Promise.resolve()}},f=o.createContext(void 0),R=()=>{const e=o.useContext(f);if(!e)throw new Error("useProseReader must be used within a ProseReaderProvider");return e},w=({children:e,reader:t})=>p.jsx(f.Provider,{value:t,children:e}),B=()=>{const{webviewBridge:e}=R(),{postMessage:t}=e;return{turnRight:()=>{t("turnRight",void 0)},turnLeft:()=>{t("turnLeft",void 0)}}},P=e=>{const{appBridge:t}=R();return c.useBridge(t,e)};class S extends u.Streamer{async fetchResourceAsData({key:t,resourcePath:i}){const s=await super.fetchResource({key:t,resourcePath:i});return{data:await s.text(),headers:Object.fromEntries(s.headers.entries())}}}exports.useLiveRef=m.useLiveRef;exports.ReactNativeStreamer=S;exports.ReaderProvider=w;exports.createArchiveFromExpoFileSystemNext=h;exports.useCreateReader=y;exports.useReader=B;exports.useReaderState=P;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../shared-C6TEX07M.cjs");let t=require("@webview-bridge/react-native"),n=require("react"),r=require("@prose-reader/streamer"),i=require("expo-file-system/next"),a=require("react/jsx-runtime");var o=r=>{let i=e.t(r),[a]=(0,n.useState)(()=>(0,t.bridge)(({set:e})=>({pagination:void 0,setPagination:async t=>{e({pagination:t})},context:void 0,setContext:async t=>{e({context:t})},async getResource(e){return i.current.getResource(e)}})));return a},s=(0,t.postMessageSchema)({load:{validate:e=>e},turnRight:{validate:()=>{}},turnLeft:{validate:()=>{}}}),c=e=>{let[r,i]=(0,n.useState)(void 0),a=o(e),c=r?.postMessage;(0,n.useEffect)(()=>{a&&i((0,t.createWebView)({bridge:a,debug:!0,postMessageSchema:s}))},[a]);let l=(0,n.useCallback)(e=>{c?.(`load`,{manifest:e})},[c]);return r?{webviewBridge:r,ReaderWebView:r.WebView,appBridge:a,load:l}:null},l=async(e,{orderByAlpha:t,name:n}={})=>{let a=e.list();t&&(a=a.slice().sort((e,t)=>(0,r.sortByTitleComparator)(e.name,t.name)));let o=e=>e.list().reduce((e,t)=>t instanceof i.Directory?[...e,...o(t)]:[...e,t],[]),s=a.reduce((e,t)=>t instanceof i.Directory?[...e,...o(t)]:[...e,t],[]);return{filename:n||``,records:s.map(e=>e instanceof i.Directory?{dir:!0,basename:(0,r.getUriBasename)(e.name),uri:e.uri.replace(`file://`,``),blob:()=>Promise.resolve(new Blob),string:()=>Promise.resolve(``),size:0}:{dir:!1,basename:(0,r.getUriBasename)(e.name),uri:e.uri.replace(`file://`,``),blob:async()=>new Blob([await e.arrayBuffer()]),string:async()=>e.text(),size:e.info().size??0,encodingFormat:e.type??void 0}),close:()=>Promise.resolve()}},u=(0,n.createContext)(void 0),d=()=>{let e=(0,n.useContext)(u);if(!e)throw Error(`useProseReader must be used within a ProseReaderProvider`);return e},f=({children:e,reader:t})=>(0,a.jsx)(u.Provider,{value:t,children:e}),p=()=>{let{webviewBridge:e}=d(),{postMessage:t}=e;return{turnRight:()=>{t(`turnRight`,void 0)},turnLeft:()=>{t(`turnLeft`,void 0)}}},m=e=>{let{appBridge:n}=d();return(0,t.useBridge)(n,e)},h=class extends r.Streamer{async fetchResourceAsData({key:e,resourcePath:t}){let n=await super.fetchResource({key:e,resourcePath:t});return{data:await n.text(),headers:Object.fromEntries(n.headers.entries())}}};exports.ReactNativeStreamer=h,exports.ReaderProvider=f,exports.createArchiveFromExpoFileSystemNext=l,exports.useCreateReader=c,exports.useLiveRef=e.t,exports.useReader=p,exports.useReaderState=m;
@@ -1,130 +1,102 @@
1
- import { bridge as g, postMessageSchema as v, createWebView as b, useBridge as R } from "@webview-bridge/react-native";
2
- import { useState as l, useEffect as w, useCallback as h, createContext as x, useContext as B } from "react";
3
- import { u as y } from "../useLiveRef-CYh-YkID.js";
4
- import { sortByTitleComparator as P, getUriBasename as m, Streamer as C } from "@prose-reader/streamer";
5
- import { Directory as c } from "expo-file-system/next";
6
- import { jsx as S } from "react/jsx-runtime";
7
- const L = (e) => {
8
- const t = y(e), [a] = l(
9
- () => g(({ set: s }) => ({
10
- pagination: void 0,
11
- setPagination: async (n) => {
12
- s({ pagination: n });
13
- },
14
- context: void 0,
15
- setContext: async (n) => {
16
- s({ context: n });
17
- },
18
- /**
19
- * For a given spine item, provide the resource to the webview.
20
- */
21
- async getResource(n) {
22
- return t.current.getResource(n);
23
- }
24
- }))
25
- );
26
- return a;
27
- }, M = v({
28
- load: {
29
- validate: (e) => e
30
- },
31
- turnRight: {
32
- validate: () => {
33
- }
34
- },
35
- turnLeft: {
36
- validate: () => {
37
- }
38
- }
39
- }), A = (e) => {
40
- const [t, a] = l(void 0), s = L(e), n = t?.postMessage;
41
- w(() => {
42
- s && a(
43
- b({
44
- bridge: s,
45
- debug: !0,
46
- postMessageSchema: M
47
- })
48
- );
49
- }, [s]);
50
- const i = h(
51
- (d) => {
52
- n?.("load", { manifest: d });
53
- },
54
- [n]
55
- );
56
- return t ? {
57
- webviewBridge: t,
58
- ReaderWebView: t.WebView,
59
- appBridge: s,
60
- load: i
61
- } : null;
62
- }, D = async (e, { orderByAlpha: t, name: a } = {}) => {
63
- let s = e.list();
64
- t && (s = s.slice().sort((r, o) => P(r.name, o.name)));
65
- const n = (r) => r.list().reduce((o, u) => u instanceof c ? [...o, ...n(u)] : [...o, u], []), i = s.reduce((r, o) => o instanceof c ? [...r, ...n(o)] : [...r, o], []);
66
- return {
67
- filename: a || "",
68
- records: i.map((r) => r instanceof c ? {
69
- dir: !0,
70
- basename: m(r.name),
71
- uri: r.uri.replace("file://", ""),
72
- // @todo fix prose-reader
73
- blob: () => Promise.resolve(new Blob()),
74
- string: () => Promise.resolve(""),
75
- size: 0
76
- } : {
77
- dir: !1,
78
- basename: m(r.name),
79
- uri: r.uri.replace("file://", ""),
80
- // @todo fix prose-reader
81
- blob: async () => new Blob([await r.arrayBuffer()]),
82
- string: async () => r.text(),
83
- size: r.info().size ?? 0,
84
- encodingFormat: r.type ?? void 0
85
- }),
86
- close: () => Promise.resolve()
87
- };
88
- }, f = x(void 0), p = () => {
89
- const e = B(f);
90
- if (!e)
91
- throw new Error("useProseReader must be used within a ProseReaderProvider");
92
- return e;
93
- }, N = ({
94
- children: e,
95
- reader: t
96
- }) => /* @__PURE__ */ S(f.Provider, { value: t, children: e }), O = () => {
97
- const { webviewBridge: e } = p(), { postMessage: t } = e;
98
- return {
99
- turnRight: () => {
100
- t("turnRight", void 0);
101
- },
102
- turnLeft: () => {
103
- t("turnLeft", void 0);
104
- }
105
- };
106
- }, k = (e) => {
107
- const { appBridge: t } = p();
108
- return R(t, e);
109
- };
110
- class T extends C {
111
- async fetchResourceAsData({
112
- key: t,
113
- resourcePath: a
114
- }) {
115
- const s = await super.fetchResource({ key: t, resourcePath: a });
116
- return {
117
- data: await s.text(),
118
- headers: Object.fromEntries(s.headers.entries())
119
- };
120
- }
121
- }
122
- export {
123
- T as ReactNativeStreamer,
124
- N as ReaderProvider,
125
- D as createArchiveFromExpoFileSystemNext,
126
- A as useCreateReader,
127
- y as useLiveRef,
128
- O as useReader,
129
- k as useReaderState
1
+ import { t as e } from "../shared-iVT9o4xR.js";
2
+ import { bridge as t, createWebView as n, postMessageSchema as r, useBridge as i } from "@webview-bridge/react-native";
3
+ import { createContext as a, useCallback as o, useContext as s, useEffect as c, useState as l } from "react";
4
+ import { Streamer as u, getUriBasename as d, sortByTitleComparator as f } from "@prose-reader/streamer";
5
+ import { Directory as p } from "expo-file-system/next";
6
+ import { jsx as m } from "react/jsx-runtime";
7
+ //#region src/native/useProseBridge.ts
8
+ var h = (n) => {
9
+ let r = e(n), [i] = l(() => t(({ set: e }) => ({
10
+ pagination: void 0,
11
+ setPagination: async (t) => {
12
+ e({ pagination: t });
13
+ },
14
+ context: void 0,
15
+ setContext: async (t) => {
16
+ e({ context: t });
17
+ },
18
+ async getResource(e) {
19
+ return r.current.getResource(e);
20
+ }
21
+ })));
22
+ return i;
23
+ }, g = r({
24
+ load: { validate: (e) => e },
25
+ turnRight: { validate: () => {} },
26
+ turnLeft: { validate: () => {} }
27
+ }), _ = (e) => {
28
+ let [t, r] = l(void 0), i = h(e), a = t?.postMessage;
29
+ c(() => {
30
+ i && r(n({
31
+ bridge: i,
32
+ debug: !0,
33
+ postMessageSchema: g
34
+ }));
35
+ }, [i]);
36
+ let s = o((e) => {
37
+ a?.("load", { manifest: e });
38
+ }, [a]);
39
+ return t ? {
40
+ webviewBridge: t,
41
+ ReaderWebView: t.WebView,
42
+ appBridge: i,
43
+ load: s
44
+ } : null;
45
+ }, v = async (e, { orderByAlpha: t, name: n } = {}) => {
46
+ let r = e.list();
47
+ t && (r = r.slice().sort((e, t) => f(e.name, t.name)));
48
+ let i = (e) => e.list().reduce((e, t) => t instanceof p ? [...e, ...i(t)] : [...e, t], []), a = r.reduce((e, t) => t instanceof p ? [...e, ...i(t)] : [...e, t], []);
49
+ return {
50
+ filename: n || "",
51
+ records: a.map((e) => e instanceof p ? {
52
+ dir: !0,
53
+ basename: d(e.name),
54
+ uri: e.uri.replace("file://", ""),
55
+ blob: () => Promise.resolve(new Blob()),
56
+ string: () => Promise.resolve(""),
57
+ size: 0
58
+ } : {
59
+ dir: !1,
60
+ basename: d(e.name),
61
+ uri: e.uri.replace("file://", ""),
62
+ blob: async () => new Blob([await e.arrayBuffer()]),
63
+ string: async () => e.text(),
64
+ size: e.info().size ?? 0,
65
+ encodingFormat: e.type ?? void 0
66
+ }),
67
+ close: () => Promise.resolve()
68
+ };
69
+ }, y = a(void 0), b = () => {
70
+ let e = s(y);
71
+ if (!e) throw Error("useProseReader must be used within a ProseReaderProvider");
72
+ return e;
73
+ }, x = ({ children: e, reader: t }) => /* @__PURE__ */ m(y.Provider, {
74
+ value: t,
75
+ children: e
76
+ }), S = () => {
77
+ let { webviewBridge: e } = b(), { postMessage: t } = e;
78
+ return {
79
+ turnRight: () => {
80
+ t("turnRight", void 0);
81
+ },
82
+ turnLeft: () => {
83
+ t("turnLeft", void 0);
84
+ }
85
+ };
86
+ }, C = (e) => {
87
+ let { appBridge: t } = b();
88
+ return i(t, e);
89
+ }, w = class extends u {
90
+ async fetchResourceAsData({ key: e, resourcePath: t }) {
91
+ let n = await super.fetchResource({
92
+ key: e,
93
+ resourcePath: t
94
+ });
95
+ return {
96
+ data: await n.text(),
97
+ headers: Object.fromEntries(n.headers.entries())
98
+ };
99
+ }
130
100
  };
101
+ //#endregion
102
+ export { w as ReactNativeStreamer, x as ReaderProvider, v as createArchiveFromExpoFileSystemNext, _ as useCreateReader, e as useLiveRef, S as useReader, C as useReaderState };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../useLiveRef-Dg4CKqYn.cjs");exports.useLiveRef=e.useLiveRef;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../shared-C6TEX07M.cjs");exports.useLiveRef=e.t;
@@ -1,4 +1,2 @@
1
- import { u as o } from "../useLiveRef-CYh-YkID.js";
2
- export {
3
- o as useLiveRef
4
- };
1
+ import { t as e } from "../shared-iVT9o4xR.js";
2
+ export { e as useLiveRef };
@@ -0,0 +1 @@
1
+ let e=require("react");var t=t=>{let n=(0,e.useRef)(t);return(0,e.useEffect)(()=>{n.current=t},[t]),n};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
@@ -0,0 +1,10 @@
1
+ import { useEffect as e, useRef as t } from "react";
2
+ //#region src/shared/useLiveRef.ts
3
+ var n = (n) => {
4
+ let r = t(n);
5
+ return e(() => {
6
+ r.current = n;
7
+ }, [n]), r;
8
+ };
9
+ //#endregion
10
+ export { n as t };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@webview-bridge/web"),r=()=>o.linkBridge({onReady:async()=>{}}),s=({bridge:t,reader:e,containerElement:i})=>(t.addEventListener("load",n=>{e.load({containerElement:i,manifest:n.manifest})}),t.addEventListener("turnRight",()=>{e.navigation.turnRight()}),t.addEventListener("turnLeft",()=>{e.navigation.turnLeft()}),e.pagination.state$.subscribe(n=>{t.setPagination(n)}),e.context.subscribe(({rootElement:n,...a})=>{t.setContext(a)}),e);exports.bridgeReader=s;exports.createReaderBridge=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@webview-bridge/web");var t=()=>(0,e.linkBridge)({onReady:async()=>{}}),n=({bridge:e,reader:t,containerElement:n})=>(e.addEventListener(`load`,e=>{t.load({containerElement:n,manifest:e.manifest})}),e.addEventListener(`turnRight`,()=>{t.navigation.turnRight()}),e.addEventListener(`turnLeft`,()=>{t.navigation.turnLeft()}),t.pagination.state$.subscribe(t=>{e.setPagination(t)}),t.context.subscribe(({rootElement:t,...n})=>{e.setContext(n)}),t);exports.bridgeReader=n,exports.createReaderBridge=t;
@@ -1,26 +1,18 @@
1
- import { linkBridge as a } from "@webview-bridge/web";
2
- const r = () => a({
3
- onReady: async () => {
4
- }
5
- }), c = ({
6
- bridge: t,
7
- reader: n,
8
- containerElement: i
9
- }) => (t.addEventListener("load", (e) => {
10
- n.load({
11
- containerElement: i,
12
- manifest: e.manifest
13
- });
14
- }), t.addEventListener("turnRight", () => {
15
- n.navigation.turnRight();
16
- }), t.addEventListener("turnLeft", () => {
17
- n.navigation.turnLeft();
18
- }), n.pagination.state$.subscribe((e) => {
19
- t.setPagination(e);
20
- }), n.context.subscribe(({ rootElement: e, ...o }) => {
21
- t.setContext(o);
22
- }), n);
23
- export {
24
- c as bridgeReader,
25
- r as createReaderBridge
26
- };
1
+ import { linkBridge as e } from "@webview-bridge/web";
2
+ //#region src/web/index.ts
3
+ var t = () => e({ onReady: async () => {} }), n = ({ bridge: e, reader: t, containerElement: n }) => (e.addEventListener("load", (e) => {
4
+ t.load({
5
+ containerElement: n,
6
+ manifest: e.manifest
7
+ });
8
+ }), e.addEventListener("turnRight", () => {
9
+ t.navigation.turnRight();
10
+ }), e.addEventListener("turnLeft", () => {
11
+ t.navigation.turnLeft();
12
+ }), t.pagination.state$.subscribe((t) => {
13
+ e.setPagination(t);
14
+ }), t.context.subscribe(({ rootElement: t, ...n }) => {
15
+ e.setContext(n);
16
+ }), t);
17
+ //#endregion
18
+ export { n as bridgeReader, t as createReaderBridge };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/react-native",
3
- "version": "1.303.0",
3
+ "version": "1.304.0",
4
4
  "type": "module",
5
5
  "main": "./dist/native/index.cjs.js",
6
6
  "module": "./dist/native/index.es.js",
@@ -37,9 +37,9 @@
37
37
  "@prose-reader/streamer": "^1.215.0",
38
38
  "@webview-bridge/react-native": "^1.7.7",
39
39
  "@webview-bridge/web": "^1.7.7",
40
- "expo-file-system": "^19.0.14",
40
+ "expo-file-system": "^56.0.7",
41
41
  "react": "19.x",
42
42
  "rxjs": "*"
43
43
  },
44
- "gitHead": "dddc06869ba852fa280e050c1c1929433bb91c5e"
44
+ "gitHead": "1f4e4822d4d74fc2f6025409133db0f4f7f152af"
45
45
  }
@@ -1,10 +0,0 @@
1
- import { useRef as t, useEffect as f } from "react";
2
- const o = (e) => {
3
- const r = t(e);
4
- return f(() => {
5
- r.current = e;
6
- }, [e]), r;
7
- };
8
- export {
9
- o as u
10
- };
@@ -1 +0,0 @@
1
- "use strict";const s=require("react"),t=e=>{const r=s.useRef(e);return s.useEffect(()=>{r.current=e},[e]),r};exports.useLiveRef=t;