UNPKG

@circe/core

Version:

Circe Components for Angular :: Core Services and Tools

38 lines 6.01 kB
import { Injectable } from '@angular/core'; import { npaPlacementElementTypes, npaPlacementInsideAutoMargins, npaPlacementInsideAutoOrientations } from '../placement/placement.types'; import { BoxModelService } from '../box-model/box-model.service'; import { Placement } from '../placement/placement'; export class RenderService { constructor(_bm) { this._bm = _bm; } /** * intersectRect * @description * Detect when two dom elements intersect. */ static intersectRect(e1, e2) { return !(e2.left > e1.right || e2.right < e1.left || e2.top > e1.bottom || e2.bottom < e1.top); } positioningElementInside(element, host, position, margin) { const _element = this._bm.getElement(element); const _host = this._bm.getElement(host); const _positionPlacement = new Placement(this._bm); let _modifiers; if (!!_element && !!_host) { _modifiers = npaPlacementInsideAutoMargins[position].map((m) => m * margin); _positionPlacement.setDomElement(_element, npaPlacementElementTypes.CLIENT); _positionPlacement.setDomElement(_host, npaPlacementElementTypes.HOST); const _coordinates = _positionPlacement.positioningElement(position, npaPlacementInsideAutoOrientations[position], _modifiers); _element.style.left = `${_coordinates.left}px`; _element.style.top = `${_coordinates.top}px`; } } } RenderService.decorators = [ { type: Injectable } ]; RenderService.ctorParameters = () => [ { type: BoxModelService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcmVuZGVyL3JlbmRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNTLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLGtDQUFrQyxFQUMxRyxNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckMsTUFBTSxPQUFPLGFBQWE7SUFDdEMsWUFBb0IsR0FBb0I7UUFBcEIsUUFBRyxHQUFILEdBQUcsQ0FBaUI7SUFBRyxDQUFDO0lBRTVDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQVcsRUFBRSxFQUFXO1FBQ2xELE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxPQUFtQixFQUFFLElBQWdCLEVBQUUsUUFBc0IsRUFBRSxNQUFjO1FBQzNHLE1BQU0sUUFBUSxHQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sS0FBSyxHQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sa0JBQWtCLEdBQWMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksVUFBa0MsQ0FBQztRQUV2QyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUN6QixVQUFVLEdBQUcsNkJBQTZCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDcEYsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZFLE1BQU0sWUFBWSxHQUFnQixrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDckUsUUFBUSxFQUNSLGtDQUFrQyxDQUFDLFFBQVEsQ0FBQyxFQUM1QyxVQUFVLENBQ1gsQ0FBQztZQUNELFFBQXdCLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztZQUMvRCxRQUF3QixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDL0Q7SUFDSCxDQUFDOzs7WUEvQkYsVUFBVTs7O1lBSEYsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5wYVBsYWNlbWVudCwgbnBhUGxhY2VtZW50RWxlbWVudFR5cGVzLCBucGFQbGFjZW1lbnRJbnNpZGVBdXRvTWFyZ2lucywgbnBhUGxhY2VtZW50SW5zaWRlQXV0b09yaWVudGF0aW9ucywgTnBhUG9zaXRpb25cbn0gZnJvbSAnLi4vcGxhY2VtZW50L3BsYWNlbWVudC50eXBlcyc7XG5pbXBvcnQgeyBOcGFFbGVtZW50IH0gZnJvbSAnLi4vX3R5cGVzL2VsZW1lbnQudHlwZXMnO1xuaW1wb3J0IHsgQm94TW9kZWxTZXJ2aWNlIH0gZnJvbSAnLi4vYm94LW1vZGVsL2JveC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gJy4uL3BsYWNlbWVudC9wbGFjZW1lbnQnO1xuXG5ASW5qZWN0YWJsZSgpIGV4cG9ydCBjbGFzcyBSZW5kZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYm06IEJveE1vZGVsU2VydmljZSkge31cblxuICAvKipcbiAgICogaW50ZXJzZWN0UmVjdFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV0ZWN0IHdoZW4gdHdvIGRvbSBlbGVtZW50cyBpbnRlcnNlY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGludGVyc2VjdFJlY3QoZTE6IERPTVJlY3QsIGUyOiBET01SZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEoZTIubGVmdCA+IGUxLnJpZ2h0IHx8IGUyLnJpZ2h0IDwgZTEubGVmdCB8fCBlMi50b3AgPiBlMS5ib3R0b20gfHwgZTIuYm90dG9tIDwgZTEudG9wKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3NpdGlvbmluZ0VsZW1lbnRJbnNpZGUoZWxlbWVudDogTnBhRWxlbWVudCwgaG9zdDogTnBhRWxlbWVudCwgcG9zaXRpb246IE5wYVBsYWNlbWVudCwgbWFyZ2luOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBfZWxlbWVudDogRWxlbWVudCA9IHRoaXMuX2JtLmdldEVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgX2hvc3Q6IEVsZW1lbnQgPSB0aGlzLl9ibS5nZXRFbGVtZW50KGhvc3QpO1xuICAgIGNvbnN0IF9wb3NpdGlvblBsYWNlbWVudDogUGxhY2VtZW50ID0gbmV3IFBsYWNlbWVudCh0aGlzLl9ibSk7XG4gICAgbGV0IF9tb2RpZmllcnM6IG51bWJlciB8IEFycmF5PG51bWJlcj47XG5cbiAgICBpZiAoISFfZWxlbWVudCAmJiAhIV9ob3N0KSB7XG4gICAgICBfbW9kaWZpZXJzID0gbnBhUGxhY2VtZW50SW5zaWRlQXV0b01hcmdpbnNbcG9zaXRpb25dLm1hcCgobTogbnVtYmVyKSA9PiBtICogbWFyZ2luKTtcbiAgICAgIF9wb3NpdGlvblBsYWNlbWVudC5zZXREb21FbGVtZW50KF9lbGVtZW50LCBucGFQbGFjZW1lbnRFbGVtZW50VHlwZXMuQ0xJRU5UKTtcbiAgICAgIF9wb3NpdGlvblBsYWNlbWVudC5zZXREb21FbGVtZW50KF9ob3N0LCBucGFQbGFjZW1lbnRFbGVtZW50VHlwZXMuSE9TVCk7XG5cbiAgICAgIGNvbnN0IF9jb29yZGluYXRlczogTnBhUG9zaXRpb24gPSBfcG9zaXRpb25QbGFjZW1lbnQucG9zaXRpb25pbmdFbGVtZW50KFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgbnBhUGxhY2VtZW50SW5zaWRlQXV0b09yaWVudGF0aW9uc1twb3NpdGlvbl0sXG4gICAgICAgIF9tb2RpZmllcnNcbiAgICAgICk7XG4gICAgICAoX2VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmxlZnQgPSBgJHtfY29vcmRpbmF0ZXMubGVmdH1weGA7XG4gICAgICAoX2VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRvcCA9IGAke19jb29yZGluYXRlcy50b3B9cHhgO1xuICAgIH1cbiAgfVxufVxuIl19