UNPKG

@taiga-ui/core

Version:

Core library for creating Angular components and applications using Taiga UI

35 lines 4.49 kB
import { inject, InjectionToken } from '@angular/core'; import { WA_WINDOW } from '@ng-web-apis/common'; import { tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous'; /** * Viewport accessor */ export const TUI_VIEWPORT = new InjectionToken(ngDevMode ? 'TUI_VIEWPORT' : '', { factory: () => { const win = inject(WA_WINDOW); return { type: 'viewport', getClientRect() { const { height = 0, offsetTop = 0 } = win.visualViewport || {}; const rect = { top: 0, left: 0, right: win.innerWidth, bottom: win.innerHeight, width: win.innerWidth, height: height + offsetTop || win.innerHeight, x: 0, y: 0, }; return { ...rect, toJSON: () => JSON.stringify(rect), }; }, }; }, }); export function tuiAsViewport(accessor) { return tuiProvide(TUI_VIEWPORT, accessor); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLGNBQWMsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUc3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FDMUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDL0I7SUFDSSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1YsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLE9BQU87WUFDSCxJQUFJLEVBQUUsVUFBVTtZQUNoQixhQUFhO2dCQUNULE1BQU0sRUFBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUMsR0FBRyxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLEdBQUc7b0JBQ1QsR0FBRyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLENBQUM7b0JBQ1AsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVO29CQUNyQixNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVc7b0JBQ3ZCLEtBQUssRUFBRSxHQUFHLENBQUMsVUFBVTtvQkFDckIsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLElBQUksR0FBRyxDQUFDLFdBQVc7b0JBQzdDLENBQUMsRUFBRSxDQUFDO29CQUNKLENBQUMsRUFBRSxDQUFDO2lCQUNQLENBQUM7Z0JBRUYsT0FBTztvQkFDSCxHQUFHLElBQUk7b0JBQ1AsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2lCQUNyQyxDQUFDO1lBQ04sQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FDSixDQUFDO0FBRUYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxRQUErQjtJQUN6RCxPQUFPLFVBQVUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgdHlwZSBQcm92aWRlciwgdHlwZSBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0FfV0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7dHVpUHJvdmlkZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHlwZSBUdWlSZWN0QWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NsYXNzZXMnO1xuXG4vKipcbiAqIFZpZXdwb3J0IGFjY2Vzc29yXG4gKi9cbmV4cG9ydCBjb25zdCBUVUlfVklFV1BPUlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHVpUmVjdEFjY2Vzc29yPihcbiAgICBuZ0Rldk1vZGUgPyAnVFVJX1ZJRVdQT1JUJyA6ICcnLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd2luID0gaW5qZWN0KFdBX1dJTkRPVyk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZXdwb3J0JyxcbiAgICAgICAgICAgICAgICBnZXRDbGllbnRSZWN0KCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7aGVpZ2h0ID0gMCwgb2Zmc2V0VG9wID0gMH0gPSB3aW4udmlzdWFsVmlld3BvcnQgfHwge307XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHdpbi5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB3aW4uaW5uZXJIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2luLmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCArIG9mZnNldFRvcCB8fCB3aW4uaW5uZXJIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvSlNPTjogKCkgPT4gSlNPTi5zdHJpbmdpZnkocmVjdCksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlBc1ZpZXdwb3J0KGFjY2Vzc29yOiBUeXBlPFR1aVJlY3RBY2Nlc3Nvcj4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGUoVFVJX1ZJRVdQT1JULCBhY2Nlc3Nvcik7XG59XG4iXX0=