mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-12 00:37:19 +00:00
Merge branch 'dev' into libsquoosh-codecs-to-ts
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user