{"_id":"@ridi/react-viewer","_rev":"92-1e818dba1c775a92c09b31ad937fbec1","name":"@ridi/react-viewer","dist-tags":{"alpha":"1.0.0-alpha.36","latest":"0.3.12"},"versions":{"0.3.8":{"name":"@ridi/react-viewer","version":"0.3.8","author":"","license":"MIT","_id":"@ridi/react-viewer@0.3.8","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"33ca0d659eea02b342d20a15552f1e61ab5ce8b2","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-0.3.8.tgz","fileCount":14048,"integrity":"sha512-lAsrGT8dEoe3N0S48caTPUy41BPTK68eC8Rw4sRnYyNCOnnWtcP24iJKSp4oHGQGvO+saI3avaiszmjUPD+hKA==","signatures":[{"sig":"MEYCIQCJvX+lBdba0br/VWSC2zEVRpobPRn7ygBJpFVWXEDH4wIhANosiYTqUMMF8DHFvD+RLtcEc2sisFQfR4wWU3lMnAh2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179516696},"main":"lib/index.js","gitHead":"8db8f8a3aed28a81cd48925eca3e0a8b19e5be55","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"5.7.1","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"8.9.3","dependencies":{"react":"^16.2.0","redux":"^3.7.2","reselect":"^3.0.1","react-dom":"^16.2.0","prop-types":"^15.6.0","react-redux":"^5.0.6","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.14","styled-components":"^2.2.4"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","eslint":"^4.18.1","git-rev":"^0.2.1","webpack":"^4.0.1","fs-extra":"^5.0.0","babel-core":"^6.14.0","webpack-cli":"^2.0.9","babel-loader":"^7.1.3","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.0","babel-preset-env":"^1.6.1","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.0.0","@ridi/eslint-config":"*","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^1.3.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.2","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_0.3.8_1522833291840_0.650324243629794","host":"s3://npm-registry-packages"}},"0.3.9-alpha.1":{"name":"@ridi/react-viewer","version":"0.3.9-alpha.1","author":"","license":"MIT","_id":"@ridi/react-viewer@0.3.9-alpha.1","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"6d556859efb29c0ac589d06314ea98e3af3299c1","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-0.3.9-alpha.1.tgz","fileCount":11,"integrity":"sha512-GBe45TGa4mmvv5tYhXKh7S0TKISXRHtCig1ZbDIWpA7JMiML58n443eRW9PYIeIw8bGA8LKyWIeNEMSQDxX7sQ==","signatures":[{"sig":"MEYCIQD2KD2e4/sgDDeRQA2xcjqSqfq/N5i/KhBjuCElT2s5ZwIhALH/7Amr9CxwnIeDc/MbtMhEcvpyYgHnD/spb2p68ht6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6XWQCRA9TVsSAnZWagAANusQAKHsySDUOqomdJEy/sfN\n4nmcmqh8/d7lEMEEOXo3v7QpljKNN6wkCoFISEyxbWJmqaz6V7SdNxRs00wI\nm6bxsMfJPkXo0+Ht0gwagDtJ0Gnl3tYX2fEKCXgHle0nHhdzjFhDTWrXaFGy\nHSAzvypqC87wAv5Ps8kAV5Q30EgJ2DMSaFATkgmFjkL+6o5tKKNjRXxti0y+\nI4aVcb94Qt0xWzX5i+RgKoje+eindIy+x/qyglPv/BGSkjExkjqJUUsLdoR3\n/uqttQPqq3A9HaDeLnTvBWW4LoqanW+UBW/F/D/jvfzgPTFMzb8VXRhhy8ie\neS11wjESf4VwOk8BceDcJMDsSTuK4sFWV17a9xNbJSRn5+gQAKWQxO+jwA50\nnje/OmD2Uoe2T2C9v1nIHe+O86XRWzgEOQZdhiMnIqNoEFDsCeVVnlT6ADwz\nBgFxHQMNwdUwis27AHQOfWsLEEGyT5yps/hE6wIddS+gCz6XL8EFAlvkuTl/\n7K9JXGjeWIehFqFwOOGELzoYbCOSaC/WjiS62+WThAJtaty0n1e3gN/toqB1\nfq1yV1ZOcjSFzatY9xQmCUfKdgBTEqCEBErcCFMvbrdF6FZAzklLiJxcbQ+A\nbtOFrDvFaUhz1y4ccgRt7vf9V9LVE3Kc/4DKPDoKA/Ii9p5/szvhOlk8yiL1\nOczv\r\n=oWkg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"a97e62d368910d667c373aa7f6dc97d824a991e7","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.0.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.3.2","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^5.0.0","react-dom":"^16.3.2","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.6.1","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_0.3.9-alpha.1_1525249423102_0.17059182415904162","host":"s3://npm-registry-packages"}},"1.0.0-alpha.0":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.0","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.0","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"e7dbaa2b76c10ec75fc78b8b236f6ac76b2b19c4","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-UhS8fMWJLKZJevuNbPFonjo1UMKVY1kPVTZMALxyyWT5InbUqPW9Y4uUhg9CPLzEg0MVblFuOYVGDHV9WqLliw==","signatures":[{"sig":"MEQCIEIQ7w4oe64VHle7GCqQlm+5cx9Q31jBKhbPUDe/nXQdAiBHU6IsA7885t9XJdOlvA8nGDNOZbx38+p55+u03cNUaw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWaWjCRA9TVsSAnZWagAAJvQP/0KVbPmz4c/0gVqDT6q0\nIozfy7fe1UNKZmpK68heDgXirhAoYucg5k4FbCuzE4WU1GlkM4VB7jrJACMV\n85pDf3ZLAZwR0vmupKyYmu2YLqluSn4ZZcIAcjiOqEqAcr5mwu73DaWmp/9P\nGw9iRzDaqRHlsyRHhAdz6EcytOtTA0enJY24uT5ma4WQNxed5/1hnSE7l4oo\n82iTff8+unZ90PArC3xa9hebL4ykgB3624ihNCfvEzRc0uOqttnHTwW+rNua\nRdKChh6OfGomOmLQZ1N++4x3UgNv2Znv/MfLvllhKWTUqofxwYyqP3KzHxRS\niJ2ZmHnLVSixS60geJb2dtgRIN583StRmd8qXD5LPi/43M2sorVwNmGXZIHc\neOdm0PQruqQBMZlNnb83oRP8XJIilVkFmoysZ8VaNcBs9CQDZmDyqQjfEgKX\nmj5F0aMFuI8zWJmDH0GbEdwE00KNJsZbz9KICczj8Jaf5N4wfmuK0AgQBiW5\n2IQmEeHdNW/NOPVsgtS1oRmThg70mxJUNHxh5XfRwslPMIk5n7WnGlVEmdWB\nIn/GshgdpilUwrB0Dj0RDfO1iltAOJD7UcfnvyBGO+wnliTp9gjwgg7teKk/\na9qrtQvCXhFVgtaKaO3qkr2dhuJGEfUQxThLG/mDo2FEeB/IAI/vzqdI9w/R\nPmoG\r\n=a7YU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"1d37fbe88e8f1df8fd12f6322c9bc24cda8b5bd3","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.0_1532601763731_0.7742193429832305","host":"s3://npm-registry-packages"}},"1.0.0-alpha.1":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.1","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.1","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"54cb4276a67b6e83103883f1362ea15f7f155ee1","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.1.tgz","fileCount":6,"integrity":"sha512-AZ7FqLFgQU9lV2fgX2MQEh7bDvecTNBQySbqmP03dZ+GwMmMUs+IhOvjg5kBAKP7B5FmzFxr+K1NkdNmBt2Sxw==","signatures":[{"sig":"MEUCIQDxkrYaroMJAktkhCFXCQCY2gQyOzVRqGGR1fWKcqo7+AIgIU6XpiQz4IQ0cf5L4DRKkSj54TMJtSg9usxDbl8zKOU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWtCzCRA9TVsSAnZWagAAx6MQAIL7N5x3TD3gFiiFZsQ1\n/msgkhp9WgxOFX2EFooYSAbq5u4tY536UN4OVcStIwLqsKQafzYTT0oyGhQR\nJQXJ/NtioECtz9KxG22caYWOoWOuXZLKNoLnHxuoFYWPfPOSGEqP710ku4Uy\nY5sdKEbZqd4isdX5QFelSQxJnpTu33uQU533iA4r1wNg+AUNSclgefQwjgfS\nsBr5cxl/axBiAwWlqm7/1lSUu2Ehos6H8hY6NyzqzdMQKsA/Ca2FXe9ywRwF\ncwEeIIDUezjhdaGUYeS5RionWwkY974vcT/7ivXz0BJZwwzZF1y1y7ZzCwTt\nre+UbBXltkkqvIT2ZgmYGQYJKUzBadMKcWREkIiiegkR8ZAhu4UzOnKBOvAe\nt3a33L+Uy0mX2cIkelhPj3N+UikGT5k7b95ZF2mUrOib9IXK7xjSjPyRIf1I\nBg9qKrTYVyXm4q8zpm/JVCFhvKOE50xj7zlJRe5CM9M6oEWeDzGa8GNvad9m\nW3Y8VtVpOEL9m7ulZRD8tnqVIbIN3dTsUNh5rdS5PEANx7EVyfGLsx3cHSto\nzuIIlctLhNxOsbgBSoZApkqqz7PQzaIMPqF8I9VqMGR7BQ29z85NhXhBBfCa\nuj9vh9WfYXvreooM8bEk4S6Zqgs7oOZt64M6gp2pigtroQI9kioHd6eSnHLM\nUkgm\r\n=4bWC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"c89194f07c66b1ece8758dbe36d63de3818b03ea","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.1_1532678323303_0.5867078907131145","host":"s3://npm-registry-packages"}},"1.0.0-alpha.2":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.2","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.2","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"bfd3cd47674cbe1ced435d08ab452608021fd37a","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.2.tgz","fileCount":6,"integrity":"sha512-73XuO8LlIz/nLhs+dhhER0VUUVoQLhjfB5hbZyRzdsGX+kZabte5W8X1NbnEnXUXabyOdMV81/rHDw716nNm4A==","signatures":[{"sig":"MEUCIQCvEugjon9qZ93ct9mcgY+p/RY2Za4XoaGyghgu4X+ZBAIgVyFc8xsYA+tm+oZinrDpGc8gnqNhK9lqDIxUB/zDyco=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbX9btCRA9TVsSAnZWagAApVEP/Rgaj644agRipwHtGIGh\na9eKCZ1WqUtXjn64MCFxXX+wwkdkJTUQkJ+syGb/+e1GKk5Z9TpcndVMAyCe\nDSxQ4D4epl/iwNW1i6/kJWLX7WLsTzIPyG4BPl420fRYRttaMiwhZhszQiA5\n5RsrntdX6Kb3ZVdu6lLVsXDHPDiOTu3TilAOGqet8OTXW+Wm8+P9pyiVkENQ\npPeFauFEpGsdYAWjYUQGphF3RdscUTvvNcsWgvkTaPBWwkvebByn8o378liq\nVBW0PZ/Cnl0zlQOLyrt33XMuqFi6IngMjnM9H9FzI/H3YcI2/vJAOrZclHKQ\nTKCcAmk67kFiqWTSpzdu85ojYjrmAGCDJxhDqrNj9EzKM/gH+dEeADiuTPTm\nyyMcS6/85JEMI0cxzoxYUFc/N7BolBrhK7Igw+kfoJ5aUzd86QtIMP+yTPHM\nDSX+Oh/RZRYMT0WxrfV31+C6k9Yb6PBmJzDampeeNkpdcAXG7/vw4oIdPpDj\nbpabceMeqslZ7duK5sYJtWXZg/kDmPlvJuttjh2jHKvbFbjOPfZ9xoN3FsFp\nzTj+Z16M4MD1qx5wcJjEirF63hQgQLPe+lGkxyHrhCmpNaBXlFO0Om9t0PZH\nnacGxUxEGL1NUpWHxRAD8C0Ggex4xWIA4sM//q8H6KfaBazDaP4a517asSow\nnRcB\r\n=ITvD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"77709857d0732d024c3d18fb2895205b11d1181a","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.2_1533007597147_0.6191466784312416","host":"s3://npm-registry-packages"}},"1.0.0-alpha.3":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.3","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.3","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"430a7086e30122a0780f7b9f928f574ecba43ef5","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.3.tgz","fileCount":6,"integrity":"sha512-F9oTZlgKbeZXxmBUdi+wdU5J3BIo8I92TzIG9ZsUb+FpWqvVmcBeXFGKkpMT81X1rg5LbMgFRp+xZKR86nj9yQ==","signatures":[{"sig":"MEQCICoFDkkZy2Z8yEbtR7oj6pZbg3AvUcgYMK+bKb3h5zIwAiBGJlyEDGXZ6gqp1nPzddShb9WE9xbYwlMY1SrlBIl+6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbY/2LCRA9TVsSAnZWagAAM7wP/jetmeaOzmJfhkhQvclE\n1xfo4ySYw7YV9jKge6vBbCgIqqnBn+Mw3+Mv8ckhq+sUS2dCi/uB7+gq/6wa\n+k85KtrjBBnPjz+xY1RfzPQ7mj8FVF5vwWr5QSDFzCz9ATDluiIcnrHKALG1\nmP1O5S4dbBII17jyBbforwxZbuWbNkrrFaJrR8kRIERX5ejvWSW8Zkt5WFA9\ndn6lCVFrylvb0g0mt+p7IlnvpHEpPYYaPiqx8Q+hHYNeZ1ystQiajPZa6kVc\ngWTru1A/hhvRTi9ZAqacANucGcpiAgmbjg3DAKcbBLQNdupQf12JQ0/Nr7Yc\nrL7RosvRk5UxMwWcIIgGbVgCKc9Wfhe7xEK9tAHzGf6DzhEQC8geonInFPxD\njPJQokbtmdV6kfTzUKyCSLNg82E7iBXGOK5ii/UIUivMRwKbRt8ICEFFLuyb\nKVIODXVBSNKOXiDCFPgy1UUleo8adrrZceRBHOA1/SQDg1yk+kuSvnZhgi3M\njjlpD4ugZKWucViQCnA0uZcUYXwEKV2C9R1OZkwN6vVfyFSlVqTOMTH76WKX\niIRIZvaZuY8Nxy3lckMtIFFYKtqWHIuPxWKKyxHNhWaSKas29qDLnbucYlCh\nKMoM6FKJxTJ4yy5v+XbOkf9oIcpQ3VQBPNmEEl/r4YI9oDdNbETyvdLOogYn\nJoeA\r\n=TcKq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"8bee3c7315a4deaa0dafc762a01fb96d571170fc","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.3_1533279627479_0.33307505385879943","host":"s3://npm-registry-packages"}},"1.0.0-alpha.4":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.4","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.4","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"a6fff8b68ede02585be7e7264da0ea0f3c41e505","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.4.tgz","fileCount":4,"integrity":"sha512-rQznIShlYsCydiwl5GOsZQYsVu83oh5pPGZPczUAaisU4MbBUUJCDQrZFAMIoduObIiROT0/+tPgXciSzMRQIQ==","signatures":[{"sig":"MEUCIHxcFiw6vriR1oUKfaSEpf9LnC8bdIf4+Kt9D8bz7DGvAiEAij4hsFs8mE+dDSyskQI8ilJt5ISAvoS4cCFI0spTPq4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaVu+CRA9TVsSAnZWagAA5SMP/ik79Rq3Tu8UGOhNk/cu\nxNBaU5hYURkdZUr915ZAidR7jv17vbuPR5822vFIQHKXzjUkN+QDHv1B7WYk\ndhRqP4V4kmQcYj6wKOZSAPWn8ul6L6jZ+xw3bqwFiwGW/UnIu2iN2Bj5vOy9\nG3QDz7AivD1jJ2iwIeUvvUHCEwE2/3xyYtNVIhJiJCWRI22AvhP3CHvF6moR\nu8OnWYw2CZurGexWWmVL1USOPOHQeRwxrl1ilyjH24EB3MuwerYSepOeupl3\nqWBpF54BnaTUSk4gDvDOBFz8t7b2UG9pe5MKXIy0TXw7/z0f52JajLuVLG0G\nuDs5QNV0xFBfztxQeHHiDbJgD14jEFpkOuvazhb1IhBSSG3DVEtq6plFsOLa\nWRqAi+U0pk5oyd/BgeuLLf6yL7NWD0oKTrhWt7IZtHV5CY0foK/wmYnZdM7t\niW/QSz7RaNEsvnJWWLI6rZEZgYKESGUOep++98XXViNsHThyM7GD3VnfB2/2\nOG77evjjj6Xfro7nKQqCITakIU5Eudh5HFh68V4e6I+dDe8GScSz4aR9v7P6\n28s7YCw68pH6R1JJ3Ct16JVb/wX66jTg8deqoeaDEeJ1i19Q6wQt//RqVicL\ntTwI3MjVPWS7RnDaG3qw8ua5yQqD6mFAXjtmW6lPNvKNJdcPHat42XI4kGD2\n9Dqj\r\n=2P6n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"2e93c06250c68637c68e1afb5d969f6232c66e2a","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.4_1533631422423_0.06512459803390214","host":"s3://npm-registry-packages"}},"1.0.0-alpha.5":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.5","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.5","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"dcfabbd60bb1248193226c2bc9c641c702013bc6","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.5.tgz","fileCount":4,"integrity":"sha512-SZegUyJ5AEUo0lESeOFyVIcDwGQUq2Tu04dU56uqSxJo8FKnD3s9f5ozSWBF02tDALJD0zXY8kfriJBEeSgE9A==","signatures":[{"sig":"MEQCIDtQUSXPI6oXJUOCCxuACoQWzQ1tOIUfWKv0i/RzMz+4AiABz9p2hP7/XNwKQOnbA/X5sC+MZPejpFIaUwG66DFEKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbapoMCRA9TVsSAnZWagAAQ+QP/idR1+ZJwhaQ2i+PJZzs\nRBZWgnSiZBk/zMBLHuGX0drbduR2haA7VP2UtVyQtlGiW8ddzNT5zW0xYMda\n2rktp58YXWrqc5pwBAXw8AQ7Rr0VFEopAivi9dOfRXUAQc95VLLWtsEkHml2\nQMJL1je2LLfhA5YRj73EgWSvipufuOxMXFqyqZn07kybkzEkm7Q3YRqXB5Ok\nF3DSlpPXIbQb80DZ0ki+h/CcQqv4mZK74MwU8WFHAC2oO5cujYwm73Leupia\n6k6N202VMsDl4GVfzh5ZApLamz/dW6B5okl6kTwQE0L2fO09eQLoWkmFXRFE\n4TusSVll2jWPKP4cU4TjJyWt5BNc1Ie9Mc+sLhRr5gnF0f+D84sMDigRB5W3\nCU3Rw4jnipEcMosD1H1MaDo88QaqC3k6SNmZ60lHzoOgeDFUBJqsxsEq6vaL\nLxhmlYoHjc3gHSnUtzYBC+F5UIigyUcB/bbv2ZAdZ4U3cgcl2ZU0jfD1OKkf\nQ4whKcpIJmrJXPh6jgxadx3S6KE4JbxJi+H0DJQgAhAXSbZkUtpiSudPXI3c\nke0aSKtQe0oI/aSlZQ0mKHO1kux9odFtJlX0fpniW+AOvQZfAMcvC/PhkoFj\nK8PKGd0Lc8HMx5hHbzpyv1RQejZvsQYcRkyb5MY5rAfs4tqfWR5XW4pdWm3F\npI4n\r\n=Ln3d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"2f18bd26209dd028bbc4a81c93b777f5d469affd","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.5_1533712908307_0.06877703517415812","host":"s3://npm-registry-packages"}},"1.0.0-alpha.6":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.6","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.6","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"539de1b640b1639ca45ed2b0011f01b480cb1d1c","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.6.tgz","fileCount":4,"integrity":"sha512-Qoy6sfMbcgfB2eiF1zS9cb2gzpJqnzPzT/u56dqKtiq+VMeUcUUt7lDFSxcM2eFLAyLmJrJgLYB++q65mRDL9Q==","signatures":[{"sig":"MEUCIQCPpKUcOyuL9Q+BPRs07Div7Y2URV+sQVTyaWX4UdUavAIgdAgJWwta5U4Mn87VVJRj31I3Pr9Dbpr7FDWjQdkra+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcTjCCRA9TVsSAnZWagAA9vIP/igeGYRkjGBATLYpvBOz\nvf98EpOGmxj9MvujDPKgVpd3d+gTIJO30hBBXD/vin2f4WXgpht85/BFHhNr\nT0C2pmcTzlKVNrQqWcSf7110Ftf+RYGXrycCVIXwGVoYbbDDe/LGEBoYBj7D\napZQQ3k881JXNMOpv2jMHFkVpsP0GEBOSmuYcn3Xf7my9nfoi82y3NZYsZ8j\nXzOvjzj9lF/h90umMqfeHA8fxRiJxeH8zKv0xjmlKTHvFtOgedt1eswe7xue\n8CLn+3FhIivHf/yNT60uiPwLK6titkhyDc6Poq2MMFM5UbJQGaxlPS6zha5C\naBiqDVVR207G0fS43AM99vcQhal8xFihKqgjsHkZiKUvU3NyNudAj7VPA9q3\nWDBLD0O0HXrwYxelOGPD/nX/Mn/XH1WhlQQ7PweTrdeYOUZqLUhlbFuV+oQh\ngqawqCrZRToC/V/idM4VBmLs6Pl9iPVu3USYF612k27ASnL2AFWunZyr0bO1\nS7wj1d1Jnpkpbj32meL2pjZ6XImoykHLuApK3J+cft+LwuOy9b6ciCkb5G8A\nT+8Ig6aIyNIcMFwsLOqfeAqHSLClNO2rx/hdi8baD72S6ffP0Jl7vjml5KOO\nfaLqk46SCvpWaRS9A9EJTrHJtE/TQTsiPFGLcyzKpP0b7MzeW6KNPXdArAam\n/gAE\r\n=FmP/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"9cf1129ac834159141ba90742a8d7f8e8348cee7","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^6.0.1","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.6_1534146754043_0.8343824122765684","host":"s3://npm-registry-packages"}},"0.3.9":{"name":"@ridi/react-viewer","version":"0.3.9","author":"","license":"MIT","_id":"@ridi/react-viewer@0.3.9","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"29964bcb84e8d40dadb5711e2ebfceb116dde779","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-0.3.9.tgz","fileCount":11,"integrity":"sha512-TQXZ8Wc04VCQ0eyWryzb6kZLR+Vzm3RRo+s6S4AAJews0z66ZGNrUyNKiWdzrKSnzEqHutFR6h8FrvMm21M4tg==","signatures":[{"sig":"MEQCIC9/zKr2IGZWFXzVlZ0uhHIQRdYHPicr1Yz2eEMYdBcGAiAdAHWDaOPpxMg4E0a0ekdmbF1ZlWf1dmKkhF2oDQLw1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186843,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkMZxCRA9TVsSAnZWagAAupYP/jvw15a3UCPWuHGq5Oec\nxJfUGdDX0WD4tAX/P+Aol9ooBqQbxPKw3pK5smgCzjHp5GyNRhJfxhQu+MTh\nP1T87MKxbFSQ/oQDVwgyK2MYYyS160a/YLgQMVPifIIpo+6d4UTUTlP0uNYN\nUPwiz2pshQjta7+46GttDSnZSuZcZ6/37LYtsRP/BOT0RnQ6JDj8qrQyuzG/\nJHuYyFkbckyDDerHiOIJyalu1xcP6eugr7F+DU4S7jDdXyjH1YXOBJZqNlEJ\nCpyAp/xO8F0D7CRzwWqcZXJVIzgyA/6Bxy7Er+owQ/6iBQwczuGZulP7XQG1\nEI4GoJz0Yto7sOo6O3POPs63z4JWqjVGMlkhNfBLarTzg+tUAVuwdjKaFSBb\n1ziZDRvFc6p49+nyONLQ8fpm2CWxeK8VXeW0+2zo1M8Hq7JC0toheZnLCod0\nEFRcksdeVw9kqdE9I5lhkn5EfEp2GeINR4xFcNs8DaJzSNA5/DIxk4xLFhNl\nk1qyGcBBkpu6vpg9sPGMM3xyClMxclVGpcxBDL+u/mQfrO5NHRAHWCdnh/p4\nIBzuRlavG3dsSQ3ecRVScpzyk/0RYz4w5y1IpFMVAAHjHnd3GtuErygr1Awv\nqwGVSs1pdioGN4ZVYA5X5Rcwwe0toyifsegoZd/5uHhTKPEUofUEKYvOxZve\nKm+H\r\n=yC12\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"7c1d3f303bb95ae2381ac044df584b3e95d173f3","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.3.2","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^5.0.0","react-dom":"^16.3.2","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.6.1","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_0.3.9_1536214640452_0.7704901119897527","host":"s3://npm-registry-packages"}},"1.0.0-alpha.7":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.7","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.7","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"1e074645faf69d4dc2068d594742c8f105701e8e","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.7.tgz","fileCount":5,"integrity":"sha512-ZqEZDdwEnj4BCojRCdLkwJTRdOevKQSWTzJuNI5cUrKcfFe/NWnf1fdzZ0UOt7Ox7Ogm0cszPEiyIXsYNW8FuA==","signatures":[{"sig":"MEUCIQDkwjkDLqquTJQQQnjMgaNPo/u8aea+0RRcKizMLkA7vwIgR3KGQ0npvdbMfwsqWzjStMa97mG91dBTBleVBAgT6V8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkNuoCRA9TVsSAnZWagAAdBsQAIRFJU2WQdC/4eNC+0Ye\n9hJdgIe2vyo3YyMOEPU9/8372/WHgNL6wqTp6mAUGNVkEo4wGRr1SlDHmDOs\n5/hFhEEuQm8eZ7XxpcHMS0CZZD43qHOe8Fi5vFW94ZQ276cg0OVuKFOIJZPx\nEWNCLAyx2IrkyQWDW6cpbpFk7VQN7NqPNgZAWzb0atUTEeDDK7GGj5MHGjPy\nxi3seWoCa/V09LQsoeD4PlWRfZFj0i5PMu+49aZwK2CnnbldTtER2Z5F/BrL\nWVqjCBZtuSXhvZF9Dafeio6KGR1Wo9y8omN8y4TWsOybXtzOtuTbCSS1BnSs\nlYpBDStWXVLEYIY6ZKc5VHMVUFHl3Ip0+Q/e7QVJZUpats/YOnLuid+GzLty\nYYscf1kxDtUuA7u2sT/qdu2pVUYg22AlCpCDEUbcPB6iVYAOQuD5m4eRHzMI\nfuBPswxVgstmvll+YPjcxXVrHbN9oaLKHiNXL8aosTFMrjZDwi1YOf3nQ0zY\ngG/Ozx2Q1ukfgDd4XWS4vL7ZBfUxDn21G0L+3jX+/38ISQzxpfCb3FWL29D8\nY7EXxr5QTYL5FwLZD5pQLBaVeluytOVliLuyN27Xg/19qc3D+I/3ROMynDBl\ny6APGJUzVhmXZDMVv7fV85vRtZ+AmXVBTJMGDaI2gPEDl/tltDNiZ9uUKj5l\nE12Z\r\n=yZuz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"03555c6fe1425b0d191c62b54cfbe56203ae2543","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^5.0.0","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^7.0.0","react-dom":"^16.4.1","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^3.0.0","babel-loader":"^7.1.5","package-json":"^5.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^5.0.0","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.5","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.1","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.7_1536220071685_0.23233919397380332","host":"s3://npm-registry-packages"}},"1.0.0-alpha.8":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.8","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.8","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"677b4ae756be9ab9e4c10afdbccb9b631e7564b8","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.8.tgz","fileCount":9,"integrity":"sha512-pHKM58tpvbTVvYUj9pmHznPhWMOs8EDBfC/5VSlFNgqkV3LIi3eIPJRwx2afoUasu6nY1otxuD69lW7iQ3Sy1g==","signatures":[{"sig":"MEUCIC+MFsRfp/ROR9pUaS57SvFdg+ZH33e0PYGrhIB/aeY2AiEAoWj7fW1eW/NwcVzrU9hvmdZBiMly55viB4070HmpR94=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":503005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmO2ECRA9TVsSAnZWagAAmdMP/R2MA1RnMp8BIZ0MpIiQ\nf3eEhE9U0tlAnOGnnuXgXMIAAma22LfqSajg+3W9W7dsVzvssId/I8IpCc4X\nY6k3cpMJQcmMP/mLXZcqhc61rclieGFeeR2eJSwBd6FaUB3dTJAkKZpcrH6r\nsiAhjevCoRFNGKOGmjmzIhZGI5jODTV7/daSf1Ajv00tx7Vvbsp0uU23YKwC\npMKEoujO072ys87rqioKpa/erlQbYE9XWr9CuBtE0wfw9cG3rdNHcpFklsbb\n+GcBMlopJW8vVlGlAWEhrwlTRu5tFQ3kx0nISYboSSD7akL/YtCfP3XeZAek\nGRaTmFDQCj7WSeky1Rz7MjzNL0Ya76+nxduqMhphmVH3xNovt0hP9Ps1Bmci\nAv0GkhwcDHh4DqRysCK3qsA2rA4o8TKXVQRL4yNDINPCUuDQkhE25/4dil3r\nEwNcOnUliJrp/SlxtQsxHff72my2j0/YCwsB4nSH0TIDtserqqFe3YMJLNvM\nXdbJmYM+IqIszetRgf+2hRHMohXwpffuoLThpd+7udLkgtQoAU+ORkfMVvKj\naAYyYngTXEL6JRb6eLvctPlQUAYSCyUOBCqZOBO6Y3wiNqh/wUlREwbURX69\n1V4rlmKljFzLKbjWlmEu7Eq99oOpW+g4WYQ2Oa5AenA+yz+PTNilTkK50sUh\n2AHH\r\n=oLnZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based comics viewer","directories":{"lib":"lib"},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^5.0.0","git-rev":"^0.2.1","webpack":"^4.18.0","fs-extra":"^7.0.0","react-dom":"^16.4.1","babel-core":"^6.26.3","release-it":"^7.6.1","react-redux":"^5.0.7","webpack-cli":"^3.1.0","babel-loader":"^7.1.5","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.8","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.1","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.3","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.8_1536748931561_0.6420643728202033","host":"s3://npm-registry-packages"}},"1.0.0-alpha.9":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.9","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.9","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"de524ef3ce10227c4ea2c89f1f274d9580b74d88","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.9.tgz","fileCount":9,"integrity":"sha512-g8cjYhUdUTGtTv9Y7vxli/UdbbD/uXikB8diY6mB3KPrb32lcGqkO3+U3J8N6CdDVufWMu8CTExfnFW4rf5y0A==","signatures":[{"sig":"MEYCIQDQgRfV6o8jztIp+ton72wj11R84JNINu7VZNB6H41T7wIhAJBy0fBvb+4faOyrRwIntZ0ZMhzEKGtP1yyabpZHWvQ/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":461989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboFbwCRA9TVsSAnZWagAAcRwP/A/jUTQ5sUb6vzpAxc/G\n99fxATg56KTLhgnIggRI5zTFvez86H4Y23+n0CHlyPS4E6fV6wBY9/GmaHVt\n34yjoqX1MfD+GTgPX2tsgQBwHCSEs1SnZH0cYszRnXJ1a+fY/IC8Z8tKn8T1\n3elYKZAkrKavCeMardXKYVKuCB6aNe0Z0DR6q+3XRO9dQt+B7gpzHTx4QBRh\n2s7/yoT4wDa5KA5pwig4EfkXgRJEdcsP1UCUTw4tljdK+HmkoZ0X7/NxQwKc\nbNqT6priotNbn1uXZ9sJkMJ4TgUoGMunyaKAOFfb/tW6YZv3k7+E9LfYsDrD\nlwVsJZCPZEI9wSvNs3wIYAZhRe291UKOANXe/oAccpZ4sNAp0yyuku8uV0cz\nu4F6HQ1xkXNKM68cCmHsVN0IqDli1TVSdBcyDJ+bLMBYjqIGSw5oIUH5P7Jl\nayDPVLvfe7o6a6ZV9LGt1P7tZY6vdEQVMfnGFvIVMZEgGkiTS0tVuiFvoUDt\nWME88lsHcAKBN6SjQugqMEiZnjvb0tgqa4GZgJG+GeHZhkvhibuLN3x4GTPP\nriE4ChFWDWW3SLoPYTI/+T9qB+4zjkG+OLf/LbCyvQX6OcK4dGyAPk7TWlgJ\nM4hkH++yCIlJ/5k1T9x47u+R0QTG0+b1gvMlmLFmQwqwU4prV957igUbd8GN\n7Eyn\r\n=0u2H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.1.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.0.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^5.0.0","git-rev":"^0.2.1","webpack":"^4.19.0","fs-extra":"^7.0.0","react-dom":"^16.4.1","@babel/core":"^7.0.1","react-redux":"^5.0.7","webpack-cli":"^3.1.0","babel-loader":"^8.0.2","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.0.0","webpack-dev-server":"^3.1.8","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.1","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.3","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.0.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.9_1537234671828_0.8064566089017997","host":"s3://npm-registry-packages"}},"1.0.0-alpha.10":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.10","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.10","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"a983af217e6f284e6ffa3b791a2405ac9b29a0e2","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.10.tgz","fileCount":9,"integrity":"sha512-nWCPANAf49RB0ASsa60/lugTlx3eyz0M9w+iXgoCo71XpC1aKJjPp/y84aErhHpsXZ1K3SYaFT4twnWDUYqzoA==","signatures":[{"sig":"MEUCIF+C+VYGu7E/eB4QHwYZcOv+HQovk0eWDppjSNm5ynZOAiEA0zpcETvlpdQezUj/07bqUtuK5aoYis4MBbYMinR/w00=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":469573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbuwBZCRA9TVsSAnZWagAAsUQP/jlEsmBO3oVtmEvA99ib\nB+LOhrw3rbex2sYzo2PXFGJaK5lgLo4rjM9IN+RetKLu7CLn2SvZ0JUPNWxs\nN6JDGbfyXK/Ma1Dy1VAJYpfNm+FHE7RTOl9pJFnMruu/H8seGFry2GcG+/6d\n54yODRay1Mi+9qddvmvm4yuoesc5BtoLkuPZbFI+n9fBwM6bXnS3Mw0ZkTri\ntv8YYi84Ei7PlCxi5ik4G3NKix+l36V5tWJpB4rU9dKKu3Pgd+XvaiM9EUMj\nooCIwbMlCMxs3EmtDg/9FlA6Sa/THgNuhnKg6asgmD4e3PHVCpJ10YDcMcHa\nlHXmji0tY8ktoDUEduXcEtGZM4bJdHe28fYqBdmhjhbbcWGa4HxJvg/cQkzG\nsfWA1PdbIlIATPG4s4lF6Dntn32wHV/vqIuZyQ3+3f31ftnn3HQPS9jazAX8\nOP2wt4ZbeUwTwhY6goOpAJwRhXAyoO5Mr6YpnJ4DcViBSLVHErkLYlvPEnyj\nLNtqzNhTE4xq8m113TZiq2D6UgQ+aNyZCmAruTCoXuoypB1kwId/PwhHH43U\nhqwkQCx/M1mpzvItO4eGqsRI4A91QY9GE/gYMAY1msf5v1XNmn9pAvEFSgGu\nMEXf+CYS71anxw1kfHaRtUwtUsKdDQdlujm9izxZYRBn2Dew4tolpACkh+I3\nBETX\r\n=LTdO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^5.0.0","git-rev":"^0.2.1","webpack":"^4.19.0","fs-extra":"^7.0.0","react-dom":"^16.4.1","@babel/core":"^7.0.1","react-redux":"^5.0.7","webpack-cli":"^3.1.0","babel-loader":"^8.0.2","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.0.0","webpack-dev-server":"^3.1.8","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.1","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.3","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.0.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.10_1538981976977_0.2758457695437224","host":"s3://npm-registry-packages"}},"1.0.0-alpha.11":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.11","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.11","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"fdb6e61db657920fb3bd6c797c901c6c7a269829","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.11.tgz","fileCount":9,"integrity":"sha512-gTOUmtQJyIbvLbN3/elSg+Szap93zVFBFkYYT4tnGFKblQPLRzl0xFsxe7gCixJJl7At+Z99k3RGKeCL940WHQ==","signatures":[{"sig":"MEQCICbSNXrLpqrUU8YJWz3XJEMD7UYSFfdWBxTpGaOIDwaKAiAfktev/Xnquif9XyNddH/SAKT03OabZrTR9MnXrTcKwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":469711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvWRlCRA9TVsSAnZWagAAZQIQAI5fYaUpAiD8XKc571Qf\nkZUWei+YpNMpyIhYSY+AYt63zxZmPyKfdKCbUZK73u2dMBzcrH2QYwsKkEUb\nZnBY5eE8+K88o1n06N9vz8y421pzIgHNdjZwzdMvXSbObppH4zDbh5rYwGNa\nptlyh0GshcHZOobdNoX7E1645FeB/sXAMg8qPPrMNksHor5cF9dnZSo0GCCK\nDEhbLxMyGqTMnu4DDKiUylcSnTxsJWlyv2fjA+zz0I2teJG2RJ1e0B2/1BbU\nzDhfB/swECEERq0k1rnq5WUrnBxRum4+Ms26psYK0agjywqaIWYW1mtibaAp\nOVbKAGZODYmARDwOkw1BAYd73p0jDYLewzcxPlqNfN/HhyjDUYelB2dOmHG8\n/mNWbRaEFt4WIfYfvLLV+WFNefoeSJ9v3foF4X/KxBdvnYxD4kJOmuJCGiQy\nDBrDTbetFE9pXVrTwbu84XQbv6G4VneTOXzq6mt2Vu1lrkdQPUXfpZ5AldDg\nogGL8ARB/dXvsq/y/Ey8nf8cR1mdUJLZA58OePI15khaEmb5ysgF3CK4dU7f\nROQ/d1qR9O59/Dxl6Be0xwuXoScUAxvelLFg3f7EXRafnq5eSvlJMivZDnM/\nJwafQDBqrR6vA/noOJKOJ7oshJj5XFp8RrzVKI/zbHXCkgj7EY85PejEl1ar\nMPJ9\r\n=SoDC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.4.1","redux":"^3.7.2","eslint":"^5.0.0","git-rev":"^0.2.1","webpack":"^4.19.0","fs-extra":"^7.0.0","react-dom":"^16.4.1","@babel/core":"^7.0.1","react-redux":"^5.0.7","webpack-cli":"^3.1.0","babel-loader":"^8.0.2","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.0.0","webpack-dev-server":"^3.1.8","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.1","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.3","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.0.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.11_1539138660742_0.546946286349711","host":"s3://npm-registry-packages"}},"1.0.0-alpha.12":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.12","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.12","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"6e2d9df8121990b71d68fba6ce2dfafae035d85f","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.12.tgz","fileCount":9,"integrity":"sha512-oeV1qzatllMloAfiBWxgKdNVlnRBC2Nip3GWfVavKhe2E8Lt42JssM4ol+/Vaj5kI7eqBXtgPhDsfUvmtdGnMw==","signatures":[{"sig":"MEUCIFCdch/3rOTckftWYJkZeT2U3it+TEMiwZIkohDEra3BAiEAhH2lbwWIerZ25P9w1wFHwZaRZUFQVC6r44u2G5Gnnf0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":700403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDhtqCRA9TVsSAnZWagAAadYP+QFznFb7wlZXKVE63q1X\ni4fV9LesT+JS9n16/G1PXZEUEJ/YHN8xBc8pXLZOxlriLOx9q8zEizmC7jWd\nkLYY1oYideV4o7Rxcjwl6LLP6vCCEiK26vwq9k7nNUCdFYpabeKuIG21ffbB\n8FQPIabkkLFoX+iFiYFZT0FGaquADAxhV55UbHV2XBcq7ErMw1E7L37TXsyq\nDoyBt69r4oNaE3XZo1Jepua6lb2mpqD4rpA19Fo7TmhH67fzTIem768wTe3R\nImt+pK+LCmcR6AXu8k181u+U4c9fS5WOuOEefzuqG2aON2Lt1S9CZvNVWLts\nJOqO1+ljCBUnWbEYgcFWDceqjHQNxdZtgXLXCk6aEWukPXx5Sb8NySZqMLJi\nLUVEjAMSBo1X7XTnT6jQVhtFEp5X7XWkuOI1e+pjqOQbwtOu3MKVNqbR3ojd\nsZscFD6/HjSR/iV+nBYkPRZbMGYf6t9WuBxwnaZ2uIb+Vk13mnw5uXHKLYlo\nPky0m3If8QdEMV2suP/j1qly4M/Y9vRElZDO4FZeKarnZJLoKaxCHCRXKSOy\nmCpg2HWGgiojC14jUP5FPEyDfwrQhIFyzUOtcvRtco3iCcXXulOweg/T/1zS\nNuOYpJx2rMB9wS8lVBWz2cVsm1CTb9OG8jLA7FoPYNXg9IjYKHIuVzhyfMDi\nyTQG\r\n=Ek6y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.12_1544428393250_0.9450515021337889","host":"s3://npm-registry-packages"}},"0.3.10":{"name":"@ridi/react-viewer","version":"0.3.10","author":"","license":"MIT","_id":"@ridi/react-viewer@0.3.10","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"11cfd9c1b80fbc3848611275fd2223da535cce4f","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-0.3.10.tgz","fileCount":18,"integrity":"sha512-AVMgPf3Z3FhrgQK1TOckRky7WBdeWayrIlbJGlHm4k8HhdlT9xZjr+7K02IseS8SILmrEcNp1A2WMQSm3/tj2A==","signatures":[{"sig":"MEQCIDJ+3MUUt+4umLBBAnhoFXSU3CPTSyAVCtc54mGkd0fTAiBRRCmRHkA7PS+hrJJ0xW58VQB1tYUIynFuFrS0vwBDyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":620260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD0xzCRA9TVsSAnZWagAAy/QP/1oAziBzrSSTczRNbdYX\nWaRK8RYGqi9rgLrh2FpFKXOzkWib+EXsUZK5F3bToEOxfDTQTBFJI3flsyGf\n4Orh6aa9I7LkOUqk4XIlQrwJyPXnvaVOEr/qqksi861MKaqikxKxMHPkJ8b0\nV2NF87doHMBIutrdRVbATxkL95l7A5BwAsAv83m2XAmvR6iBAQdno0QMCIjx\nej0m0SGBTs2l9KGfmhzUMdlUQfy5ogJz/arehjp8Yh0vE1pMrLgUqCfz0oI9\n2sJiUjpnVBKWZp2uNKjXTyraXA2/+4cbo1X876dqxGFacc6BwwLhBcoLe/mt\nNPABQw/YZEE/vwLdDO3K9aM3DSkZ9eBm7pgFXGnTrmil8mtmXi9F/qWZ9Eu0\nn+pNEveersYaQbDXVTTqqRBtqbuhTaPE/zwtWVpx3YfESz9q7Lv6LWtGKuWD\nFwYPkIP+85rHHFJsKljdr/y0xk3LXXkEfcbYQgEhaWKFtzX9YUyGjxJg8Z9G\nNgxE7z1imy8A/xkpuoEn/Si/B1UOUCbblzn5PxFQdRtEUbSsKBSmpt3A/+9u\nw4Gh8Y4EDBols4byLJKTj0c/yR+i4vLlcQVpDj233Mha08OY2/olZBgHbfe/\n3+GNmRuEKchxuCEAS8wcjJ5Nv8T8ixsDy701ebftiQZAB4OHD6CD9qZ/O6KP\n7PCF\r\n=gD3v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"2f1b4a8f4bc8b05266d3282d38eb5986963a5fac","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"10.11.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.3.2","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^5.0.0","react-dom":"^16.3.2","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.6.1","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_0.3.10_1544506483203_0.4988627624942654","host":"s3://npm-registry-packages"}},"1.0.0-alpha.13":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.13","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.13","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"74d6f04353abacc917a71beafa208533d25612c4","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.13.tgz","fileCount":9,"integrity":"sha512-YJRN/NXiHqgWO9XkqZNQTaXnK9R3mwEv4oouIIJ/a6XbLLmImGiiGe3Li1euYZCzRug+w1WNw6rMTMTlOf+MyA==","signatures":[{"sig":"MEYCIQCKj0Ocwa5oJvQxQ8hyk+PRhAMs0NZV1VxCZTqlJG/nPAIhAKhZQEUrgdsaWiqBwZvVMAl3Z1Vvowc2PrewAKMNPl6e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":700340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEgnQCRA9TVsSAnZWagAApDkQAIDEG2tonKakGxgNaxsY\nTm40kFVKn9PmyZ7gLLxGGzI8bF3+6Retf3bpIZ+C/HJ4DdBsb0SxZ9SuWHWh\nW+e4teh54KRRJUhNE8K1TMxlYdAwK11CVaxrg9e/DJxq8Vqq1lp9btXjSFEP\n9AVsdP56EeeXLDbcrP3DjilBgdbPxZvYLYI8/trx4iixyjXSAFryigS4T4bx\nDZ0N7nqsFTnsOkxuNmsWeEqtbFeJW/EAYuXTIIR8MrhTOJqC9MPVo+4/ke7O\nBFCIMAwhf+HtTBHVDn+5LrjdbluqOlCjEHOiR/EkOhR5qIrkL3/IZ4wBvwed\nV8sJD1wWJDuVtF9MJ0StECyBBH3+qFFySP+eLT9B3PNqsNkoPv58RQ7YpZZD\nFqRO0bsfVGgbJXW7K74M8s3rz7xDx1rnmf0JNvdy/7gOjidWjtvcZtSB5UTg\nVlR7ltKAu1t/F/18eENuqj5zCflaq7UnZcc3ftK1EBgiA2XO0fHzxX5cBjLH\nKpDOiUFUEsUxNMGt1bLkngiBx2RoFz6yuwCRwF1hvMlhJZ2Y1FFsm3T/mMi3\n/uM49WCtJSuK32nvGpgT8Q1Os2DKIeYKGsavOZUCFQ/x04MMuEQeFeyUIJWR\neigkaFA7gHXoJnXDzuNU/SHYer3F72J5xUhM+H9xpXu4/hYp/CAOARYtTAzu\nRBWC\r\n=jz4w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.13_1544686031406_0.3670116209509775","host":"s3://npm-registry-packages"}},"1.0.0-alpha.14":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.14","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.14","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"05387ea93b7acc9eadc606dbfa252ab052d44f49","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.14.tgz","fileCount":3,"integrity":"sha512-W/oyNhDupGBuvcbsgPnJwe6s99nIh1FyyuizMr5jXsMWxuXJWdE8mXmKrPY6IhQ9IJjPJqlMp+PtSHcBiW+l2Q==","signatures":[{"sig":"MEQCIB8c4agqAAMg+CwTT/+OBNfgMZAcMKa8JbQKsNoD27TcAiAuUJm2NBPtk2HcMKCpqAH2z6FlZzlTeEa21IPNaJElMw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE7eECRA9TVsSAnZWagAAsAQP+wTXZwT8J9qHfuekgigk\nLGsg5VZetW5HcsDt9cTL1402K3DvwYF08lGQtpYYNWIxXx8nuLYhDHFecUrd\nThZ2qm0kXCzLBJfk7ODRevc5conA3nBiuFnZow8zvGj7PzCAs5+q15x+tX+8\neKdSq0e/DJFQH0pXKk3qzQQdwqQT4mMjLk6Jp7nQ2Jo9QE3rJ8PG2LNtWLme\nNfw8AV6BGvkjRBoQtyNXsbUAHodljL/3o6hVZfUaCFGC/lH3PK8NDYspgYEC\neJfXgeXcrsbBXrLDJDpbvcW15REiaH9/kGodxC7HXPBthzJNN3C4jFgBokhX\nS0xgDCtYAKYiYi8Ez+mo6vf8u1JUkERMVKSKPRcG2U6aNBUH3x4pWej7xMAs\nmZlFPYMXErPyYhHH9D42meFtZwOSc4awmDyxleIgPhPcqW8e8KBeJRjMGy85\nvMDQWVyGz892XDwGvxNBzTLLZ+iJr8aUVxntd22TQ07/eidX4VXvHhAjNdko\n/+B910lmyuKuGGSFzm4xBiZM52rjnXF/I6Jiz1y+AJEiAy1r6lDRdLUZ7U6U\no5s7AXeTPmfcad9nxlMqUj4TNkjKMYzQYxQi6Egq0E+W1xoAyrlZVwBR/ZRb\n05maGDrpvAeKgrCMkG9Wy+5NxSBx15iLt6w04B1PHs9ozgpXxOH8OwescGg2\nGQqD\r\n=xMRh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"4dce3d8517fc89506038772f2ba196fd6d342e22","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.13.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.14_1544796035941_0.9907410077375078","host":"s3://npm-registry-packages"}},"1.0.0-alpha.15":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.15","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.15","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"2bbb1518cd2ea8c4efaf60ee5d2d065a81ec3e22","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.15.tgz","fileCount":9,"integrity":"sha512-YCtlwzPzBH3/nRziA/oUbJtGaLFfYbzB10wNLdIYJo3XlKhu8I++F0I6M3OFUncxjYbxVSuZgW7EecUBnyb4dg==","signatures":[{"sig":"MEQCIECVf+YLDcOg+cA2pz1G98kvUoT2RbN46JSH1RPbTtpyAiAf+CiAkCiMD5JWAGrPQ+IcTW/FqS/1bK7OqHX7w1bksQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":710430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFuCgCRA9TVsSAnZWagAAfiIP/ik3gk6nKjA4zGenmeDG\nuRoXZsDwTP+s/UBNzxRxYUGoYS7i+9NQeer/9wSDkcyKCcXBe/mWvojJ3cbS\nFliuzzIK753uwii6EbjSQFywQGZnYkhyye9Lsjc8oeSzjRpzQlVxooSws9s7\n8tmBuVyPbgM9A619uu0//0axRYjX180V9nMB4WjZvzTI+JDU1/2/EbtWzdk9\nbpEA7FSeREDlRI5TIV/gROPdyUs70Wd/iLiF8adhsTktuJiUY9SRy3TVXrUv\nXDXFcPjaD8OM8e21Ku/NcPwVxsSHLnQF2I8Jh5nswrjFUdUtNnd6WAO+SmtU\nE8c7lSZ5zzxxNbswJLIKt/4ZIXkueYx5BBMDxbEPZXHjflcU5/fnddffJuyT\ntfu1ozue2pT2EZbhOAYrtmvjCXdg0GFJrHrmfdjdotcs8OhhXN6mbZ2AhBrp\nVy0RdDPIg6wWjOW3fXOjHxJxEtotpBy+8JXSBmSPyFOiSHVHf3r16QH2vkKm\nz2daj1ZSokFUAJk2GXN5mGwoBuoofNqqheZWQm5oZeSZDW+nfJw0i9+npl4r\nyu8ME+RIlXyUZSFRt3LCjIO1WVTwVtbPPQWj8ocgYNujTpfnPdz+tbrSI7sj\nG4ufH6YGA9MovRgrZ2ls79WvIUdVLV7XFUpfzRuG1yXMH8vOoyjZ0KrFi7jH\nHGdK\r\n=oHIj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.15_1545003167294_0.5213378039623264","host":"s3://npm-registry-packages"}},"1.0.0-alpha.16":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.16","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.16","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"113c792286eee9fb066ce23192492b6fd73b1f81","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.16.tgz","fileCount":9,"integrity":"sha512-I78nA5epTIfuw1g5pzGbWXYB1LshRDR28iQnlJ6uICFzi8fZipEQ2DCp5xLzme0CH/pZ6nlUiuNMx5x1C0Pe5A==","signatures":[{"sig":"MEQCIGgmPlBlNvjsNV19bmjdhNQmcoIsojpMHfC9Wqz8XZTEAiBgo5edK/gbmip1yFsmD0R+zFcMePOYcFeQCC9VddZ1HQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":712345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGX7WCRA9TVsSAnZWagAAYiIP+wX7gpIsVIm07uqDoKHR\nO3WLdbZa2im8jhe3dMzkDG3XpCFdvual1SS7uyiRrzSHEvTKnfyUcZ/xMxtt\nTC/yJ2gbKPJc8qSlDa5Sg14VoQcE6FksuhH7IAycV34uNDfHF4goB4AoFvyJ\nvb+NPB5G9E12QDmeL/ED7lMS0s81H560tbIPDZEFL9VG/bpOTo8DhE4OUeA7\n8TOC7FTBKoAHYrzXL4AvB+7IS8e2QJBklfV8reVMky/qgv6KYTx8ghdsbU9H\nsYXET2ayuV3LUkqHb+8+hRq6Zh3I42BI6oNI2LmCd4cewe+YIEi5Kbnwyyfa\nwyBnmSzFheP1GyxvJZdLgmKqc3kYPaZQkb/WtmbiK8VkM4niunusEHKjbvvq\n5DDdyXXtOUuUQzvm9TaPOexyg8e/Te++8w5uyThUWKxXhgvgd4rFqWH+/N6m\nzRCCHe/NxszoFpJ0rngEydebp/a2x7dHwCMLyoSZIYJqRnP+FPZgKVzElwQU\nZLvO8c4qFAjUXWpngoCVvvtKXN/ZX9P3JP2ImicpN+uhTYGyr2AT3C+dfjXE\nKQjOSVwGSSp2hLn6+1EDzqThIrJC8rlaUhFTZBwNHdt3BN31L0Bz8lz4I+tQ\n5gTSXGUl0SqDdYPrtjJI5Q3kE2ttldx9CLZzFAj5Rg5Z+/qpPbemA97u9Apb\n7tSY\r\n=FbM2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.16_1545174741802_0.11104967369398655","host":"s3://npm-registry-packages"}},"1.0.0-alpha.17":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.17","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.17","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"da57480732abe560aa2b7c9c3c64a2c1d9339ff6","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.17.tgz","fileCount":9,"integrity":"sha512-g7qLRufh/HynY8PNXozlJW92uE7EtCO+9bPxWSJHLXOwi2JufX6HE4HMFutClcd81wAn27FwItQ6lXMTAxI7nw==","signatures":[{"sig":"MEYCIQCp0/zRDRnnNiVkeucGrThKBqb6HEqzVcirTJ01ijnazQIhAPn+3gVrgOLhlaKv53BNFcABOqX0CtzC4/OsxlvNVq/A","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":713212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGuwlCRA9TVsSAnZWagAAg3MP/RxUgleLJDusH/J9Y/aP\nlYXIwZTg/YzNJqB45YSh2t613aOBCoruNd8yNyUAKySchBVhPsAugKUaPNa7\nwurSn80q0N5AGLaZj7HVYToxukrFtbzWL1AWkyZCInQ+Det/J0+bnScyywF+\nJSuQPaoJWzfpGtgAU5bncPHzuAORMIQdXe6RDqU0deX6hNtYjK6BIrC67OLz\nFYO9RERUXeZZCozzoLDXUr79BHdRJ8Jh6h4Htsla/aoozY01SoyKZh82Bbop\n1Q29Gl1QBjgYx4duCphnEysd/t/vezXeYRNfzTRnKuBnbrdSAXSAnKEKdBkQ\nQhxC9Esy3cafDBczKsBiHtB9oYl00eT5XxIqCT2WXcGrHdgmvntpW7WuyLAh\nIWwyHyuexczx+VyvzBOp/FJQbYujFBGfTHZWLt+wMWc8pik10ET4yNLli6MB\nOLLcYHzsUyaXCW/OFET/7zks4HboCrvhgQQuEIlcYWdh5Tw5Imgh0jQJ4OJn\neM5hbRwXTLd7HIRPTV/8wzbvq4QTyefJzmpnoaxHuCukAObwJ6i+AiZ+u0yS\n+NP6ew5iMbNSq+BZ4V4B3N4avCCdJZ1lsKZiQQjVFL4dwh+aM3wM34Ef5OM2\np1GLqMG9FLIOGZERdZ5JpOHQ1PkvyDVo8L8VP8dfFStws3bdHGlHSnAyeAgK\ntDwr\r\n=Ev2G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.17_1545268260887_0.7057437644037616","host":"s3://npm-registry-packages"}},"1.0.0-alpha.18":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.18","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.18","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"f0bbce7e3ca376d2dff5702065e3d2230ddce514","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.18.tgz","fileCount":9,"integrity":"sha512-aPEHt3q1MKlG1xN7wKfeIg66fiaZ6QoiYL20Q4i7bvq/beM9Gua7gBJis7UN+4dg4/gg+sItBzZuRv+iyA6nQA==","signatures":[{"sig":"MEUCIBxqnVsF8w8RfCRAsNkUgq5mHVpV4sZ2Av1kXvaQMoL0AiEAupcrHOWE1z+dmJth6yXXL/gW0QQooso/u40WpcXiE2g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":712894,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHJsgCRA9TVsSAnZWagAAm08P/izw1GLKulLSx4sXbo6j\nG/+CveGjfCsUcJQHOelp85q0mPz/hQ1669oGCgjVB7ViSbYDUoYuZhLV3qMm\nQeuC3sO8yLCiO3LtHkyIV2G2Dzx2eedKPwok8m8BcaXaprl0+Llv1OP4G4Zq\niM0cgIAxkvjO3+bExMmtQ/2ODSmInjbDCukQKmcafEfYnwn6qiIz70CukXTl\nweWeVe6t1eOrKm6Y57MhF9Y64idgWVlfDlTrRw8OVCxxeHRTJRkD9awppk3/\nU4dugEPEIjjbom8OdcOmuvAmF/OrTJHsjDXy3xTMSsMMvtfgXeAbJV4XMTGy\nNng18oEhkifYEHf2eb4bkcXsQbUr6rqDSnK68BRhFLSoEUEdrKWRAybHDxnC\nA7nZOlG/FpsedPdM2UNaRYXGKoyY5SLqZj/cxUWceg0CE9XfLAoSpDIVryRP\nqheGy0umRhzqr3US5SnkbptNpd3Id0gW6FeltamL+XKrzdaGqSFetnTd6gwK\nzhgXIHRxjNlIbBPe5NVA1PRcjWRHt/IQPCIAoCx78GvhS7H3mm6ioX/T0xGD\nxZ4a/DtUop2Aueub3F2cQgwk2kzQWZOhInwSrrlYzFFqyFNXS1Ao4DeTv5ad\n+ydXDbB/DV3MlQOLtRqWZ8WbSreF81Q4pH/Siuab/yekXn2fIUjKEdJNt6rh\n67Ws\r\n=78n1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.18_1545378591982_0.121776092794039","host":"s3://npm-registry-packages"}},"1.0.0-alpha.19":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.19","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.19","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"e874546f14d1b9054480f27ba19c59b9574b256e","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.19.tgz","fileCount":9,"integrity":"sha512-TZkx3WMChGcPO1+6WhzNre84rDKbBuGCfn1+CcfdpALgjAb0YYoTvoR3MIoheArYl72Euo+Fvio7tIb/g6LBEQ==","signatures":[{"sig":"MEUCICZzASE6MHOWACzTYyLNQU0kSrl9aapDwrBsQFZevfr1AiEA2r/JsXr88dVfTq6L6Nya5BcBxc2Jti8gVyGv0wAyc90=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":713063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIHg8CRA9TVsSAnZWagAALrwP/2yw+ifCbmzVROEPQbix\nL55bQ3+R2lJbjjKq/9bwa6pkKCmfuPOtfcQ1STf+LlxLv52C86LFNCd6PTG5\nzNsOB0ZFUo6VJWuzcVQKpPLfw+nj4yKLHDTfsZjnUCD1RSWwcdGeNAjO/ib0\nZufT5jWhf3OETbCBf+uhXHth/8rUrjPB/PA8uat6ER3drDcE5spu2XGfjwH5\nEygkWuG+2mmv9uMbk04p9WKrHg3MHA0NNGyX6b2xHw53UYXdvP+KjGMxJzNH\n0EqFQBsUEm1vRmYHoUIEX3z1bUJvx3M4sEapAZENQAWozqlg9DCEzgXTeKmV\nDaDDeRKQ+InnCJathyvIeC4MNvYaTpwO65+c+OxQKha4n1kK+fyAvxe6DlKY\nQoMtlorNJq7LbmS9f0WQynV2ch1qsW/CaTpMf6rW9PUvdswyYFso8RgW9bXa\n9/TOr9OvQZfKeP0I+5tQUVPEzabRinQTg0HOoVAcM0+L5SOQiBa6AOQ6eU1W\nZIxd8wUu/USL9PxV6fmpDrfPl38+zgJY1uJ1ZaR3ggyWjhGqATlvnPjyQcRn\nKnGiL+tDxIy9uHRT4jShQS/cxTvzy7MivNz41xUcQRNLxb3clh8aKYfYpptX\nkjb8noFAImZftElkcG5xqWlCgmvD4V9DKxJAzeezTKuBrd3I73pZA7K06wr3\nacw2\r\n=lgdD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.19_1545631803978_0.945170374410665","host":"s3://npm-registry-packages"}},"1.0.0-alpha.20":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.20","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.20","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"990fed08806c1fa747f166396333ebd990a5b5fa","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.20.tgz","fileCount":10,"integrity":"sha512-uLYDFnxKbPMXngCXJy5rSz/hdWl7a6+2MGTl+s9sGsVCGVfF+14Y0dP04s3Ssn/wqYWMNacnkblwDoH/XNNy5A==","signatures":[{"sig":"MEUCIGNwXaykpxOzfFzL8OyVHyMxNTPpEB+Fx5yDnJXl2dtYAiEAu4zlLiqMumTP4XZbbjjEE0cJQFvJ6BCBNkVr/nLeQt4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":720899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIHn6CRA9TVsSAnZWagAAxJkP/RRZDJrCUj62/Vvz5hsY\negp5QvWqKBSkno7UQffdReLrMCxVLVyVce9anBDY3Zt9NjanpVxmQ82Ub9wa\n9PLkAySo0U0hBhMYbygVEzdXTfrZe+XDLT2Dulo/QWWNvXzGPuC8qr4qftKP\n7esa58pQ2MGRESsDVtM67kinotPkL1arDeHbUUKcW9O+SB2tE4MRCzzqZ89o\nGQwif1OqLnJihGbABriZyrybXoSbMz8Wa24wBchLEY/JU9LwrLFTdnX6SG52\n13FvE10/ssaSQp2Jw0PAP5y0UjCyWW6kWTLSPTsuY3Gl1ghW+Q7hbmjrGhaW\nu0em9aKo6c0zed9qBHwMsPAVyqafYHt0XjVLt1kN2i8KHnE1wpE6ZyL4yy2i\n9aUu5UI9PIOMhWw6k6hvb1QE7ySWjccnu11/E6etuLI1v5fvBnpdVcYpxFNX\n6fadsZjuBo/0Iuhz1aiU7CdRZBVUAYls7Xn3RK0QYozZm5JVa5kS8bYXs3T+\n3G8HOLxUR73vfSaDlMsBQlrFBqYwNSeMuflA1kGIEvUTGW+LNx+a9VEC+sEf\nvpqX94ZzcUYSUARUL+TUioIIMtFV09vc1hCJJg9s2h1aHKxSIscAWOdr07uN\npGQUyhivtmvgtul6UWBkW9bGYnb4e5IqlEJISEE7juGutGzjdTdcJLDyPYu9\nLRzr\r\n=4nwA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.5","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.20_1545632249587_0.03402913383565176","host":"s3://npm-registry-packages"}},"1.0.0-alpha.21":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.21","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.21","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"c172c77b9cd849b7f83df83815af901da68aa2ca","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.21.tgz","fileCount":10,"integrity":"sha512-06rCh+CLTVlDPLxFw5jQbhCbRCrRpZbHEBJjBYS7N1FV/SJtJOgQTd7gMEQE3myx+asjnW94JLbt+obVYnEl/g==","signatures":[{"sig":"MEUCIGiytiStH7vs+is5Bmv6CO1ytQ+5pyxKZQev1kPVnCDkAiEA7Uc830Dw3X1a2Sirf8H8sGm3NRcTmVY15mbpapdFQT0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":708588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIxj6CRA9TVsSAnZWagAAW8wP/1xx91U39RpCPKu0KIQ5\nqNpJu9hSptUoWOLwNs/iojZcdY3sfBclK9tl8KDBQhCl8b3cekCSD048ETas\nDbLLLBjEOgkn9pXhLq6fCjvp2b6A229n5CZXCyiWEDmrseJLLyU4UAAZB+UN\nR+OjiV2iLr80OGtVGEqkEF4TM8XcE6upS7Lk8xLYCC0J8Avw7fGGrcIvyN62\nB68WinT9Xeop1oRQnuYYeldGnNsBcuFdajUCSIobH260WCRJK6Y9IbSEvEKu\nuWuuJDIsn5zToF0GjUDltRpkWxUwh160OWF65ahoAZo3BwJkr5x3ldTuEhLA\ns1eWmeJi1DzTr3X/yWYSZjqK57HnMmmOxzCfOEYDRmr+O1QVA8NTNXgWedub\n0op/8R/Nb1oZzAHH6PCd218BLOMKWGoXPACLsJoNFrac5R2hpeEaXNtAnBSQ\nOseKQIPDzNJXc/1cuipZTZ7qpEN35baKhq+mGX0EP34dqaJfwh00DdnIOiG2\nWgVqQn9xToifFc1KnnPjlf52GOG0cKt03VY54aWS/d/8wz/G+11oPoN6rdHH\nxzOH4AeniOECZ9W9bvdP+C4XaCvFLdwUIIWTw8pBJIpwwf9HJX2uDXWkhyuM\noDmxsTkPrhmvF0s/Q/FCs2VoXx44qY9lcOqceuqKCOTGTXLlOLfTxgF7HqKw\nLIwi\r\n=vDc6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.7","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.21_1545804025680_0.0979050453980812","host":"s3://npm-registry-packages"}},"1.0.0-alpha.22":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.22","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.22","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"7ecbd40c68f66444851af5bda3a1700f310942da","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.22.tgz","fileCount":10,"integrity":"sha512-NSZjPa1eqAT4dLViAObQT3QjGLEQrjUjq1QfGADUkLwerttjTg+eQu98/IOv3Ox9HHi9R4NfNQzM3h4JTvw3eg==","signatures":[{"sig":"MEYCIQCamVOZgMZBdjlW4fkvT0mf5he4FKyeWF2LYTqETC5LHwIhAPvlwIu7KQLTZgCZckN4DiTH6GNuU5bVyJVmQdEc4L1l","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":646470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLra9CRA9TVsSAnZWagAAR10P/2vkBrxgA3feYXC3I+ro\npI7i+2yGTbCvJFhdPK6RuFyTN8xbwxukitTfX1V8OjWUj6fBLDWBUEnzW7YA\njviQm7MKfHFwl94/WgkryHRezMxgv7Wiz6/Dt3d/DV071B2QYL5rcbbu+L0e\ntDlzgzpHsajKolmgnmuyKLShYaTJ8arW/4OT61Z6MBh6NmPR/SxhOGv5ViIS\n/JU04uIkPDigu/aiK2pRKTiPUEnvvQmSvXIQv88l4NTIA6VkxGJwalS/KiUS\nWYi+nUWTWbNN8aCXqFsYxRZqO/XzwaaPyVa/VmY5m3nLIZhHCgUk0SICVxW+\naVF72mj6J27M4FcNzP36X/zmdBYjfejOz2uNLtgCFGjC9Gzz0BjBwNmIFw9A\n52mqPhXeaYSd1Qqr9a0KnV5ULdlHTxMu3cebpid2wNrGfcPu7A36ipG83R4h\nhOJFkt349pdfnveWXdncMEt1iCq90SC/lGpcx1o6RaiSVOgBf2W3aWb4xpE+\neH5OdkQgVzESWbrlgHNaQ30U7u77Uf2I3//+W5Nie0MXtAt7KuIAK29/XUSd\na2QM32r1uSv4jkCqFs4F6KGyiMJjAGRpGr4a9bVxqNX0tUkcW1seFQ6XTocC\nAhHf8//rOGjjKwwElQywSia2ETAlSOsO8X5ZTDtT03WROiOsa/4+1t0zhbGO\ngSjb\r\n=/6Hg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.7","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.22_1546565308974_0.5000287552087634","host":"s3://npm-registry-packages"}},"1.0.0-alpha.23":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.23","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.23","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"61d5f81f6e1b5f6b3ac8b5a9ecd057383c82459d","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.23.tgz","fileCount":10,"integrity":"sha512-ENiFPOzYYZi1QoN59NAjBppJuM0rhUwoCrryumAOfrAZZvt5S00DhQvAgYp/YjCxJWTFqwzAKmfgxeh6Wvynhg==","signatures":[{"sig":"MEQCIB03Mtzm4Lf0x4EQNMpSl+XgQ97y6d4WeX+UoJUgFioMAiADnLr2vgNGZ4rV6QXLvUZ+K4MI7+QjIxXQhuLzp2J6Tw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":649469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLwKwCRA9TVsSAnZWagAA9D8QAIrODMKFWf416Gz3dVDO\n8YZC6QIo7XW1pthcxsqrPEbh7LQ0KgaAm+SRnW2n3TE8RA97aSDzLf4DNY4r\nMrFMcJYkrgrNSSzvw0cUDuZJqMfeui2XEd9QO0Sef+0jLmpqErq4PFj4e0e+\n4ndrkdK3QVXRtbuENgpJYI4jNJx9okQgq7LEowPKVPA7ZqQGjgPVG7gqdppN\nOIR0kVxf0wljZdGhIvL42XXKtcx5jrPnl6OWmdcVyJ8cDoa6PUe3CtYNGUvz\nfQfln+NVzs+gDX+xAN0BYOxiogFa9XQgaJ+ItEsnEVm4JlX85lmboclODp5E\nkr7rcSYMmr7PFVfairiehjYj+Qs7hWHB/Nm6Ms0HrhYrksDWyCAt8Vc4Dk2h\nKvbrW3JUY+ybfQtX2v/kn4QDdJLAdbreQZ597zp4Kb3vl85ds+njmeXxeM4b\ngSI83yFSEyBYZZF3OaCz2NLVaKNqdiXsSEplApn12HnCHj/b9kGOtTkyDU7j\nbn7mTw1ACeQRWaR5bNs+MOKHRzWHVW1BrwPjTu39tSdf2up4HKaJF1Zk69Gi\nu39Bd+gyUp3zSl3BQBLlFvYQkm8MZ6QvhItsVe0xB5wREzCbsqddjb3vTnj2\nJspBRgu/g2t5wrA9/tWl5qsaP/w6ZHCRSoMRSdbQBezstV3xQT64rKMNFsuf\njEBk\r\n=z1IF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.10","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.23_1546584751676_0.5501586517771229","host":"s3://npm-registry-packages"}},"1.0.0-alpha.24":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.24","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.24","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"ba09b7a143ed1a34ad9169843ff283f262923d6e","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.24.tgz","fileCount":10,"integrity":"sha512-bUxwkPWIqeQQH+DqTyTl5paSj8/WxeGjttq2alGnnj2BBaOE76NboyaX0MvZUS2zP8MpeiTXWyCdVaRdhwN7ow==","signatures":[{"sig":"MEUCIQDxdw8CLDqtlDJ67wBAHRgWMKrfXgiFkzsPo6iTN9h3zQIgOoL3CgMyDgtVpo+OSgqQP/GRS2zd+lByhESSA65vVJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":649856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPY8UCRA9TVsSAnZWagAA/f4P/0N9alePFweQHyb/9Nlc\ncfMN6vl0+iXQFhofuJWb+s24jh/7LbkDZV0vEPfiLstPX3Q2tPtRypjQcmvb\nfe7C68K5lmLCHDs20kWzjvxdtuRPZ9miyjW5vmmA12Ll6bkPzNRdOmCIyUxH\nQJWFLUWQZXfK8OgUYtxYAghJ07XIUyTk2JbHL1DXwYRlHybOXnnP8rRqtUy2\nct1321psX4wm6tpLoQ88xbWviC0hRQRZ2NqYMWd+wDzoiK+nPVQtXT4t7d1F\nSUqqd2R05GmgRNtNZezLVAzK9stbNPVE2rDszSTY0YbjiJp05tSP7YR0z6yo\n/GPsR9GiU6ZT5hxPGyhRwtOYOQ9l030v96ZQrHlVtYQnfAWWHxoRDf8oKZ4a\nYh6Ve8vwG8PunicYYC9RiibqCDv2EsSiIUdoTiluD2Xg9+IW6MGs1HBBbyDt\nAO61+QQlaZvmgYFJYsbpGBiXyUPSN0rvHv47lyJgOwy6xsF0DykHYWFQQgzv\nRizQpFVA2uXl5jrJY2foMz2rL4CA4lGQaWFQevFebiXhMBbkJWW/NzwO3HOk\nigLSjxeTK5+mvm5sebY4MIueK+i8oVITlQqy0TG8XVzsfvRLHhz8IaWhr6IA\nHoyFRobKIX0daomAht+doFe7KgvjOmdcTRr7z6g6t7SzKfz5fjNG0RFF0TGw\nE6l5\r\n=+jUi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.24_1547538195553_0.14126747649411553","host":"s3://npm-registry-packages"}},"1.0.0-alpha.25":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.25","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.25","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"1d941046b7b087b00bbc22d2118aa43b6476ff17","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.25.tgz","fileCount":10,"integrity":"sha512-/GOy9/VQHkQcEdyp2ljOJq4Ko4qqTL1CORmfcyPzcldQbJiF+5Aktb3j2CZZiMCIgGgpHiiW0+akg+8kxDDrxQ==","signatures":[{"sig":"MEUCIFaS1flebcYXmlNRYqm1GGNFP9oDORu2AAzpf8qc8PxiAiEAze7W3gHvUWi9YSvG6JZRd4C8Inx48qNfnvLN7iRGX5Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":652876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPqXVCRA9TVsSAnZWagAAtO0P/00YsP8xjfbcHuW6/Syn\n3Jskn/Pu5QvyvlJaJ0Qp923sJNxIJhkKjFUmCbAgaKVJ2LbrfX8gECjCm/Uc\nKItoWMuFdgvMap/ySU+gfFO0YqaV+Zye4YXzO7YkGtryOTS689ICCJXdM0ZP\nFD/GOWDiiYTsWG9bT5gr52+S6PwqItLUW/vZ4/inCnued8zBuGW4mrK4Usrb\nR9n7vAGf/2ChURRYJHEyC/Ap8FkyEiDMMnyNj4mu/DBQ362HJhG7I+rRFbpd\nEki1UqHsV8U+WsVnUuqXMPblIm1VujBi/G3TptVYY2OyQmEmtfYT2tTud4be\n9OzvJRoWQrZu2E7vVDuMhcTohxsRTKKSnbQan6iGv1x+TwqztKfmwjr24Vdp\n92GtawO2FyuQB3AOtMs0tKtQ2/34KNrJRO+a3PRzomIgJz+Czcv5smzyfPlF\nIqn1WNjLj/KXtKsCPByyNaM8lL+ULzfLg45VrK9QcA7f8BVzZZMgQ5lnKK/W\nCyzyfdZaLd3uaOS29L6bGLCvx91T5dwa7CaT+bPKsBnll6DuPI3A7XIyzh3K\n4OwabBXAZGjsNPtaXKG7d7Pkx7kKfABvRYifGcHcj4VjLXSnA/wF0URcgzF0\n8O/1AqxWcE2cVipraKKLTTsGchsS4E17UkH3hI4TfFsfLQ2OwdtyOq7+e2Yu\nsDJp\r\n=41lT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.25_1547609557046_0.21816432717596346","host":"s3://npm-registry-packages"}},"1.0.0-alpha.26":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.26","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.26","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"8f23c00e0738475318322cf1f75aae84ec881c1a","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.26.tgz","fileCount":10,"integrity":"sha512-l53NU470GeJy32nXLstKIkj5UmhE03mOhqs74/YzZPuu0KCkP70dfPmYJIZOjFjwfcBzpxr+7qywAkUTYGLLZQ==","signatures":[{"sig":"MEYCIQCXT8dVQq4BnXjd+lvt4Tmw6QKZJEyEl9U8O9b1sQnEhAIhALGp+HmJ0YPYRdBP9DN5XBduemyJCwV82fdCA01su4iO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":654516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQC8wCRA9TVsSAnZWagAAjUIP/2BYw2+/EfbFZPHXHk+9\nyx4wsdbqv1/aqxFchswni2fmVmPb90tn36IQlhH+Vx5sYiemlZE6XClSdWZo\njUfrdpRobbzrxv5C0rkSGnGYwFU9LUJPHRb4y6grMVQxTWGBRVwNJ5FSFndf\nJ34tzvgSgkpjpvgx5Y4KBmdJMNRGk8fCTNGTnnYGZAriYLQDwmwvIMTYcrK7\nc/0r2hXNPTIHXa8OsPgh4O74dZ9sdeES1MEwffInZm8nMecnNEijbukMn5py\n5ofrAmtEuMhuNqBW/aqfByA/mxZ3ZzVO2cscDbmlZssvoOpIJ+QTHkSWQuzb\nUDKFi+3iNBluzfheTwhn/rcQSm77pIuR75Zh3yYl9kMNnYYQWhot/s69hwJh\nleW59f7aN7QJ4fZd6BbG4nYsJPlvRQpj/CUktqWIzJr4PtKPwW5CkMgDqQKy\nfx1URzSGYjDgzFpiWy7phdF+GUJWe0pkh066Z9/U6kERl6glWthQ2HDtDRyk\n41auhrS8r18yqVpryEV3zMfArmrRJiaW03GnET48ytVX8rGJDoo4pJpw+PGy\nMblSIIYk8BtdlIU/+xoBg+IT4BxMTPQ5dLr15glwfrLiHMVa3uFPgvsBTZG8\nJ/ZNcG2wkwPMcWT+o7W9QLgI+osO1K/Yap7O2fBiobMbRbxuk37Q+q3K1jFg\nVXaw\r\n=70TR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### `Reader` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nPut `Reader` component into your component.\n```js\nimport React from 'react';\nimport Reader from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n`Reader`'s properties:\n\n* `onMount`(func): called after reader is mounted\n* `onUnmount`(func): called after reader is unmounted\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n### Events\n\n* `Events.SCROLL`: Screen is scrolled\n* `Events.TOUCH`: Screen is touched\n* `Events.TOUCH_ANNOTATION`: An annotation item is touched\n* `Events.CHANGE_SELECTION`: Current selection is changed\n* `Events.MOUNTED`: `<Reader>` has been mounted\n* `Events.UNMOUNTED`: `<Reader>` has been unmounted\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.26_1547710255639_0.35148890831148183","host":"s3://npm-registry-packages"}},"1.0.0-alpha.27":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.27","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.27","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"6933ebc0509cd51135c0d6a4676cf089effcff2f","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.27.tgz","fileCount":10,"integrity":"sha512-JMigk/UCafoBOrI88rgJq8tcJWdoDiZfSvBH1yQkQJ6WQrSoJMS1x1hARH05y5hFe96n4ZWoxmXcavRvhBxk2Q==","signatures":[{"sig":"MEUCIGTvEG0dWkgeTlYzisLD0owUiwewnUAELZ32GcE+JY/rAiEA4xs8lGd6l0qW6gyr0ayx6Lz/qwip7XWKS0+DAnIQf50=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQTduCRA9TVsSAnZWagAAjn8P/RzBIUc30/vR+i/+UqV6\nX6IZ7lIW/LwdQpGSzn4b2Xk+2io9+mHwQ42KRHYVKkU1nUqLw94UUDduVoRj\nmZTGmvYHvAwYHN0uoqf9JOc4AgnM5XpEFoWCRkSI1hQMhaK4ZyN8ffnwqfBO\nKDV+bmVZFaTjdtWQpCGXdGgeJfTJBKZiker5M6HwuxH+iG1l2B7O6KzfvM0D\nMIIofahx4bvHDnj7YvzaqNSfx+cru5rm/jvP7D5xnPv3Zk3ebltMUCWPdBos\nKmzhE7nw9XCWlvGF0BavUWqaXHqX5eg4GN4gU9nVL8oFux1Ipe4LueMxV927\nDtJqr6Gxyu3lpR9SRRnN5Zf+4PIMus5VFQ5RpAPOZ+Elkxa+CyIjQueJ/ZEJ\nkAfCF/Bm47KVnObKMMf5NesaU570XsZSdfTrXdJh8MdikrTp0Upv28pDnAS6\n5MtFIbmfhnSR5bgRCyEVp9qrj8JPS4qwjHCz7XRYNB4IyM5lIEM2dSFZWrwb\n+u0QMAmJAGve4I4gTya99Qz/sLfd5brml09rFb4xYnjtdtVGVnnoyuzz24fD\nZPcsvo+GW/Mp2K6jTc+OmmdCn9Ft6Oht/F0+XzD0Ddfi1eGGeu8sQ2Hyo3gE\nFqVkpVmlnk3jQ2NVUstr5z5TGNM5GbQpKfBgSLfoQs5XKiwjX0KLgXtyBSXE\nZcE5\r\n=eiWC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use hooks when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n### Render Contents\n\n#### `setContentsByValue` or `setContentsByUri`\n\nWhole contents including metadata are set in a time.\nDispatch `setContents(ByValue/byUri)` action with already loaded content or content's URIs.\n\n```js\nimport {\n  setContentsByValue,\n  setContentsByUri,\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.27_1547777901779_0.4432609778956764","host":"s3://npm-registry-packages"}},"1.0.0-alpha.28":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.28","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.28","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"fd7a471b534c08cf717d655ec16acac1aaf947d5","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.28.tgz","fileCount":10,"integrity":"sha512-eh8Em41NoYu4//GJ+wvZGd0QD4mDOqKdpGAip/+qDVNLEk5Fe2J9UXRxtdDFebfk9iyKZjdOIxsf3wuPG1K/kQ==","signatures":[{"sig":"MEQCIEBOytoy/7uQduZN2QU00egV9acm1k3W8mnAMfslFaRWAiAa0XoOwWUo4XTSFI8A9C0PLyhMBvfdUL9FHAP3Tr4Q6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRQYdCRA9TVsSAnZWagAAbMcP/39kfdKsI/6S8g+4Pgkc\nYR6AdW5CWfUE1lUcOYup2VmOYJzvFAqj0vv3BORlZbo0F5LHB/XZ6X3a5YXk\n3/lZ0kBjn1mQSobd2HDTj1gSuJM7I5jCwiVQiMy2205PXe26D6m7ez98NCMr\nLMXzM0GEgWUmdiQLVzIbSXDyWYkJWPH8gP3+vlMo7AteVc5f1vWljbOopOjw\n4mQ9Q9iQ0xepaSNGKukjqsE3XZB1xM5X1VYxGjYOUb52LZBAsjbJmgir7+OM\nIV71yGpnTPScs9K7VuxWHb4rpToEo2oDQjudfg52ERrbYRSZJTfCRpqvhCXP\nVLB2ZK1nmQHAM1+S5A1ozJPJEdQpLrCu0MrJxm60zxG6PPHI4DLNUMATFaAL\nCJw+u0oi67P73qeRSvY5uftpkwCk0A54MxandJ46MhmMhr2Wf15P1xMwOFJq\n2Dj8/bBsbd5Zr4JKOQX8GG4v8OcW+/WSBcwAvG9KHDl/9fvJ6EUtldvH6dVJ\nyNYwZ8HVP+Ubx6A4Ur4qjQpaFd/aac0JlX9JPrdQHEH6V7rvAR3tL8qDGFYo\nMgqoUC0fsuYlvm+JVI8jhY+zimVtuuWqMgwbjwETom6uafIoBEZ9AHuHnM3F\nwIIeXd4CHQ2ddcX2zu4v9bExWZpT5SYFR775+yUlQbk5chKQhUyTERjHn9BB\nwBhg\r\n=RlF5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.28_1548027420988_0.8433752233143013","host":"s3://npm-registry-packages"}},"1.0.0-alpha.29":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.29","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.29","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"9b155af1aa4eebae1070d19f76b48beb9021f58d","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.29.tgz","fileCount":10,"integrity":"sha512-QgRt8amgF1manZxv3LS0kO6WV8ZgU5mXjtri86xw3lYL77J+s88ihNZC/rYV7dKISUnpYVVqbhvvB8/nCtCtQg==","signatures":[{"sig":"MEQCIEFzVsfMRrL058/eXlBlhPWcWcpa3+FB73IV32YgmeLGAiBGxTWSVhlvwRq/3Kc7IycKIM8rcO0ferJDB9k5/6Qd3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":660010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSk3oCRA9TVsSAnZWagAATtcP/0Jy/ZPiUlrtxp4Dpxr9\n1dimLyk3cPHzwCsEusMcv4RidFsNFcsBUG+Lu3Qd0SfAxvgQzL9qfpbg0Llk\n1OFA2ilRkwVWTKSdpGgYKW04iTDEWPCXQldHqdMDbVsFhrrtCzNc0OupQC0w\nfTi/IpWdB+cE+11a9CyzVoohfFCKkP2EpE0q051SPytKQLv2DFU/XWhjXG52\nkZzNIDoGcWjhpJRhWSjlYY2vvHz57CCYh5vZxZv9Lk7a/ak5NRAQ4JYI6mG0\nwqdf+ITbnKm9+qFTko1Nfi/T/WnFAulqeR57Sa6XOxZ5HIlSsrtpScxXilY1\nhBZjnGF+DEGQ2XQ30Ts/7ROjLxpFAMncTPnW+S4bWO1FUtUu4rykiBmFDDaM\nmTA9Lh4HfD/sXl+qPKC8GgKVMW7Mh/LI6th0Z2UCp1ChT5seY0HZooi8HUEU\nXtYxuK2f/CJe/XyMzkUh2BW2qBqpmdcmFE18uo5NA1+8lBNFLSh94Z+39jY8\nIhpSBGUFWB2HO+dxTsfV6f7xUdOiwjwCTiYWhOV1BOSzwgMD5tPzFXSVLjmb\nVmxh4p7y3NO5oQDFRiW7OYl7NDdhmZeFCotofu0jB/s2WRzgrmRSJC8T05pg\ngikW+CfxAyZ4D2K96ghjEDYS3Ywyttmvrf6FkZkDfV4SpI+U6wmWflNpsoGv\nVfLP\r\n=MwkW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.8","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.29_1548373480063_0.18834369553522445","host":"s3://npm-registry-packages"}},"1.0.0-alpha.30":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.30","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.30","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"1cddf116d9e98de6ed3307ad84b4811727a9a630","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.30.tgz","fileCount":10,"integrity":"sha512-ZhB65SyTNgtLFKHOfnHtXHYGmUX8Vykzd3Rre8ACPG6efcmsvt65RfT91DzU6azDRLMr1OVsaRhxzOOQUSJx+g==","signatures":[{"sig":"MEUCIQC9OF4xlqb6qrL4F9tC21Br7JWlsbsbuSOpkSAgR4QDfwIgWknq5aezTsMudjW3QvmfkUKl951vkugwJWN0JEqPCPk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":660195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcT8rcCRA9TVsSAnZWagAA4zsP/ilBQnErAONln8feG6dc\nDeayuYa+fbsjEVKV4/mXJufQo+ih9mPcpXRfpZVd/QjHEE2+gopPfmGPocoo\nh8QX/953U4xTglzjF3WY4n1wKuxwW+1eYlQz+OyPZbPofaXZPBklZZa6FCgP\nTGKfNld1R+sEFsMglrTE69cMd/5AoxST8ZexHu0Zkmq9GUwLDHDteIsEz2ZK\n2+fMB+7Uj7RdgL0tHR02rpLFQ/rDltLUYsZPQKLHtWgqHyH50ag8JkBVQuxf\ntZGh1SvYP9/hwvca+m6qKDJxoSl0ODObNVZK6W6B1J0W7xWONC3J66jsXX/T\nQ5reWwB9iW7eqxKQXk6+6nHHGCWMFlujJpLiSN/RKw8Zhq2cEOaR2/sMDf7r\nrEuHH+fBcNV947L88FMTAfQaXGWPymW8KheUT127qujofnBwWWXOSTWXnhKg\nee1IMFDkR6EdhkSyBwD+2EKLqBiAFJw6eL+2uAcrCvYRAYNifCAc5dDnQ5Ae\njlqbD5PvJrX6mO8HyTkZfBlAaxzwzM9WBZp6pdd4clwLg0o8mx0y5LvfYJxT\nUhGN3Kxc5ngTsBiirgg/57M3AX+d2NFSqqViyNkGbbE2wCaaFvJ2wWAzntRX\nChyD6Ud8nR+ZtXYZ3p6v60rniBVdzE1ea9lyarkER+xV0i6DNolMI+UyEvbf\nSRh7\r\n=HO+f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.9","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.30_1548733147852_0.7504738418216028","host":"s3://npm-registry-packages"}},"1.0.0-alpha.31":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.31","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.31","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"7595cae829bec6aeede997dc63a57e0788892783","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.31.tgz","fileCount":10,"integrity":"sha512-bpO2qTxDst/cQYN+IcATfurqcmpFnn+Xl4zs3DStfkEhShO/NMpi6rX0MUjskj9RpJ7wNxLMWoqp001P44DCzQ==","signatures":[{"sig":"MEUCICHNzyiLac/kCzIgY7UtxO2zSGqd4Vz9y+1y8BJcSVnWAiEAwIFn4OwAVMYX5U0j71IxOOvwYRmGf5To5hE8EsvhzIg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":660447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcT/sJCRA9TVsSAnZWagAApYMP/jTx/P+OoO2vKpSFSYTH\nWPdDXCt0jYxKY47n9qpxAV/1+JVL+sTwfxAzx0WBqgjDdoZfYVblC/ykDBXJ\nCU1/oeyisYLHxlReTswojiCH9Yo6yEpIpcppv1aywGJeUdici49hae7alCNC\n5wNMQakzlKthJ0mOUgieN7FUkMVWaU0PWyPdEhjTBm5xbh8IW5CMtLWbFuLr\nNRiVxJWLbxtnEDY9n4SvVT/hyO1UpSWj0XyOyvWWfw7CLcNIwhWxoNYPlmOp\nvLnFwRwiV0Td4mfw7OEYV8bcEL5CEKflqn7P4iOQB34VZbJDzMOPXg1Yg9VT\n2YvxNbskpRtGawITwshl+Gh8J6rwpF6G9QwTFq5o2Y9uTuNuyf+GwtmcdDwR\n8R8n0bgt8i/it4KSLgrcAj4Vbwyk7BYVOqSc56xlrYSM6ydFz0gPHugHaaIn\nR7u4uqNewJFSQdLSZ9zJjHnFiiydfa21b5bm2IiarC8zo5U3do+293hLIk13\naCv7I7nUYk4+w+umHefbl0OrBXeeJjoX2CjBK668ONTEG2v2AGwuWOImgmtr\naME3F4bo3F7DehrYxt2j/gM2Yobtk2sTxHZQ/t0lXtFFAk4Hej5A8d8OS6um\n/5JMXnR3bUPh45YHxh6D/GjXhg8NMNqpTV96+h++08ojnrc8Dddvsa+XjAW/\ncwk6\r\n=CSva\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.9","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.6.1","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.6.1","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.31_1548745481016_0.8346057624161705","host":"s3://npm-registry-packages"}},"1.0.0-alpha.32":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.32","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.32","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"1ac2dce4ea540373bbb55abf06b25e916d074a9d","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.32.tgz","fileCount":10,"integrity":"sha512-216JhS2e9/H5OtXUeKcqcn0UCflxzkRN9PQo5O7waHBwEIZCEg5e711m3PJW1wL8h+Kz31UkDIgmA/rlE/KguQ==","signatures":[{"sig":"MEYCIQDiAyi+D+v+rLuJd059ZIFtEucPpH8HlOYKXGBRoSlM3QIhAO7ZNs8I+Kce6YQDwt05Sk+DMb4aEc+lAV1WsMiu/JlZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":659986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUVYZCRA9TVsSAnZWagAA058P/2QX4MCZ6eX12c8xY1Gp\nfXxniVe3p6iOs75KdcQLQI+TsoXknCnn1ib0FZuN16eyE22m2vrf1Ovhv8Pl\n3MXDp7uAmHy0o4tp0I4bYbJF9F9m4FvJ73XdH7j3OIpLwwaPde9HAkTLGTI/\npPbWxxoSDjVg7fL8XoZMp4ASuFnhLfAUEl/vGpFAn4RDnPEIhPfFkk2ZZifg\nkpNyv0KmnTt8f0X7gv2bxBRHj6LCAZMOUsQSwyVajugtSDyHnCYuCfVPf5pk\n9LRS/iaiYpK2w2GJUGidIr9xhd8bt/dqujWK1YWT06WO2ge/8bBr+ddLOE0h\nHQ9eE1gGgMUn2/nqZZ0izeL8AG0+egdDJ7xGZrWchlAtpaObZ00T2mdFEoFt\nH5J1L+9YcEXFCiH+KZ/A9uAp9NY7FTKYKd5tPvxFaItndATfO+uiAkE8ymLa\n52CPn0y6ex9SOPD4ZKxQnBS3sdZzoUetZSxwZT2HkqIZ1zU4oBbl0F7jikYo\nS1BtSB7TlzNtIZPNLE6mml9TK6HvO52A3C3FEZbqkGM9wJr+zsWFxoelvQnf\ni6l4+0dmxHu2OrOOsq/MP0qQAT/KX27KWu1g18jMhoCe1LCjJhbGj3G+0mfn\nrmSp4riodzCKdKabnwb7kOjtPugfyj6L3MZjbutDf42GkxzyegwgOnMTwvSi\ntMLC\r\n=PV2R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.9","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.32_1548834328939_0.31782166328429917","host":"s3://npm-registry-packages"}},"1.0.0-alpha.33":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.33","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.33","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"8208df35c5657705a2b7858591e1a659ec7042a7","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.33.tgz","fileCount":10,"integrity":"sha512-k0h5fe+pcGPrpDquCuEqaD7d1fo5M+CXesm63vhT+VttsHxIBiBdvrl5cmdC+vA8V5Hv5tiayMvIDPxidMNu7g==","signatures":[{"sig":"MEQCIAdBbhI2R05zIRxYAulaiTOdi0c/yBr+Ofq8ZoEZnY3GAiBOPQe4npu4R/PmfmMWN+783zmq5VJufDeKNOPWGifAUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":660345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUsBVCRA9TVsSAnZWagAARMYP/0nxA7B9kzCHHTeoJvIA\nNlyaX5yUvztlWJTvtOX80XsxcQsYsakvEI2J01XedDSe3ibtD2iJ7booOGss\n1RzxqL5B2wN9FxIxdwr71mYFi+CjK2BU1sx8PYzEficel59ifT+OcCvzbkXj\n9mqqSF2Z+90yIWl4P3wSfxVvyn2RTggI5KLm2mobmVlVF+a3moV9HQnNrsGq\nm+A4HLmhXtSavMjcojoqVfxuYBlKmxoaqu6M2QEHtWQHl/WHLeU9golKtiOd\nWXtJMqoGZ/PpuwV96xV5cR2MRv9tBHor0sX+UmD1ptohbdigs1qj1pyth1V5\nTXfcXvnlBw11wlyI+Bf/dbxtDnXvxcvsST1G4QZkqgRYu8WjSNiX58w3OsqF\n0OUHtC6tOYVqAOrvvpv4FaRSEwkZ4hkJKJhfI7PaOTZ/3WbhFrC6V8QjgikI\ndAiZoXO1oSWrem0P3ErkFFkZFfNKwCZ76MOoTJRHhs/uxNVWFWloZRP6Qrzs\nO7SrtREC429EnEid1+Emz4qyB65p5d+JmEn22owJ7XuFE5SCbYUcH9MaDYVE\nNn/uDRlfUhwpdfnZ9P3AM8igR1F34wIBbKE7tASC2OUV/iVe+Qtmovm5PVk0\nwWvWw5fn14iASAxP8gAi2bRk7GaxPFqCu6Vh9U6ZkD/6oiOSy0QoxE1hLuYQ\nQgoU\r\n=ypAR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.33_1548927061409_0.9698099191391587","host":"s3://npm-registry-packages"}},"1.0.0-alpha.34":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.34","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.34","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"ad2426c60d89398174a96f0a566d68555570cf38","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.34.tgz","fileCount":10,"integrity":"sha512-v3/KeMsQyCn6op96QriYeOyp8SOQd0i1zKyIJ8DwajxPeF1aSHX38Xp0lXn0VFaVf/mxLSyhJSxeRdFfHmNZ+Q==","signatures":[{"sig":"MEUCICdUXPBYu+fOBpbzkX4hTeDR02hTf3AsHFsC2PcOKKGHAiEAh46iWo81wlqxUP+6m+B8FO6fQ+DzkqBTDelHifECWlA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":660951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcW7+hCRA9TVsSAnZWagAAGu0QAJ/CNPtPpkWP58opLX7/\nr0uLr32ZFIEojBpwcP/EyEOvufd8bjdwQ+DjY9BXqsSqilfGgzbX5B8tu2rG\nkGCjwRDcKeny7dgQzMjEFXNXmQ/WWpjDZ26SoYdoFRZYPRIK9jwO3H11m0ef\nAz3xamQvmfr+tY8534+bGTLH4sEIGShRyVF9MCAryfUgsb8BG/bmidrpv+/3\ndDsl0fl9S2SJMf5BvnFpqY3vT2AJ4KNqulednnosj+KhevzmvuO5FpQP4M15\nDg/GnnJjIO2+RHdqMZLUCKH2zoItQ5HEedmm8lB+9ZrvgYjmWs1y7NZpQ6O6\nJ5N0KncxUFtzOnWw8NEuCU8vFlY1jyq3Y3ChH69PuRAmac446X39gDBllCLe\nfVV7ru66QSRrBpsKP6XeYn3CfNQQMOceR4Y4BANsuDwiQL3LWtbNgPiwje8T\nZABesAbCaC5BM7+4hBbX57hptdpwzSCsHJr6xYyxmMF8+zzPe7q+MPKelhQt\nTlZd6KT4Dezg1MYLh52u1yllVm41vEHuhpCdCJWnerOGqfvDRAXRH3SAaAp2\n9vWTuHVYnLwBtMn9xLFIFBQEBnq26rtmDdYFp3F3OiAUGHjbx7mBWKrqgYtY\nBE8XzL1S6dgYRQF8f+JjJj7QZktiyf5J4hSesllA0oA+CDuloosaWp68teVE\n9qvB\r\n=wr3U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.5.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.34_1549516704622_0.32966200630608244","host":"s3://npm-registry-packages"}},"1.0.0-alpha.35":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.35","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.35","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"8b117102ef35205e368d7e3a82f9c996248aa961","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.35.tgz","fileCount":10,"integrity":"sha512-x5V9QfDpV5BJW0eQMYLbE+dCVkHun/rqn/0sMJcDtrCMS8IZ4S7iHNnkegQ9dD6K+bYW5IDZkJi/ZcNw40Y2JQ==","signatures":[{"sig":"MEUCIQDwIV19hldvlxvcVWEx9Zx8PPoKUtzYIN38PhT7Q9NQpAIgUQWMYzYE8zzJqE/7xFagDbw8PcdQ5/BCGymdqhNLvzs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":676100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZAr6CRA9TVsSAnZWagAAw7QP/2twUQftx0svTawDxv/W\n0Jd6yfh+f6Rb8YRLwjvzSCa8J7VCtNfmkxZFqVa+fJGn+54q6mlxdRcP5cih\n6fFn6zm3PSXsQzW6Rabq6pdDHUZCzUFlyk/xXysLEmRliEeMNEFHcmma2zRE\nHiWrdKEYBNyCA7wrsRrjDjo3JtbywWLiyO+MqMxtR40Xj23nK3MB4tS+E0hC\nZzp+mCZGAuUDPMyb9bmidiyO9TDgrE6b6QtP26x28MEiyjMy+AfGOM7WT9jT\nw+dTceHl4pEOPnbD0QS3dyAOKL83zT6MposNpuQfEiYpNVIoC60jo5d+fL2u\nviT13sTlaRvVevpB2PQYOBgnlmRMXR0RAWZHxV6ZOfN533/alUF4O00C5eVp\naWpZmnhdiia0bGC6UbvB9lMIoLNX8iwSndkH4fAYM4IlzpFfzv5zGfnvA5QH\nBa2o0rEx4uxVwHN/1aMqOygzzrnI0yYVOOgI9/dyNctQCcGimRSO771tjR/7\neSOmdY0Pydj9NvARI+XNhMmfS56oYUAXFKBKiBycjX+9xQCmRnLfzUQAFI6c\ncyu4FNpQJa762YeYy9E2QBM6ygJtecUDjk2uk8Lr5wj9NCSA5UWtaUHdXX20\n873kbJUbU52eKeAaBBy3Q/Dk4wzsxWKOz2YSgzhhc5HcVaAbeCzoAAORXAGj\njnq3\r\n=ONaB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.35_1550060281559_0.8821410075615725","host":"s3://npm-registry-packages"}},"1.0.0-alpha.36":{"name":"@ridi/react-viewer","version":"1.0.0-alpha.36","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.0-alpha.36","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"590575cc0ccac71b20eadea3339d11c305a639d8","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.0-alpha.36.tgz","fileCount":10,"integrity":"sha512-iIEYL3O0u86y0eTOI7wlUONXAiRa6xE3sos4eO/rUlqived1H7J4YEUHbnD06B6wjQ4hjFEZKkmNY+GBuBUNHA==","signatures":[{"sig":"MEQCIEFqsyUAsoXZEVVkohTaYpS2i5bMQ/K2m1mgw4iCQd9UAiBB50z9RTxS16i+YfNmIiPbcYFaylJcShB7Rsep32lqNw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":676539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZL43CRA9TVsSAnZWagAAUO0P/RGzZkT3Zg+qli2zeJZ7\nzTQVX5DvkiMQe2ubfL0+MxickBQl0R8EoeHYKAefoZ9CG4fQe7GQ5Y2e75ac\nAaWMeuIiGL9VgH9EdkmnG8LNjqPdmtfJetxqJVZCyKOUQe+ldFqQ4VUaqHVL\nimgu0PIrGrNLvxz7/AkAai/r2iTFfAz1NRhdt3nRfr26uPQx1WxpP4SOYKR+\nVwyPDxX1tI8DY1kCZXXKH5QpGednj5X+J8YCUMiRBLa9IDdQFaVnCtwoLQV2\nWTxKh/abbFe97/IKly9NLAJMCkqq6QRR8JV3cNnEoO6HHm3VH83z5M0Qf8G/\nNrR7G+YPViR/i3hGjtyH5Joeb3Te+WCuDo168TI/8NQ0mBBD+xbuwpJZ2vUY\nmsxhNV5mAEd7T+yGABqJNKLOb1VKd91vtP6sDWrwmdD5d/ckaX6C5Ene80kg\nQ13nrTjFWQ+HEuJ2hyZfVeomNQEC68slreR0rf0ApsOsqaErsQ1bmoMGqVP+\nItf8Ch7z1WZoLT84qHFiERK2Ookoc7RkcUE3LeRzkK4zc+lT5RJHLrOiduv9\nWJUHXOAevkIVBQ6ODuKMGCKjp38fM7p4rxmOgCj7QYZigTmNGXUvU6rtFh0w\nr+1cnOBcOhTidDQGNXm1kgDxHLI6tpu5wr3/b8OsSmGtORSuNFcFRXztCulo\nSWce\r\n=FNHf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as reader } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    reader,\n    ...\n});\n```\n\nConnect `Connector` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { Connector } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nConnector.connect(store);\n```\n\n### Quick start\n\n`Service` must be loaded for initializing Reader's lifecycle.\n\nAnd put `Reader` component into your component.\n\n```js\nimport React from 'react';\nimport Reader, { Service } from '@ridi/react-viewer';\n\nService.loadAll();\nexport default ViewerPage extends React.Component {\n    render() {\n        return <Reader />;\n    }\n};\n```\n\n#### `Service`\n\n- `loadAll`\n  - params:\n    - `restoreState`(`Object`): state object for restoring redux store\n    - `config`(`Object`)\n      - `beforeContentCalculated`: Check out [Hooks](#hooks) section for more details\n\n#### `<Reader>` Component\n\n`Reader` component provides all functionality of viewer and renders viewer body.\n\nHere are `Reader`'s properties:\n\n* `footer`(node): markup for the footer area\n* `contentFooter`(node): markup for the content footer area\n* `selectable`(boolean): set reader to be selectable\n* `annotationable`(boolean): set reader to be annotationable\n* `annotations`(array): annotation list is composed of items that has distinct `id` property. \n\n\n\n### Events\n\nBelow events can be used with `EventBus` \n\n```js\nimport { EventBus, Events, TouchEvent } from '@ridi/react-viewer';\n\nEventBus.on(Events.TOUCH, (event) => {\n  const { clientX, clientY, annotation } = event.detail;\n  if (event.type === TouchEvent.TouchAnnotation) {\n    console.log(annotation);\n  } else {\n    console.log(clientX, clientY);\n  }\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, { ... });\n```\n\n* `Events.SET_CONTENTS_BY_URI` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `uris`(`Array`): Array of uri to fetch content\n* `Events.SET_CONTENTS_BY_VALUE` (emmitable): Check out [Render Contents](#render-contents) section for more details\n  - params:\n    - `data`(`Object`)\n      - `contentFormat`(`ContentFormat`)\n      - `bindingType`(`BindingType`)\n      - `contents`(`Array`): Array of HTML document(`contentFormat` === `ContentFormat.HTML`) or base64 encoded image source(`contentFormat` === `ContentFormat.IMAGE`)\n* `Events.SCROLL`(listenable): Screen is scrolled\n  - params:\n    - `event`(`ScrollEvent`)\n* `Events.TOUCH`(listenable): Screen is touched (or annotation is touched)\n  - params:\n    - `event`(`TouchEvent`)\n      - `type`(`TouchEvent`): `TouchEvent.Touch` or `TouchEvent.AnnotationTouch`\n      - `detail`\n        - `screenX`\n        - `screenY`\n        - `clientX`\n        - `clientY`\n        - `pageX`\n        - `pageY`\n        - `type`: original event type\n        - `target`: original event target\n        - `annotation`: annotation info\n* `Events.CHANGE_SELECTION`(listenable): Current selection is changed\n  - params:\n    - `event`(`Object`)\n      - `selection`: selection info\n      - `selectionMode`(`SelectionMode`)\n* `Events.MOUNTED`(listenable): `<Reader>` has been mounted\n* `Events.UNMOUNTED`(listenable): `<Reader>` has been unmounted\n\n### Hooks\n\nYou would use *hooks* when you want to intercept some point of reader's lifecycle.\nHook implementations can return value in any forms compatible with [RxJS's ObservableInput](https://rxjs-dev.firebaseapp.com/api/index/type-alias/ObservableInput). \n\n* `beforeContentCalculated`: executed just right before per content calculation is completed\n  * params:\n    * `contentIndex`(number): index number of current calculating content\n    * `readerJsHelper`(`ReaderJsHelper`): `ReaderJsHelper` instance mounted on this current calculating content\n\n* `afterContentCalculated`: executed just right after per content calculation is completed\n  * params:\n    * `calculations`(Array): current status of calculations\n\n### Render Contents\n\n#### `Events.SET_CONTENTS_BY_URI` or `Events.SET_CONTENTS_BY_VALUE`\n\nWhole contents with metadata must set in a time.\nEmit `Events.SET_CONTENTS_BY_(URI/VALUE)` event with URIs of contents or contents loaded already.\n\n```js\nimport {\n  ContentFormat,\n  BindingType,\n  EventBus,\n  Events,\n} from '@ridi/react-viewer';\n\nEventBus.emit(Events.SET_CONTENTS_BY_URI, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  uris: [\n    './uri1.json',\n    './uri2.json',\n    ...,\n  ],\n});\n\nEventBus.emit(Events.SET_CONTENTS_BY_VALUE, {\n  contentFormat: ContentFormat.HTML,\n  bindingType: BindingType.LEFT,\n  contents: [\n    '<p>...</p>',\n    '<p>...</p>',\n    ...,\n  ],\n});\n```\n\n* `contentFormat`: content format (HTML: 0, IMAGE: 1)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.0-alpha.36_1550106166228_0.2760035090506461","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@ridi/react-viewer","version":"1.0.1","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.1","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"3cb854136d6ed0096297081924d16d17e1d64dca","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.1.tgz","fileCount":10,"integrity":"sha512-W8+l0q+rtSaWtFZnmrbKIzgOfStr0KLl0wegbAsVVTmXywDQ2a539jugBcO/WofYEPxSezirziZmhQ+THzX92A==","signatures":[{"sig":"MEUCIGBArjqPMMRATK8yglwvg+gItv/ybzn7L+nFaVRFIUFgAiEA1EuHU/9nkWYoY8lBW0wMnqLmQgiudLGdQem8SiCRsCY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":676466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZghNCRA9TVsSAnZWagAAtlMP/iyARpC7AaSddO7/ca00\nDryXiiHSQF5G57TxyU9T4IXCRVBeX0uvSuapyjrpATq9tF4X+wgJSteeonjz\ngaN5a8pcPLcVIkHb3VbXkBsTH0AfdQ/9+6JlXHO6q8l8O2Sse8RfEn0hNsxm\nPHa51bKG1Kh1NTQkKipZhXFRYQP41R/GxTPSacK3EqnV0s5WqE23LsUIi4hy\nfdi+lDYlByzMIaHMs4YPep75CQr/O+JVWCo6LQN1XjNESJplxCTysiLO0tN5\nBtnu9RTBE08aOBl/vYTye83Te9XAmyvUZqW7JDiSGLSSPkCdJW0O3qx27B8d\nkS2phjEVplpciJlz7GT/brVo73zYcX5UyAa/iJxrYWSSotgp0m0YbVbQg88R\nrgPH0DwK3KoVULZOmgRB0jSfVBKbBJ5PB0esSJwvc0T8B7DgO7C86F5OOGNc\n1nu2aPXXSsBdrvTbQmKWoxQvCGdp98AGTMquOB7wB+Uw1yCdGjDl6BxyNf1/\nLOk6KOuYiyNCgLZhBJyKTotaB7UmhyfxHTYMa+5ab4zUUOd40d8fRZBxMsNJ\nZ8DEDat5s8KJ3dcUElt3w8qncXOoV3fxsaV5+WenkE4UjIf7mx9W82LLgG8V\niNKEGARHauVvkAlxGnwnh774RehXI600H6R0EkJ7r9jUw/QWjQhm+6Q6fJWV\nGUpT\r\n=KoUS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.1_1550190669173_0.5113755302061467","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@ridi/react-viewer","version":"1.0.2","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.2","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"349b40c157fee9e36e2f5ab8edfc40008b79726a","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.2.tgz","fileCount":10,"integrity":"sha512-smlEcS14Kca3pgBk3C0ch5jK+EDj3+4r8V5bi+Or43OGO4IY4hUPMbclrzl/w3v+yWWAUsryG0RhhAQ8EylFHg==","signatures":[{"sig":"MEUCIE3YhYFD00tdiW14j3wRd8TogITaUr7hNvK3q0FGAjU/AiEAsUFqLOlrgizDqy33w5V1o+psZyCbBZ+TxvCpvU9VvL0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":677420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdO5ACRA9TVsSAnZWagAA+sQP/39yJWEtqR74DHv4RDTr\nP2FE4XBN7tPe6S6yY0HbiHRPAgja24GoiPJrORi0Amnd7JNXjDAao4FlKF6q\nbDUuQ0VTKmL3ya9vas/P9YDpDEhCd/GiZiCNWVwirsaIDSTCrhvp9MBClAEF\nEvQdXiVcXbDrTqyV/uc8iMfzHcccsjSw+QAVGTMijrEgGUtqBbwdEEnwCJBd\nuz/Itq32DAO1GEONvcipBvSRI4V8mRQh9LcxCyZ2tapJdKRUMGIN/qNRD7Ga\ny2iUMODME3zN1axKOsygjZY830Bh6WusfKeS9n+1cM2WNvUQ64ig8esosRvc\nKlgZdyGCN+0/my6p+6tAfJinyh2sgwMAe4u301/zRRYa0P0Y/XwTSzEcYvHA\nvMTvX/c/xx5FXbNj+sW0fREMBb+57kesNcINIRK9bulLBCLjuUI41oU/I+L6\ntzPLQsvike9XXFEE3evVxLH3AAb6jkkeCr1QsJFcsVlAqWS1ShbhyZlaEqTH\nX5xbH9tX9BwWUlq8Nm6Q75I3r43G4EAZZFPepM0+f/O4tpBLHn7tFmCo7MEg\nowqsPOd6i/rxPKlKwermFClzF6Gq499oNw6YnjJWn1GIAZQfnveB6pIyYDWa\nti6xg9OTuhbqu1OFIWc96I6SM8oei6WYnYgkwr2qYCe17m7Z1uG28Mxem9+C\ng008\r\n=k5Nc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.8.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.13.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.2_1551167040089_0.7839627270471767","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@ridi/react-viewer","version":"1.0.3","author":"","license":"MIT","_id":"@ridi/react-viewer@1.0.3","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridi.krazijames","email":"krazijames@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"4f335a240542e085bec6fad4721342e9c783bcee","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-1.0.3.tgz","fileCount":10,"integrity":"sha512-IyxKp7d0VhOLc6PxuN9nmni9CZfwdDy/gWz+zKYhjiHBt0WZYDcVxGJaI6jVW6p+NxTTPG2NgYw10RxfUnG54g==","signatures":[{"sig":"MEUCIGjdUdymCPT7/CvEs4tI2Sl04Tm8iXN/rMO27cTrOCrDAiEA0aVDkVSw/7eImZVoCX+hpge9xqjBFURdM++5RWLONXo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":677691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfhTBCRA9TVsSAnZWagAAjBsP/A9/uwPS+QP+BGh845aF\nuYfIOuKVh4E6c3UbsxOPPW45Wr1bC7bBl4Ne88XVxmDDJQ5fIF4jaAqW/ugh\nmA1CF0TCWc3TaDbK5ecN0oIt3DaDW4RnN8l/530zUt9vGacwE8ytxErLShjs\niAyt7tK3BFhohLgFESpPYyaZ3hit+pIBLBFTQUeqMeSkAjwdtJtnXSCabpGg\nSUBFk2qvzuZsUf+AF7w3LcxoLTM2DrFtiCCxOkJqSstn1cWiRAwKASVMUDvW\nTcxCCKfT5pxeCOfcOgV3Uz5zeZ28ZFqFrEYEW1tpYW2cCK7MS9QYXpZaPWkz\nI1ifOH87RQNlUmoo/Ji47Gx4HfYDwu46nMCCl/usxJPyYoYBQqKS0VK4ahKy\nPR1Uve9KyfACmZ6aY6UtEEsP9IrGm+Lm99KKa+XyJCFB7T6lvHN900h3EoyR\npyIAH5EMKQ3FO2Z2nnut7wggNDFCcH2sCSTgHsUJFEOJ2yGiXhNV870NZeIq\n6N/SbK1JJ4OxL8Yt8lAQoB/X83ZHb9qsUzs2b+fHM+zSHFJHH8BW8yeV/svE\nAdHnxR0sK7aQ70BZi4Ey5dljhfRH5GYllihisLfRTXYAd7adPREvISyBKK+1\nnAIJvzBvRo28dUAAGrDhdUI+GNhMpaTxlvKwkp++9tGq8CkYQEaPmz2WgVe0\nvlgL\r\n=U7Xd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"npm run lint:src && npm run lint:demo","test":"jest","build":"npm run clean && npm run build:src && npm run build:demo","clean":"rimraf ./lib","watch":"node watch.js","release":"release-it","lint:src":"eslint --ext .js,.jsx ./src/","build:src":"webpack","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install"},"_npmUser":{"name":"kyungmi","email":"purecolor85@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"React-Redux based viewer for EPUB and comics","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.3.3","reselect":"^3.0.1","prop-types":"^15.6.2","redux-thunk":"^2.3.0","@ridi/reader.js":"^2.0.0-alpha.10","styled-components":"^3.4.10"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","jest":"^23.6.0","react":"^16.7.0","redux":"^3.7.2","eslint":"^5.9.0","git-rev":"^0.2.1","webpack":"^4.25.1","fs-extra":"^7.0.1","react-dom":"^16.7.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","@babel/core":"^7.1.6","react-redux":"^5.1.1","webpack-cli":"^3.1.2","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","redux-devtools":"^3.4.1","webpack-stream":"^5.1.1","@babel/preset-env":"^7.1.5","webpack-dev-server":"^3.1.14","@babel/preset-react":"^7.0.0","@ridi/eslint-config":"^4.1.1","eslint-plugin-react":"^7.11.1","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.4","redux-devtools-extension":"^2.13.5","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","@babel/plugin-transform-classes":"^7.1.0","redux-devtools-multiple-monitors":"^1.0.1","@babel/plugin-transform-react-jsx":"^7.0.0","@babel/plugin-transform-typeof-symbol":"^7.2.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-transform-proto-to-assign":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0"},"peerDependencies":{"react":">=16.0.0","redux":"^3.7.2","react-dom":">=16.0.0","react-redux":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_1.0.3_1551766720235_0.23345520308917234","host":"s3://npm-registry-packages"}},"0.3.11":{"name":"@ridi/react-viewer","version":"0.3.11","author":"","license":"MIT","_id":"@ridi/react-viewer@0.3.11","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"freekering","email":"kering@ridi.com"},{"name":"heejae","email":"j132134@gmail.com"},{"name":"jh.park","email":"jh.park@ridi.com"},{"name":"kt.kang","email":"kt.kang@ridi.com"},{"name":"mskims","email":"its@mskim.me"},{"name":"ridicorp","email":"developer@ridi.com"},{"name":"sb.lee","email":"sblee@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"b46eaea20cb47c9ebf0b7dbc5832b16497b6a90a","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-0.3.11.tgz","fileCount":11,"integrity":"sha512-d1UE7+2qOM7b4j8L2aG5ZAKziBdmgDXhql3itDNamG9ebMooVUNt4b8Cn0gsLNHIdkVvtUIauEe7KdaGhXZmPw==","signatures":[{"sig":"MEYCIQCfjSv87SiJ1sIwDzZQQC8vYZkLE6RCTEMl7H1g8A+ZrwIhAKxK7furLKTRcFRH33YPwxSvdCG4RDWdtRjvEhRfA2s3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoTnwCRA9TVsSAnZWagAA6TcQAJloyDnZx6w3efHjrxAJ\noNMuBxLSM6gXkRz5uvDWT7h5JK6QhqE5zR3TFv2zHWAVhP8zcwCGFui2XtAa\nQdNdHF1KvEWWTvDmY8qapY7cLzP3JGVa91N1bFPCDI75LL2zYF5aXfoWisdU\ngGLr+rgHSVFus0j2dmanKIJE49OBstbr8tOIHvSZTN0al8VhZ6OocQ80Aai0\nuzTjfrEZUCtc6o/DgsQbLIx5JVFGwAejDKiFXv+Y8EwGq9+EF4c6unvODgHB\ntvQ4iMDamEM3QJaC7uDiHvxxCLyUeH4Yf4scMVmVZ2CpE+2R26bnqqE+dC32\ngcy97nEGfoET8fyzoL8RH/PlNkyj5pfh7v8ejyifnZbxLAVgcOMGu0wARdV/\nXoQCPsYKHWpPpSdAXSUaPwTFeSIPvMWnLzp4LQ0wO5hGN3OHrErsucB0g9OM\nVbjCeKlpjrm+ZBcearIGlsmkFwm61n38sNaM2Qi5AS36/heJq/HK3FB5QHBR\nyEa8Kb1gvdp2UzxCXZm2IL+VFCW21bYfxKJtC5SHJ6gTuSO1yVs5HBYzXMXx\nxaoySE8RYkXobn7mfox8zS8TsYy1biangSuDh5pmLx18rVjXXMzbwGu3MZi6\ncA3Nzw9oK5mNhWJ03NnJOdAEbLdsWVpAUGYzB8zOmO2qFnOit3wKr9aiH0lf\n4Ml5\r\n=qr0c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"efd4bcabe1a57c461fc2ec38b7873064f6ce35fd","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"freekering","email":"kering@ridi.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.13.4","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"12.14.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.3.2","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^5.0.0","react-dom":"^16.3.2","babel-core":"^6.26.3","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.6.1","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_0.3.11_1587624432267_0.5654273451241474","host":"s3://npm-registry-packages"}},"0.3.12":{"name":"@ridi/react-viewer","version":"0.3.12","author":"","license":"MIT","_id":"@ridi/react-viewer@0.3.12","maintainers":[{"name":"mando212","email":"nsa06031@gmail.com"},{"name":"khinenw","email":"deu07115@gmail.com"},{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"ridicorp","email":"developer@ridi.com"},{"name":"m0ai","email":"frozenmoai@gmail.com"},{"name":"limeburst","email":"me@limeburst.net"},{"name":"minq","email":"minq1205@gmail.com"},{"name":"ridi-junhee","email":"junhee.han@ridi.com"},{"name":"hw.choi","email":"hw.choi@ridi.com"}],"homepage":"https://github.com/ridi/react-viewer#readme","bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"dist":{"shasum":"ffe8146c102c846f55497458dc3d6fc07aacd13b","tarball":"https://registry.npmjs.org/@ridi/react-viewer/-/react-viewer-0.3.12.tgz","fileCount":11,"integrity":"sha512-35qxZoyxJoxTRAkPFsQOpbn6fxBknb1q5E3MEKPT7txG4wD6YCAict9sVGLYdJPBJbRkMADPfwyqZr2b2clfUw==","signatures":[{"sig":"MEUCIEz3HXv49HhP2z2bh2GwVUwCVUnTo6o+aP6aIjPbI9QgAiEApsPff+GYFX0sEV2qb0/Km0sNyZoUyuodNLsoLtmwnrk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFuWsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqt0Q//T/BJYXxA4W/JgHyIaVC09/gSefis9AJmpDviOkDHG887psXq\r\nxXQSQP4HhDe8B5jzrBnYFZC+WTp2G+hGU7qdraaIJdLQTKY5zevSwSBPBZ8O\r\nFiJD56ES3ePvQ0P85OhFzavifj6OLIZ5KxQVqDf+3Hm/GSdPX38fsh0a0koa\r\n+aSra84G9etsOlWYoI6ODOKwEd9J06xN9/h/YHDFdJx49MSEWU3i4RFZ/+2z\r\n26UbxwKzeLKzZ7XRCC7IxvNibbpinCrWmINM6KYqZikQYTerj6iZmtGCmvdr\r\n17r4Zd9JELNqGaaxDm8LYofcfWHx3D19KYUxa0IOgqp1uxP2Yq0Q528N5Vhq\r\nbBUU0hyFln2sPh4iBEnh3TZ4OchLtkuTCyB92H8WtNCmU5yKkVwn9XuSG3jq\r\nAv61kFC9L6JSqJ2pkZvGZ9dI3R6/ks6Ccog/i2sq7Z3KEspJTCvJ9csJERYm\r\nAUg2qJYJptuqh/mQnBAwcx/o7kzIsQ16XmMsie3M+NY4linFGAT4Xz+IY4Z+\r\nEWcHcfR1hyjfdZd67oZ7ckBda7OBrRuNRVQDgmXBjp9igOgNCU7oi+ENPC6U\r\nAuzqkJoYkw6CgdF4WO8iAztRTSN8KqJHHyJufr2GtrUIQprG4ROO/pgiU1Hh\r\nZIzd+9WVFkhV3tK+gWJWYHguwjeJBst8rgc=\r\n=fE2m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"fc646b79a1025663e15ce40fd86173cf143e32ec","scripts":{"lint":"npm run lint:src && npm run lint:demo","build":"npm run build:src && npm run build:demo","watch":"node watch.js","release":"release-it","lint:src":"eslint --fix --ext .js,.jsx ./src/","build:src":"webpack --mode production","lint:demo":"cd demo && npm run lint","build:demo":"cd demo && npm run build","install:demo":"cd demo && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"khinenw","email":"deu07115@gmail.com"},"repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"_npmVersion":"6.14.11","description":"React-Redux based comics viewer","directories":{},"_nodeVersion":"18.5.0","dependencies":{"reselect":"^3.0.1","prop-types":"^15.6.1","redux-thunk":"^2.2.0","@ridi/reader.js":"^1.0.20","styled-components":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"del":"^3.0.0","react":"^16.3.2","redux":"^3.7.2","eslint":"^4.19.1","git-rev":"^0.2.1","webpack":"^4.6.0","fs-extra":"^5.0.0","react-dom":"^16.3.2","babel-core":"^6.26.3","release-it":"^15.4.1","react-redux":"^5.0.7","webpack-cli":"^2.1.2","babel-loader":"^7.1.4","package-json":"^4.0.1","eslint-loader":"^2.0.0","babel-polyfill":"^6.16.0","redux-devtools":"^3.4.1","webpack-stream":"^4.0.3","babel-preset-env":"^1.6.1","babel-preset-react":"^6.24.1","webpack-dev-server":"^3.1.3","@ridi/eslint-config":"^4.0.1","eslint-plugin-react":"^7.7.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","redux-devtools-dispatch":"^2.2.1","webpack-manifest-plugin":"^2.0.2","redux-devtools-extension":"^2.13.2","redux-devtools-inspector":"^0.11.3","redux-devtools-log-monitor":"^1.4.0","redux-devtools-dock-monitor":"^1.1.3","redux-devtools-multiple-monitors":"^1.0.1","babel-plugin-transform-es2015-classes":"^6.8.0","babel-plugin-transform-proto-to-assign":"^6.9.0"},"peerDependencies":{"react":">=15.0.0","redux":"^3.7.2","react-dom":">=15.0.0","react-redux":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/react-viewer_0.3.12_1662444971802_0.9263294814268606","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-04-04T09:14:51.789Z","modified":"2026-07-01T06:20:37.708Z","0.3.8":"2018-04-04T09:14:54.383Z","0.3.9-alpha.0":"2018-05-02T08:09:17.836Z","0.3.9-alpha.1":"2018-05-02T08:23:44.088Z","1.0.0":"2018-07-26T10:39:50.404Z","1.0.0-alpha.0":"2018-07-26T10:42:43.817Z","1.0.0-alpha.1":"2018-07-27T07:58:43.397Z","1.0.0-alpha.2":"2018-07-31T03:26:37.289Z","1.0.0-alpha.3":"2018-08-03T07:00:27.614Z","1.0.0-alpha.4":"2018-08-07T08:43:42.515Z","1.0.0-alpha.5":"2018-08-08T07:21:48.421Z","1.0.0-alpha.6":"2018-08-13T07:52:34.208Z","0.3.9":"2018-09-06T06:17:20.612Z","1.0.0-alpha.7":"2018-09-06T07:47:51.895Z","1.0.0-alpha.8":"2018-09-12T10:42:11.661Z","1.0.0-alpha.9":"2018-09-18T01:37:52.054Z","1.0.0-alpha.10":"2018-10-08T06:59:37.097Z","1.0.0-alpha.11":"2018-10-10T02:31:00.877Z","1.0.0-alpha.12":"2018-12-10T07:53:13.362Z","0.3.10":"2018-12-11T05:34:43.367Z","1.0.0-alpha.13":"2018-12-13T07:27:11.583Z","1.0.0-alpha.14":"2018-12-14T14:00:36.038Z","1.0.0-alpha.15":"2018-12-16T23:32:47.549Z","1.0.0-alpha.16":"2018-12-18T23:12:21.980Z","1.0.0-alpha.17":"2018-12-20T01:11:01.033Z","1.0.0-alpha.18":"2018-12-21T07:49:52.158Z","1.0.0-alpha.19":"2018-12-24T06:10:04.146Z","1.0.0-alpha.20":"2018-12-24T06:17:29.765Z","1.0.0-alpha.21":"2018-12-26T06:00:26.158Z","1.0.0-alpha.22":"2019-01-04T01:28:29.245Z","1.0.0-alpha.23":"2019-01-04T06:52:31.870Z","1.0.0-alpha.24":"2019-01-15T07:43:15.689Z","1.0.0-alpha.25":"2019-01-16T03:32:37.236Z","1.0.0-alpha.26":"2019-01-17T07:30:55.743Z","1.0.0-alpha.27":"2019-01-18T02:18:22.499Z","1.0.0-alpha.28":"2019-01-20T23:37:01.152Z","1.0.0-alpha.29":"2019-01-24T23:44:40.255Z","1.0.0-alpha.30":"2019-01-29T03:39:08.155Z","1.0.0-alpha.31":"2019-01-29T07:04:41.147Z","1.0.0-alpha.32":"2019-01-30T07:45:29.047Z","1.0.0-alpha.33":"2019-01-31T09:31:01.580Z","1.0.0-alpha.34":"2019-02-07T05:18:24.772Z","1.0.0-alpha.35":"2019-02-13T12:18:01.712Z","1.0.0-alpha.36":"2019-02-14T01:02:46.387Z","1.0.1":"2019-02-15T00:31:09.328Z","1.0.2":"2019-02-26T07:44:00.239Z","1.0.3":"2019-03-05T06:18:40.451Z","0.3.11":"2020-04-23T06:47:12.407Z","0.3.12":"2022-09-06T06:16:12.017Z"},"bugs":{"url":"https://github.com/ridi/react-viewer/issues"},"license":"MIT","homepage":"https://github.com/ridi/react-viewer#readme","repository":{"url":"git+https://github.com/ridi/react-viewer.git","type":"git"},"description":"React-Redux based comics viewer","maintainers":[{"email":"davin.ahn@ridi.com","name":"davin.ahn"},{"email":"developer@ridi.com","name":"ridicorp"},{"email":"junhee.han@ridi.com","name":"ridi-junhee"},{"email":"nsa06031@gmail.com","name":"mando212"},{"email":"hw.choi@ridi.com","name":"hw.choi"},{"email":"ys.yoon@ridi.com","name":"ys.yoon"}],"readme":"# @ridi/react-viewer\n\n[![Build Status](https://travis-ci.org/ridi/react-viewer.svg?branch=master)](https://travis-ci.org/ridi/react-viewer)\n[![npm version](https://img.shields.io/npm/v/@ridi/react-viewer.svg)](https://www.npmjs.com/package/@ridi/react-viewer)\n[![Greenkeeper badge](https://badges.greenkeeper.io/ridi/react-viewer.svg)](https://greenkeeper.io/)\n\n## Demo\nhttps://ridi.github.io/react-viewer/demo/\n\n## Installation\n```\nnpm install @ridi/react-viewer\n```\n\n## How to Use\n\n### Initialize\n\nAdd `@ridi/react-viewer` reducer into your reducers.\n```js\nimport { reducers as viewerScreen } from '@ridi/react-viewer';\nimport { combineReducers } from 'redux';\n\nconst appReducer = combineReducers({\n    ...\n    viewerScreen,\n    ...\n});\n```\n\nConnect `ViewerHelper`, `PageCalculator`, `ReadPositionHelper` with redux store.\n```js\nimport { createStore } from 'redux';\nimport { ViewerHelper, PageCalculator, ReadPositionHelper } from '@ridi/react-viewer';\n\nconst store = createStore( ... );\nViewerHelper.connect(store, { ...options });\nPageCalculator.connect(store, { ...options });\nReadPositionHelper.connect(store);\n```\n\n`ViewerHelper`'s options = defaults:\n* `paddingVertical` = DEFAULT_PADDING_VERTICAL(`35`),\n* `pageMaxWidth` = PAGE_MAX_WIDTH(`700`),\n* `pageViewerSelector` = PAGE_VIEWER_SELECTOR(`#viewer_contents .pages`),\n* `extendedTouchWidth` = EXTENDED_TOUCH_WIDTH(`100`),\n\n`PageCalculator`'s options = defaults:\n* `containExtraPage` = 1\n\n### `ViewerScreen` Component\n\n`ViewerScreen` component provides all functionality of viewer and renders viewer body.\n\nPut `ViewerScreen` component into your component.\n```js\nimport React from 'react';\nimport ViewerScreen from '@ridi/react-viewer';\n\nexport default ViewerPage extends React.Component {\n    render() {\n        return <ViewerScreen />;\n    }\n};\n```\n\n`ViewerScreen`'s properties:\n\n* `onMount`(func): called after viewer is mounted\n* `onUnmount`(func): called after viewer is unmounted\n* `onMoveWrongDirection`(func): called when user try to tap wrong direction to the next page (on `page` viewerType)\n* `footer`(node): markup for the footer area\n* `fontDomain`(string): prefixed URL for searching font files \n* `ignoreScroll`(bool): temporarily disable scrolling (on `scroll` viewerType)\n* `disablePageCalculation`(bool): temporarily disable page calculation (on `page` viewerType)\n\nYou can extend or replace child components of `ViewerScreen` with the HoC-style function `createStyledViewerScreen()`.\n\n```js\n// Signature\ncreateStyledViewerScreen = ({\n  TouchableScrollScreen = ScrollScreen,\n  StyledScrollContents = ScrollContents,\n  TouchablePageScreen = PageScreen,\n  StyledPageContents = PageContents,\n  SizingWrapper = SizingWrapper,\n} = {}) => ViewerScreen\n```\n\nThis is an example.\n\n```js\nimport {\n    createStyledViewerScreen,\n    SizingWrapper,\n    ScrollContents,\n    PageContents,\n    ScrollScreen,\n    PageScreen,\n} from '@ridi/react-viewer';\n\nconst TouchableScrollScreen = ScrollScreen.extend`...`;\nconst TouchablePageScreen = PageScreen.extend`...`;\n...\n\ncreateStyledViewerScreen({\n    TouchablePageScreen,\n    TouchableScrollScreen,\n    ...,\n})\n```\n\n### Render Contents\n\n1. Update meta data with `updateMetaData`\n2. Render contents with `renderSpine` or `renderImages`\n\n#### `updateMetaData`\n\nDispatch `updateMetaData` action to update content's metadata.\n\n```js\nimport {\n  updateMetaData,\n  ContentType,\n  AvailableViewerType,\n  BindingType,\n} from '@ridi/react-viewer';\n\nconst contentType = ContentType.COMIC;\nconst viewerType = AvailableViewerType.BOTH;\nconst bindingType = BindingType.LEFT;\n\ndispatch(updateMetaData(contentType, viewerType, bindingType));\n```\n\n* `viewerType`: available viewer type (BOTH: 0, SCROLL: 1, PAGE: 2)\n* `contentType`: content type (WEB_NOVEL: 10, COMIC: 20, WEBTOON: 30)\n* `bindingType`: binding type (LEFT: 0, RIGHT: 1)\n\n#### `renderSpine`\n\nAnd then dispatch `renderSpine` action to render `html` into the viewer after loading contents data.\n```js\nimport { renderSpine } from '@ridi/react-viewer';\n\n...\nconst index = 0;\nconst html = '<h1>hello, world</h1>';\ndispatch(renderSpine(index, html));\n```\n\n#### `renderImages`\n\nIf you have image contents to render lazily, dispatch `renderImages` instead of `renderSpine`.\n```js\nimport { renderImages } from '@ridi/react-viewer';\n\n...\nconst images = [{ src: '/image_1.jpg' }, { src: '/image_2.jpg' }, ...];\ndispatch(renderImages(images));\n```\n\n## How to Run Demo\n\n```\n$ npm install\n$ npm run install:demo\n$ npm run watch\n```\nBrowse http://localhost:8000.\n","readmeFilename":"README.md"}