@vivliostyle/react 2.40.0 → 2.41.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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("@emotion/styled"),n=require("@vivliostyle/core"),t=require("react");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,i=/*#__PURE__*/r(e),
|
|
1
|
+
var e=require("@emotion/styled"),n=require("@vivliostyle/core"),t=require("react");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,i,a,u=/*#__PURE__*/r(e),d=/*#__PURE__*/r(t),c=u.default.div(o||(i=["\n overflow: scroll;\n background: "," !important;\n"],a||(a=i.slice(0)),i.raw=a,o=i),function(e){return e.background});exports.Renderer=function(e){var r=e.source,o=e.page,i=void 0===o?1:o,a=e.zoom,u=void 0===a?1:a,s=e.bookMode,f=void 0===s||s,l=e.fontSize,v=void 0===l?16:l,g=e.background,p=void 0===g?"#ececec":g,S=e.renderAllPages,y=void 0===S||S,L=e.autoResize,m=void 0===L||L,h=e.pageViewMode,b=void 0===h?n.PageViewMode.SINGLE_PAGE:h,w=e.defaultPaperSize,E=e.pageBorderWidth,z=void 0===E?1:E,P=e.fitToScreen,k=void 0!==P&&P,R=e.userStyleSheet,A=e.authorStyleSheet,M=e.style,T=e.onMessage,V=e.onError,W=e.onReadyStateChange,j=e.onLoad,C=e.onNavigation,G=e.onHyperlink,N=e.children,O=t.useRef(null),q=t.useRef(void 0),x=d.default.useRef(void 0),B=d.default.useState(0),D=B[0],I=B[1];function F(){q.current.setOptions({fontSize:v,pageViewMode:b,renderAllPages:y,autoResize:m,defaultPaperSize:w,pageBorderWidth:z})}function H(){var e,n,t=q.current,o=Object.assign(Object.assign({},R?{userStyleSheet:[(e={},e[R.endsWith(".css")?"url":"text"]=R,e)]}:null),A?{authorStyleSheet:[(n={},n[A.endsWith(".css")?"url":"text"]=A,n)]}:null);f?t.loadPublication(r,o):t.loadDocument({url:r},o,{fontSize:v,pageViewMode:b,zoom:u,renderAllPages:y,autoResize:m,defaultPaperSize:w,pageBorderWidth:z,fitToScreen:k})}t.useEffect(function(){I(function(e){return e+1})},[]),t.useEffect(function(){return q.current=new n.CoreViewer({viewportElement:O.current}),F(),function(){var e=function(e){var n,t;return null!==(t=null===(n=e.content.error)||void 0===n?void 0:n.toString())&&void 0!==t?t:e.content.messages.join("\n")};function t(n,t){T&&T(e(n),t)}var r=function(e){return t(e,"debug")},o=function(e){return t(e,"info")},i=function(e){return t(e,"warn")};function a(n){V&&V(e(n))}function u(){W&&W(q.current.readyState)}function d(){j&&j(x.current)}function c(e){var n={docTitle:e.docTitle,epageCount:e.epageCount,epage:e.epage,metadata:e.metadata};x.current=n,C&&C(n)}function s(e){G&&G(e)}var f=q.current;return f.addListener("debug",r),f.addListener("info",o),f.addListener("warn",i),f.addListener("error",a),f.addListener("readystatechange",u),f.addListener("loaded",d),f.addListener("nav",c),f.addListener("hyperlink",s),function(){W&&W(n.ReadyState.LOADING),f.removeListener("debug",r),f.removeListener("info",o),f.removeListener("warn",i),f.removeListener("error",a),f.removeListener("readystatechange",u),f.removeListener("loaded",d),f.removeListener("nav",c),f.removeListener("hyperlink",s)}}()},[D]),t.useEffect(function(){0!==D&&H()},[D,r,A,R,u,k,f]),t.useEffect(function(){F()},[v,b,y,m,w,z]),t.useEffect(function(){var e;null===(e=q.current)||void 0===e||e.navigateToPage(n.Navigation.EPAGE,i-1)},[i]);var _=d.default.createElement(c,{key:D,ref:O,style:M,background:p});return"function"==typeof N&&N instanceof Function?N({container:_,reload:H}):_};
|
|
2
2
|
//# sourceMappingURL=react-vivliostyle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-vivliostyle.js","sources":["../src/renderer.tsx","../src/epage.ts"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport {\n CoreViewer,\n Navigation,\n PageViewMode,\n Payload,\n ReadyState,\n} from \"@vivliostyle/core\";\nimport React, { useEffect, useRef } from \"react\";\nimport { epageFromPageNumber } from \"./epage\";\n\nexport type MessageType = \"debug\" | \"info\" | \"warn\";\nexport type NavigationPayload = Omit<Payload, \"internal\" | \"href\" | \"content\">;\nexport type HyperlinkPayload = Pick<Payload, \"internal\" | \"href\">;\n\ninterface VolatileState {\n docTitle: string;\n epage: number;\n epageCount: number;\n metadata: unknown;\n}\n\ntype ChildrenFunction = ({\n container,\n reload,\n}: {\n container: React.ReactElement;\n reload: () => void;\n}) => React.ReactNode;\n\ninterface RendererProps {\n source: string;\n page?: number;\n zoom?: number;\n bookMode?: boolean;\n renderAllPages?: boolean;\n autoResize?: boolean;\n pageViewMode?: PageViewMode;\n defaultPaperSize?: {\n width: number;\n height: number;\n };\n pageBorderWidth?: number;\n fitToScreen?: boolean;\n fontSize?: number;\n background?: string;\n userStyleSheet?: string;\n authorStyleSheet?: string;\n style?: React.CSSProperties;\n onMessage?: (message: string, type: MessageType) => void;\n onError?: (error: string) => void;\n onReadyStateChange?: (state: ReadyState) => void;\n onLoad?: (state: VolatileState) => void;\n onNavigation?: (state: VolatileState) => void;\n onHyperlink?: (payload: HyperlinkPayload) => void;\n children?: React.ReactNode | ChildrenFunction;\n}\n\nexport const Renderer = ({\n source,\n page = 1,\n zoom = 1,\n bookMode = true,\n fontSize = 16,\n background = \"#ececec\",\n renderAllPages = true,\n autoResize = true,\n pageViewMode = PageViewMode.SINGLE_PAGE,\n defaultPaperSize,\n pageBorderWidth = 1,\n fitToScreen = false,\n userStyleSheet,\n authorStyleSheet,\n style,\n onMessage,\n onError,\n onReadyStateChange,\n onLoad,\n onNavigation,\n onHyperlink,\n children,\n}: RendererProps): ReturnType<ChildrenFunction> | React.ReactElement => {\n const containerRef = useRef<HTMLDivElement>(null);\n const instanceRef = useRef<CoreViewer | undefined>(undefined);\n const stateRef = React.useRef<VolatileState | undefined>(undefined);\n // Use a key to force re-creation of the container element on re-mount (e.g., in StrictMode)\n const [containerKey, setContainerKey] = React.useState(0);\n\n function setViewerOptions() {\n const viewerOptions = {\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n };\n instanceRef.current!.setOptions(viewerOptions);\n }\n\n function loadSource() {\n const instance = instanceRef.current!;\n const documentOptions = {\n ...(userStyleSheet\n ? {\n userStyleSheet: [\n {\n [userStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]:\n userStyleSheet,\n },\n ],\n }\n : null),\n ...(authorStyleSheet\n ? {\n authorStyleSheet: [\n {\n [authorStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]:\n authorStyleSheet,\n },\n ],\n }\n : null),\n };\n\n if (bookMode) {\n instance.loadPublication(source, documentOptions);\n } else {\n instance.loadDocument({ url: source }, documentOptions, {\n fontSize,\n pageViewMode,\n zoom,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n fitToScreen,\n });\n }\n }\n\n function registerEventHandlers() {\n const getMessage = (payload: Payload) =>\n payload.content.error?.toString() ?? payload.content.messages.join(\"\\n\");\n\n function handleMessage(payload: Payload, type: MessageType) {\n onMessage && onMessage(getMessage(payload), type);\n }\n\n const handleDebug = (payload: Payload) => handleMessage(payload, \"debug\");\n const handleInfo = (payload: Payload) => handleMessage(payload, \"info\");\n const handleWarn = (payload: Payload) => handleMessage(payload, \"warn\");\n\n function handleError(payload: Payload) {\n onError && onError(getMessage(payload));\n }\n\n function handleReadyStateChange() {\n const { readyState } = instanceRef.current!;\n onReadyStateChange && onReadyStateChange(readyState);\n }\n\n function handleLoaded() {\n onLoad && onLoad(stateRef.current!);\n }\n\n function handleNavigation(payload: NavigationPayload) {\n const { docTitle, epageCount, epage, metadata } = payload;\n const currentState = {\n docTitle,\n epageCount,\n epage: epage as number,\n metadata,\n };\n stateRef.current = currentState;\n onNavigation && onNavigation(currentState);\n }\n\n function handleHyperlink(payload: HyperlinkPayload) {\n onHyperlink && onHyperlink(payload);\n }\n\n const instance = instanceRef.current!;\n instance.addListener(\"debug\", handleDebug);\n instance.addListener(\"info\", handleInfo);\n instance.addListener(\"warn\", handleWarn);\n instance.addListener(\"error\", handleError);\n instance.addListener(\"readystatechange\", handleReadyStateChange);\n instance.addListener(\"loaded\", handleLoaded);\n instance.addListener(\"nav\", handleNavigation);\n instance.addListener(\"hyperlink\", handleHyperlink);\n\n return () => {\n onReadyStateChange && onReadyStateChange(ReadyState.LOADING);\n instance.removeListener(\"debug\", handleDebug);\n instance.removeListener(\"info\", handleInfo);\n instance.removeListener(\"warn\", handleWarn);\n instance.removeListener(\"error\", handleError);\n instance.removeListener(\"readystatechange\", handleReadyStateChange);\n instance.removeListener(\"loaded\", handleLoaded);\n instance.removeListener(\"nav\", handleNavigation);\n instance.removeListener(\"hyperlink\", handleHyperlink);\n };\n }\n\n function initInstance() {\n instanceRef.current = new CoreViewer({\n viewportElement: containerRef.current!,\n });\n }\n\n // initialize document and event handlers\n useEffect(() => {\n // Increment key to force new container element, ensuring previous CoreViewer's\n // async rendering won't affect the new container (handles StrictMode double-mount)\n setContainerKey((k) => k + 1);\n }, []);\n\n useEffect(() => {\n initInstance();\n setViewerOptions();\n\n const cleanup = registerEventHandlers();\n return cleanup;\n }, [containerKey]);\n\n useEffect(() => {\n if (containerKey === 0) return; // Skip initial render before key is set\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n containerKey,\n source,\n authorStyleSheet,\n userStyleSheet,\n zoom,\n fitToScreen,\n bookMode,\n ]);\n\n useEffect(() => {\n setViewerOptions();\n }, [\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n ]);\n\n // sync location\n useEffect(() => {\n const epage = epageFromPageNumber(page);\n instanceRef.current?.navigateToPage(Navigation.EPAGE, epage);\n }, [page]);\n\n const container = (\n <Container\n key={containerKey}\n ref={containerRef}\n style={style}\n background={background}\n />\n );\n\n if (typeof children === \"function\" && children instanceof Function) {\n return children({ container, reload: loadSource });\n }\n\n return container;\n};\n\nconst Container = styled.div<Pick<RendererProps, \"background\">>`\n overflow: scroll;\n background: ${({ background }) => background} !important;\n`;\n","export function epageToPageNumber(epage: number): number {\n return Math.round(epage + 1);\n}\n\nexport function epageFromPageNumber(pageNumber: number): number {\n return pageNumber - 1;\n}\n"],"names":["_templateObject","Container","styled","div","_ref4","background","_ref","source","_ref$page","page","_ref$zoom","zoom","_ref$bookMode","bookMode","_ref$fontSize","fontSize","_ref$background","_ref$renderAllPages","renderAllPages","_ref$autoResize","autoResize","_ref$pageViewMode","pageViewMode","PageViewMode","SINGLE_PAGE","defaultPaperSize","_ref$pageBorderWidth","pageBorderWidth","_ref$fitToScreen","fitToScreen","userStyleSheet","authorStyleSheet","style","onMessage","onError","onReadyStateChange","onLoad","onNavigation","onHyperlink","children","containerRef","useRef","instanceRef","undefined","stateRef","React","_React$useState","useState","containerKey","setContainerKey","setViewerOptions","current","setOptions","loadSource","_ref2","_ref3","instance","documentOptions","_extends","endsWith","loadPublication","loadDocument","url","useEffect","k","CoreViewer","viewportElement","getMessage","payload","_payload$content$erro","_payload$content$erro2","content","error","toString","messages","join","handleMessage","type","handleDebug","handleInfo","handleWarn","handleError","handleReadyStateChange","readyState","handleLoaded","handleNavigation","currentState","docTitle","epageCount","epage","metadata","handleHyperlink","addListener","ReadyState","LOADING","removeListener","registerEventHandlers","_instanceRef$current","navigateToPage","Navigation","EPAGE","container","createElement","key","ref","Function","reload"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-vivliostyle.js","sources":["../.microbundle/renderer.js","../.microbundle/epage.js"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { CoreViewer, Navigation, PageViewMode, ReadyState, } from \"@vivliostyle/core\";\nimport React, { useEffect, useRef } from \"react\";\nimport { epageFromPageNumber } from \"./epage\";\nexport const Renderer = ({ source, page = 1, zoom = 1, bookMode = true, fontSize = 16, background = \"#ececec\", renderAllPages = true, autoResize = true, pageViewMode = PageViewMode.SINGLE_PAGE, defaultPaperSize, pageBorderWidth = 1, fitToScreen = false, userStyleSheet, authorStyleSheet, style, onMessage, onError, onReadyStateChange, onLoad, onNavigation, onHyperlink, children, }) => {\n const containerRef = useRef(null);\n const instanceRef = useRef(undefined);\n const stateRef = React.useRef(undefined);\n // Use a key to force re-creation of the container element on re-mount (e.g., in StrictMode)\n const [containerKey, setContainerKey] = React.useState(0);\n function setViewerOptions() {\n const viewerOptions = {\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n };\n instanceRef.current.setOptions(viewerOptions);\n }\n function loadSource() {\n const instance = instanceRef.current;\n const documentOptions = Object.assign(Object.assign({}, (userStyleSheet\n ? {\n userStyleSheet: [\n {\n [userStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]: userStyleSheet,\n },\n ],\n }\n : null)), (authorStyleSheet\n ? {\n authorStyleSheet: [\n {\n [authorStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]: authorStyleSheet,\n },\n ],\n }\n : null));\n if (bookMode) {\n instance.loadPublication(source, documentOptions);\n }\n else {\n instance.loadDocument({ url: source }, documentOptions, {\n fontSize,\n pageViewMode,\n zoom,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n fitToScreen,\n });\n }\n }\n function registerEventHandlers() {\n const getMessage = (payload) => { var _a, _b; return (_b = (_a = payload.content.error) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : payload.content.messages.join(\"\\n\"); };\n function handleMessage(payload, type) {\n onMessage && onMessage(getMessage(payload), type);\n }\n const handleDebug = (payload) => handleMessage(payload, \"debug\");\n const handleInfo = (payload) => handleMessage(payload, \"info\");\n const handleWarn = (payload) => handleMessage(payload, \"warn\");\n function handleError(payload) {\n onError && onError(getMessage(payload));\n }\n function handleReadyStateChange() {\n const { readyState } = instanceRef.current;\n onReadyStateChange && onReadyStateChange(readyState);\n }\n function handleLoaded() {\n onLoad && onLoad(stateRef.current);\n }\n function handleNavigation(payload) {\n const { docTitle, epageCount, epage, metadata } = payload;\n const currentState = {\n docTitle,\n epageCount,\n epage: epage,\n metadata,\n };\n stateRef.current = currentState;\n onNavigation && onNavigation(currentState);\n }\n function handleHyperlink(payload) {\n onHyperlink && onHyperlink(payload);\n }\n const instance = instanceRef.current;\n instance.addListener(\"debug\", handleDebug);\n instance.addListener(\"info\", handleInfo);\n instance.addListener(\"warn\", handleWarn);\n instance.addListener(\"error\", handleError);\n instance.addListener(\"readystatechange\", handleReadyStateChange);\n instance.addListener(\"loaded\", handleLoaded);\n instance.addListener(\"nav\", handleNavigation);\n instance.addListener(\"hyperlink\", handleHyperlink);\n return () => {\n onReadyStateChange && onReadyStateChange(ReadyState.LOADING);\n instance.removeListener(\"debug\", handleDebug);\n instance.removeListener(\"info\", handleInfo);\n instance.removeListener(\"warn\", handleWarn);\n instance.removeListener(\"error\", handleError);\n instance.removeListener(\"readystatechange\", handleReadyStateChange);\n instance.removeListener(\"loaded\", handleLoaded);\n instance.removeListener(\"nav\", handleNavigation);\n instance.removeListener(\"hyperlink\", handleHyperlink);\n };\n }\n function initInstance() {\n instanceRef.current = new CoreViewer({\n viewportElement: containerRef.current,\n });\n }\n // initialize document and event handlers\n useEffect(() => {\n // Increment key to force new container element, ensuring previous CoreViewer's\n // async rendering won't affect the new container (handles StrictMode double-mount)\n setContainerKey((k) => k + 1);\n }, []);\n useEffect(() => {\n initInstance();\n setViewerOptions();\n const cleanup = registerEventHandlers();\n return cleanup;\n }, [containerKey]);\n useEffect(() => {\n if (containerKey === 0)\n return; // Skip initial render before key is set\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n containerKey,\n source,\n authorStyleSheet,\n userStyleSheet,\n zoom,\n fitToScreen,\n bookMode,\n ]);\n useEffect(() => {\n setViewerOptions();\n }, [\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n ]);\n // sync location\n useEffect(() => {\n var _a;\n const epage = epageFromPageNumber(page);\n (_a = instanceRef.current) === null || _a === void 0 ? void 0 : _a.navigateToPage(Navigation.EPAGE, epage);\n }, [page]);\n const container = (React.createElement(Container, { key: containerKey, ref: containerRef, style: style, background: background }));\n if (typeof children === \"function\" && children instanceof Function) {\n return children({ container, reload: loadSource });\n }\n return container;\n};\nconst Container = styled.div `\n overflow: scroll;\n background: ${({ background }) => background} !important;\n`;\n//# sourceMappingURL=renderer.js.map","export function epageToPageNumber(epage) {\n return Math.round(epage + 1);\n}\nexport function epageFromPageNumber(pageNumber) {\n return pageNumber - 1;\n}\n//# sourceMappingURL=epage.js.map"],"names":["_templateObject","Container","styled","div","_ref4","background","_ref","source","_ref$page","page","_ref$zoom","zoom","_ref$bookMode","bookMode","_ref$fontSize","fontSize","_ref$background","_ref$renderAllPages","renderAllPages","_ref$autoResize","autoResize","_ref$pageViewMode","pageViewMode","PageViewMode","SINGLE_PAGE","defaultPaperSize","_ref$pageBorderWidth","pageBorderWidth","_ref$fitToScreen","fitToScreen","userStyleSheet","authorStyleSheet","style","onMessage","onError","onReadyStateChange","onLoad","onNavigation","onHyperlink","children","containerRef","useRef","instanceRef","undefined","stateRef","React","_React$useState","useState","containerKey","setContainerKey","setViewerOptions","current","setOptions","loadSource","_ref2","_ref3","instance","documentOptions","Object","assign","endsWith","loadPublication","loadDocument","url","useEffect","k","CoreViewer","viewportElement","getMessage","payload","_a","_b","content","error","toString","messages","join","handleMessage","type","handleDebug","handleInfo","handleWarn","handleError","handleReadyStateChange","readyState","handleLoaded","handleNavigation","currentState","docTitle","epageCount","epage","metadata","handleHyperlink","addListener","ReadyState","LOADING","removeListener","registerEventHandlers","navigateToPage","Navigation","EPAGE","container","createElement","key","ref","Function","reload"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import e from"@emotion/styled";import{Navigation as
|
|
1
|
+
import e from"@emotion/styled";import{Navigation as t,PageViewMode as n,ReadyState as r,CoreViewer as o}from"@vivliostyle/core";import a,{useRef as i,useEffect as d}from"react";let s;const c=({source:e,page:s=1,zoom:c=1,bookMode:l=!0,fontSize:g=16,background:f="#ececec",renderAllPages:p=!0,autoResize:v=!0,pageViewMode:m=n.SINGLE_PAGE,defaultPaperSize:S,pageBorderWidth:L=1,fitToScreen:h=!1,userStyleSheet:y,authorStyleSheet:b,style:z,onMessage:P,onError:k,onReadyStateChange:w,onLoad:E,onNavigation:A,onHyperlink:M,children:R})=>{const T=i(null),W=i(void 0),G=a.useRef(void 0),[O,j]=a.useState(0);function x(){W.current.setOptions({fontSize:g,pageViewMode:m,renderAllPages:p,autoResize:v,defaultPaperSize:S,pageBorderWidth:L})}function B(){const t=W.current,n=Object.assign(Object.assign({},y?{userStyleSheet:[{[y.endsWith(".css")?"url":"text"]:y}]}:null),b?{authorStyleSheet:[{[b.endsWith(".css")?"url":"text"]:b}]}:null);l?t.loadPublication(e,n):t.loadDocument({url:e},n,{fontSize:g,pageViewMode:m,zoom:c,renderAllPages:p,autoResize:v,defaultPaperSize:S,pageBorderWidth:L,fitToScreen:h})}d(()=>{j(e=>e+1)},[]),d(()=>(W.current=new o({viewportElement:T.current}),x(),function(){const e=e=>{var t,n;return null!==(n=null===(t=e.content.error)||void 0===t?void 0:t.toString())&&void 0!==n?n:e.content.messages.join("\n")};function t(t,n){P&&P(e(t),n)}const n=e=>t(e,"debug"),o=e=>t(e,"info"),a=e=>t(e,"warn");function i(t){k&&k(e(t))}function d(){const{readyState:e}=W.current;w&&w(e)}function s(){E&&E(G.current)}function c(e){const{docTitle:t,epageCount:n,epage:r,metadata:o}=e,a={docTitle:t,epageCount:n,epage:r,metadata:o};G.current=a,A&&A(a)}function u(e){M&&M(e)}const l=W.current;return l.addListener("debug",n),l.addListener("info",o),l.addListener("warn",a),l.addListener("error",i),l.addListener("readystatechange",d),l.addListener("loaded",s),l.addListener("nav",c),l.addListener("hyperlink",u),()=>{w&&w(r.LOADING),l.removeListener("debug",n),l.removeListener("info",o),l.removeListener("warn",a),l.removeListener("error",i),l.removeListener("readystatechange",d),l.removeListener("loaded",s),l.removeListener("nav",c),l.removeListener("hyperlink",u)}}()),[O]),d(()=>{0!==O&&B()},[O,e,b,y,c,h,l]),d(()=>{x()},[g,m,p,v,S,L]),d(()=>{var e;null===(e=W.current)||void 0===e||e.navigateToPage(t.EPAGE,s-1)},[s]);const C=a.createElement(u,{key:O,ref:T,style:z,background:f});return"function"==typeof R&&R instanceof Function?R({container:C,reload:B}):C},u=e.div(s||(s=(e=>e)`
|
|
2
2
|
overflow: scroll;
|
|
3
3
|
background: ${0} !important;
|
|
4
|
-
`),({background:e})=>e);export{
|
|
4
|
+
`),({background:e})=>e);export{c as Renderer};
|
|
5
5
|
//# sourceMappingURL=react-vivliostyle.modern.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-vivliostyle.modern.mjs","sources":["../src/renderer.tsx","../src/epage.ts"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport {\n CoreViewer,\n Navigation,\n PageViewMode,\n Payload,\n ReadyState,\n} from \"@vivliostyle/core\";\nimport React, { useEffect, useRef } from \"react\";\nimport { epageFromPageNumber } from \"./epage\";\n\nexport type MessageType = \"debug\" | \"info\" | \"warn\";\nexport type NavigationPayload = Omit<Payload, \"internal\" | \"href\" | \"content\">;\nexport type HyperlinkPayload = Pick<Payload, \"internal\" | \"href\">;\n\ninterface VolatileState {\n docTitle: string;\n epage: number;\n epageCount: number;\n metadata: unknown;\n}\n\ntype ChildrenFunction = ({\n container,\n reload,\n}: {\n container: React.ReactElement;\n reload: () => void;\n}) => React.ReactNode;\n\ninterface RendererProps {\n source: string;\n page?: number;\n zoom?: number;\n bookMode?: boolean;\n renderAllPages?: boolean;\n autoResize?: boolean;\n pageViewMode?: PageViewMode;\n defaultPaperSize?: {\n width: number;\n height: number;\n };\n pageBorderWidth?: number;\n fitToScreen?: boolean;\n fontSize?: number;\n background?: string;\n userStyleSheet?: string;\n authorStyleSheet?: string;\n style?: React.CSSProperties;\n onMessage?: (message: string, type: MessageType) => void;\n onError?: (error: string) => void;\n onReadyStateChange?: (state: ReadyState) => void;\n onLoad?: (state: VolatileState) => void;\n onNavigation?: (state: VolatileState) => void;\n onHyperlink?: (payload: HyperlinkPayload) => void;\n children?: React.ReactNode | ChildrenFunction;\n}\n\nexport const Renderer = ({\n source,\n page = 1,\n zoom = 1,\n bookMode = true,\n fontSize = 16,\n background = \"#ececec\",\n renderAllPages = true,\n autoResize = true,\n pageViewMode = PageViewMode.SINGLE_PAGE,\n defaultPaperSize,\n pageBorderWidth = 1,\n fitToScreen = false,\n userStyleSheet,\n authorStyleSheet,\n style,\n onMessage,\n onError,\n onReadyStateChange,\n onLoad,\n onNavigation,\n onHyperlink,\n children,\n}: RendererProps): ReturnType<ChildrenFunction> | React.ReactElement => {\n const containerRef = useRef<HTMLDivElement>(null);\n const instanceRef = useRef<CoreViewer | undefined>(undefined);\n const stateRef = React.useRef<VolatileState | undefined>(undefined);\n // Use a key to force re-creation of the container element on re-mount (e.g., in StrictMode)\n const [containerKey, setContainerKey] = React.useState(0);\n\n function setViewerOptions() {\n const viewerOptions = {\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n };\n instanceRef.current!.setOptions(viewerOptions);\n }\n\n function loadSource() {\n const instance = instanceRef.current!;\n const documentOptions = {\n ...(userStyleSheet\n ? {\n userStyleSheet: [\n {\n [userStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]:\n userStyleSheet,\n },\n ],\n }\n : null),\n ...(authorStyleSheet\n ? {\n authorStyleSheet: [\n {\n [authorStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]:\n authorStyleSheet,\n },\n ],\n }\n : null),\n };\n\n if (bookMode) {\n instance.loadPublication(source, documentOptions);\n } else {\n instance.loadDocument({ url: source }, documentOptions, {\n fontSize,\n pageViewMode,\n zoom,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n fitToScreen,\n });\n }\n }\n\n function registerEventHandlers() {\n const getMessage = (payload: Payload) =>\n payload.content.error?.toString() ?? payload.content.messages.join(\"\\n\");\n\n function handleMessage(payload: Payload, type: MessageType) {\n onMessage && onMessage(getMessage(payload), type);\n }\n\n const handleDebug = (payload: Payload) => handleMessage(payload, \"debug\");\n const handleInfo = (payload: Payload) => handleMessage(payload, \"info\");\n const handleWarn = (payload: Payload) => handleMessage(payload, \"warn\");\n\n function handleError(payload: Payload) {\n onError && onError(getMessage(payload));\n }\n\n function handleReadyStateChange() {\n const { readyState } = instanceRef.current!;\n onReadyStateChange && onReadyStateChange(readyState);\n }\n\n function handleLoaded() {\n onLoad && onLoad(stateRef.current!);\n }\n\n function handleNavigation(payload: NavigationPayload) {\n const { docTitle, epageCount, epage, metadata } = payload;\n const currentState = {\n docTitle,\n epageCount,\n epage: epage as number,\n metadata,\n };\n stateRef.current = currentState;\n onNavigation && onNavigation(currentState);\n }\n\n function handleHyperlink(payload: HyperlinkPayload) {\n onHyperlink && onHyperlink(payload);\n }\n\n const instance = instanceRef.current!;\n instance.addListener(\"debug\", handleDebug);\n instance.addListener(\"info\", handleInfo);\n instance.addListener(\"warn\", handleWarn);\n instance.addListener(\"error\", handleError);\n instance.addListener(\"readystatechange\", handleReadyStateChange);\n instance.addListener(\"loaded\", handleLoaded);\n instance.addListener(\"nav\", handleNavigation);\n instance.addListener(\"hyperlink\", handleHyperlink);\n\n return () => {\n onReadyStateChange && onReadyStateChange(ReadyState.LOADING);\n instance.removeListener(\"debug\", handleDebug);\n instance.removeListener(\"info\", handleInfo);\n instance.removeListener(\"warn\", handleWarn);\n instance.removeListener(\"error\", handleError);\n instance.removeListener(\"readystatechange\", handleReadyStateChange);\n instance.removeListener(\"loaded\", handleLoaded);\n instance.removeListener(\"nav\", handleNavigation);\n instance.removeListener(\"hyperlink\", handleHyperlink);\n };\n }\n\n function initInstance() {\n instanceRef.current = new CoreViewer({\n viewportElement: containerRef.current!,\n });\n }\n\n // initialize document and event handlers\n useEffect(() => {\n // Increment key to force new container element, ensuring previous CoreViewer's\n // async rendering won't affect the new container (handles StrictMode double-mount)\n setContainerKey((k) => k + 1);\n }, []);\n\n useEffect(() => {\n initInstance();\n setViewerOptions();\n\n const cleanup = registerEventHandlers();\n return cleanup;\n }, [containerKey]);\n\n useEffect(() => {\n if (containerKey === 0) return; // Skip initial render before key is set\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n containerKey,\n source,\n authorStyleSheet,\n userStyleSheet,\n zoom,\n fitToScreen,\n bookMode,\n ]);\n\n useEffect(() => {\n setViewerOptions();\n }, [\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n ]);\n\n // sync location\n useEffect(() => {\n const epage = epageFromPageNumber(page);\n instanceRef.current?.navigateToPage(Navigation.EPAGE, epage);\n }, [page]);\n\n const container = (\n <Container\n key={containerKey}\n ref={containerRef}\n style={style}\n background={background}\n />\n );\n\n if (typeof children === \"function\" && children instanceof Function) {\n return children({ container, reload: loadSource });\n }\n\n return container;\n};\n\nconst Container = styled.div<Pick<RendererProps, \"background\">>`\n overflow: scroll;\n background: ${({ background }) => background} !important;\n`;\n","export function epageToPageNumber(epage: number): number {\n return Math.round(epage + 1);\n}\n\nexport function epageFromPageNumber(pageNumber: number): number {\n return pageNumber - 1;\n}\n"],"names":["Renderer","source","page","zoom","bookMode","fontSize","background","renderAllPages","autoResize","pageViewMode","PageViewMode","SINGLE_PAGE","defaultPaperSize","pageBorderWidth","fitToScreen","userStyleSheet","authorStyleSheet","style","onMessage","onError","onReadyStateChange","onLoad","onNavigation","onHyperlink","children","containerRef","useRef","instanceRef","undefined","stateRef","React","containerKey","setContainerKey","useState","setViewerOptions","current","setOptions","loadSource","instance","documentOptions","_extends","endsWith","loadPublication","loadDocument","url","useEffect","k","CoreViewer","viewportElement","getMessage","payload","_payload$content$erro","_payload$content$erro2","content","error","toString","messages","join","handleMessage","type","handleDebug","handleInfo","handleWarn","handleError","handleReadyStateChange","readyState","handleLoaded","handleNavigation","docTitle","epageCount","epage","metadata","currentState","handleHyperlink","addListener","ReadyState","LOADING","removeListener","registerEventHandlers","_instanceRef$current","navigateToPage","Navigation","EPAGE","container","createElement","Container","key","ref","Function","reload","styled","div","_t"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-vivliostyle.modern.mjs","sources":["../.microbundle/renderer.js","../.microbundle/epage.js"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { CoreViewer, Navigation, PageViewMode, ReadyState, } from \"@vivliostyle/core\";\nimport React, { useEffect, useRef } from \"react\";\nimport { epageFromPageNumber } from \"./epage\";\nexport const Renderer = ({ source, page = 1, zoom = 1, bookMode = true, fontSize = 16, background = \"#ececec\", renderAllPages = true, autoResize = true, pageViewMode = PageViewMode.SINGLE_PAGE, defaultPaperSize, pageBorderWidth = 1, fitToScreen = false, userStyleSheet, authorStyleSheet, style, onMessage, onError, onReadyStateChange, onLoad, onNavigation, onHyperlink, children, }) => {\n const containerRef = useRef(null);\n const instanceRef = useRef(undefined);\n const stateRef = React.useRef(undefined);\n // Use a key to force re-creation of the container element on re-mount (e.g., in StrictMode)\n const [containerKey, setContainerKey] = React.useState(0);\n function setViewerOptions() {\n const viewerOptions = {\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n };\n instanceRef.current.setOptions(viewerOptions);\n }\n function loadSource() {\n const instance = instanceRef.current;\n const documentOptions = Object.assign(Object.assign({}, (userStyleSheet\n ? {\n userStyleSheet: [\n {\n [userStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]: userStyleSheet,\n },\n ],\n }\n : null)), (authorStyleSheet\n ? {\n authorStyleSheet: [\n {\n [authorStyleSheet.endsWith(\".css\") ? \"url\" : \"text\"]: authorStyleSheet,\n },\n ],\n }\n : null));\n if (bookMode) {\n instance.loadPublication(source, documentOptions);\n }\n else {\n instance.loadDocument({ url: source }, documentOptions, {\n fontSize,\n pageViewMode,\n zoom,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n fitToScreen,\n });\n }\n }\n function registerEventHandlers() {\n const getMessage = (payload) => { var _a, _b; return (_b = (_a = payload.content.error) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : payload.content.messages.join(\"\\n\"); };\n function handleMessage(payload, type) {\n onMessage && onMessage(getMessage(payload), type);\n }\n const handleDebug = (payload) => handleMessage(payload, \"debug\");\n const handleInfo = (payload) => handleMessage(payload, \"info\");\n const handleWarn = (payload) => handleMessage(payload, \"warn\");\n function handleError(payload) {\n onError && onError(getMessage(payload));\n }\n function handleReadyStateChange() {\n const { readyState } = instanceRef.current;\n onReadyStateChange && onReadyStateChange(readyState);\n }\n function handleLoaded() {\n onLoad && onLoad(stateRef.current);\n }\n function handleNavigation(payload) {\n const { docTitle, epageCount, epage, metadata } = payload;\n const currentState = {\n docTitle,\n epageCount,\n epage: epage,\n metadata,\n };\n stateRef.current = currentState;\n onNavigation && onNavigation(currentState);\n }\n function handleHyperlink(payload) {\n onHyperlink && onHyperlink(payload);\n }\n const instance = instanceRef.current;\n instance.addListener(\"debug\", handleDebug);\n instance.addListener(\"info\", handleInfo);\n instance.addListener(\"warn\", handleWarn);\n instance.addListener(\"error\", handleError);\n instance.addListener(\"readystatechange\", handleReadyStateChange);\n instance.addListener(\"loaded\", handleLoaded);\n instance.addListener(\"nav\", handleNavigation);\n instance.addListener(\"hyperlink\", handleHyperlink);\n return () => {\n onReadyStateChange && onReadyStateChange(ReadyState.LOADING);\n instance.removeListener(\"debug\", handleDebug);\n instance.removeListener(\"info\", handleInfo);\n instance.removeListener(\"warn\", handleWarn);\n instance.removeListener(\"error\", handleError);\n instance.removeListener(\"readystatechange\", handleReadyStateChange);\n instance.removeListener(\"loaded\", handleLoaded);\n instance.removeListener(\"nav\", handleNavigation);\n instance.removeListener(\"hyperlink\", handleHyperlink);\n };\n }\n function initInstance() {\n instanceRef.current = new CoreViewer({\n viewportElement: containerRef.current,\n });\n }\n // initialize document and event handlers\n useEffect(() => {\n // Increment key to force new container element, ensuring previous CoreViewer's\n // async rendering won't affect the new container (handles StrictMode double-mount)\n setContainerKey((k) => k + 1);\n }, []);\n useEffect(() => {\n initInstance();\n setViewerOptions();\n const cleanup = registerEventHandlers();\n return cleanup;\n }, [containerKey]);\n useEffect(() => {\n if (containerKey === 0)\n return; // Skip initial render before key is set\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n containerKey,\n source,\n authorStyleSheet,\n userStyleSheet,\n zoom,\n fitToScreen,\n bookMode,\n ]);\n useEffect(() => {\n setViewerOptions();\n }, [\n fontSize,\n pageViewMode,\n renderAllPages,\n autoResize,\n defaultPaperSize,\n pageBorderWidth,\n ]);\n // sync location\n useEffect(() => {\n var _a;\n const epage = epageFromPageNumber(page);\n (_a = instanceRef.current) === null || _a === void 0 ? void 0 : _a.navigateToPage(Navigation.EPAGE, epage);\n }, [page]);\n const container = (React.createElement(Container, { key: containerKey, ref: containerRef, style: style, background: background }));\n if (typeof children === \"function\" && children instanceof Function) {\n return children({ container, reload: loadSource });\n }\n return container;\n};\nconst Container = styled.div `\n overflow: scroll;\n background: ${({ background }) => background} !important;\n`;\n//# sourceMappingURL=renderer.js.map","export function epageToPageNumber(epage) {\n return Math.round(epage + 1);\n}\nexport function epageFromPageNumber(pageNumber) {\n return pageNumber - 1;\n}\n//# sourceMappingURL=epage.js.map"],"names":["Renderer","source","page","zoom","bookMode","fontSize","background","renderAllPages","autoResize","pageViewMode","PageViewMode","SINGLE_PAGE","defaultPaperSize","pageBorderWidth","fitToScreen","userStyleSheet","authorStyleSheet","style","onMessage","onError","onReadyStateChange","onLoad","onNavigation","onHyperlink","children","containerRef","useRef","instanceRef","undefined","stateRef","React","containerKey","setContainerKey","useState","setViewerOptions","current","setOptions","loadSource","instance","documentOptions","Object","assign","endsWith","loadPublication","loadDocument","url","useEffect","k","CoreViewer","viewportElement","getMessage","payload","_a","_b","content","error","toString","messages","join","handleMessage","type","handleDebug","handleInfo","handleWarn","handleError","handleReadyStateChange","readyState","handleLoaded","handleNavigation","docTitle","epageCount","epage","metadata","currentState","handleHyperlink","addListener","ReadyState","LOADING","removeListener","registerEventHandlers","navigateToPage","Navigation","EPAGE","container","createElement","Container","key","ref","Function","reload","styled","div","_t"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vivliostyle/react",
|
|
3
3
|
"description": "React component for Vivliostyle",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.41.0",
|
|
5
5
|
"author": "Yasuaki Uechi <y@uechi.io>",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "microbundle --format modern,cjs && shx rm -rf dist/stories",
|
|
8
|
-
"build-dev": "microbundle --no-compress --format cjs",
|
|
7
|
+
"build": "yarn clean && node ../../node_modules/typescript/bin/tsc -p tsconfig.build.json && microbundle build -i .microbundle/index.js --tsconfig tsconfig.build.json --generateTypes false --format modern,cjs && shx rm -rf dist/stories .microbundle",
|
|
8
|
+
"build-dev": "yarn clean && node ../../node_modules/typescript/bin/tsc -p tsconfig.build.json && microbundle build -i .microbundle/index.js --tsconfig tsconfig.build.json --generateTypes false --no-compress --format cjs && shx rm -rf dist/stories .microbundle",
|
|
9
9
|
"build-storybook": "storybook build",
|
|
10
10
|
"clean": "shx rm -rf dist",
|
|
11
11
|
"dev": "yarn storybook",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@emotion/core": "^10.0.28",
|
|
20
20
|
"@emotion/styled": "^10.0.27",
|
|
21
|
-
"@vivliostyle/core": "^2.
|
|
21
|
+
"@vivliostyle/core": "^2.41.0"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"react": "^19.0.0",
|
|
25
|
-
"react-dom": "^19.0.0"
|
|
24
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
25
|
+
"react-dom": "^18.2.0 || ^19.0.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"react-dom": "^19.1.1",
|
|
40
40
|
"react-scripts": "^5.0.1",
|
|
41
41
|
"shx": "^0.3.2",
|
|
42
|
-
"storybook": "^9.1.8"
|
|
42
|
+
"storybook": "^9.1.8",
|
|
43
|
+
"typescript": "^5.9.3"
|
|
43
44
|
},
|
|
44
45
|
"source": "src/index.tsx",
|
|
45
46
|
"types": "dist/index.d.ts",
|
|
@@ -69,5 +70,5 @@
|
|
|
69
70
|
"engines": {
|
|
70
71
|
"node": ">=20"
|
|
71
72
|
},
|
|
72
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "8de8067f491aed6e342269c4c5db6d54c5047f49"
|
|
73
74
|
}
|