@ng-web-apis/screen-orientation
Version:
A library for declarative use of screen orientation with Angular
1 lines • 6.31 kB
Source Map (JSON)
{"version":3,"file":"ng-web-apis-screen-orientation.mjs","sources":["../../../libs/screen-orientation/src/screen.service.ts","../../../libs/screen-orientation/src/viewport.service.ts","../../../libs/screen-orientation/src/ng-web-apis-screen-orientation.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, map, Observable, shareReplay, startWith} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScreenOrientationService extends Observable<OrientationType> {\n private readonly win: Window = inject(WA_WINDOW);\n\n private readonly stream$ = (this.isModern\n ? fromEvent(this.win.screen.orientation, 'change').pipe(\n startWith(null),\n map(\n (): OrientationType =>\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation\n * The type read-only property of the ScreenOrientation interface returns the document's current orientation type,\n * one of \"portrait-primary\", \"portrait-secondary\", \"landscape-primary\", or \"landscape-secondary\".\n *\n * Browser compatibility:\n * Safari 16.4+, Chrome 38+, Firefox 43+\n */\n this.win.screen.orientation.type,\n ),\n )\n : fromEvent(this.win, 'orientationchange').pipe(\n startWith(null),\n map((): OrientationType => {\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/orientation\n * Its only possible values are -90, 0, 90, and 180.\n * Positive values are counterclockwise; negative values are clockwise.\n */\n const angle = parseInt(\n this.win.orientation as unknown as string,\n 10,\n ) as -90 | 0 | 90 | 180;\n\n switch (angle) {\n case -90:\n return 'landscape-secondary';\n case 180:\n return 'portrait-secondary';\n case 90:\n return 'landscape-primary';\n case 0:\n default:\n return 'portrait-primary';\n }\n }),\n )\n ).pipe(shareReplay({bufferSize: 1, refCount: true}));\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get isModern(): boolean {\n return !!this.win?.screen?.orientation;\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {\n EMPTY,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n shareReplay,\n startWith,\n} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService extends Observable<VisualViewport> {\n private readonly visualViewport = inject(WINDOW).visualViewport;\n\n private readonly stream$ = this.visualViewport\n ? merge(\n fromEvent(this.visualViewport, 'resize'),\n fromEvent(this.visualViewport, 'scroll'),\n fromEvent(this.visualViewport, 'scrollend'),\n ).pipe(\n startWith(null),\n map(() => this.visualViewport),\n filter(Boolean),\n shareReplay({bufferSize: 1, refCount: true}),\n )\n : EMPTY;\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}