ngx-presentationcommons-esm-survey 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-presentationcommons-esm-survey.mjs","sources":["../../../projects/ngx-presentationcommons-esm-survey/src/lib/helpers/expiry.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/consts/timings.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/survey-host.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/survey-client.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/puck-host.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/puck-client.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/interfaces/iclient-puck.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/interfaces/ihost-puck.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-board/host-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-board/host-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-puck-board/host-puck-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-puck-board/host-puck-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck/client-puck.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck/client-puck.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-board/client-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-board/client-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck-board/client-puck-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck-board/client-puck-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/public-api.ts","../../../projects/ngx-presentationcommons-esm-survey/src/ngx-presentationcommons-esm-survey.ts"],"sourcesContent":["import { CommonsFixedDuration } from 'tscommons-esm-core/dist/index.mjs';\n\nexport function expireInDuration(duration: CommonsFixedDuration): Date {\n\tconst date: Date = new Date();\n\tdate.setTime(date.getTime() + duration.millis);\n\n\treturn date;\n}\n","import { CommonsFixedDuration } from 'tscommons-esm-core';\n\nexport const PACKET_TIMEOUT_DURATION: CommonsFixedDuration = CommonsFixedDuration.fromHis('00:00:05');\n","import { commonsBase62IsId } from 'tscommons-esm-core';\nimport { ICommonsNetworkPacket } from 'tscommons-esm-network';\n\nimport { CommonsNetworkSocketIoService } from 'ngx-httpcommons-esm-network';\n\nimport { expireInDuration } from '../helpers/expiry';\nimport { PACKET_TIMEOUT_DURATION } from '../consts/timings';\n\nexport abstract class CommonsPresentationSurveyHostService extends CommonsNetworkSocketIoService {\n\tprivate internalDebug: boolean = false;\n\tpublic set debug(state: boolean) {\n\t\tthis.internalDebug = state;\n\t}\n\n\tprivate internalConnected: boolean = false;\n\tprotected get connected(): boolean {\n\t\treturn this.internalConnected;\n\t}\n\n\tprotected readonly ns: string;\n\n\tconstructor(\n\t\t\turl: string,\n\t\t\tns: string,\n\t\t\tchannel: string,\n\t\t\tdeviceId: string\n\t) {\n\t\tsuper(\n\t\t\t\turl,\n\t\t\t\tfalse\n\t\t);\n\t\tthis.ns = ns;\n\n\t\tif (!commonsBase62IsId(channel)) throw new Error('Invalid channel id. Must be base62id');\n\t\tif (!commonsBase62IsId(deviceId)) throw new Error('Invalid device id. Must be base62id');\n\n\t\tthis.channel = channel;\n\t\tthis.deviceId = deviceId;\n\n\t\tthis.connectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tthis.internalConnected = true;\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t(): void => {\n\t\t\t\t\t\t\t\tif (!this.internalConnected) return;\n\n\t\t\t\t\t\t\t\tvoid this.broadcastDeclareHost();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t500\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\n\t\tthis.disconnectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tthis.internalConnected = false;\n\t\t\t\t});\n\n\t\tthis.receiveObservable\n\t\t\t\t.subscribe((packet: ICommonsNetworkPacket): void => {\n\t\t\t\t\tif (packet.ns !== this.ns) return;\n\t\t\t\t\tif (packet.source === this.deviceId) return;\t// present infinite cascade\n\n\t\t\t\t\tif (packet.command === 'identify-host') {\n\t\t\t\t\t\tvoid this.declareHost(packet.source);\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n\n\tpublic async reset(): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'reset',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n\n\tprivate async declareHost(dest: string): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tif (this.internalDebug) console.log(`Request from ${dest} for host details. Declaring as host (${this.deviceId}) via direct`);\n\t\tawait this.direct(\n\t\t\t\tdest,\n\t\t\t\tthis.ns,\n\t\t\t\t'declare-host',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION)\n\t\t);\n\t}\n\n\tpublic async broadcastDeclareHost(): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tif (this.internalDebug) console.log(`Declaring as host (${this.deviceId}) via broadcast`);\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'declare-host',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n\n\tpublic async shutdown(): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'shutdown',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n}\n","import { EventEmitter } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { commonsBase62IsId } from 'tscommons-esm-core';\nimport { ECommonsInvocation, commonsAsyncAbortInterval, commonsAsyncInterval } from 'tscommons-esm-async';\nimport { ICommonsNetworkPacket } from 'tscommons-esm-network';\n\nimport { CommonsNetworkSocketIoService } from 'ngx-httpcommons-esm-network';\n\nimport { expireInDuration } from '../helpers/expiry';\nimport { PACKET_TIMEOUT_DURATION } from '../consts/timings';\n\nexport abstract class CommonsPresentationSurveyClientService extends CommonsNetworkSocketIoService {\n\tprivate onReset: EventEmitter<void> = new EventEmitter<void>(true);\n\tpublic get resetObservable(): EventEmitter<void> {\n\t\treturn this.onReset;\n\t}\n\n\tprivate onReady: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\tpublic get readyObservable(): Observable<boolean> {\n\t\treturn this.onReady;\n\t}\n\n\tprivate internalHost: string|undefined;\n\tprotected get host(): string|undefined {\n\t\treturn this.internalHost;\n\t}\n\t\n\tprivate internalDebug: boolean = false;\n\tpublic set debug(state: boolean) {\n\t\tthis.internalDebug = state;\n\t}\n\n\tconstructor(\n\t\t\turl: string,\n\t\t\tprotected ns: string,\n\t\t\tchannel: string,\n\t\t\tdeviceId: string\n\t) {\n\t\tsuper(\n\t\t\t\turl,\n\t\t\t\tfalse\n\t\t);\n\n\t\tif (!commonsBase62IsId(channel)) throw new Error('Invalid channel id. Must be base62id');\n\t\tif (!commonsBase62IsId(deviceId)) throw new Error('Invalid device id. Must be base62id');\n\n\t\tthis.channel = channel;\n\t\tthis.deviceId = deviceId;\n\n\t\tthis.connectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tcommonsAsyncInterval(\n\t\t\t\t\t\t\tPACKET_TIMEOUT_DURATION,\n\t\t\t\t\t\t\tECommonsInvocation.IF,\n\t\t\t\t\t\t\tasync (): Promise<void> => {\n\t\t\t\t\t\t\t\tawait this.requestHost();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'rerequest-host'\n\t\t\t\t\t);\n\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t(): void => {\n\t\t\t\t\t\t\t\tvoid this.requestHost();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t500\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\tthis.disconnectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tthis.onReady.next(false);\n\t\t\t\t});\n\n\t\tthis.receiveObservable\n\t\t\t\t.subscribe((packet: ICommonsNetworkPacket): void => {\n\t\t\t\t\tif (packet.ns !== this.ns) return;\n\n\t\t\t\t\tif (packet.command === 'declare-host') {\n\t\t\t\t\t\tif (this.internalDebug) console.log(`Host declared itself as ${packet.source}`);\n\t\t\t\t\t\tthis.internalHost = packet.source;\n\n\t\t\t\t\t\tcommonsAsyncAbortInterval('rerequest-host');\n\n\t\t\t\t\t\tthis.onReady.next(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (packet.command === 'reset') this.onReset.emit();\n\n\t\t\t\t\tif (packet.command === 'shutdown') {\n\t\t\t\t\t\tthis.onReady.next(false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n\n\tprivate async requestHost(): Promise<void> {\n\t\tif (this.internalDebug) console.log(`Requesting host via broadcast. My deviceId is ${this.deviceId}`);\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'identify-host',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n}\n","import { EventEmitter } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { commonsTypeHasPropertyNumber } from 'tscommons-esm-core';\nimport { ICommonsNetworkPacket } from 'tscommons-esm-network';\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../types/tclient-puck';\n\nimport { CommonsPresentationSurveyHostService } from './survey-host.service';\n\nexport abstract class CommonsPresentationSurveyPuckHostService extends CommonsPresentationSurveyHostService {\n\tprivate onMove: EventEmitter<TCommonsPresentationSurveyClientPuck> = new EventEmitter<TCommonsPresentationSurveyClientPuck>(true);\n\n\tpublic get moveObservable(): Observable<TCommonsPresentationSurveyClientPuck> {\n\t\treturn this.onMove.asObservable();\n\t}\n\n\tconstructor(\n\t\t\turl: string,\n\t\t\tns: string,\n\t\t\tchannel: string,\n\t\t\tdeviceId: string\n\t) {\n\t\tsuper(\n\t\t\t\turl,\n\t\t\t\tns,\n\t\t\t\tchannel,\n\t\t\t\tdeviceId\n\t\t);\n\t\t\n\t\tthis.receiveObservable\n\t\t\t\t.subscribe((packet: ICommonsNetworkPacket): void => {\n\t\t\t\t\tif (packet.ns !== this.ns) return;\n\n\t\t\t\t\tif (packet.command === 'move') {\n\t\t\t\t\t\tif (!commonsTypeHasPropertyNumber(packet.data, 'x')) {\n\t\t\t\t\t\t\tconsole.log('No x value');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!commonsTypeHasPropertyNumber(packet.data, 'y')) {\n\t\t\t\t\t\t\tconsole.log('No y value');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// console.log(`Moving received from ${packet.source} for (${(packet.data as TXy).x},${(packet.data as TXy).y})`);\n\t\t\t\t\t\tthis.onMove.emit({\n\t\t\t\t\t\t\t\tdeviceId: packet.source,\n\t\t\t\t\t\t\t\tx: (packet.data as TXy).x,\n\t\t\t\t\t\t\t\ty: (packet.data as TXy).y\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n}\n","import { TXy } from 'tscommons-esm-graphics';\n\nimport { expireInDuration } from '../helpers/expiry';\nimport { PACKET_TIMEOUT_DURATION } from '../consts/timings';\n\nimport { CommonsPresentationSurveyClientService } from './survey-client.service';\n\nexport abstract class CommonsPresentationSurveyPuckClientService extends CommonsPresentationSurveyClientService {\n\tpublic async move(\n\t\t\txy: TXy\n\t): Promise<void> {\n\t\tif (!this.host) return;\n\n\t\tconst simplified: TXy = {\n\t\t\t\tx: Math.round(xy.x * 1000) / 1000,\n\t\t\t\ty: Math.round(xy.y * 1000) / 1000\n\t\t};\n\n\t\tawait this.direct(\n\t\t\t\tthis.host,\n\t\t\t\tthis.ns,\n\t\t\t\t'move',\n\t\t\t\tsimplified,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION)\n\t\t);\n\t}\n}\n","// This is a true interface\n\nimport { Observable } from 'rxjs';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\nexport interface ICommonsPresentationSurveyClientPuck {\n\tget connectedObservable(): Observable<boolean>;\n\tmove(xy: TXy): Promise<void>;\n}\n","// This is a true interface\n\nimport { Observable } from 'rxjs';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../types/tclient-puck';\n\nexport interface ICommonsPresentationSurveyHostPuck {\n\tget connectedObservable(): Observable<boolean>;\n\tget puckUpdatedObservable(): Observable<TCommonsPresentationSurveyClientPuck>;\n\tget resetObservable(): Observable<void>;\n}\n","import { Component, input, InputSignal } from '@angular/core';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../../types/tclient-puck';\n\n@Component({\n\t\tselector: 'commons-survey-host-board',\n\t\tstandalone: true,\n\t\timports: [],\n\t\ttemplateUrl: './host-board.component.html',\n\t\tstyleUrls: ['./host-board.component.scss']\n})\nexport class CommonsPresentationSurveyHostBoardComponent {\n\tpublic pucks: InputSignal<TCommonsPresentationSurveyClientPuck[]> = input.required<TCommonsPresentationSurveyClientPuck[]>();\n}\n","<section board>\n\t@for (puck of this.pucks(); track puck.deviceId) {\n\t\t<section class=\"dot\"\n\t\t\t\t[style.left.%]=\"puck.x * 100\"\n\t\t\t\t[style.top.%]=\"puck.y * 100\"\n\t\t></section>\n\t}\n</section>\n","import { Component, input, InputSignal, OnInit } from '@angular/core';\n\nimport { commonsNumberMedian } from 'tscommons-esm-core';\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { CommonsComponent } from 'ngx-angularcommons-esm-core';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../../types/tclient-puck';\nimport { ICommonsPresentationSurveyHostPuck } from '../../interfaces/ihost-puck';\n\nimport { CommonsPresentationSurveyHostBoardComponent } from '../host-board/host-board.component';\n\n@Component({\n\t\tselector: 'commons-survey-host-puck-board',\n\t\tstandalone: true,\n\t\timports: [\n\t\t\t\tCommonsPresentationSurveyHostBoardComponent\n\t\t],\n\t\ttemplateUrl: './host-puck-board.component.html',\n\t\tstyleUrls: ['./host-puck-board.component.scss']\n})\nexport class CommonsPresentationSurveyHostPuckBoardComponent extends CommonsComponent implements OnInit {\n\tpublic topLeft: InputSignal<string|undefined> = input<string>();\n\tpublic bottomLeft: InputSignal<string|undefined> = input<string>();\n\tpublic topRight: InputSignal<string|undefined> = input<string>();\n\tpublic bottomRight: InputSignal<string|undefined> = input<string>();\n\n\tprotected connected: boolean = false;\n\n\tprotected pucks: TCommonsPresentationSurveyClientPuck[] = [];\n\n\tpublic service: InputSignal<ICommonsPresentationSurveyHostPuck> = input.required<ICommonsPresentationSurveyHostPuck>();\n\n\tpublic override ngOnInit() {\n\t\tsuper.ngOnInit();\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().connectedObservable,\n\t\t\t\t(state: boolean): void => {\n\t\t\t\t\tthis.connected = state;\n\t\t\t\t}\n\t\t);\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().puckUpdatedObservable,\n\t\t\t\t(puck: TCommonsPresentationSurveyClientPuck): void => {\n\t\t\t\t\tconst existing: TCommonsPresentationSurveyClientPuck|undefined = this.pucks\n\t\t\t\t\t\t\t.find((p: TCommonsPresentationSurveyClientPuck): boolean => p.deviceId === puck.deviceId);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\texisting.x = puck.x;\n\t\t\t\t\t\texisting.y = puck.y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pucks.push({ ...puck });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t);\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().resetObservable,\n\t\t\t\t(): void => {\n\t\t\t\t\tthis.pucks = [];\n\t\t\t\t}\n\t\t);\n\t}\n\n\tprotected get isLeft(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.x);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) <= 0.5;\n\t}\n\n\tprotected get isRight(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.x);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) >= 0.5;\n\t}\n\n\tprotected get isTop(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.y);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) <= 0.5;\n\t}\n\n\tprotected get isBottom(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.y);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) >= 0.5;\n\t}\n\n\tprotected get isTopLeft(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isLeft;\n\t\tif ((this.topLeft() && !this.topRight()) || (!this.topLeft() && this.topRight())) return this.isTop;\n\t\treturn this.isLeft && this.isTop;\n\t}\n\n\tprotected get isBottomLeft(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isLeft;\n\t\tif ((this.bottomLeft() && !this.bottomRight()) || (!this.bottomLeft() && this.bottomRight())) return this.isBottom;\n\t\treturn this.isLeft && this.isBottom;\n\t}\n\n\tprotected get isTopRight(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isRight;\n\t\tif ((this.topLeft() && !this.topRight()) || (!this.topLeft() && this.topRight())) return this.isTop;\n\t\treturn this.isRight && this.isTop;\n\t}\n\n\tprotected get isBottomRight(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isRight;\n\t\tif ((this.bottomLeft() && !this.bottomRight()) || (!this.bottomLeft() && this.bottomRight())) return this.isBottom;\n\t\treturn this.isRight && this.isBottom;\n\t}\n}\n","<section>\n\t<commons-survey-host-board\n\t\t\t[pucks]=\"this.pucks\"\n\t></commons-survey-host-board>\n\n\t@if (this.topLeft()) {\n\t\t<label class=\"top-left\"\n\t\t\t\t[class.selected]=\"this.isTopLeft\"\n\t\t>{{ this.topLeft() }}</label>\n\t}\n\t@if (this.topRight()) {\n\t\t<label class=\"top-right\"\n\t\t\t\t[class.selected]=\"this.isTopRight\"\n\t\t>{{ this.topRight() }}</label>\n\t}\n\t@if (this.bottomLeft()) {\n\t\t<label class=\"bottom-left\"\n\t\t\t\t[class.selected]=\"this.isBottomLeft\"\n\t\t>{{ this.bottomLeft() }}</label>\n\t}\n\t@if (this.bottomRight()) {\n\t\t<label class=\"bottom-right\"\n\t\t\t\t[class.selected]=\"this.isBottomRight\"\n\t\t>{{ this.bottomRight() }}</label>\n\t}\n</section>\n","import { AfterViewInit, Component, HostListener, input, InputSignal, model, ModelSignal } from '@angular/core';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\n@Component({\n\t\tselector: 'commons-survey-client-puck',\n\t\tstandalone: true,\n\t\ttemplateUrl: './client-puck.component.html',\n\t\tstyleUrls: ['./client-puck.component.less']\n})\nexport class CommonsPresentationSurveyClientPuckComponent implements AfterViewInit {\n\t@HostListener('window:resize', []) public windowResized() {\n\t\tthis.centrePosition();\n\t}\n\n\tpublic disabled: InputSignal<boolean> = input<boolean>(false);\n\n\tpublic xy: ModelSignal<TXy> = model.required<TXy>();\n\n\tprivate eventStart: TXy|undefined;\n\tprivate start: TXy|undefined;\n\n\tprotected get isMoving(): boolean {\n\t\treturn this.eventStart !== undefined;\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tsetTimeout(\n\t\t\t\t(): void => {\n\t\t\t\t\tthis.centrePosition();\n\t\t\t\t},\n\t\t\t\t0\n\t\t);\n\n\t\tsetTimeout(\n\t\t\t\t(): void => {\n\t\t\t\t\tthis.centrePosition();\n\t\t\t\t},\n\t\t\t\t500\n\t\t);\n\t}\n\n\tprivate centrePosition(): void {\n\t\tthis.xy.set({\n\t\t\t\tx: window.innerWidth / 2,\n\t\t\t\ty: window.innerHeight / 2\n\t\t});\n\n\t\tthis.eventStart = undefined;\n\t}\n\n\tprotected doMouseDown(event: MouseEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tthis.eventStart = {\n\t\t\t\tx: event.screenX,\n\t\t\t\ty: event.screenY\n\t\t};\n\n\t\tthis.start = { ...this.xy() };\n\t}\n\n\tprotected doMouseUp(_event: MouseEvent): void {\n\t\tthis.eventStart = undefined;\n\t}\n\n\tprotected doMouseMove(event: MouseEvent): void {\n\t\tif (!this.eventStart) return;\n\n\t\tconst dx: number = event.screenX - this.eventStart.x;\n\t\tconst dy: number = event.screenY - this.eventStart.y;\n\n\t\tthis.xy.set({\n\t\t\t\tx: this.start!.x + dx,\n\t\t\t\ty: this.start!.y + dy\n\t\t});\n\t}\n\n\tprotected doTouchStart(event: TouchEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tif (event.touches.length < 1) return;\n\n\t\tthis.eventStart = {\n\t\t\t\tx: event.touches[0].screenX,\n\t\t\t\ty: event.touches[0].screenY\n\t\t};\n\n\t\tthis.start = { ...this.xy() };\n\t}\n\n\tprotected doTouchEnd(_event: TouchEvent): void {\n\t\tthis.eventStart = undefined;\n\t}\n\n\tprotected doTouchMove(event: TouchEvent): void {\n\t\tif (!this.eventStart) return;\n\n\t\tconst dx: number = event.touches[0].screenX - this.eventStart.x;\n\t\tconst dy: number = event.touches[0].screenY - this.eventStart.y;\n\n\t\tthis.xy.set({\n\t\t\t\tx: this.start!.x + dx,\n\t\t\t\ty: this.start!.y + dy\n\t\t});\n\t}\n}\n","<aside\n\t\t[style.top.px]=\"this.xy().y\"\n\t\t[style.left.px]=\"this.xy().x\"\n>\n\t<section outer\n\t\t\t(mousedown)=\"this.doMouseDown($event);\"\n\t\t\t(mouseup)=\"this.doMouseUp($event);\"\n\t\t\t(mousemove)=\"this.doMouseMove($event);\"\n\t\t\t(touchstart)=\"this.doTouchStart($event);\"\n\t\t\t(touchend)=\"this.doTouchEnd($event);\"\n\t\t\t(touchmove)=\"this.doTouchMove($event);\"\n\t></section>\n\t<section inner\n\t\t\t[class.moving]=\"this.isMoving\"\n\t\t\t[class.disabled]=\"this.disabled()\"\n\t></section>\n</aside>\n","import { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { CommonsPresentationSurveyClientPuckComponent } from '../client-puck/client-puck.component';\n\n@Component({\n\t\tselector: 'commons-survey-client-board',\n\t\tstandalone: true,\n\t\timports: [\n\t\t\t\tCommonsPresentationSurveyClientPuckComponent\n\t\t],\n\t\ttemplateUrl: './client-board.component.html',\n\t\tstyleUrls: ['./client-board.component.less']\n})\nexport class CommonsPresentationSurveyClientBoardComponent {\n\tpublic connected: InputSignal<boolean> = input.required<boolean>();\n\tpublic moved: OutputEmitterRef<TXy> = output<TXy>();\n\n\tprotected xy: TXy = { x: 0, y: 0 };\n\n\tprotected doCascade(xy: TXy): void {\n\t\tif (!this.connected) return;\n\n\t\tthis.moved.emit({\n\t\t\t\tx: xy.x / window.outerWidth,\n\t\t\t\ty: xy.y / window.outerHeight\n\t\t});\n\t}\n}\n","<section board></section>\n<commons-survey-client-puck\n\t\t[(xy)]=\"this.xy\"\n\t\t(xyChange)=\"this.doCascade($event);\"\n\t\t[disabled]=\"!this.connected\"\n></commons-survey-client-puck>\n","import { Component, input, InputSignal, OnInit } from '@angular/core';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { CommonsComponent } from 'ngx-angularcommons-esm-core';\n\nimport { ICommonsPresentationSurveyClientPuck } from '../../interfaces/iclient-puck';\n\nimport { CommonsPresentationSurveyClientBoardComponent } from '../client-board/client-board.component';\n\n@Component({\n\t\tselector: 'commons-survey-client-puck-board',\n\t\tstandalone: true,\n\t\timports: [\n\t\t\t\tCommonsPresentationSurveyClientBoardComponent\n\t\t],\n\t\ttemplateUrl: './client-puck-board.component.html',\n\t\tstyleUrls: ['./client-puck-board.component.less']\n})\nexport class CommonsPresentationSurveyClientPuckBoardComponent extends CommonsComponent implements OnInit {\n\tpublic service: InputSignal<ICommonsPresentationSurveyClientPuck> = input.required<ICommonsPresentationSurveyClientPuck>();\n\n\tpublic title: InputSignal<string> = input.required<string>();\n\tpublic topLeft: InputSignal<string|undefined> = input<string>();\n\tpublic bottomLeft: InputSignal<string|undefined> = input<string>();\n\tpublic topRight: InputSignal<string|undefined> = input<string>();\n\tpublic bottomRight: InputSignal<string|undefined> = input<string>();\n\n\tprotected connected: boolean = false;\n\n\tpublic override ngOnInit() {\n\t\tsuper.ngOnInit();\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().connectedObservable,\n\t\t\t\t(state: boolean): void => {\n\t\t\t\t\tthis.connected = state;\n\t\t\t\t}\n\t\t);\n\t}\n\n\tprotected doUpdate(xy: TXy): void {\n\t\tvoid this.service().move(xy);\n\t}\n}\n","<commons-survey-client-board\n\t\t[connected]=\"this.connected\"\n\t\t(moved)=\"this.doUpdate($event);\"\n></commons-survey-client-board>\n\n<label class=\"title\">{{ this.title() }}</label>\n\n@if (this.topLeft()) {\n\t<label class=\"top-left\">{{ this.topLeft() }}</label>\n}\n@if (this.topRight()) {\n\t<label class=\"top-right\">{{ this.topRight() }}</label>\n}\n@if (this.bottomLeft()) {\n\t<label class=\"bottom-left\">{{ this.bottomLeft() }}</label>\n}\n@if (this.bottomRight()) {\n\t<label class=\"bottom-right\">{{ this.bottomRight() }}</label>\n}\n","/*\n * Public API Surface of ngx-presentationcommons-esm-survey\n */\n\nexport * from './lib/services/survey-host.service';\nexport * from './lib/services/survey-client.service';\nexport * from './lib/services/puck-host.service';\nexport * from './lib/services/puck-client.service';\n\nexport * from './lib/interfaces/iclient-puck';\nexport * from './lib/interfaces/ihost-puck';\n\nexport * from './lib/components/host-puck-board/host-puck-board.component';\nexport * from './lib/components/client-puck-board/client-puck-board.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-presentationcommons-esm-survey.mjs","sources":["../../../projects/ngx-presentationcommons-esm-survey/src/lib/helpers/expiry.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/consts/timings.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/survey-host.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/survey-client.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/puck-host.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/services/puck-client.service.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/interfaces/iclient-puck.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/interfaces/ihost-puck.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-board/host-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-board/host-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-puck-board/host-puck-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/host-puck-board/host-puck-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck/client-puck.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck/client-puck.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-board/client-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-board/client-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck-board/client-puck-board.component.ts","../../../projects/ngx-presentationcommons-esm-survey/src/lib/components/client-puck-board/client-puck-board.component.html","../../../projects/ngx-presentationcommons-esm-survey/src/public-api.ts","../../../projects/ngx-presentationcommons-esm-survey/src/ngx-presentationcommons-esm-survey.ts"],"sourcesContent":["import { CommonsFixedDuration } from 'tscommons-esm-core/dist/index.mjs';\n\nexport function expireInDuration(duration: CommonsFixedDuration): Date {\n\tconst date: Date = new Date();\n\tdate.setTime(date.getTime() + duration.millis);\n\n\treturn date;\n}\n","import { CommonsFixedDuration } from 'tscommons-esm-core';\n\nexport const PACKET_TIMEOUT_DURATION: CommonsFixedDuration = CommonsFixedDuration.fromHis('00:00:05');\n","import { commonsBase62IsId } from 'tscommons-esm-core';\nimport { ICommonsNetworkPacket } from 'tscommons-esm-network';\n\nimport { CommonsNetworkSocketIoService } from 'ngx-httpcommons-esm-network';\n\nimport { expireInDuration } from '../helpers/expiry';\nimport { PACKET_TIMEOUT_DURATION } from '../consts/timings';\n\nexport abstract class CommonsPresentationSurveyHostService extends CommonsNetworkSocketIoService {\n\tprivate internalDebug: boolean = false;\n\tpublic set debug(state: boolean) {\n\t\tthis.internalDebug = state;\n\t}\n\n\tprivate internalConnected: boolean = false;\n\tprotected get connected(): boolean {\n\t\treturn this.internalConnected;\n\t}\n\n\tprotected readonly ns: string;\n\n\tconstructor(\n\t\t\turl: string,\n\t\t\tns: string,\n\t\t\tchannel: string,\n\t\t\tdeviceId: string\n\t) {\n\t\tsuper(\n\t\t\t\turl,\n\t\t\t\tfalse\n\t\t);\n\t\tthis.ns = ns;\n\n\t\tif (!commonsBase62IsId(channel)) throw new Error('Invalid channel id. Must be base62id');\n\t\tif (!commonsBase62IsId(deviceId)) throw new Error('Invalid device id. Must be base62id');\n\n\t\tthis.channel = channel;\n\t\tthis.deviceId = deviceId;\n\n\t\tthis.connectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tthis.internalConnected = true;\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t(): void => {\n\t\t\t\t\t\t\t\tif (!this.internalConnected) return;\n\n\t\t\t\t\t\t\t\tvoid this.broadcastDeclareHost();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t500\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\n\t\tthis.disconnectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tthis.internalConnected = false;\n\t\t\t\t});\n\n\t\tthis.receiveObservable\n\t\t\t\t.subscribe((packet: ICommonsNetworkPacket): void => {\n\t\t\t\t\tif (packet.ns !== this.ns) return;\n\t\t\t\t\tif (packet.source === this.deviceId) return;\t// present infinite cascade\n\n\t\t\t\t\tif (packet.command === 'identify-host') {\n\t\t\t\t\t\tvoid this.declareHost(packet.source);\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n\n\tpublic async reset(): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'reset',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n\n\tprivate async declareHost(dest: string): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tif (this.internalDebug) console.log(`Request from ${dest} for host details. Declaring as host (${this.deviceId}) via direct`);\n\t\tawait this.direct(\n\t\t\t\tdest,\n\t\t\t\tthis.ns,\n\t\t\t\t'declare-host',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION)\n\t\t);\n\t}\n\n\tpublic async broadcastDeclareHost(): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tif (this.internalDebug) console.log(`Declaring as host (${this.deviceId}) via broadcast`);\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'declare-host',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n\n\tpublic async shutdown(): Promise<void> {\n\t\tif (!this.internalConnected) return;\n\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'shutdown',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n}\n","import { EventEmitter } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { commonsBase62IsId } from 'tscommons-esm-core';\nimport { ECommonsInvocation, commonsAsyncAbortInterval, commonsAsyncInterval } from 'tscommons-esm-async';\nimport { ICommonsNetworkPacket } from 'tscommons-esm-network';\n\nimport { CommonsNetworkSocketIoService } from 'ngx-httpcommons-esm-network';\n\nimport { expireInDuration } from '../helpers/expiry';\nimport { PACKET_TIMEOUT_DURATION } from '../consts/timings';\n\nexport abstract class CommonsPresentationSurveyClientService extends CommonsNetworkSocketIoService {\n\tprivate onReset: EventEmitter<void> = new EventEmitter<void>(true);\n\tpublic get resetObservable(): EventEmitter<void> {\n\t\treturn this.onReset;\n\t}\n\n\tprivate onReady: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\tpublic get readyObservable(): Observable<boolean> {\n\t\treturn this.onReady;\n\t}\n\n\tprivate internalHost: string|undefined;\n\tprotected get host(): string|undefined {\n\t\treturn this.internalHost;\n\t}\n\t\n\tprivate internalDebug: boolean = false;\n\tpublic set debug(state: boolean) {\n\t\tthis.internalDebug = state;\n\t}\n\n\tconstructor(\n\t\t\turl: string,\n\t\t\tprotected ns: string,\n\t\t\tchannel: string,\n\t\t\tdeviceId: string\n\t) {\n\t\tsuper(\n\t\t\t\turl,\n\t\t\t\tfalse\n\t\t);\n\n\t\tif (!commonsBase62IsId(channel)) throw new Error('Invalid channel id. Must be base62id');\n\t\tif (!commonsBase62IsId(deviceId)) throw new Error('Invalid device id. Must be base62id');\n\n\t\tthis.channel = channel;\n\t\tthis.deviceId = deviceId;\n\n\t\tthis.connectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tcommonsAsyncInterval(\n\t\t\t\t\t\t\tPACKET_TIMEOUT_DURATION,\n\t\t\t\t\t\t\tECommonsInvocation.IF,\n\t\t\t\t\t\t\tasync (): Promise<void> => {\n\t\t\t\t\t\t\t\tawait this.requestHost();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'rerequest-host'\n\t\t\t\t\t);\n\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t(): void => {\n\t\t\t\t\t\t\t\tvoid this.requestHost();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t500\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\tthis.disconnectObservable\n\t\t\t\t.subscribe((): void => {\n\t\t\t\t\tthis.onReady.next(false);\n\t\t\t\t});\n\n\t\tthis.receiveObservable\n\t\t\t\t.subscribe((packet: ICommonsNetworkPacket): void => {\n\t\t\t\t\tif (packet.ns !== this.ns) return;\n\n\t\t\t\t\tif (packet.command === 'declare-host') {\n\t\t\t\t\t\tif (this.internalDebug) console.log(`Host declared itself as ${packet.source}`);\n\t\t\t\t\t\tthis.internalHost = packet.source;\n\n\t\t\t\t\t\tcommonsAsyncAbortInterval('rerequest-host');\n\n\t\t\t\t\t\tthis.onReady.next(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (packet.command === 'reset') this.onReset.emit();\n\n\t\t\t\t\tif (packet.command === 'shutdown') {\n\t\t\t\t\t\tthis.onReady.next(false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n\n\tprivate async requestHost(): Promise<void> {\n\t\tif (this.internalDebug) console.log(`Requesting host via broadcast. My deviceId is ${this.deviceId}`);\n\t\tawait this.broadcast(\n\t\t\t\tthis.ns,\n\t\t\t\t'identify-host',\n\t\t\t\tundefined,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION),\n\t\t\t\ttrue\n\t\t);\n\t}\n}\n","import { EventEmitter } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { commonsTypeHasPropertyNumber } from 'tscommons-esm-core';\nimport { ICommonsNetworkPacket } from 'tscommons-esm-network';\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../types/tclient-puck';\n\nimport { CommonsPresentationSurveyHostService } from './survey-host.service';\n\nexport abstract class CommonsPresentationSurveyPuckHostService extends CommonsPresentationSurveyHostService {\n\tprivate onMove: EventEmitter<TCommonsPresentationSurveyClientPuck> = new EventEmitter<TCommonsPresentationSurveyClientPuck>(true);\n\n\tpublic get moveObservable(): Observable<TCommonsPresentationSurveyClientPuck> {\n\t\treturn this.onMove.asObservable();\n\t}\n\n\tconstructor(\n\t\t\turl: string,\n\t\t\tns: string,\n\t\t\tchannel: string,\n\t\t\tdeviceId: string\n\t) {\n\t\tsuper(\n\t\t\t\turl,\n\t\t\t\tns,\n\t\t\t\tchannel,\n\t\t\t\tdeviceId\n\t\t);\n\t\t\n\t\tthis.receiveObservable\n\t\t\t\t.subscribe((packet: ICommonsNetworkPacket): void => {\n\t\t\t\t\tif (packet.ns !== this.ns) return;\n\n\t\t\t\t\tif (packet.command === 'move') {\n\t\t\t\t\t\tif (!commonsTypeHasPropertyNumber(packet.data, 'x')) {\n\t\t\t\t\t\t\tconsole.log('No x value');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!commonsTypeHasPropertyNumber(packet.data, 'y')) {\n\t\t\t\t\t\t\tconsole.log('No y value');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// console.log(`Moving received from ${packet.source} for (${(packet.data as TXy).x},${(packet.data as TXy).y})`);\n\t\t\t\t\t\tthis.onMove.emit({\n\t\t\t\t\t\t\t\tdeviceId: packet.source,\n\t\t\t\t\t\t\t\tx: (packet.data as TXy).x,\n\t\t\t\t\t\t\t\ty: (packet.data as TXy).y\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n}\n","import { TXy } from 'tscommons-esm-graphics';\n\nimport { expireInDuration } from '../helpers/expiry';\nimport { PACKET_TIMEOUT_DURATION } from '../consts/timings';\n\nimport { CommonsPresentationSurveyClientService } from './survey-client.service';\n\nexport abstract class CommonsPresentationSurveyPuckClientService extends CommonsPresentationSurveyClientService {\n\tpublic async move(\n\t\t\txy: TXy\n\t): Promise<void> {\n\t\tif (!this.host) return;\n\n\t\tconst simplified: TXy = {\n\t\t\t\tx: Math.round(xy.x * 1000) / 1000,\n\t\t\t\ty: Math.round(xy.y * 1000) / 1000\n\t\t};\n\n\t\tawait this.direct(\n\t\t\t\tthis.host,\n\t\t\t\tthis.ns,\n\t\t\t\t'move',\n\t\t\t\tsimplified,\n\t\t\t\texpireInDuration(PACKET_TIMEOUT_DURATION)\n\t\t);\n\t}\n}\n","// This is a true interface\n\nimport { Observable } from 'rxjs';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\nexport interface ICommonsPresentationSurveyClientPuck {\n\tget connectedObservable(): Observable<boolean>;\n\tmove(xy: TXy): Promise<void>;\n}\n","// This is a true interface\n\nimport { Observable } from 'rxjs';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../types/tclient-puck';\n\nexport interface ICommonsPresentationSurveyHostPuck {\n\tget connectedObservable(): Observable<boolean>;\n\tget puckUpdatedObservable(): Observable<TCommonsPresentationSurveyClientPuck>;\n\tget resetObservable(): Observable<void>;\n}\n","import { Component, input, InputSignal } from '@angular/core';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../../types/tclient-puck';\n\n@Component({\n\t\tselector: 'commons-survey-host-board',\n\t\tstandalone: true,\n\t\timports: [],\n\t\ttemplateUrl: './host-board.component.html',\n\t\tstyleUrls: ['./host-board.component.scss']\n})\nexport class CommonsPresentationSurveyHostBoardComponent {\n\tpublic pucks: InputSignal<TCommonsPresentationSurveyClientPuck[]> = input.required<TCommonsPresentationSurveyClientPuck[]>();\n}\n","<section board>\n\t@for (puck of this.pucks(); track puck.deviceId) {\n\t\t<section class=\"dot\"\n\t\t\t\t[style.left.%]=\"puck.x * 100\"\n\t\t\t\t[style.top.%]=\"puck.y * 100\"\n\t\t></section>\n\t}\n</section>\n","import { Component, input, InputSignal, OnInit } from '@angular/core';\n\nimport { commonsNumberMedian } from 'tscommons-esm-core';\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { CommonsComponent } from 'ngx-angularcommons-esm-core';\n\nimport { TCommonsPresentationSurveyClientPuck } from '../../types/tclient-puck';\nimport { ICommonsPresentationSurveyHostPuck } from '../../interfaces/ihost-puck';\n\nimport { CommonsPresentationSurveyHostBoardComponent } from '../host-board/host-board.component';\n\n@Component({\n\t\tselector: 'commons-survey-host-puck-board',\n\t\tstandalone: true,\n\t\timports: [\n\t\t\t\tCommonsPresentationSurveyHostBoardComponent\n\t\t],\n\t\ttemplateUrl: './host-puck-board.component.html',\n\t\tstyleUrls: ['./host-puck-board.component.scss']\n})\nexport class CommonsPresentationSurveyHostPuckBoardComponent extends CommonsComponent implements OnInit {\n\tpublic topLeft: InputSignal<string|undefined> = input<string>();\n\tpublic bottomLeft: InputSignal<string|undefined> = input<string>();\n\tpublic topRight: InputSignal<string|undefined> = input<string>();\n\tpublic bottomRight: InputSignal<string|undefined> = input<string>();\n\n\tprotected connected: boolean = false;\n\n\tprotected pucks: TCommonsPresentationSurveyClientPuck[] = [];\n\n\tpublic service: InputSignal<ICommonsPresentationSurveyHostPuck> = input.required<ICommonsPresentationSurveyHostPuck>();\n\n\tpublic override ngOnInit() {\n\t\tsuper.ngOnInit();\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().connectedObservable,\n\t\t\t\t(state: boolean): void => {\n\t\t\t\t\tthis.connected = state;\n\t\t\t\t}\n\t\t);\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().puckUpdatedObservable,\n\t\t\t\t(puck: TCommonsPresentationSurveyClientPuck): void => {\n\t\t\t\t\tconst existing: TCommonsPresentationSurveyClientPuck|undefined = this.pucks\n\t\t\t\t\t\t\t.find((p: TCommonsPresentationSurveyClientPuck): boolean => p.deviceId === puck.deviceId);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\texisting.x = puck.x;\n\t\t\t\t\t\texisting.y = puck.y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pucks.push({ ...puck });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t);\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().resetObservable,\n\t\t\t\t(): void => {\n\t\t\t\t\tthis.pucks = [];\n\t\t\t\t}\n\t\t);\n\t}\n\n\tprotected get isLeft(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.x);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) <= 0.5;\n\t}\n\n\tprotected get isRight(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.x);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) >= 0.5;\n\t}\n\n\tprotected get isTop(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.y);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) <= 0.5;\n\t}\n\n\tprotected get isBottom(): boolean {\n\t\tconst xs: number[] = this.pucks\n\t\t\t\t.map((xy: TXy): number => xy.y);\n\n\t\treturn (commonsNumberMedian(xs) ?? 0.5) >= 0.5;\n\t}\n\n\tprotected get isTopLeft(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isLeft;\n\t\tif ((this.topLeft() && !this.topRight()) || (!this.topLeft() && this.topRight())) return this.isTop;\n\t\treturn this.isLeft && this.isTop;\n\t}\n\n\tprotected get isBottomLeft(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isLeft;\n\t\tif ((this.bottomLeft() && !this.bottomRight()) || (!this.bottomLeft() && this.bottomRight())) return this.isBottom;\n\t\treturn this.isLeft && this.isBottom;\n\t}\n\n\tprotected get isTopRight(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isRight;\n\t\tif ((this.topLeft() && !this.topRight()) || (!this.topLeft() && this.topRight())) return this.isTop;\n\t\treturn this.isRight && this.isTop;\n\t}\n\n\tprotected get isBottomRight(): boolean {\n\t\tif ((this.topLeft() && !this.bottomLeft()) || (!this.topLeft() && this.bottomLeft())) return this.isRight;\n\t\tif ((this.bottomLeft() && !this.bottomRight()) || (!this.bottomLeft() && this.bottomRight())) return this.isBottom;\n\t\treturn this.isRight && this.isBottom;\n\t}\n}\n","<section>\n\t<commons-survey-host-board\n\t\t\t[pucks]=\"this.pucks\"\n\t></commons-survey-host-board>\n\n\t@if (this.topLeft()) {\n\t\t<label class=\"top-left\"\n\t\t\t\t[class.selected]=\"this.isTopLeft\"\n\t\t>{{ this.topLeft() }}</label>\n\t}\n\t@if (this.topRight()) {\n\t\t<label class=\"top-right\"\n\t\t\t\t[class.selected]=\"this.isTopRight\"\n\t\t>{{ this.topRight() }}</label>\n\t}\n\t@if (this.bottomLeft()) {\n\t\t<label class=\"bottom-left\"\n\t\t\t\t[class.selected]=\"this.isBottomLeft\"\n\t\t>{{ this.bottomLeft() }}</label>\n\t}\n\t@if (this.bottomRight()) {\n\t\t<label class=\"bottom-right\"\n\t\t\t\t[class.selected]=\"this.isBottomRight\"\n\t\t>{{ this.bottomRight() }}</label>\n\t}\n</section>\n","import { AfterViewInit, Component, HostListener, input, InputSignal, model, ModelSignal } from '@angular/core';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\n@Component({\n\t\tselector: 'commons-survey-client-puck',\n\t\tstandalone: true,\n\t\ttemplateUrl: './client-puck.component.html',\n\t\tstyleUrls: ['./client-puck.component.less']\n})\nexport class CommonsPresentationSurveyClientPuckComponent implements AfterViewInit {\n\t@HostListener('window:resize', []) public windowResized() {\n\t\tthis.centrePosition();\n\t}\n\n\tpublic disabled: InputSignal<boolean> = input<boolean>(false);\n\n\tpublic xy: ModelSignal<TXy> = model.required<TXy>();\n\n\tprivate eventStart: TXy|undefined;\n\tprivate start: TXy|undefined;\n\n\tprotected get isMoving(): boolean {\n\t\treturn this.eventStart !== undefined;\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tsetTimeout(\n\t\t\t\t(): void => {\n\t\t\t\t\tthis.centrePosition();\n\t\t\t\t},\n\t\t\t\t0\n\t\t);\n\n\t\tsetTimeout(\n\t\t\t\t(): void => {\n\t\t\t\t\tthis.centrePosition();\n\t\t\t\t},\n\t\t\t\t500\n\t\t);\n\t}\n\n\tprivate centrePosition(): void {\n\t\tthis.xy.set({\n\t\t\t\tx: window.innerWidth / 2,\n\t\t\t\ty: window.innerHeight / 2\n\t\t});\n\n\t\tthis.eventStart = undefined;\n\t}\n\n\tprotected doMouseDown(event: MouseEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tthis.eventStart = {\n\t\t\t\tx: event.screenX,\n\t\t\t\ty: event.screenY\n\t\t};\n\n\t\tthis.start = { ...this.xy() };\n\t}\n\n\tprotected doMouseUp(_event: MouseEvent): void {\n\t\tthis.eventStart = undefined;\n\t}\n\n\tprotected doMouseMove(event: MouseEvent): void {\n\t\tif (!this.eventStart) return;\n\n\t\tconst dx: number = event.screenX - this.eventStart.x;\n\t\tconst dy: number = event.screenY - this.eventStart.y;\n\n\t\tthis.xy.set({\n\t\t\t\tx: this.start!.x + dx,\n\t\t\t\ty: this.start!.y + dy\n\t\t});\n\t}\n\n\tprotected doTouchStart(event: TouchEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tif (event.touches.length < 1) return;\n\n\t\tthis.eventStart = {\n\t\t\t\tx: event.touches[0].screenX,\n\t\t\t\ty: event.touches[0].screenY\n\t\t};\n\n\t\tthis.start = { ...this.xy() };\n\t}\n\n\tprotected doTouchEnd(_event: TouchEvent): void {\n\t\tthis.eventStart = undefined;\n\t}\n\n\tprotected doTouchMove(event: TouchEvent): void {\n\t\tif (!this.eventStart) return;\n\n\t\tconst dx: number = event.touches[0].screenX - this.eventStart.x;\n\t\tconst dy: number = event.touches[0].screenY - this.eventStart.y;\n\n\t\tthis.xy.set({\n\t\t\t\tx: this.start!.x + dx,\n\t\t\t\ty: this.start!.y + dy\n\t\t});\n\t}\n}\n","<aside\n\t\t[style.top.px]=\"this.xy().y\"\n\t\t[style.left.px]=\"this.xy().x\"\n>\n\t<section outer\n\t\t\t(mousedown)=\"this.doMouseDown($event);\"\n\t\t\t(mouseup)=\"this.doMouseUp($event);\"\n\t\t\t(mousemove)=\"this.doMouseMove($event);\"\n\t\t\t(touchstart)=\"this.doTouchStart($event);\"\n\t\t\t(touchend)=\"this.doTouchEnd($event);\"\n\t\t\t(touchmove)=\"this.doTouchMove($event);\"\n\t></section>\n\t<section inner\n\t\t\t[class.moving]=\"this.isMoving\"\n\t\t\t[class.disabled]=\"this.disabled()\"\n\t></section>\n</aside>\n","import { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { CommonsPresentationSurveyClientPuckComponent } from '../client-puck/client-puck.component';\n\n@Component({\n\t\tselector: 'commons-survey-client-board',\n\t\tstandalone: true,\n\t\timports: [\n\t\t\t\tCommonsPresentationSurveyClientPuckComponent\n\t\t],\n\t\ttemplateUrl: './client-board.component.html',\n\t\tstyleUrls: ['./client-board.component.less']\n})\nexport class CommonsPresentationSurveyClientBoardComponent {\n\tpublic connected: InputSignal<boolean> = input.required<boolean>();\n\tpublic moved: OutputEmitterRef<TXy> = output<TXy>();\n\n\tprotected xy: TXy = { x: 0, y: 0 };\n\n\tprotected doCascade(xy: TXy): void {\n\t\tif (!this.connected) return;\n\n\t\tthis.moved.emit({\n\t\t\t\tx: xy.x / window.outerWidth,\n\t\t\t\ty: xy.y / window.outerHeight\n\t\t});\n\t}\n}\n","<section board></section>\n<commons-survey-client-puck\n\t\t[(xy)]=\"this.xy\"\n\t\t(xyChange)=\"this.doCascade($event);\"\n\t\t[disabled]=\"!this.connected\"\n></commons-survey-client-puck>\n","import { Component, input, InputSignal, OnInit } from '@angular/core';\n\nimport { TXy } from 'tscommons-esm-graphics';\n\nimport { CommonsComponent } from 'ngx-angularcommons-esm-core';\n\nimport { ICommonsPresentationSurveyClientPuck } from '../../interfaces/iclient-puck';\n\nimport { CommonsPresentationSurveyClientBoardComponent } from '../client-board/client-board.component';\n\n@Component({\n\t\tselector: 'commons-survey-client-puck-board',\n\t\tstandalone: true,\n\t\timports: [\n\t\t\t\tCommonsPresentationSurveyClientBoardComponent\n\t\t],\n\t\ttemplateUrl: './client-puck-board.component.html',\n\t\tstyleUrls: ['./client-puck-board.component.less']\n})\nexport class CommonsPresentationSurveyClientPuckBoardComponent extends CommonsComponent implements OnInit {\n\tpublic service: InputSignal<ICommonsPresentationSurveyClientPuck> = input.required<ICommonsPresentationSurveyClientPuck>();\n\n\tpublic title: InputSignal<string> = input.required<string>();\n\tpublic topLeft: InputSignal<string|undefined> = input<string>();\n\tpublic bottomLeft: InputSignal<string|undefined> = input<string>();\n\tpublic topRight: InputSignal<string|undefined> = input<string>();\n\tpublic bottomRight: InputSignal<string|undefined> = input<string>();\n\n\tprotected connected: boolean = false;\n\n\tpublic override ngOnInit() {\n\t\tsuper.ngOnInit();\n\n\t\tthis.subscribe(\n\t\t\t\tthis.service().connectedObservable,\n\t\t\t\t(state: boolean): void => {\n\t\t\t\t\tthis.connected = state;\n\t\t\t\t}\n\t\t);\n\t}\n\n\tprotected doUpdate(xy: TXy): void {\n\t\tvoid this.service().move(xy);\n\t}\n}\n","<commons-survey-client-board\n\t\t[connected]=\"this.connected\"\n\t\t(moved)=\"this.doUpdate($event);\"\n></commons-survey-client-board>\n\n<label class=\"title\">{{ this.title() }}</label>\n\n@if (this.topLeft()) {\n\t<label class=\"top-left\">{{ this.topLeft() }}</label>\n}\n@if (this.topRight()) {\n\t<label class=\"top-right\">{{ this.topRight() }}</label>\n}\n@if (this.bottomLeft()) {\n\t<label class=\"bottom-left\">{{ this.bottomLeft() }}</label>\n}\n@if (this.bottomRight()) {\n\t<label class=\"bottom-right\">{{ this.bottomRight() }}</label>\n}\n","/*\n * Public API Surface of ngx-presentationcommons-esm-survey\n */\n\nexport * from './lib/services/survey-host.service';\nexport * from './lib/services/survey-client.service';\nexport * from './lib/services/puck-host.service';\nexport * from './lib/services/puck-client.service';\n\nexport * from './lib/interfaces/iclient-puck';\nexport * from './lib/interfaces/ihost-puck';\n\nexport * from './lib/types/tclient-puck';\n\nexport * from './lib/components/host-puck-board/host-puck-board.component';\nexport * from './lib/components/client-puck-board/client-puck-board.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-presentationcommons-esm-survey",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.0",
6
6
  "@angular/core": "^19.2.0",
package/public-api.d.ts CHANGED
@@ -4,5 +4,6 @@ export * from './lib/services/puck-host.service';
4
4
  export * from './lib/services/puck-client.service';
5
5
  export * from './lib/interfaces/iclient-puck';
6
6
  export * from './lib/interfaces/ihost-puck';
7
+ export * from './lib/types/tclient-puck';
7
8
  export * from './lib/components/host-puck-board/host-puck-board.component';
8
9
  export * from './lib/components/client-puck-board/client-puck-board.component';