UNPKG

@foblex/core

Version:

A core library providing a set of utilities and interfaces for various projects.

27 lines 7.47 kB
import { PointExtensions } from '../../types'; export function mixinFitToParent(base) { return class extends base { fitToParent(rect, parentRect, points, toCenter) { this.transform.scaledPosition = PointExtensions.initialize(); this.transform.position = this.getZeroPositionWithoutScale(points); const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x; const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y; if ((itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) || itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height) { this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight); } const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale; const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale; this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale); } getZeroPositionWithoutScale(points) { const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0; const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0; return PointExtensions.initialize(xPoint, yPoint); } constructor(...args) { super(...args); } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LXRvLXBhcmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtY29yZS9zcmMvbWl4aW5zL2ZpdC10by1wYXJlbnQvZml0LXRvLXBhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs3RCxNQUFNLFVBQVUsZ0JBQWdCLENBQXdDLElBQU87SUFDN0UsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQUVoQixXQUFXLENBQUMsSUFBVyxFQUFFLFVBQWlCLEVBQUUsTUFBZ0IsRUFBRSxRQUFnQjtZQUNuRixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3RSxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFDSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksb0JBQW9CLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDcEYsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxvQkFBb0IsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUNwRjtnQkFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ25IO1lBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNwSSxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBRXRJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFdEosQ0FBQztRQUVPLDJCQUEyQixDQUFDLE1BQWdCO1lBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUVELFlBQVksR0FBRyxJQUFXO1lBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29uc3RydWN0b3IsIENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vY29uc3RydWN0b3InO1xuaW1wb3J0IHsgSUNhbkZpdFRvUGFyZW50IH0gZnJvbSAnLi9pLWNhbi1maXQtdG8tcGFyZW50JztcbmltcG9ydCB7IElUcmFuc2Zvcm1hYmxlIH0gZnJvbSAnLi4vaS10cmFuc2Zvcm1hYmxlJztcbmltcG9ydCB7IElQb2ludCwgSVJlY3QsIFBvaW50RXh0ZW5zaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxudHlwZSBDYW5GaXRUb1BhcmVudENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8SUNhbkZpdFRvUGFyZW50PiAmIEFic3RyYWN0Q29uc3RydWN0b3I8SUNhbkZpdFRvUGFyZW50PjtcblxuZXhwb3J0IGZ1bmN0aW9uIG1peGluRml0VG9QYXJlbnQ8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8SVRyYW5zZm9ybWFibGU+PihiYXNlOiBUKTogQ2FuRml0VG9QYXJlbnRDb25zdHJ1Y3RvciAmIFQ7XG5leHBvcnQgZnVuY3Rpb24gbWl4aW5GaXRUb1BhcmVudDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8SVRyYW5zZm9ybWFibGU+PihiYXNlOiBUKTogQ2FuRml0VG9QYXJlbnRDb25zdHJ1Y3RvciAmIFQge1xuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBiYXNlIHtcblxuICAgIHB1YmxpYyBmaXRUb1BhcmVudChyZWN0OiBJUmVjdCwgcGFyZW50UmVjdDogSVJlY3QsIHBvaW50czogSVBvaW50W10sIHRvQ2VudGVyOiBJUG9pbnQpOiB2b2lkIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtLnNjYWxlZFBvc2l0aW9uID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcbiAgICAgIHRoaXMudHJhbnNmb3JtLnBvc2l0aW9uID0gdGhpcy5nZXRaZXJvUG9zaXRpb25XaXRob3V0U2NhbGUocG9pbnRzKTtcbiAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyV2lkdGggPSAocmVjdC53aWR0aCAvIHRoaXMudHJhbnNmb3JtLnNjYWxlKSArIHRvQ2VudGVyLng7XG4gICAgICBjb25zdCBpdGVtc0NvbnRhaW5lckhlaWdodCA9IChyZWN0LmhlaWdodCAvIHRoaXMudHJhbnNmb3JtLnNjYWxlKSArIHRvQ2VudGVyLnk7XG4gICAgICBpZiAoXG4gICAgICAgICAgKGl0ZW1zQ29udGFpbmVyV2lkdGggPiBwYXJlbnRSZWN0LndpZHRoIHx8IGl0ZW1zQ29udGFpbmVySGVpZ2h0ID4gcGFyZW50UmVjdC5oZWlnaHQpIHx8XG4gICAgICAgICAgaXRlbXNDb250YWluZXJXaWR0aCA8IHBhcmVudFJlY3Qud2lkdGggJiYgaXRlbXNDb250YWluZXJIZWlnaHQgPCBwYXJlbnRSZWN0LmhlaWdodFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtLnNjYWxlID0gTWF0aC5taW4ocGFyZW50UmVjdC53aWR0aCAvIGl0ZW1zQ29udGFpbmVyV2lkdGgsIHBhcmVudFJlY3QuaGVpZ2h0IC8gaXRlbXNDb250YWluZXJIZWlnaHQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdYID0gKHBhcmVudFJlY3Qud2lkdGggLSBpdGVtc0NvbnRhaW5lcldpZHRoICogdGhpcy50cmFuc2Zvcm0uc2NhbGUpIC8gMiAtIHRoaXMudHJhbnNmb3JtLnBvc2l0aW9uLnggKiB0aGlzLnRyYW5zZm9ybS5zY2FsZTtcbiAgICAgIGNvbnN0IG5ld1kgPSAocGFyZW50UmVjdC5oZWlnaHQgLSBpdGVtc0NvbnRhaW5lckhlaWdodCAqIHRoaXMudHJhbnNmb3JtLnNjYWxlKSAvIDIgLSB0aGlzLnRyYW5zZm9ybS5wb3NpdGlvbi55ICogdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG5cbiAgICAgIHRoaXMudHJhbnNmb3JtLnBvc2l0aW9uID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUobmV3WCArICh0b0NlbnRlci54IC8gMikgKiB0aGlzLnRyYW5zZm9ybS5zY2FsZSwgbmV3WSArICh0b0NlbnRlci55IC8gMikgKiB0aGlzLnRyYW5zZm9ybS5zY2FsZSlcblxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0WmVyb1Bvc2l0aW9uV2l0aG91dFNjYWxlKHBvaW50czogSVBvaW50W10pOiBJUG9pbnQge1xuICAgICAgY29uc3QgeFBvaW50ID0gcG9pbnRzLmxlbmd0aCA/IE1hdGgubWluKC4uLnBvaW50cy5tYXAoKHBvaW50KSA9PiBwb2ludC54KSkgOiAwO1xuICAgICAgY29uc3QgeVBvaW50ID0gcG9pbnRzLmxlbmd0aCA/IE1hdGgubWluKC4uLnBvaW50cy5tYXAoKHBvaW50KSA9PiBwb2ludC55KSkgOiAwO1xuICAgICAgcmV0dXJuIFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKHhQb2ludCwgeVBvaW50KVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICB9XG4gIH07XG59XG4iXX0=