From fad28f83a4ac27b8f1a69b7411d65a4c2f24be8e Mon Sep 17 00:00:00 2001 From: RG Date: Fri, 6 Oct 2023 16:29:18 +0530 Subject: [PATCH] [ADD] Library to the rollup config --- package.json | 2 +- rollup.config.js | 25 ++++++++++++++++++++----- www/js/lib/library.js | 12 ++++++++---- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index f63dbeb66..f8f9d182d 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "prebuild-min": "del-cli dist", "build-min": "rollup --config --file dist/www/js/bundle.min.js --environment BUILD:production", "prebuild-src": "del-cli dist", - "build-src": "rollup --config --file dist/www/js/bundle.js", + "build-src": "rollup --config", "del-dist": "del-cli dist", "test": "testcafe all ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"", "test-unit-browsers": "testcafe firefox:headless,chrome:headless,edge:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"", diff --git a/rollup.config.js b/rollup.config.js index 3a839f079..e3eeb80f5 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -7,13 +7,28 @@ import copy from 'rollup-plugin-copy'; import terser from '@rollup/plugin-terser'; // import styles from "@ironkinoko/rollup-plugin-styles"; +/** @type {import('rollup').RollupOptions} */ const config = { // The entry point for the bundler - input: 'www/js/app.js', - output: { - format: 'iife', - name: 'KiwixJSBundle' + // input: ['www/js/app.js', 'www/js/lib/library.js'], + input: { + bundle: 'www/js/app.js', + library: 'www/js/lib/library.js' }, + output: [ + { + dir: 'dist/www/js', + // file: 'bundle.js', + format: 'umd', + name: 'KiwixJSBundle' + }, + { + dir: 'dist/www/js', + // file: 'library.js', + format: 'umd', + name: 'LibraryJSBundle' + } + ], treeshake: 'recommended', plugins: [ babel({ @@ -39,7 +54,7 @@ const config = { }), copy({ targets: [{ - src: ['www/js/lib/*dec-wasm.wasm', 'www/js/lib/library.js', 'www/js/lib/libzim-asm.js', 'www/js/lib/libzim-wasm.*', 'www/js/lib/webpHeroBundle*', + src: ['www/js/lib/*dec-wasm.wasm', 'www/js/lib/libzim-asm.js', 'www/js/lib/libzim-wasm.*', 'www/js/lib/webpHeroBundle*', 'node_modules/bootstrap/dist/js/bootstrap.bundle.min.*', 'node_modules/jquery/dist/jquery.slim.min.*', '!www/js/lib/libzim-wasm.dev*'], dest: 'dist/www/js' }, diff --git a/www/js/lib/library.js b/www/js/lib/library.js index 122733c00..02fc4c93e 100644 --- a/www/js/lib/library.js +++ b/www/js/lib/library.js @@ -11,6 +11,9 @@ function resizeFrame (height) { iframe.style.height = height - 20 + 'px' } +const script = `document.getElementsByTagName('a').addEventListener('click', function (e) { + e.preventDefault(); +})` function setIframeUrl () { // const libraryURl = urls.libraryUrl // const fallbackLibraryURl = urls.altLibraryUrl @@ -18,7 +21,7 @@ function setIframeUrl () { const fallbackLibraryURl = LIB_URL.altLibraryUrl const iframe = document.getElementById('libraryIframe') - if (!libraryURl && !fallbackLibraryURl && iframe.getElementsByTagName('body')[0]) return + if (!libraryURl || !fallbackLibraryURl || !iframe) return let isOptionalChainSupported = true // if not supported, that means the browser is too old let isParentWindowSupported = true // if not supported, that means it's chrome extension @@ -35,18 +38,19 @@ function setIframeUrl () { } console.log(iframe); - if (isOptionalChainSupported && isParentWindowSupported && false) { + if (isOptionalChainSupported && isParentWindowSupported) { iframe.setAttribute('src', libraryURl) console.log('library loaded'); } else { const xhr = new XMLHttpRequest(); - console.log(xhr, fallbackLibraryURl); + // iframe.setAttribute('src', fallbackLibraryURl) + // console.log(xhr, fallbackLibraryURl); xhr.open('GET', fallbackLibraryURl); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { - iframe.setAttribute('srcdoc', xhr.responseText) + document.getElementsByTagName('body')[0].innerHTML = xhr.responseText } else { throw new Error('Failed to get content from'); }