@vivliostyle/react 2.30.4 → 2.30.6

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/epage.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare function epageToPageNumber(epage: number): number;
2
- export declare function epageFromPageNumber(pageNumber: number): number;
1
+ export declare function epageToPageNumber(epage: number): number;
2
+ export declare function epageFromPageNumber(pageNumber: number): number;
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { Renderer } from "./renderer";
1
+ export { Renderer } from "./renderer";
@@ -1,2 +1,2 @@
1
- function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var n,r=e(require("@emotion/styled")),t=require("@vivliostyle/core"),o=require("react"),i=e(o);function a(){return(a=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}var u,d,c=r.div(n||(u=["\n overflow: scroll;\n background: "," !important;\n"],d||(d=u.slice(0)),u.raw=d,n=u),function(e){return e.background});exports.Renderer=function(e){var n=e.source,r=e.page,u=void 0===r?1:r,d=e.zoom,s=void 0===d?1:d,l=e.bookMode,f=void 0===l||l,v=e.fontSize,g=void 0===v?16:v,p=e.background,y=void 0===p?"#ececec":p,S=e.renderAllPages,h=void 0===S||S,L=e.autoResize,m=void 0===L||L,b=e.pageViewMode,w=void 0===b?t.PageViewMode.SINGLE_PAGE:b,P=e.defaultPaperSize,z=e.pageBorderWidth,E=void 0===z?1:z,R=e.fitToScreen,k=void 0!==R&&R,A=e.userStyleSheet,M=e.authorStyleSheet,O=e.style,j=e.onMessage,T=e.onError,V=e.onReadyStateChange,W=e.onLoad,C=e.onNavigation,G=e.onHyperlink,N=e.children,q=o.useRef(null),x=o.useRef(),B=i.useRef();function D(){x.current.setOptions({fontSize:g,pageViewMode:w,renderAllPages:h,autoResize:m,defaultPaperSize:P,pageBorderWidth:E})}function I(){var e,r,t=x.current,o=a({},A?{userStyleSheet:[(e={},e[A.endsWith(".css")?"url":"text"]=A,e)]}:null,M?{authorStyleSheet:[(r={},r[M.endsWith(".css")?"url":"text"]=M,r)]}:null);f?t.loadPublication(n,o):t.loadDocument({url:n},o,{fontSize:g,pageViewMode:w,zoom:s,renderAllPages:h,autoResize:m,defaultPaperSize:P,pageBorderWidth:E,fitToScreen:k})}o.useEffect(function(){return x.current=new t.CoreViewer({viewportElement:q.current}),D(),function(){var e=function(e){var n,r;return null!=(n=null===(r=e.content.error)||void 0===r?void 0:r.toString())?n:e.content.messages.join("\n")};function n(n,r){j&&j(e(n),r)}var r=function(e){return n(e,"debug")},o=function(e){return n(e,"info")},i=function(e){return n(e,"warn")};function a(n){T&&T(e(n))}function u(){V&&V(x.current.readyState)}function d(){W&&W(B.current)}function c(e){var n={docTitle:e.docTitle,epageCount:e.epageCount,epage:e.epage,metadata:e.metadata};B.current=n,C&&C(n)}function s(e){G&&G(e)}var l=x.current;return l.addListener("debug",r),l.addListener("info",o),l.addListener("warn",i),l.addListener("error",a),l.addListener("readystatechange",u),l.addListener("loaded",d),l.addListener("nav",c),l.addListener("hyperlink",s),function(){V&&V(t.ReadyState.LOADING),l.removeListener("debug",r),l.removeListener("info",o),l.removeListener("warn",i),l.removeListener("error",a),l.removeListener("readystatechange",u),l.removeListener("loaded",d),l.removeListener("nav",c),l.removeListener("hyperlink",s)}}()},[]),o.useEffect(function(){I()},[n,M,A,s,k]),o.useEffect(function(){D()},[g,w,h,m,P,E]),o.useEffect(function(){var e;null===(e=x.current)||void 0===e||e.navigateToPage(t.Navigation.EPAGE,u-1)},[u]);var F=i.createElement(c,{ref:q,style:O,background:y});return"function"==typeof N&&N instanceof Function?N({container:F,reload:I}):F};
1
+ var e=require("@emotion/styled"),n=require("@vivliostyle/core"),r=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,a=/*#__PURE__*/t(e),i=/*#__PURE__*/t(r);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},u.apply(null,arguments)}var d,c,l=a.default.div(o||(d=["\n overflow: scroll;\n background: "," !important;\n"],c||(c=d.slice(0)),d.raw=c,o=d),function(e){return e.background});exports.Renderer=function(e){var t=e.source,o=e.page,a=void 0===o?1:o,d=e.zoom,c=void 0===d?1:d,s=e.bookMode,f=void 0===s||s,v=e.fontSize,g=void 0===v?16:v,p=e.background,S=void 0===p?"#ececec":p,y=e.renderAllPages,h=void 0===y||y,L=e.autoResize,m=void 0===L||L,b=e.pageViewMode,w=void 0===b?n.PageViewMode.SINGLE_PAGE:b,P=e.defaultPaperSize,z=e.pageBorderWidth,E=void 0===z?1:z,R=e.fitToScreen,k=void 0!==R&&R,A=e.userStyleSheet,M=e.authorStyleSheet,O=e.style,T=e.onMessage,V=e.onError,W=e.onReadyStateChange,j=e.onLoad,C=e.onNavigation,G=e.onHyperlink,N=e.children,q=r.useRef(null),x=r.useRef(),B=i.default.useRef();function D(){x.current.setOptions({fontSize:g,pageViewMode:w,renderAllPages:h,autoResize:m,defaultPaperSize:P,pageBorderWidth:E})}function I(){var e,n,r=x.current,o=u({},A?{userStyleSheet:[(e={},e[A.endsWith(".css")?"url":"text"]=A,e)]}:null,M?{authorStyleSheet:[(n={},n[M.endsWith(".css")?"url":"text"]=M,n)]}:null);f?r.loadPublication(t,o):r.loadDocument({url:t},o,{fontSize:g,pageViewMode:w,zoom:c,renderAllPages:h,autoResize:m,defaultPaperSize:P,pageBorderWidth:E,fitToScreen:k})}r.useEffect(function(){return x.current=new n.CoreViewer({viewportElement:q.current}),D(),function(){var e=function(e){var n,r;return null!=(n=null==(r=e.content.error)?void 0:r.toString())?n:e.content.messages.join("\n")};function r(n,r){T&&T(e(n),r)}var t=function(e){return r(e,"debug")},o=function(e){return r(e,"info")},a=function(e){return r(e,"warn")};function i(n){V&&V(e(n))}function u(){W&&W(x.current.readyState)}function d(){j&&j(B.current)}function c(e){var n={docTitle:e.docTitle,epageCount:e.epageCount,epage:e.epage,metadata:e.metadata};B.current=n,C&&C(n)}function l(e){G&&G(e)}var s=x.current;return s.addListener("debug",t),s.addListener("info",o),s.addListener("warn",a),s.addListener("error",i),s.addListener("readystatechange",u),s.addListener("loaded",d),s.addListener("nav",c),s.addListener("hyperlink",l),function(){W&&W(n.ReadyState.LOADING),s.removeListener("debug",t),s.removeListener("info",o),s.removeListener("warn",a),s.removeListener("error",i),s.removeListener("readystatechange",u),s.removeListener("loaded",d),s.removeListener("nav",c),s.removeListener("hyperlink",l)}}()},[]),r.useEffect(function(){I()},[t,M,A,c,k]),r.useEffect(function(){D()},[g,w,h,m,P,E]),r.useEffect(function(){var e;null==(e=x.current)||e.navigateToPage(n.Navigation.EPAGE,a-1)},[a]);var F=i.default.createElement(l,{ref:q,style:O,background:S});return"function"==typeof N&&N instanceof Function?N({container:F,reload:I}):F};
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: JSX.Element;\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> | JSX.Element => {\n const containerRef = useRef<HTMLDivElement>(null);\n const instanceRef = useRef<CoreViewer>();\n const stateRef = React.useRef<VolatileState>();\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 initInstance();\n setViewerOptions();\n\n const cleanup = registerEventHandlers();\n return cleanup;\n }, []);\n\n useEffect(() => {\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source, authorStyleSheet, userStyleSheet, zoom, fitToScreen]);\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 ref={containerRef} style={style} background={background} />\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":["Container","styled","div","_templateObject","_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","stateRef","React","setViewerOptions","current","setOptions","loadSource","instance","documentOptions","_extends","_ref2","endsWith","_ref3","loadPublication","loadDocument","url","useEffect","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","ref","Function","reload"],"mappings":"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"}
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: JSX.Element;\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> | JSX.Element => {\n const containerRef = useRef<HTMLDivElement>(null);\n const instanceRef = useRef<CoreViewer>();\n const stateRef = React.useRef<VolatileState>();\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 initInstance();\n setViewerOptions();\n\n const cleanup = registerEventHandlers();\n return cleanup;\n }, []);\n\n useEffect(() => {\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source, authorStyleSheet, userStyleSheet, zoom, fitToScreen]);\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 ref={containerRef} style={style} background={background} />\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","stateRef","React","setViewerOptions","current","setOptions","loadSource","_ref2","_ref3","instance","documentOptions","_extends","endsWith","loadPublication","loadDocument","url","useEffect","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","ref","Function","reload"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import e from"@emotion/styled";import{Navigation as n,PageViewMode as t,ReadyState as r,CoreViewer as o}from"@vivliostyle/core";import a,{useRef as i,useEffect as d}from"react";function c(){return c=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},c.apply(null,arguments)}let s;const u=({source:e,page:s=1,zoom:u=1,bookMode:f=!0,fontSize:g=16,background:p="#ececec",renderAllPages:m=!0,autoResize:v=!0,pageViewMode:S=t.SINGLE_PAGE,defaultPaperSize:h,pageBorderWidth:L=1,fitToScreen:y=!1,userStyleSheet:b,authorStyleSheet:z,style:P,onMessage:w,onError:k,onReadyStateChange:E,onLoad:A,onNavigation:M,onHyperlink:O,children:R})=>{const T=i(null),W=i(),G=a.useRef();function j(){W.current.setOptions({fontSize:g,pageViewMode:S,renderAllPages:m,autoResize:v,defaultPaperSize:h,pageBorderWidth:L})}function x(){const n=W.current,t=c({},b?{userStyleSheet:[{[b.endsWith(".css")?"url":"text"]:b}]}:null,z?{authorStyleSheet:[{[z.endsWith(".css")?"url":"text"]:z}]}:null);f?n.loadPublication(e,t):n.loadDocument({url:e},t,{fontSize:g,pageViewMode:S,zoom:u,renderAllPages:m,autoResize:v,defaultPaperSize:h,pageBorderWidth:L,fitToScreen:y})}d(()=>(W.current=new o({viewportElement:T.current}),j(),function(){const e=e=>{var n,t;return null!=(n=null==(t=e.content.error)?void 0:t.toString())?n:e.content.messages.join("\n")};function n(n,t){w&&w(e(n),t)}const t=e=>n(e,"debug"),o=e=>n(e,"info"),a=e=>n(e,"warn");function i(n){k&&k(e(n))}function d(){const{readyState:e}=W.current;E&&E(e)}function c(){A&&A(G.current)}function s(e){const{docTitle:n,epageCount:t,epage:r,metadata:o}=e,a={docTitle:n,epageCount:t,epage:r,metadata:o};G.current=a,M&&M(a)}function u(e){O&&O(e)}const l=W.current;return l.addListener("debug",t),l.addListener("info",o),l.addListener("warn",a),l.addListener("error",i),l.addListener("readystatechange",d),l.addListener("loaded",c),l.addListener("nav",s),l.addListener("hyperlink",u),()=>{E&&E(r.LOADING),l.removeListener("debug",t),l.removeListener("info",o),l.removeListener("warn",a),l.removeListener("error",i),l.removeListener("readystatechange",d),l.removeListener("loaded",c),l.removeListener("nav",s),l.removeListener("hyperlink",u)}}()),[]),d(()=>{x()},[e,z,b,u,y]),d(()=>{j()},[g,S,m,v,h,L]),d(()=>{var e;null==(e=W.current)||e.navigateToPage(n.EPAGE,s-1)},[s]);const B=a.createElement(l,{ref:T,style:P,background:p});return"function"==typeof R&&R instanceof Function?R({container:B,reload:x}):B},l=e.div(s||(s=(e=>e)`
2
+ overflow: scroll;
3
+ background: ${0} !important;
4
+ `),({background:e})=>e);export{u as Renderer};
5
+ //# sourceMappingURL=react-vivliostyle.modern.mjs.map
@@ -0,0 +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: JSX.Element;\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> | JSX.Element => {\n const containerRef = useRef<HTMLDivElement>(null);\n const instanceRef = useRef<CoreViewer>();\n const stateRef = React.useRef<VolatileState>();\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 initInstance();\n setViewerOptions();\n\n const cleanup = registerEventHandlers();\n return cleanup;\n }, []);\n\n useEffect(() => {\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source, authorStyleSheet, userStyleSheet, zoom, fitToScreen]);\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 ref={containerRef} style={style} background={background} />\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","stateRef","React","setViewerOptions","current","setOptions","loadSource","instance","documentOptions","_extends","endsWith","loadPublication","loadDocument","url","useEffect","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","Container","ref","Function","reload","styled","div","_t"],"mappings":"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"}
@@ -1,44 +1,44 @@
1
- import { PageViewMode, Payload, ReadyState } from "@vivliostyle/core";
2
- import React from "react";
3
- export declare type MessageType = "debug" | "info" | "warn";
4
- export declare type NavigationPayload = Omit<Payload, "internal" | "href" | "content">;
5
- export declare type HyperlinkPayload = Pick<Payload, "internal" | "href">;
6
- interface VolatileState {
7
- docTitle: string;
8
- epage: number;
9
- epageCount: number;
10
- metadata: unknown;
11
- }
12
- declare type ChildrenFunction = ({ container, reload, }: {
13
- container: JSX.Element;
14
- reload: () => void;
15
- }) => React.ReactNode;
16
- interface RendererProps {
17
- source: string;
18
- page?: number;
19
- zoom?: number;
20
- bookMode?: boolean;
21
- renderAllPages?: boolean;
22
- autoResize?: boolean;
23
- pageViewMode?: PageViewMode;
24
- defaultPaperSize?: {
25
- width: number;
26
- height: number;
27
- };
28
- pageBorderWidth?: number;
29
- fitToScreen?: boolean;
30
- fontSize?: number;
31
- background?: string;
32
- userStyleSheet?: string;
33
- authorStyleSheet?: string;
34
- style?: React.CSSProperties;
35
- onMessage?: (message: string, type: MessageType) => void;
36
- onError?: (error: string) => void;
37
- onReadyStateChange?: (state: ReadyState) => void;
38
- onLoad?: (state: VolatileState) => void;
39
- onNavigation?: (state: VolatileState) => void;
40
- onHyperlink?: (payload: HyperlinkPayload) => void;
41
- children?: React.ReactNode | ChildrenFunction;
42
- }
43
- export declare const Renderer: ({ source, page, zoom, bookMode, fontSize, background, renderAllPages, autoResize, pageViewMode, defaultPaperSize, pageBorderWidth, fitToScreen, userStyleSheet, authorStyleSheet, style, onMessage, onError, onReadyStateChange, onLoad, onNavigation, onHyperlink, children, }: RendererProps) => ReturnType<ChildrenFunction> | JSX.Element;
44
- export {};
1
+ import { PageViewMode, Payload, ReadyState } from "@vivliostyle/core";
2
+ import React from "react";
3
+ export type MessageType = "debug" | "info" | "warn";
4
+ export type NavigationPayload = Omit<Payload, "internal" | "href" | "content">;
5
+ export type HyperlinkPayload = Pick<Payload, "internal" | "href">;
6
+ interface VolatileState {
7
+ docTitle: string;
8
+ epage: number;
9
+ epageCount: number;
10
+ metadata: unknown;
11
+ }
12
+ type ChildrenFunction = ({ container, reload, }: {
13
+ container: JSX.Element;
14
+ reload: () => void;
15
+ }) => React.ReactNode;
16
+ interface RendererProps {
17
+ source: string;
18
+ page?: number;
19
+ zoom?: number;
20
+ bookMode?: boolean;
21
+ renderAllPages?: boolean;
22
+ autoResize?: boolean;
23
+ pageViewMode?: PageViewMode;
24
+ defaultPaperSize?: {
25
+ width: number;
26
+ height: number;
27
+ };
28
+ pageBorderWidth?: number;
29
+ fitToScreen?: boolean;
30
+ fontSize?: number;
31
+ background?: string;
32
+ userStyleSheet?: string;
33
+ authorStyleSheet?: string;
34
+ style?: React.CSSProperties;
35
+ onMessage?: (message: string, type: MessageType) => void;
36
+ onError?: (error: string) => void;
37
+ onReadyStateChange?: (state: ReadyState) => void;
38
+ onLoad?: (state: VolatileState) => void;
39
+ onNavigation?: (state: VolatileState) => void;
40
+ onHyperlink?: (payload: HyperlinkPayload) => void;
41
+ children?: React.ReactNode | ChildrenFunction;
42
+ }
43
+ export declare const Renderer: ({ source, page, zoom, bookMode, fontSize, background, renderAllPages, autoResize, pageViewMode, defaultPaperSize, pageBorderWidth, fitToScreen, userStyleSheet, authorStyleSheet, style, onMessage, onError, onReadyStateChange, onLoad, onNavigation, onHyperlink, children, }: RendererProps) => ReturnType<ChildrenFunction> | JSX.Element;
44
+ export {};
package/package.json CHANGED
@@ -1,46 +1,48 @@
1
1
  {
2
2
  "name": "@vivliostyle/react",
3
3
  "description": "React component for Vivliostyle",
4
- "version": "2.30.4",
4
+ "version": "2.30.6",
5
5
  "author": "Yasuaki Uechi <y@uechi.io>",
6
6
  "scripts": {
7
- "build": "microbundle-crl --format modern,cjs && shx rm -rf dist/stories",
8
- "build-dev": "microbundle-crl --no-compress --format cjs",
9
- "build-storybook": "build-storybook",
7
+ "build": "microbundle --format modern,cjs && shx rm -rf dist/stories",
8
+ "build-dev": "microbundle --no-compress --format cjs",
9
+ "build-storybook": "storybook build",
10
10
  "clean": "shx rm -rf dist",
11
11
  "dev": "yarn storybook",
12
- "storybook": "cross-env NODE_OPTIONS=--openssl-legacy-provider start-storybook -p 9009",
12
+ "storybook": "cross-env NODE_OPTIONS=--openssl-legacy-provider storybook dev -p 9009",
13
13
  "test": "run-s test:build",
14
14
  "test:build": "yarn build",
15
- "test:unit": "cross-env CI=1 react-scripts test --env=jest-environment-jsdom-sixteen",
16
- "test:watch": "react-scripts test --env=jest-environment-jsdom-sixteen"
15
+ "test:unit": "cross-env CI=1 react-scripts test",
16
+ "test:watch": "react-scripts test"
17
17
  },
18
18
  "dependencies": {
19
19
  "@emotion/core": "^10.0.28",
20
20
  "@emotion/styled": "^10.0.27",
21
- "@vivliostyle/core": "^2.30.4"
21
+ "@vivliostyle/core": "^2.30.6"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": "^18.2.0",
25
25
  "react-dom": "^18.2.0"
26
26
  },
27
27
  "devDependencies": {
28
- "@storybook/addon-actions": "^6.0.21",
29
- "@storybook/addon-knobs": "^6.0.21",
30
- "@storybook/addon-links": "^6.0.21",
31
- "@storybook/addons": "^6.0.21",
32
- "@storybook/preset-create-react-app": "^3.1.2",
33
- "@storybook/react": "^6.0.21",
34
- "@types/jest": "^26.0.3",
28
+ "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
29
+ "@storybook/addon-actions": "^8.4.4",
30
+ "@storybook/addon-essentials": "^8.4.4",
31
+ "@storybook/addon-knobs": "^8.0.1",
32
+ "@storybook/addon-links": "^8.4.4",
33
+ "@storybook/preset-create-react-app": "^8.4.4",
34
+ "@storybook/react": "^8.4.4",
35
+ "@storybook/react-webpack5": "^8.4.4",
36
+ "@types/jest": "^29.5.14",
35
37
  "@types/react": "^18.0.27",
36
38
  "cross-env": "^7.0.2",
37
- "jest-environment-jsdom-sixteen": "^1.0.3",
38
- "microbundle-crl": "^0.13.10",
39
+ "microbundle": "^0.15.1",
39
40
  "npm-run-all": "^4.1.5",
40
41
  "react": "^18.2.0",
41
42
  "react-dom": "^18.2.0",
42
- "react-scripts": "^3.4.1",
43
- "shx": "^0.3.2"
43
+ "react-scripts": "^5.0.1",
44
+ "shx": "^0.3.2",
45
+ "storybook": "^8.4.4"
44
46
  },
45
47
  "source": "src/index.tsx",
46
48
  "types": "dist/index.d.ts",
@@ -70,5 +72,5 @@
70
72
  "engines": {
71
73
  "node": ">=14"
72
74
  },
73
- "gitHead": "db8001bb9c3b1fd0091cde72a22d7ad0a75c2afa"
75
+ "gitHead": "8a2db8eb627a1055fa52728554027fd090dc234a"
74
76
  }
@@ -1,2 +0,0 @@
1
- import e from"@emotion/styled";import{ReadyState as n,Navigation as r,PageViewMode as t,CoreViewer as o}from"@vivliostyle/core";import i,{useRef as a,useEffect as u}from"react";function d(){return(d=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}var c,l,s,f=function(e){var c=e.source,l=e.page,s=void 0===l?1:l,f=e.zoom,g=void 0===f?1:f,p=e.bookMode,m=void 0===p||p,h=e.fontSize,S=void 0===h?16:h,y=e.background,L=void 0===y?"#ececec":y,b=e.renderAllPages,w=void 0===b||b,z=e.autoResize,P=void 0===z||z,k=e.pageViewMode,E=void 0===k?t.SINGLE_PAGE:k,A=e.defaultPaperSize,O=e.pageBorderWidth,M=void 0===O?1:O,R=e.fitToScreen,T=void 0!==R&&R,W=e.userStyleSheet,j=e.authorStyleSheet,G=e.style,x=e.onMessage,B=e.onError,C=e.onReadyStateChange,N=e.onLoad,V=e.onNavigation,D=e.onHyperlink,I=e.children,F=a(null),H=a(),_=i.useRef();function q(){H.current.setOptions({fontSize:S,pageViewMode:E,renderAllPages:w,autoResize:P,defaultPaperSize:A,pageBorderWidth:M})}function J(){var e,n,r=H.current,t=d({},W?{userStyleSheet:[(e={},e[W.endsWith(".css")?"url":"text"]=W,e)]}:null,j?{authorStyleSheet:[(n={},n[j.endsWith(".css")?"url":"text"]=j,n)]}:null);m?r.loadPublication(c,t):r.loadDocument({url:c},t,{fontSize:S,pageViewMode:E,zoom:g,renderAllPages:w,autoResize:P,defaultPaperSize:A,pageBorderWidth:M,fitToScreen:T})}u(function(){return H.current=new o({viewportElement:F.current}),q(),function(){var e=function(e){var n,r;return null!=(n=null===(r=e.content.error)||void 0===r?void 0:r.toString())?n:e.content.messages.join("\n")};function r(n,r){x&&x(e(n),r)}var t=function(e){return r(e,"debug")},o=function(e){return r(e,"info")},i=function(e){return r(e,"warn")};function a(n){B&&B(e(n))}function u(){C&&C(H.current.readyState)}function d(){N&&N(_.current)}function c(e){var n={docTitle:e.docTitle,epageCount:e.epageCount,epage:e.epage,metadata:e.metadata};_.current=n,V&&V(n)}function l(e){D&&D(e)}var s=H.current;return s.addListener("debug",t),s.addListener("info",o),s.addListener("warn",i),s.addListener("error",a),s.addListener("readystatechange",u),s.addListener("loaded",d),s.addListener("nav",c),s.addListener("hyperlink",l),function(){C&&C(n.LOADING),s.removeListener("debug",t),s.removeListener("info",o),s.removeListener("warn",i),s.removeListener("error",a),s.removeListener("readystatechange",u),s.removeListener("loaded",d),s.removeListener("nav",c),s.removeListener("hyperlink",l)}}()},[]),u(function(){J()},[c,j,W,g,T]),u(function(){q()},[S,E,w,P,A,M]),u(function(){var e;null===(e=H.current)||void 0===e||e.navigateToPage(r.EPAGE,s-1)},[s]);var K=i.createElement(v,{ref:F,style:G,background:L});return"function"==typeof I&&I instanceof Function?I({container:K,reload:J}):K},v=e.div(c||(l=["\n overflow: scroll;\n background: "," !important;\n"],s||(s=l.slice(0)),l.raw=s,c=l),function(e){return e.background});export{f as Renderer};
2
- //# sourceMappingURL=react-vivliostyle.modern.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-vivliostyle.modern.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: JSX.Element;\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> | JSX.Element => {\n const containerRef = useRef<HTMLDivElement>(null);\n const instanceRef = useRef<CoreViewer>();\n const stateRef = React.useRef<VolatileState>();\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 initInstance();\n setViewerOptions();\n\n const cleanup = registerEventHandlers();\n return cleanup;\n }, []);\n\n useEffect(() => {\n loadSource();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source, authorStyleSheet, userStyleSheet, zoom, fitToScreen]);\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 ref={containerRef} style={style} background={background} />\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","_ref","source","_ref$page","page","_ref$zoom","zoom","_ref$bookMode","bookMode","_ref$fontSize","fontSize","_ref$background","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","stateRef","React","setViewerOptions","current","setOptions","loadSource","instance","documentOptions","_extends","_ref2","endsWith","_ref3","loadPublication","loadDocument","url","useEffect","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","Container","ref","Function","reload","styled","div","_templateObject","_ref4"],"mappings":"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"}