@circe/core
Version:
Circe Components for Angular :: Core Services and Tools
38 lines • 6.01 kB
JavaScript
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