From e981a32dd5fdf1b6947764a0821236d30fd0fded Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Sat, 7 Mar 2020 09:24:07 +0100 Subject: [PATCH] feat: split staging and dev build configurations Signed-off-by: peterpeterparker --- studio/package.json | 1 + studio/src/global/app-dev.ts | 4 +- studio/src/global/app-staging.ts | 115 +++++++++++++++++++++++++++++++ studio/stencil.config.ts | 64 ++++++++--------- 4 files changed, 150 insertions(+), 34 deletions(-) create mode 100644 studio/src/global/app-staging.ts diff --git a/studio/package.json b/studio/package.json index 7014d5a29..de903ab8d 100644 --- a/studio/package.json +++ b/studio/package.json @@ -9,6 +9,7 @@ ], "scripts": { "build": "stencil build --prerender", + "staging": "stencil build --prerender --staging", "postbuild": "./scripts/config.index.js", "start": "stencil build --dev --watch --serve", "test": "stencil test --spec --e2e", diff --git a/studio/src/global/app-dev.ts b/studio/src/global/app-dev.ts index d1dc62237..e37bdd27e 100644 --- a/studio/src/global/app-dev.ts +++ b/studio/src/global/app-dev.ts @@ -35,8 +35,8 @@ setupDeckGoConfig({ deckdeckgo: { prod: false, appUrl: 'http://localhost:3333', - globalAssetsUrl: 'https://deckdeckgo-studio-beta.web.app/assets', - pollUrl: 'https://localhost:3333/poll', + globalAssetsUrl: 'http://localhost:3333/assets', + pollUrl: 'http://localhost:3333/poll', apiUrl: '<@API_URL@>', presentationUrl: '<@PRESENTATION_URL@>', socketUrl: '<@SOCKET_URL@>' diff --git a/studio/src/global/app-staging.ts b/studio/src/global/app-staging.ts new file mode 100644 index 000000000..3eb412659 --- /dev/null +++ b/studio/src/global/app-staging.ts @@ -0,0 +1,115 @@ +import '@ionic/core'; + +import {setupConfig} from '@ionic/core'; +setupConfig({ + inputBlurring: false +}); + +import '@deckdeckgo/core'; + +import '@deckdeckgo/inline-editor'; +import '@deckdeckgo/remote'; +import '@deckdeckgo/qrcode'; +import '@deckdeckgo/highlight-code'; +import '@deckdeckgo/lazy-img'; +import '@deckdeckgo/color'; +import '@deckdeckgo/charts'; +import '@deckdeckgo/social'; +import '@deckdeckgo/youtube'; +import '@deckdeckgo/drag-resize-rotate'; + +import '@deckdeckgo/slide-title'; +import '@deckdeckgo/slide-content'; +import '@deckdeckgo/slide-split'; +import '@deckdeckgo/slide-gif'; +import '@deckdeckgo/slide-youtube'; +import '@deckdeckgo/slide-author'; +import '@deckdeckgo/slide-qrcode'; +import '@deckdeckgo/slide-chart'; +import '@deckdeckgo/slide-poll'; +import '@deckdeckgo/slide-aspect-ratio'; + +import {setupConfig as setupDeckGoConfig} from '../app/services/core/environment/environment-config'; + +setupDeckGoConfig({ + deckdeckgo: { + prod: false, + appUrl: 'https://deckdeckgo-studio-beta.web.app', + globalAssetsUrl: 'https://deckdeckgo-studio-beta.web.app/assets', + pollUrl: 'https://deckdeckgo-studio-beta.web.app/poll', + apiUrl: '<@API_URL@>', + presentationUrl: '<@PRESENTATION_URL@>', + socketUrl: '<@SOCKET_URL@>' + }, + firebase: { + apiKey: '<@FIREBASE_API_KEY@>', + authDomain: '<@FIREBASE_AUTH_DOMAIN@>', + databaseURL: '<@FIREBASE_DATABASE_URL@>', + projectId: '<@FIREBASE_PROJECT_ID@>', + storageBucket: '<@FIREBASE_STORAGE_BUCKET@>', + messagingSenderId: '<@FIREBASE_MESSAGING_SENDER_ID@>', + storageUrl: '<@FIREBASE_STORAGE_URL@>', + appId: '<@FIREBASE_APP_ID@>' + }, + tenor: { + url: 'https://api.tenor.com/v1/', + key: '<@TENOR_KEY@>' + }, + unsplash: { + url: '<@UNSPLASH_URL@>' + }, + google: { + fontsUrl: 'https://fonts.googleapis.com/css?display=swap&family=' + } +}); + +// https://github.com/deckgo/deckdeckgo/issues/327 +// https://github.com/ionic-team/ionic/issues/19065 + +const hack = () => { + const ionApp = document.querySelector('ion-app'); + + if (ionApp) { + window.requestAnimationFrame(() => { + ionApp.style.height = '100%'; + window.requestAnimationFrame(() => { + ionApp.style.height = ''; + }); + }); + } +}; + +let resizerObserver; + +document.addEventListener('DOMContentLoaded', () => { + if (!window) { + return; + } + + if ('ResizeObserver' in window) { + const ResizeObserver = (window as any).ResizeObserver; + resizerObserver = new ResizeObserver(hack); + resizerObserver.observe(document.documentElement); + } else { + window.addEventListener('keyboardWillShow', hack); + window.addEventListener('keyboardWillHide', hack); + window.addEventListener('resize', hack); + } +}); + +window.addEventListener('unload', () => { + if (!window) { + return; + } + + if ('ResizeObserver' in window) { + if (resizerObserver) { + resizerObserver.unobserve(document.documentElement); + resizerObserver.disconnect(); + } + } else { + window.removeEventListener('keyboardWillShow', hack); + window.removeEventListener('keyboardWillHide', hack); + window.removeEventListener('resize', hack); + } +}); diff --git a/studio/stencil.config.ts b/studio/stencil.config.ts index 3cf7c9263..d0b24de1a 100644 --- a/studio/stencil.config.ts +++ b/studio/stencil.config.ts @@ -11,40 +11,40 @@ const dev: boolean = process.argv && process.argv.indexOf('--dev') > -1; // @ts-ignore const staging: boolean = process.argv && process.argv.indexOf('--staging') > -1; -const globalScript: string = dev ? 'src/global/app-dev.ts' : 'src/global/app.ts'; +const globalScript: string = dev ? 'src/global/app-dev.ts' : staging ? 'src/global/app-staging.ts' : 'src/global/app.ts'; -const configDataFile = dev ? (staging ? './config.staging.json' : './config.dev.json') : './config.prod.json'; +const configDataFile = dev ? './config.dev.json' : staging ? './config.staging.json' : './config.prod.json'; const configValues = require(configDataFile); export const config: Config = { - outputTargets: [{ - type: 'www', - baseUrl: 'https://deckdeckgo.com', - serviceWorker: { - swSrc: 'src/sw.js' - } - }], - globalScript: globalScript, - globalStyle: 'src/global/app.scss', - plugins: [ - replace({ - exclude: 'node_modules/**', - delimiters: ['<@', '@>'], - values: configValues - }), - sass({ - includePaths: ['node_modules/@deckdeckgo/deck-utils/styles/'] - }), - postcss({ - plugins: [autoprefixer()] - }) - ], - nodeResolve: {browser: true}, - devServer: { - openBrowser: false, - reloadStrategy: 'pageReload' - }, - copy: [ - {src: 'robots.txt'} - ] + outputTargets: [ + { + type: 'www', + baseUrl: 'https://deckdeckgo.com', + serviceWorker: { + swSrc: 'src/sw.js' + } + } + ], + globalScript: globalScript, + globalStyle: 'src/global/app.scss', + plugins: [ + replace({ + exclude: 'node_modules/**', + delimiters: ['<@', '@>'], + values: configValues + }), + sass({ + includePaths: ['node_modules/@deckdeckgo/deck-utils/styles/'] + }), + postcss({ + plugins: [autoprefixer()] + }) + ], + nodeResolve: {browser: true}, + devServer: { + openBrowser: false, + reloadStrategy: 'pageReload' + }, + copy: [{src: 'robots.txt'}] };