From 455c868e554789aa5c68673a5ad75dc346a90c44 Mon Sep 17 00:00:00 2001 From: Jake Archibald Date: Wed, 23 Sep 2020 14:38:41 +0100 Subject: [PATCH] First bit of real UI code landed --- lib/css-plugin.js | 6 +- missing-types.d.ts | 2 + package-lock.json | 72 ++++---- package.json | 18 +- rollup.config.js | 7 +- src/client/index.tsx | 51 ------ src/client/initial-app/App/index.tsx | 137 +++++++++++++++ src/client/initial-app/App/style.css | 68 ++++++++ .../custom-els/loading-spinner/index.ts | 62 +++++++ .../loading-spinner/missing-types.d.ts | 13 ++ .../custom-els/loading-spinner/styles.css | 158 ++++++++++++++++++ .../initial-app/custom-els/missing-types.d.ts | 16 ++ .../initial-app/custom-els/snack-bar/index.ts | 95 +++++++++++ .../custom-els/snack-bar/missing-types.d.ts | 15 ++ .../custom-els/snack-bar/styles.css | 105 ++++++++++++ src/client/initial-app/index.tsx | 44 +++++ src/client/initial-app/util.ts | 15 ++ src/client/missing-types.d.ts | 11 ++ src/client/tmp.png | Bin 92167 -> 0 bytes src/static-build/assets/favicon.ico | Bin 0 -> 15086 bytes src/static-build/components/base/index.tsx | 44 ----- .../{components/base => pages/index}/all.css | 0 src/static-build/pages/index/index.tsx | 41 ++++- 23 files changed, 839 insertions(+), 141 deletions(-) delete mode 100644 src/client/index.tsx create mode 100644 src/client/initial-app/App/index.tsx create mode 100644 src/client/initial-app/App/style.css create mode 100644 src/client/initial-app/custom-els/loading-spinner/index.ts create mode 100644 src/client/initial-app/custom-els/loading-spinner/missing-types.d.ts create mode 100644 src/client/initial-app/custom-els/loading-spinner/styles.css create mode 100644 src/client/initial-app/custom-els/missing-types.d.ts create mode 100644 src/client/initial-app/custom-els/snack-bar/index.ts create mode 100644 src/client/initial-app/custom-els/snack-bar/missing-types.d.ts create mode 100644 src/client/initial-app/custom-els/snack-bar/styles.css create mode 100644 src/client/initial-app/index.tsx create mode 100644 src/client/initial-app/util.ts delete mode 100644 src/client/tmp.png create mode 100644 src/static-build/assets/favicon.ico delete mode 100644 src/static-build/components/base/index.tsx rename src/static-build/{components/base => pages/index}/all.css (100%) diff --git a/lib/css-plugin.js b/lib/css-plugin.js index 8e2f9082..952da5fc 100644 --- a/lib/css-plugin.js +++ b/lib/css-plugin.js @@ -101,7 +101,7 @@ export default function (resolveFileUrl) { hashToId = new Map(); pathToResult = new Map(); - const cssPaths = await globP('src/static-build/**/*.css', { + const cssPaths = await globP('src/**/*.css', { nodir: true, absolute: true, }); @@ -126,11 +126,11 @@ export default function (resolveFileUrl) { const cssClassExports = Object.entries(moduleJSON).map( ([key, val]) => - `export const $${camelCase(key)} = ${JSON.stringify(val)};`, + `export const ${camelCase(key)} = ${JSON.stringify(val)};`, ); const defs = Object.keys(moduleJSON) - .map((key) => `export const $${camelCase(key)}: string;`) + .map((key) => `export const ${camelCase(key)}: string;`) .join('\n'); const defPath = path + '.d.ts'; diff --git a/missing-types.d.ts b/missing-types.d.ts index 27f3ea7d..32d82327 100644 --- a/missing-types.d.ts +++ b/missing-types.d.ts @@ -21,3 +21,5 @@ declare module 'omt:*' { const value: string; export default value; } + +declare const __PRODUCTION__: boolean; diff --git a/package-lock.json b/package-lock.json index 6b0a5589..c76dc9aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -109,9 +109,9 @@ } }, "@rollup/plugin-commonjs": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz", - "integrity": "sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", + "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -145,6 +145,16 @@ "resolve": "^1.17.0" } }, + "@rollup/plugin-replace": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz", + "integrity": "sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "magic-string": "^0.25.5" + } + }, "@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -195,9 +205,9 @@ "dev": true }, "@types/node": { - "version": "14.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.10.1.tgz", - "integrity": "sha512-aYNbO+FZ/3KGeQCEkNhHFRIzBOUgc7QvcVNKXbfnhDkSfwUv91JsQQa10rDgKSTSLkXZ1UIyPe4FJJNVgw1xWQ==", + "version": "14.11.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz", + "integrity": "sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==", "dev": true }, "@types/parse-json": { @@ -1157,12 +1167,12 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "dedent": { @@ -1457,6 +1467,12 @@ "escape-string-regexp": "^1.0.5" } }, + "file-drop-element": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-drop-element/-/file-drop-element-1.0.0.tgz", + "integrity": "sha512-4T+hoNZR7hMumVcCUbmg2XtjGph15thvsT40+Xu8snMBpnDsRFhBnZ6Nhxbnwot451gg8EfJzQRS+Wmr4j7Ytw==", + "dev": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1923,9 +1939,9 @@ "dev": true }, "lint-staged": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.3.0.tgz", - "integrity": "sha512-an3VgjHqmJk0TORB/sdQl0CTkRg4E5ybYCXTTCSJ5h9jFwZbcgKIx5oVma5e7wp/uKt17s1QYFmYqT9MGVosGw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.4.0.tgz", + "integrity": "sha512-uaiX4U5yERUSiIEQc329vhCTDDwUcSvKdRLsNomkYLRzijk3v8V9GWm2Nz0RMVB87VcuzLvtgy6OsjoH++QHIg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -2399,9 +2415,9 @@ } }, "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -3063,9 +3079,9 @@ "dev": true }, "preact": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.8.tgz", - "integrity": "sha512-uVLeEAyRsCkUEFhVHlOu17OxcrwC7+hTGZ08kBoLBiGHiZooUZuibQnphgMKftw/rqYntNMyhVCPqQhcyAGHag==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.0.tgz", + "integrity": "sha512-CuhSq2uq1lUy9442j9Jlucapt8+9SFyNl1+evzbMb8dTF4GCPrc1XMvf9Hai7XbeXG/wIxR0TVhhEFKJ3DkY6Q==", "dev": true }, "preact-render-to-string": { @@ -3078,9 +3094,9 @@ } }, "prettier": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz", - "integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", "dev": true }, "pretty-format": { @@ -3225,9 +3241,9 @@ } }, "rollup": { - "version": "2.26.11", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.11.tgz", - "integrity": "sha512-xyfxxhsE6hW57xhfL1I+ixH8l2bdoIMaAecdQiWF3N7IgJEMu99JG+daBiSZQjnBpzFxa0/xZm+3pbCdAQehHw==", + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.28.1.tgz", + "integrity": "sha512-DOtVoqOZt3+FjPJWLU8hDIvBjUylc9s6IZvy76XklxzcLvAQLtVAG/bbhsMhcWnYxC0TKKcf1QQ/tg29zeID0Q==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -3812,9 +3828,9 @@ "dev": true }, "typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", + "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", "dev": true }, "uniq": { diff --git a/package.json b/package.json index 335e6012..32a51816 100644 --- a/package.json +++ b/package.json @@ -10,29 +10,31 @@ "serve": "serve --config server.json .tmp/build/static" }, "devDependencies": { - "@rollup/plugin-commonjs": "^15.0.0", + "@rollup/plugin-commonjs": "^15.1.0", "@rollup/plugin-node-resolve": "^9.0.0", + "@rollup/plugin-replace": "^2.3.3", "@surma/rollup-plugin-off-main-thread": "^1.4.1", - "@types/node": "^14.10.1", + "@types/node": "^14.11.2", "comlink": "^4.3.0", "cssnano": "^4.1.10", "del": "^5.1.0", + "file-drop-element": "^1.0.0", "husky": "^4.3.0", - "lint-staged": "^10.3.0", + "lint-staged": "^10.4.0", "lodash.camelcase": "^4.3.0", - "postcss": "^7.0.32", + "postcss": "^7.0.34", "postcss-import": "^12.0.1", "postcss-modules": "^3.2.2", "postcss-nested": "^4.2.3", "postcss-simple-vars": "^5.0.2", "postcss-url": "^8.0.0", - "preact": "^10.4.8", + "preact": "^10.5.0", "preact-render-to-string": "^5.1.10", - "prettier": "^2.1.1", - "rollup": "^2.26.11", + "prettier": "^2.1.2", + "rollup": "^2.28.1", "rollup-plugin-terser": "^7.0.2", "serve": "^11.3.2", - "typescript": "^4.0.2" + "typescript": "^4.0.3" }, "husky": { "hooks": { diff --git a/rollup.config.js b/rollup.config.js index 3b916e39..c76e2e5d 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -17,6 +17,7 @@ import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { terser } from 'rollup-plugin-terser'; import OMT from '@surma/rollup-plugin-off-main-thread'; +import replace from '@rollup/plugin-replace'; import simpleTS from './lib/simple-ts'; import clientBundlePlugin from './lib/client-bundle-plugin'; @@ -46,6 +47,8 @@ export default async function ({ watch }) { ); await del('.tmp/build'); + const isProduction = !watch; + const tsPluginInstance = simpleTS('.', { watch, }); @@ -84,7 +87,8 @@ export default async function ({ watch }) { ...commonPlugins(), commonjs(), resolve(), - terser({ module: true }), + replace({ __PRERENDER__: false, __PRODUCTION__: isProduction }), + //terser({ module: true }), ], }, { @@ -99,6 +103,7 @@ export default async function ({ watch }) { emitFiles({ include: '**/*', root: path.join(__dirname, 'src', 'copy') }), nodeExternalPlugin(), imageWorkerPlugin(), + replace({ __PRERENDER__: true, __PRODUCTION__: isProduction }), runScript(dir + '/index.js'), ], }; diff --git a/src/client/index.tsx b/src/client/index.tsx deleted file mode 100644 index 76bb60a0..00000000 --- a/src/client/index.tsx +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright 2020 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { wrap } from 'comlink'; -import workerURL from 'omt:features/worker'; -import imgURL from 'url:./tmp.png'; - -import type { ProcessorWorkerApi } from 'features/worker'; -const worker = new Worker(workerURL); -const api = wrap(worker); - -async function demo() { - const img = document.createElement('img'); - img.src = imgURL; - await img.decode(); - // Make canvas same size as image - const canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - const ctx = canvas.getContext('2d')!; - ctx.drawImage(img, 0, 0); - const data = ctx.getImageData(0, 0, img.width, img.height); - const result = await api.rotate(data, { - rotate: 180, - }); - - { - /*const resultUrl = URL.createObjectURL(new Blob([result])); - const img = new Image(); - img.src = resultUrl; - document.body.append(img);*/ - - const canvas = document.createElement('canvas'); - canvas.width = result.width; - canvas.height = result.height; - const ctx = canvas.getContext('2d')!; - ctx.putImageData(result, 0, 0); - document.body.append(canvas); - } -} - -demo(); diff --git a/src/client/initial-app/App/index.tsx b/src/client/initial-app/App/index.tsx new file mode 100644 index 00000000..6afdc147 --- /dev/null +++ b/src/client/initial-app/App/index.tsx @@ -0,0 +1,137 @@ +import type { FileDropEvent } from 'file-drop-element'; +import type SnackBarElement from 'client/initial-app/custom-els/snack-bar'; +import type { SnackOptions } from 'client/initial-app/custom-els/snack-bar'; + +import { h, Component } from 'preact'; + +import { linkRef } from 'client/initial-app/util'; +import * as style from './style.css'; +import 'file-drop-element'; +import 'client/initial-app/custom-els/snack-bar'; +//import Intro from '../intro'; +import 'client/initial-app/custom-els/loading-spinner'; + +const ROUTE_EDITOR = '/editor'; + +//const compressPromise = import('../compress'); +//const swBridgePromise = import('../../lib/sw-bridge'); + +function back() { + window.history.back(); +} + +interface Props {} + +interface State { + awaitingShareTarget: boolean; + file?: File; + isEditorOpen: Boolean; + Compress?: undefined; // typeof import('../compress').default; +} + +export default class App extends Component { + state: State = { + awaitingShareTarget: new URL(location.href).searchParams.has( + 'share-target', + ), + isEditorOpen: false, + file: undefined, + Compress: undefined, + }; + + snackbar?: SnackBarElement; + + constructor() { + super(); + + /*compressPromise + .then((module) => { + this.setState({ Compress: module.default }); + }) + .catch(() => { + this.showSnack('Failed to load app'); + }); + + swBridgePromise.then(async ({ offliner, getSharedImage }) => { + offliner(this.showSnack); + if (!this.state.awaitingShareTarget) return; + const file = await getSharedImage(); + // Remove the ?share-target from the URL + history.replaceState('', '', '/'); + this.openEditor(); + this.setState({ file, awaitingShareTarget: false }); + });*/ + + // Since iOS 10, Apple tries to prevent disabling pinch-zoom. This is great in theory, but + // really breaks things on Squoosh, as you can easily end up zooming the UI when you mean to + // zoom the image. Once you've done this, it's really difficult to undo. Anyway, this seems to + // prevent it. + document.body.addEventListener('gesturestart', (event) => { + event.preventDefault(); + }); + + window.addEventListener('popstate', this.onPopState); + } + + private onFileDrop = ({ files }: FileDropEvent) => { + if (!files || files.length === 0) return; + const file = files[0]; + this.openEditor(); + this.setState({ file }); + }; + + private onIntroPickFile = (file: File) => { + this.openEditor(); + this.setState({ file }); + }; + + private showSnack = ( + message: string, + options: SnackOptions = {}, + ): Promise => { + if (!this.snackbar) throw Error('Snackbar missing'); + return this.snackbar.showSnackbar(message, options); + }; + + private onPopState = () => { + this.setState({ isEditorOpen: location.pathname === ROUTE_EDITOR }); + }; + + private openEditor = () => { + if (this.state.isEditorOpen) return; + // Change path, but preserve query string. + const editorURL = new URL(location.href); + editorURL.pathname = ROUTE_EDITOR; + history.pushState(null, '', editorURL.href); + this.setState({ isEditorOpen: true }); + }; + + render( + {}: Props, + { file, isEditorOpen, Compress, awaitingShareTarget }: State, + ) { + const showSpinner = awaitingShareTarget || (isEditorOpen && !Compress); + + return ( +
+ + {showSpinner ? ( + + ) : isEditorOpen ? ( + Compress && + // + 'TODO: uncomment above' + ) : ( + // + 'TODO: show intro here' + )} + + +
+ ); + } +} diff --git a/src/client/initial-app/App/style.css b/src/client/initial-app/App/style.css new file mode 100644 index 00000000..d23b5483 --- /dev/null +++ b/src/client/initial-app/App/style.css @@ -0,0 +1,68 @@ +.app { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + contain: strict; +} + +.drop { + overflow: hidden; + touch-action: none; + height: 100%; + width: 100%; + + &:global { + &::after { + content: ''; + position: absolute; + display: block; + left: 10px; + top: 10px; + right: 10px; + bottom: 10px; + border: 2px dashed #fff; + background-color: rgba(88, 116, 88, 0.2); + border-color: rgba(65, 129, 65, 0.5); + border-radius: 10px; + opacity: 0; + transform: scale(0.95); + transition: all 200ms ease-in; + transition-property: transform, opacity; + pointer-events: none; + } + + &.drop-valid::after { + opacity: 1; + transform: scale(1); + transition-timing-function: ease-out; + } + } +} + +.option-pair { + display: flex; + justify-content: flex-end; + width: 100%; + height: 100%; + + &.horizontal { + justify-content: space-between; + align-items: flex-end; + } + + &.vertical { + flex-direction: column; + } +} + +.app-loader { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + --size: 225px; + --stroke-width: 26px; +} diff --git a/src/client/initial-app/custom-els/loading-spinner/index.ts b/src/client/initial-app/custom-els/loading-spinner/index.ts new file mode 100644 index 00000000..e1af112d --- /dev/null +++ b/src/client/initial-app/custom-els/loading-spinner/index.ts @@ -0,0 +1,62 @@ +import * as styles from './styles.css'; + +/** + * A simple spinner. This custom element has no JS API. Just put it in the document, and it'll + * spin. You can configure the following using CSS custom properties: + * + * --size: Size of the spinner element (it's always square). Default: 28px. + * --color: Color of the spinner. Default: #4285f4. + * --stroke-width: Width of the stroke of the spinner. Default: 3px. + * --delay: Once the spinner enters the DOM, how long until it shows. This prevents the spinner + * appearing on the screen for short operations. Default: 300ms. + */ +export default class LoadingSpinner extends HTMLElement { + private _delayTimeout: number = 0; + + constructor() { + super(); + + // Ideally we'd use shadow DOM here, but we're targeting browsers without shadow DOM support. + // You can't set attributes/content in a custom element constructor, so I'm waiting a microtask. + Promise.resolve().then(() => { + this.style.display = 'none'; + // prettier-ignore + this.innerHTML = '' + + `
` + + `
` + + `
` + + `
` + + '
' + + `
` + + `
` + + '
' + + `
` + + `
` + + '
' + + '
' + + '
'; + }); + } + + disconnectedCallback() { + this.style.display = 'none'; + clearTimeout(this._delayTimeout); + } + + connectedCallback() { + const delayStr = getComputedStyle(this).getPropertyValue('--delay').trim(); + let delayNum = parseFloat(delayStr); + + // If seconds… + if (/\ds$/.test(delayStr)) { + // Convert to ms. + delayNum *= 1000; + } + + this._delayTimeout = self.setTimeout(() => { + this.style.display = ''; + }, delayNum); + } +} + +customElements.define('loading-spinner', LoadingSpinner); diff --git a/src/client/initial-app/custom-els/loading-spinner/missing-types.d.ts b/src/client/initial-app/custom-els/loading-spinner/missing-types.d.ts new file mode 100644 index 00000000..35f42823 --- /dev/null +++ b/src/client/initial-app/custom-els/loading-spinner/missing-types.d.ts @@ -0,0 +1,13 @@ +interface LoadingSpinner extends preact.JSX.HTMLAttributes {} + +declare module 'preact' { + namespace createElement.JSX { + interface IntrinsicElements { + 'loading-spinner': LoadingSpinner; + } + } +} + +// Thing break unless this file is a module. +// Don't ask me why. I don't know. +export {}; diff --git a/src/client/initial-app/custom-els/loading-spinner/styles.css b/src/client/initial-app/custom-els/loading-spinner/styles.css new file mode 100644 index 00000000..45017087 --- /dev/null +++ b/src/client/initial-app/custom-els/loading-spinner/styles.css @@ -0,0 +1,158 @@ +@keyframes spinner-left-spin { + from { + transform: rotate(130deg); + } + 50% { + transform: rotate(-5deg); + } + to { + transform: rotate(130deg); + } +} + +@keyframes spinner-right-spin { + from { + transform: rotate(-130deg); + } + 50% { + transform: rotate(5deg); + } + to { + transform: rotate(-130deg); + } +} + +@keyframes spinner-fade-out { + to { + opacity: 0; + } +} + +@keyframes spinner-container-rotate { + to { + transform: rotate(360deg); + } +} + +@keyframes spinner-fill-unfill-rotate { + 12.5% { + transform: rotate(135deg); + } /* 0.5 * ARCSIZE */ + 25% { + transform: rotate(270deg); + } /* 1 * ARCSIZE */ + 37.5% { + transform: rotate(405deg); + } /* 1.5 * ARCSIZE */ + 50% { + transform: rotate(540deg); + } /* 2 * ARCSIZE */ + 62.5% { + transform: rotate(675deg); + } /* 2.5 * ARCSIZE */ + 75% { + transform: rotate(810deg); + } /* 3 * ARCSIZE */ + 87.5% { + transform: rotate(945deg); + } /* 3.5 * ARCSIZE */ + to { + transform: rotate(1080deg); + } /* 4 * ARCSIZE */ +} + +loading-spinner { + --size: 28px; + --color: #4285f4; + --stroke-width: 3px; + --delay: 300ms; + + pointer-events: none; + display: inline-block; + position: relative; + width: var(--size); + height: var(--size); + border-color: var(--color); +} + +loading-spinner .spinner-circle { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + box-sizing: border-box; + height: 100%; + width: 200%; + border-width: var(--stroke-width); + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; +} + +/* + Patch the gap that appear between the two adjacent div.circle-clipper while the + spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). +*/ +loading-spinner .spinner-gap-patch { + position: absolute; + box-sizing: border-box; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +loading-spinner .spinner-gap-patch .spinner-circle { + width: 1000%; + left: -450%; +} + +loading-spinner .spinner-circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +loading-spinner .spinner-left .spinner-circle { + border-right-color: transparent !important; + transform: rotate(129deg); + animation: spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +loading-spinner .spinner-right .spinner-circle { + left: -100%; + border-left-color: transparent !important; + transform: rotate(-129deg); + animation: spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite + both; +} + +loading-spinner.spinner-fadeout { + animation: spinner-fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1) forwards; +} + +loading-spinner .spinner-container { + width: 100%; + height: 100%; + border-color: inherit; + + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + animation: spinner-container-rotate 1568ms linear infinite; +} + +loading-spinner .spinner-layer { + position: absolute; + width: 100%; + height: 100%; + border-color: inherit; + /* durations: 4 * ARCTIME */ + animation: spinner-fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) + infinite both; +} diff --git a/src/client/initial-app/custom-els/missing-types.d.ts b/src/client/initial-app/custom-els/missing-types.d.ts new file mode 100644 index 00000000..64dcc636 --- /dev/null +++ b/src/client/initial-app/custom-els/missing-types.d.ts @@ -0,0 +1,16 @@ +import type { FileDropElement, FileDropEvent } from 'file-drop-element'; + +interface FileDropAttributes extends preact.JSX.HTMLAttributes { + accept?: string; + onfiledrop?: ((this: FileDropElement, ev: FileDropEvent) => any) | null; +} + +declare module 'preact' { + namespace createElement.JSX { + interface IntrinsicElements { + 'file-drop': FileDropAttributes; + } + } +} + +export {}; diff --git a/src/client/initial-app/custom-els/snack-bar/index.ts b/src/client/initial-app/custom-els/snack-bar/index.ts new file mode 100644 index 00000000..0992fbcc --- /dev/null +++ b/src/client/initial-app/custom-els/snack-bar/index.ts @@ -0,0 +1,95 @@ +import * as style from './styles.css'; + +export interface SnackOptions { + timeout?: number; + actions?: string[]; +} + +function createSnack( + message: string, + options: SnackOptions, +): [Element, Promise] { + const { timeout = 0, actions = ['dismiss'] } = options; + + const el = document.createElement('div'); + el.className = style.snackbar; + el.setAttribute('aria-live', 'assertive'); + el.setAttribute('aria-atomic', 'true'); + el.setAttribute('aria-hidden', 'false'); + + const text = document.createElement('div'); + text.className = style.text; + text.textContent = message; + el.appendChild(text); + + const result = new Promise((resolve) => { + let timeoutId: number; + + // Add action buttons + for (const action of actions) { + const button = document.createElement('button'); + button.className = style.button; + button.textContent = action; + button.addEventListener('click', () => { + clearTimeout(timeoutId); + resolve(action); + }); + el.appendChild(button); + } + + // Add timeout + if (timeout) { + timeoutId = self.setTimeout(() => resolve(''), timeout); + } + }); + + return [el, result]; +} + +export default class SnackBarElement extends HTMLElement { + private _snackbars: [ + string, + SnackOptions, + (action: Promise) => void, + ][] = []; + private _processingQueue = false; + + /** + * Show a snackbar. Returns a promise for the name of the action clicked, or an empty string if no + * action is clicked. + */ + showSnackbar(message: string, options: SnackOptions = {}): Promise { + return new Promise((resolve) => { + this._snackbars.push([message, options, resolve]); + if (!this._processingQueue) this._processQueue(); + }); + } + + private async _processQueue() { + this._processingQueue = true; + + while (this._snackbars[0]) { + const [message, options, resolver] = this._snackbars[0]; + const [el, result] = createSnack(message, options); + // Pass the result back to the original showSnackbar call. + resolver(result); + this.appendChild(el); + + // Wait for the user to click an action, or for the snack to timeout. + await result; + + // Transition the snack away. + el.setAttribute('aria-hidden', 'true'); + await new Promise((resolve) => { + el.addEventListener('animationend', () => resolve()); + }); + el.remove(); + + this._snackbars.shift(); + } + + this._processingQueue = false; + } +} + +customElements.define('snack-bar', SnackBarElement); diff --git a/src/client/initial-app/custom-els/snack-bar/missing-types.d.ts b/src/client/initial-app/custom-els/snack-bar/missing-types.d.ts new file mode 100644 index 00000000..16c86a94 --- /dev/null +++ b/src/client/initial-app/custom-els/snack-bar/missing-types.d.ts @@ -0,0 +1,15 @@ +import type { SnackOptions } from '.'; + +interface SnackBarAttributes extends preact.JSX.HTMLAttributes { + showSnackbar?: (options: SnackOptions) => Promise; +} + +declare module 'preact' { + namespace createElement.JSX { + interface IntrinsicElements { + 'snack-bar': SnackBarAttributes; + } + } +} + +export {}; diff --git a/src/client/initial-app/custom-els/snack-bar/styles.css b/src/client/initial-app/custom-els/snack-bar/styles.css new file mode 100644 index 00000000..f20552cb --- /dev/null +++ b/src/client/initial-app/custom-els/snack-bar/styles.css @@ -0,0 +1,105 @@ +snack-bar { + display: block; + position: fixed; + left: 0; + bottom: 0; + width: 100%; + height: 0; + overflow: visible; +} + +.snackbar { + position: fixed; + display: flex; + box-sizing: border-box; + left: 50%; + bottom: 24px; + width: 344px; + margin-left: -172px; + background: #2a2a2a; + border-radius: 2px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5); + transform-origin: center; + color: #eee; + z-index: 100; + cursor: default; + will-change: transform; + animation: snackbar-show 300ms ease forwards 1; +} +.snackbar[aria-hidden='true'] { + animation: snackbar-hide 300ms ease forwards 1; +} +@keyframes snackbar-show { + from { + opacity: 0; + transform: scale(0.5); + } +} +@keyframes snackbar-hide { + to { + opacity: 0; + transform: translateY(100%); + } +} + +@media (max-width: 400px) { + .snackbar { + width: 100%; + bottom: 0; + left: 0; + margin-left: 0; + border-radius: 0; + } +} + +.text { + flex: 1 1 auto; + padding: 16px; + font-size: 100%; +} + +.button { + position: relative; + flex: 0 1 auto; + padding: 8px; + height: 36px; + margin: auto 8px auto -8px; + min-width: 5em; + background: none; + border: none; + border-radius: 3px; + color: lightgreen; + font-weight: inherit; + letter-spacing: 0.05em; + font-size: 100%; + text-transform: uppercase; + text-align: center; + cursor: pointer; + overflow: hidden; + transition: background-color 200ms ease; + outline: none; +} +.button:hover { + background-color: rgba(0, 0, 0, 0.15); +} +.button:focus:before { + content: ''; + position: absolute; + left: 50%; + top: 50%; + width: 120%; + height: 0; + padding: 0 0 120%; + margin: -60% 0 0 -60%; + background: rgba(255, 255, 255, 0.1); + border-radius: 50%; + transform-origin: center; + will-change: transform; + animation: focus-ring 300ms ease-out forwards 1; + pointer-events: none; +} +@keyframes focus-ring { + from { + transform: scale(0.01); + } +} diff --git a/src/client/initial-app/index.tsx b/src/client/initial-app/index.tsx new file mode 100644 index 00000000..c81affc4 --- /dev/null +++ b/src/client/initial-app/index.tsx @@ -0,0 +1,44 @@ +/** + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { h, render } from 'preact'; +import App from './App'; + +const root = document.getElementById('app') as HTMLElement; + +async function main() { + if (!__PRODUCTION__) await import('preact/debug'); + render(, root); +} + +main(); + +// Analytics +{ + // Determine the current display mode. + const displayMode = + navigator.standalone || + window.matchMedia('(display-mode: standalone)').matches + ? 'standalone' + : 'browser'; + + // Setup analytics + window.ga = window.ga || ((...args) => (ga.q = ga.q || []).push(args)); + ga('create', 'UA-128752250-1', 'auto'); + ga('set', 'transport', 'beacon'); + ga('set', 'dimension1', displayMode); + ga('send', 'pageview', '/index.html', { title: 'Squoosh' }); + // Load the GA script + const script = document.createElement('script'); + script.src = 'https://www.google-analytics.com/analytics.js'; + document.head.appendChild(script); +} diff --git a/src/client/initial-app/util.ts b/src/client/initial-app/util.ts new file mode 100644 index 00000000..d120214b --- /dev/null +++ b/src/client/initial-app/util.ts @@ -0,0 +1,15 @@ +/** Creates a function ref that assigns its value to a given property of an object. + * @example + * // element is stored as `this.foo` when rendered. + *
+ */ +export function linkRef(obj: any, name: string) { + const refName = `$$ref_${name}`; + let ref = obj[refName]; + if (!ref) { + ref = obj[refName] = (c: T) => { + obj[name] = c; + }; + } + return ref; +} diff --git a/src/client/missing-types.d.ts b/src/client/missing-types.d.ts index 27b1d41c..530bd6c0 100644 --- a/src/client/missing-types.d.ts +++ b/src/client/missing-types.d.ts @@ -11,3 +11,14 @@ * limitations under the License. */ /// + +declare var ga: { + (...args: any[]): void; + q: any[]; +}; + +interface Navigator { + readonly standalone: boolean; +} + +declare module 'preact/debug' {} diff --git a/src/client/tmp.png b/src/client/tmp.png deleted file mode 100644 index cdc60432cd73e03bfbaaf97439ad376f99c3a6ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92167 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 = ({ - children, - title, -}: RenderableProps) => { - return ( - - - {title ? `${title} - ` : ''}Squoosh - - -