{
  "version": 3,
  "sources": ["../../src/records/TLPresence.ts"],
  "sourcesContent": ["import { BaseRecord, createRecordType, defineMigrations, RecordId } from '@bigbluebutton/store'\nimport { JsonObject } from '@bigbluebutton/utils'\nimport { T } from '@bigbluebutton/validate'\nimport { Box2dModel, box2dModelValidator } from '../misc/geometry-types'\nimport { idValidator } from '../misc/id-validator'\nimport { cursorTypeValidator, TLCursor } from '../misc/TLCursor'\nimport { scribbleValidator, TLScribble } from '../misc/TLScribble'\nimport { TLINSTANCE_ID } from './TLInstance'\nimport { TLPageId } from './TLPage'\nimport { TLShapeId } from './TLShape'\n\n/** @public */\nexport interface TLInstancePresence extends BaseRecord<'instance_presence', TLInstancePresenceID> {\n\tuserId: string\n\tuserName: string\n\tlastActivityTimestamp: number\n\tcolor: string // can be any hex color\n\tcamera: { x: number; y: number; z: number }\n\tselectedShapeIds: TLShapeId[]\n\tcurrentPageId: TLPageId\n\tbrush: Box2dModel | null\n\tscribbles: TLScribble[]\n\tscreenBounds: Box2dModel\n\tfollowingUserId: string | null\n\tcursor: {\n\t\tx: number\n\t\ty: number\n\t\ttype: TLCursor['type']\n\t\trotation: number\n\t}\n\tchatMessage: string\n\tmeta: JsonObject\n}\n\n/** @public */\nexport type TLInstancePresenceID = RecordId<TLInstancePresence>\n\n/** @internal */\nexport const instancePresenceValidator: T.Validator<TLInstancePresence> = T.model(\n\t'instance_presence',\n\tT.object({\n\t\ttypeName: T.literal('instance_presence'),\n\t\tid: idValidator<TLInstancePresenceID>('instance_presence'),\n\t\tuserId: T.string,\n\t\tuserName: T.string,\n\t\tlastActivityTimestamp: T.number,\n\t\tfollowingUserId: T.string.nullable(),\n\t\tcursor: T.object({\n\t\t\tx: T.number,\n\t\t\ty: T.number,\n\t\t\ttype: cursorTypeValidator,\n\t\t\trotation: T.number,\n\t\t}),\n\t\tcolor: T.string,\n\t\tcamera: T.object({\n\t\t\tx: T.number,\n\t\t\ty: T.number,\n\t\t\tz: T.number,\n\t\t}),\n\t\tscreenBounds: box2dModelValidator,\n\t\tselectedShapeIds: T.arrayOf(idValidator<TLShapeId>('shape')),\n\t\tcurrentPageId: idValidator<TLPageId>('page'),\n\t\tbrush: box2dModelValidator.nullable(),\n\t\tscribbles: T.arrayOf(scribbleValidator),\n\t\tchatMessage: T.string,\n\t\tmeta: T.jsonValue as T.ObjectValidator<JsonObject>,\n\t})\n)\n\n/** @internal */\nexport const instancePresenceVersions = {\n\tAddScribbleDelay: 1,\n\tRemoveInstanceId: 2,\n\tAddChatMessage: 3,\n\tAddMeta: 4,\n\tRenameSelectedShapeIds: 5,\n} as const\n\nexport const instancePresenceMigrations = defineMigrations({\n\tcurrentVersion: instancePresenceVersions.RenameSelectedShapeIds,\n\tmigrators: {\n\t\t[instancePresenceVersions.AddScribbleDelay]: {\n\t\t\tup: (instance) => {\n\t\t\t\tif (instance.scribble !== null) {\n\t\t\t\t\treturn { ...instance, scribble: { ...instance.scribble, delay: 0 } }\n\t\t\t\t}\n\t\t\t\treturn { ...instance }\n\t\t\t},\n\t\t\tdown: (instance) => {\n\t\t\t\tif (instance.scribble !== null) {\n\t\t\t\t\tconst { delay: _delay, ...rest } = instance.scribble\n\t\t\t\t\treturn { ...instance, scribble: rest }\n\t\t\t\t}\n\t\t\t\treturn { ...instance }\n\t\t\t},\n\t\t},\n\t\t[instancePresenceVersions.RemoveInstanceId]: {\n\t\t\tup: ({ instanceId: _, ...instance }) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t\tdown: (instance) => {\n\t\t\t\treturn { ...instance, instanceId: TLINSTANCE_ID }\n\t\t\t},\n\t\t},\n\t\t[instancePresenceVersions.AddChatMessage]: {\n\t\t\tup: (instance) => {\n\t\t\t\treturn { ...instance, chatMessage: '' }\n\t\t\t},\n\t\t\tdown: ({ chatMessage: _, ...instance }) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instancePresenceVersions.AddMeta]: {\n\t\t\tup: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tmeta: {},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({ meta: _, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instancePresenceVersions.RenameSelectedShapeIds]: {\n\t\t\tup: (record) => {\n\t\t\t\tconst { selectedShapeIds, ...rest } = record\n\t\t\t\treturn {\n\t\t\t\t\tselectedShapeIds: selectedShapeIds,\n\t\t\t\t\t...rest,\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (record) => {\n\t\t\t\tconst { selectedShapeIds, ...rest } = record\n\t\t\t\treturn {\n\t\t\t\t\tselectedShapeIds: selectedShapeIds,\n\t\t\t\t\t...rest,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n})\n\n/** @public */\nexport const InstancePresenceRecordType = createRecordType<TLInstancePresence>(\n\t'instance_presence',\n\t{\n\t\tmigrations: instancePresenceMigrations,\n\t\tvalidator: instancePresenceValidator,\n\t\tscope: 'presence',\n\t}\n).withDefaultProperties(() => ({\n\tlastActivityTimestamp: 0,\n\tfollowingUserId: null,\n\tcolor: '#FF0000',\n\tcamera: {\n\t\tx: 0,\n\t\ty: 0,\n\t\tz: 1,\n\t},\n\tcursor: {\n\t\tx: 0,\n\t\ty: 0,\n\t\ttype: 'default',\n\t\trotation: 0,\n\t},\n\tscreenBounds: {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: 1,\n\t\th: 1,\n\t},\n\tselectedShapeIds: [],\n\tbrush: null,\n\tscribbles: [],\n\tchatMessage: '',\n\tmeta: {},\n}))\n"],
  "mappings": "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",
  "names": []
}
