UNPKG

@foblex/core

Version:

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

24 lines 5.96 kB
import { PointExtensions } from '../../types'; export function mixinOneToOneCentering(base) { return class extends base { oneToOneCentering(rect, parentRect, points) { this.transform.scaledPosition = PointExtensions.initialize(); this.transform.position = this.getZeroPositionWithoutScale(points); const itemsContainerWidth = rect.width / this.transform.scale; const itemsContainerHeight = rect.height / this.transform.scale; this.transform.scale = 1; 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, newY); } 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLXRvLW9uZS1jZW50ZXJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWNvcmUvc3JjL21peGlucy9vbmUtdG8tb25lLWNlbnRlcmluZy9vbmUtdG8tb25lLWNlbnRlcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs3RCxNQUFNLFVBQVUsc0JBQXNCLENBQXdDLElBQU87SUFDbkYsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQUVoQixpQkFBaUIsQ0FBQyxJQUFXLEVBQUUsVUFBaUIsRUFBRSxNQUFnQjtZQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLE1BQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDcEksTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUV0SSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRU8sMkJBQTJCLENBQUMsTUFBZ0I7WUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsT0FBTyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRCxDQUFDO1FBRUQsWUFBWSxHQUFHLElBQVc7WUFDeEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3IgfSBmcm9tICcuLi9jb25zdHJ1Y3Rvcic7XG5pbXBvcnQgeyBJQ2FuT25lVG9PbmVDZW50ZXJpbmcgfSBmcm9tICcuL2ktY2FuLW9uZS10by1vbmUtY2VudGVyaW5nJztcbmltcG9ydCB7IElUcmFuc2Zvcm1hYmxlIH0gZnJvbSAnLi4vaS10cmFuc2Zvcm1hYmxlJztcbmltcG9ydCB7IElQb2ludCwgSVJlY3QsIFBvaW50RXh0ZW5zaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxudHlwZSBDYW5PbmVUb09uZUNlbnRlcmluZ0NvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8SUNhbk9uZVRvT25lQ2VudGVyaW5nPiAmIEFic3RyYWN0Q29uc3RydWN0b3I8SUNhbk9uZVRvT25lQ2VudGVyaW5nPjtcblxuZXhwb3J0IGZ1bmN0aW9uIG1peGluT25lVG9PbmVDZW50ZXJpbmc8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8SVRyYW5zZm9ybWFibGU+PihiYXNlOiBUKTogQ2FuT25lVG9PbmVDZW50ZXJpbmdDb25zdHJ1Y3RvciAmIFQ7XG5leHBvcnQgZnVuY3Rpb24gbWl4aW5PbmVUb09uZUNlbnRlcmluZzxUIGV4dGVuZHMgQ29uc3RydWN0b3I8SVRyYW5zZm9ybWFibGU+PihiYXNlOiBUKTogQ2FuT25lVG9PbmVDZW50ZXJpbmdDb25zdHJ1Y3RvciAmIFQge1xuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBiYXNlIHtcblxuICAgIHB1YmxpYyBvbmVUb09uZUNlbnRlcmluZyhyZWN0OiBJUmVjdCwgcGFyZW50UmVjdDogSVJlY3QsIHBvaW50czogSVBvaW50W10pOiB2b2lkIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtLnNjYWxlZFBvc2l0aW9uID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcbiAgICAgIHRoaXMudHJhbnNmb3JtLnBvc2l0aW9uID0gdGhpcy5nZXRaZXJvUG9zaXRpb25XaXRob3V0U2NhbGUocG9pbnRzKTtcbiAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyV2lkdGggPSByZWN0LndpZHRoIC8gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgICBjb25zdCBpdGVtc0NvbnRhaW5lckhlaWdodCA9IHJlY3QuaGVpZ2h0IC8gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgICB0aGlzLnRyYW5zZm9ybS5zY2FsZSA9IDE7XG5cbiAgICAgIGNvbnN0IG5ld1ggPSAocGFyZW50UmVjdC53aWR0aCAtIGl0ZW1zQ29udGFpbmVyV2lkdGggKiB0aGlzLnRyYW5zZm9ybS5zY2FsZSkgLyAyIC0gdGhpcy50cmFuc2Zvcm0ucG9zaXRpb24ueCAqIHRoaXMudHJhbnNmb3JtLnNjYWxlO1xuICAgICAgY29uc3QgbmV3WSA9IChwYXJlbnRSZWN0LmhlaWdodCAtIGl0ZW1zQ29udGFpbmVySGVpZ2h0ICogdGhpcy50cmFuc2Zvcm0uc2NhbGUpIC8gMiAtIHRoaXMudHJhbnNmb3JtLnBvc2l0aW9uLnkgKiB0aGlzLnRyYW5zZm9ybS5zY2FsZTtcblxuICAgICAgdGhpcy50cmFuc2Zvcm0ucG9zaXRpb24gPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShuZXdYLCBuZXdZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFplcm9Qb3NpdGlvbldpdGhvdXRTY2FsZShwb2ludHM6IElQb2ludFtdKTogSVBvaW50IHtcbiAgICAgIGNvbnN0IHhQb2ludCA9IHBvaW50cy5sZW5ndGggPyBNYXRoLm1pbiguLi5wb2ludHMubWFwKChwb2ludCkgPT4gcG9pbnQueCkpIDogMDtcbiAgICAgIGNvbnN0IHlQb2ludCA9IHBvaW50cy5sZW5ndGggPyBNYXRoLm1pbiguLi5wb2ludHMubWFwKChwb2ludCkgPT4gcG9pbnQueSkpIDogMDtcbiAgICAgIHJldHVybiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSh4UG9pbnQsIHlQb2ludClcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgfVxuICB9O1xufVxuIl19