Merge branch 'dev' into libsquoosh-codecs-to-ts

This commit is contained in:
Surma
2021-06-16 11:43:35 +01:00
committed by GitHub
3 changed files with 19 additions and 14 deletions

View File

@@ -39,9 +39,9 @@ The returned `image` object is a representation of the original image, that you
When an image has been ingested, you can start preprocessing it and encoding it to other formats. This example will resize the image and then encode it to a `.jpg` and `.jxl` image: When an image has been ingested, you can start preprocessing it and encoding it to other formats. This example will resize the image and then encode it to a `.jpg` and `.jxl` image:
```js ```js
await image.decoded; //Wait until the image is decoded before running preprocessors await image.decoded; //Wait until the image is decoded before running preprocessors.
const preprocessOptions: { const preprocessOptions = {
resize: { resize: {
enabled: true, enabled: true,
width: 100, width: 100,
@@ -50,7 +50,7 @@ const preprocessOptions: {
} }
await image.preprocess(preprocessOptions); await image.preprocess(preprocessOptions);
const encodeOptions: { const encodeOptions = {
mozjpeg: {}, //an empty object means 'use default settings' mozjpeg: {}, //an empty object means 'use default settings'
jxl: { jxl: {
quality: 90, quality: 90,

View File

@@ -34,6 +34,8 @@ export default class TwoUp extends HTMLElement {
*/ */
private _everConnected = false; private _everConnected = false;
private _resizeObserver?: ResizeObserver;
constructor() { constructor() {
super(); super();
this._handle.className = styles.twoUpHandle; this._handle.className = styles.twoUpHandle;
@@ -45,13 +47,6 @@ export default class TwoUp extends HTMLElement {
childList: true, childList: true,
}); });
// Watch for element size changes.
if ('ResizeObserver' in window) {
new ResizeObserver(() => this._resetPosition()).observe(this);
} else {
window.addEventListener('resize', () => this._resetPosition());
}
// Watch for pointers on the handle. // Watch for pointers on the handle.
const pointerTracker: PointerTracker = new PointerTracker(this._handle, { const pointerTracker: PointerTracker = new PointerTracker(this._handle, {
start: (_, event) => { start: (_, event) => {
@@ -68,8 +63,6 @@ export default class TwoUp extends HTMLElement {
); );
}, },
}); });
window.addEventListener('keydown', (event) => this._onKeyDown(event));
} }
connectedCallback() { connectedCallback() {
@@ -84,12 +77,23 @@ export default class TwoUp extends HTMLElement {
}</svg> }</svg>
`}</div>`; `}</div>`;
// Watch for element size changes.
this._resizeObserver = new ResizeObserver(() => this._resetPosition());
this._resizeObserver.observe(this);
window.addEventListener('keydown', this._onKeyDown);
if (!this._everConnected) { if (!this._everConnected) {
this._resetPosition(); this._resetPosition();
this._everConnected = true; this._everConnected = true;
} }
} }
disconnectedCallback() {
window.removeEventListener('keydown', this._onKeyDown);
if (this._resizeObserver) this._resizeObserver.disconnect();
}
attributeChangedCallback(name: string) { attributeChangedCallback(name: string) {
if (name === orientationAttr) { if (name === orientationAttr) {
this._resetPosition(); this._resetPosition();
@@ -97,7 +101,7 @@ export default class TwoUp extends HTMLElement {
} }
// KeyDown event handler // KeyDown event handler
private _onKeyDown(event: KeyboardEvent) { private _onKeyDown = (event: KeyboardEvent) => {
const target = event.target; const target = event.target;
if (target instanceof HTMLElement && target.closest('input')) return; if (target instanceof HTMLElement && target.closest('input')) return;
@@ -122,7 +126,7 @@ export default class TwoUp extends HTMLElement {
this._relativePosition = this._position / bounds[dimensionAxis]; this._relativePosition = this._position / bounds[dimensionAxis];
this._setPosition(); this._setPosition();
} }
} };
private _resetPosition() { private _resetPosition() {
// Set the initial position of the handle. // Set the initial position of the handle.

View File

@@ -377,6 +377,7 @@ export default class Compress extends Component<Props, State> {
componentWillUnmount(): void { componentWillUnmount(): void {
updateDocumentTitle({ loading: false }); updateDocumentTitle({ loading: false });
this.widthQuery.removeListener(this.onMobileWidthChange);
this.mainAbortController.abort(); this.mainAbortController.abort();
for (const controller of this.sideAbortControllers) { for (const controller of this.sideAbortControllers) {
controller.abort(); controller.abort();