Merge pull request #21139 from danielpetri1/show-poll-result-in-bbb-playback
refactor(bbb-html5): Remove custom poll shape
This commit is contained in:
commit
6f5482dae3
@ -18,7 +18,7 @@ class PresentationModel {
|
||||
presentations.values.toVector
|
||||
}
|
||||
|
||||
def getCurrentPresentation(): Option[Presentation] = { // todo remove
|
||||
def getCurrentPresentation(): Option[Presentation] = {
|
||||
presentations.values find (p => p.current)
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ import org.bigbluebutton.core.domain.MeetingState2x
|
||||
import scala.collection.mutable.ArrayBuffer
|
||||
import scala.collection.mutable.HashMap
|
||||
import org.bigbluebutton.core.running.LiveMeeting
|
||||
import org.bigbluebutton.core.models.PresentationPage
|
||||
|
||||
object Polls {
|
||||
|
||||
@ -111,7 +112,10 @@ object Polls {
|
||||
|
||||
for {
|
||||
result <- getSimplePollResult(pollId, lm.polls)
|
||||
shape = pollResultToWhiteboardShape(result)
|
||||
pod <- state.presentationPodManager.getDefaultPod()
|
||||
pres <- pod.getCurrentPresentation()
|
||||
page <- PresentationInPod.getCurrentPage(pres)
|
||||
shape = pollResultToWhiteboardShape(result, page)
|
||||
annot <- send(result, shape)
|
||||
} yield {
|
||||
lm.wbModel.addAnnotations(annot.wbId, lm.props.meetingProp.intId, requesterId, Array[AnnotationVO](annot), isPresenter = false, isModerator = false)
|
||||
@ -251,15 +255,48 @@ object Polls {
|
||||
}
|
||||
}
|
||||
|
||||
private def pollResultToWhiteboardShape(result: SimplePollResultOutVO): scala.collection.immutable.Map[String, Object] = {
|
||||
private def pollResultToWhiteboardShape(result: SimplePollResultOutVO, page: PresentationPage): scala.collection.immutable.Map[String, Object] = {
|
||||
val maxImageWidth = 1440
|
||||
val maxImageHeight = 1080
|
||||
val poll_width = 300
|
||||
val poll_height = 200
|
||||
|
||||
val whiteboardRatio = Math.min(maxImageWidth / page.width, maxImageHeight / page.height);
|
||||
val scaledWidth = page.width * whiteboardRatio
|
||||
val scaledHeight = page.height * whiteboardRatio
|
||||
|
||||
val x: Double = scaledWidth - poll_width
|
||||
val y: Double = scaledHeight - poll_height
|
||||
|
||||
val shape = new scala.collection.mutable.HashMap[String, Object]()
|
||||
shape += "numRespondents" -> Integer.valueOf(result.numRespondents)
|
||||
shape += "numResponders" -> Integer.valueOf(result.numResponders)
|
||||
shape += "questionType" -> result.questionType
|
||||
shape += "questionText" -> result.questionText.getOrElse("")
|
||||
val props = new scala.collection.mutable.HashMap[String, Object]()
|
||||
val meta = new scala.collection.mutable.HashMap[String, Object]()
|
||||
|
||||
props += "answers" -> result.answers
|
||||
props += "numRespondents" -> Integer.valueOf(result.numRespondents)
|
||||
props += "numResponders" -> Integer.valueOf(result.numResponders)
|
||||
props += "questionText" -> result.questionText.getOrElse("")
|
||||
props += "questionType" -> result.questionType
|
||||
props += "w" -> Integer.valueOf(poll_width)
|
||||
props += "h" -> Integer.valueOf(poll_height)
|
||||
props += "fill" -> "black"
|
||||
props += "color" -> "black"
|
||||
props += "question" -> result.questionText.getOrElse("")
|
||||
|
||||
shape += "x" -> java.lang.Double.valueOf(x)
|
||||
shape += "y" -> java.lang.Double.valueOf(y)
|
||||
shape += "isLocked" -> java.lang.Boolean.valueOf(false)
|
||||
shape += "index" -> "a1"
|
||||
shape += "rotation" -> Integer.valueOf(0)
|
||||
shape += "parentId" -> "page:1"
|
||||
shape += "typeName" -> "shape"
|
||||
shape += "opacity" -> Integer.valueOf(1)
|
||||
shape += "id" -> s"shape:poll-result-${result.id}"
|
||||
shape += "answers" -> result.answers
|
||||
shape += "type" -> "geo"
|
||||
shape += "meta" -> meta.toMap
|
||||
shape += "type" -> "poll"
|
||||
|
||||
shape += "props" -> props.toMap
|
||||
|
||||
shape.toMap
|
||||
}
|
||||
|
||||
@ -275,22 +312,6 @@ object Polls {
|
||||
} yield poll.toPollVO()
|
||||
|
||||
}
|
||||
//
|
||||
// def numPolls(polls: Polls): Int = {
|
||||
// polls.size
|
||||
// }
|
||||
//
|
||||
// def addPoll(poll: Poll, model: PollModel) {
|
||||
// model.polls += poll.id -> poll
|
||||
// }
|
||||
//
|
||||
// def hasCurrentPoll(model: PollModel): Boolean = {
|
||||
// model.currentPoll != None
|
||||
// }
|
||||
//
|
||||
// def getCurrentPoll(model: PollModel): Option[PollVO] = {
|
||||
// model.currentPoll
|
||||
// }
|
||||
|
||||
def getPolls(polls: Polls): Array[PollVO] = {
|
||||
val poll = new ArrayBuffer[PollVO]
|
||||
@ -301,19 +322,6 @@ object Polls {
|
||||
poll.toArray
|
||||
}
|
||||
|
||||
// def clearPoll(pollID: String, model: PollModel): Boolean = {
|
||||
// var success = false
|
||||
// model.polls.get(pollID) match {
|
||||
// case Some(p) => {
|
||||
// p.clear
|
||||
// success = true
|
||||
// }
|
||||
// case None => success = false
|
||||
// }
|
||||
//
|
||||
// success
|
||||
// }
|
||||
//
|
||||
def startPoll(pollId: String, polls: Polls) {
|
||||
polls.get(pollId) foreach {
|
||||
p =>
|
||||
@ -321,29 +329,12 @@ object Polls {
|
||||
polls.currentPoll = Some(p)
|
||||
}
|
||||
}
|
||||
//
|
||||
// def removePoll(pollID: String, model: PollModel): Boolean = {
|
||||
// var success = false
|
||||
// model.polls.get(pollID) match {
|
||||
// case Some(p) => {
|
||||
// model.polls -= p.id
|
||||
// success = true
|
||||
// }
|
||||
// case None => success = false
|
||||
// }
|
||||
//
|
||||
// success
|
||||
// }
|
||||
//
|
||||
|
||||
def stopPoll(pollId: String, polls: Polls) {
|
||||
polls.get(pollId) foreach (p => p.stop())
|
||||
PollDAO.updateEnded(pollId)
|
||||
}
|
||||
|
||||
// def hasPoll(pollId: String, model: PollModel): Boolean = {
|
||||
// model.polls.get(pollId) != None
|
||||
// }
|
||||
//
|
||||
def getSimplePoll(pollId: String, polls: Polls): Option[SimplePollOutVO] = {
|
||||
var pvo: Option[SimplePollOutVO] = None
|
||||
polls.get(pollId) foreach (p => pvo = Some(p.toSimplePollOutVO()))
|
||||
@ -762,14 +753,6 @@ class Polls {
|
||||
poll
|
||||
}
|
||||
|
||||
/*
|
||||
private def remove(id: String): Option[Poll] = {
|
||||
val poll = polls.get(id)
|
||||
poll foreach (p => polls -= id)
|
||||
poll
|
||||
}
|
||||
*/
|
||||
|
||||
private def get(id: String): Option[Poll] = {
|
||||
polls.get(id)
|
||||
}
|
||||
|
@ -31,13 +31,17 @@ class AddTldrawShapeWhiteboardRecordEvent extends AbstractWhiteboardRecordEvent
|
||||
|
||||
implicit object AnyJsonFormat extends JsonFormat[Any] {
|
||||
def write(x: Any) = x match {
|
||||
case n: Int => JsNumber(n)
|
||||
case s: String => JsString(s)
|
||||
case d: Double => JsNumber(d)
|
||||
case n: Int => JsNumber(n)
|
||||
case s: String => JsString(s)
|
||||
case d: Double => JsNumber(d)
|
||||
case m: scala.collection.immutable.Map[String, _] => mapFormat[String, Any].write(m)
|
||||
case l: List[_] => listFormat[Any].write(l)
|
||||
case b: Boolean if b == true => JsTrue
|
||||
case b: Boolean if b == false => JsFalse
|
||||
case l: List[_] => listFormat[Any].write(l)
|
||||
case b: Boolean if b == true => JsTrue
|
||||
case b: Boolean if b == false => JsFalse
|
||||
case v: SimpleVoteOutVO => JsObject("id" -> JsNumber(v.id), "key" -> JsString(v.key), "numVotes" -> JsNumber(v.numVotes))
|
||||
case arr: Array[_] => JsArray(arr.map(write).toVector)
|
||||
case null => JsNull
|
||||
case _ => throw new IllegalArgumentException(s"Unsupported type: ${x.getClass.getName}")
|
||||
}
|
||||
|
||||
def read(value: JsValue) = {}
|
||||
|
@ -291,8 +291,7 @@ class RedisRecorderActor(
|
||||
}
|
||||
|
||||
private def handleSendWhiteboardAnnotationsEvtMsg(msg: SendWhiteboardAnnotationsEvtMsg) {
|
||||
// filter poll annotations that are still not tldraw ready
|
||||
msg.body.annotations.filter(!_.annotationInfo.contains("answers")).foreach(annotation => {
|
||||
msg.body.annotations.foreach(annotation => {
|
||||
val ev = new AddTldrawShapeWhiteboardRecordEvent()
|
||||
ev.setMeetingId(msg.header.meetingId)
|
||||
ev.setPresentation(getPresentationId(annotation.wbId))
|
||||
|
@ -32,8 +32,6 @@ import { notifyShapeNumberExceeded, getCustomEditorAssetUrls, getCustomAssetUrls
|
||||
|
||||
import NoopTool from './custom-tools/noop-tool/component';
|
||||
|
||||
import { PollShapeUtil } from './custom-shapes/poll/component';
|
||||
|
||||
const CAMERA_TYPE = 'camera';
|
||||
|
||||
// Helper functions
|
||||
@ -161,8 +159,6 @@ const Whiteboard = React.memo((props) => {
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const [shapesVersion, setShapesVersion] = React.useState(0);
|
||||
|
||||
const customShapeUtils = [PollShapeUtil];
|
||||
const customTools = [NoopTool];
|
||||
|
||||
const presenterChanged = usePrevious(isPresenter) !== isPresenter;
|
||||
@ -1546,7 +1542,6 @@ const Whiteboard = React.memo((props) => {
|
||||
forceMobile
|
||||
hideUi={!(hasWBAccessRef.current || isPresenter)}
|
||||
onMount={handleTldrawMount}
|
||||
shapeUtils={customShapeUtils}
|
||||
tools={customTools}
|
||||
/>
|
||||
<Styled.TldrawV2GlobalStyle
|
||||
|
@ -1,117 +0,0 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
HTMLContainer,
|
||||
Rectangle2d,
|
||||
ShapeUtil,
|
||||
TLOnResizeHandler,
|
||||
getDefaultColorTheme,
|
||||
resizeBox,
|
||||
} from '@bigbluebutton/tldraw';
|
||||
import { pollShapeMigrations } from './poll-shape-migrations';
|
||||
import { pollShapeProps } from './poll-shape-props';
|
||||
import { IPollShape } from './poll-shape-types';
|
||||
import ChatPollContent from '/imports/ui/components/chat/chat-graphql/chat-message-list/page/chat-message/message-content/poll-content/component';
|
||||
|
||||
export class PollShapeUtil extends ShapeUtil<IPollShape> {
|
||||
static override type = 'poll' as const;
|
||||
|
||||
static override props = pollShapeProps;
|
||||
|
||||
static override migrations = pollShapeMigrations;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
override isAspectRatioLocked = (_shape: IPollShape) => false;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
override canResize = (_shape: IPollShape) => true;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
override canBind = (_shape: IPollShape) => true;
|
||||
|
||||
getDefaultProps(): IPollShape['props'] {
|
||||
return {
|
||||
w: 300,
|
||||
h: 300,
|
||||
color: 'black',
|
||||
fill: 'white',
|
||||
question: '',
|
||||
numRespondents: 0,
|
||||
numResponders: 0,
|
||||
questionText: '',
|
||||
questionType: '',
|
||||
answers: [],
|
||||
};
|
||||
}
|
||||
|
||||
// eslint-disable-next-line class-methods-use-this
|
||||
getGeometry(shape: IPollShape) {
|
||||
return new Rectangle2d({
|
||||
width: shape.props.w,
|
||||
height: shape.props.h,
|
||||
isFilled: true,
|
||||
});
|
||||
}
|
||||
|
||||
component(shape: IPollShape) {
|
||||
const { bounds } = this.editor.getShapeGeometry(shape);
|
||||
const theme = getDefaultColorTheme({
|
||||
isDarkMode: this.editor.user.getIsDarkMode(),
|
||||
});
|
||||
|
||||
const contentRef = React.useRef<HTMLDivElement>(null);
|
||||
const pollMetadata = JSON.stringify({
|
||||
id: shape.id,
|
||||
question: shape.props.question,
|
||||
numRespondents: shape.props.numRespondents,
|
||||
numResponders: shape.props.numResponders,
|
||||
questionText: shape.props.questionText,
|
||||
questionType: shape.props.questionType,
|
||||
answers: shape.props.answers,
|
||||
});
|
||||
|
||||
const adjustedHeight = shape.props.questionText.length > 0 ? bounds.height - 75 : bounds.height;
|
||||
|
||||
return (
|
||||
<HTMLContainer
|
||||
id={shape.id}
|
||||
style={{
|
||||
border: '1px solid #8B9AA8',
|
||||
borderRadius: '4px',
|
||||
boxShadow: '0px 0px 4px 0px rgba(0, 0, 0, 0.20)',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
pointerEvents: 'all',
|
||||
backgroundColor: theme[shape.props.color].semi,
|
||||
color: theme[shape.props.color].solid,
|
||||
}}
|
||||
>
|
||||
<div
|
||||
ref={contentRef}
|
||||
style={{
|
||||
width: `${bounds.width}px`,
|
||||
overflow: 'hidden',
|
||||
position: 'relative',
|
||||
}}
|
||||
>
|
||||
<ChatPollContent
|
||||
metadata={pollMetadata}
|
||||
height={adjustedHeight}
|
||||
/>
|
||||
</div>
|
||||
</HTMLContainer>
|
||||
);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line class-methods-use-this
|
||||
indicator(shape: IPollShape) {
|
||||
return <rect width={shape.props.w} height={shape.props.h} />;
|
||||
}
|
||||
|
||||
override onResize: TLOnResizeHandler<IPollShape> = (shape, info) => {
|
||||
return resizeBox(shape, info);
|
||||
}
|
||||
}
|
||||
|
||||
export default PollShapeUtil;
|
@ -1,25 +0,0 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { defineMigrations } from '@bigbluebutton/tldraw';
|
||||
|
||||
// Migrations for the custom poll shape (optional but very helpful)
|
||||
export const pollShapeMigrations = defineMigrations({
|
||||
currentVersion: 1,
|
||||
migrators: {
|
||||
1: {
|
||||
// example, removing a property from the shape
|
||||
up(shape) {
|
||||
const migratedUpShape = { ...shape };
|
||||
delete migratedUpShape.somePropertyToRemove;
|
||||
return migratedUpShape;
|
||||
},
|
||||
down(shape) {
|
||||
const migratedDownShape = { ...shape };
|
||||
migratedDownShape.somePropertyToRemove = 'some value';
|
||||
return migratedDownShape;
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export default pollShapeMigrations;
|
@ -1,17 +0,0 @@
|
||||
import { DefaultColorStyle, ShapeProps, T } from '@bigbluebutton/tldraw';
|
||||
import { IPollShape } from './poll-shape-types';
|
||||
|
||||
export const pollShapeProps: ShapeProps<IPollShape> = {
|
||||
w: T.number,
|
||||
h: T.number,
|
||||
color: DefaultColorStyle,
|
||||
fill: T.string,
|
||||
question: T.string,
|
||||
numRespondents: T.number,
|
||||
numResponders: T.number,
|
||||
questionText: T.string,
|
||||
questionType: T.string,
|
||||
answers: T.any,
|
||||
};
|
||||
|
||||
export default pollShapeProps;
|
@ -1,21 +0,0 @@
|
||||
import { TLBaseShape, TLDefaultColorStyle } from '@bigbluebutton/tldraw';
|
||||
|
||||
export type IPollShape = TLBaseShape<
|
||||
'poll',
|
||||
{
|
||||
w: number,
|
||||
h: number,
|
||||
color: TLDefaultColorStyle,
|
||||
fill: string,
|
||||
question: string,
|
||||
numRespondents: number,
|
||||
numResponders: number,
|
||||
questionText: string,
|
||||
questionType: string,
|
||||
answers: Array<{
|
||||
id: number,
|
||||
key: string,
|
||||
numVotes: number,
|
||||
}>,
|
||||
}
|
||||
>
|
290
bigbluebutton-html5/package-lock.json
generated
290
bigbluebutton-html5/package-lock.json
generated
@ -9,7 +9,7 @@
|
||||
"dependencies": {
|
||||
"@apollo/client": "^3.10.4",
|
||||
"@babel/runtime": "^7.17.9",
|
||||
"@bigbluebutton/tldraw": "^2.0.0-alpha.24",
|
||||
"@bigbluebutton/tldraw": "^2.0.0-alpha.25",
|
||||
"@browser-bunyan/console-formatted-stream": "^1.8.0",
|
||||
"@browser-bunyan/console-raw-stream": "^1.8.0",
|
||||
"@browser-bunyan/server-stream": "^1.8.0",
|
||||
@ -1978,15 +1978,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/editor": {
|
||||
"version": "2.0.0-alpha.23",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/editor/-/editor-2.0.0-alpha.23.tgz",
|
||||
"integrity": "sha512-PZMYJ+dzBJv/XIVDxhVf/J0z6yAxadCTp26U9TA/2ptR04Y249xN7bOUb+KIuGSbjKrr6QxVLXJdN8RrMo35Fg==",
|
||||
"version": "2.0.0-alpha.24",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/editor/-/editor-2.0.0-alpha.24.tgz",
|
||||
"integrity": "sha512-bLhnBpuVo3YqtWktPY8I1nZ4A/eZ7WZP9hDfE+BmSc2ZGwAl0TIzzcUQKBoWAkA0I85ir7/Xim3fAZZm2lbK7Q==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@bigbluebutton/state": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/store": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/tlschema": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/validate": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/state": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/store": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/tlschema": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/validate": "2.0.0-alpha.21",
|
||||
"@types/core-js": "^2.5.5",
|
||||
"@use-gesture/react": "^10.2.27",
|
||||
"classnames": "^2.3.2",
|
||||
@ -2004,40 +2005,47 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/editor/node_modules/core-js": {
|
||||
"version": "3.38.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.0.tgz",
|
||||
"integrity": "sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==",
|
||||
"version": "3.38.1",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
|
||||
"integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/core-js"
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/state": {
|
||||
"version": "2.0.0-alpha.20",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/state/-/state-2.0.0-alpha.20.tgz",
|
||||
"integrity": "sha512-NWLlKFPZrznrascQMMALe6wXrlONfb4LBPY/VsDESkVxhDfC1IafbtZ45bI70UjuO7KpM6IqzhSNttZXLdI3og==",
|
||||
"version": "2.0.0-alpha.21",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/state/-/state-2.0.0-alpha.21.tgz",
|
||||
"integrity": "sha512-yioRXoBWzPtLZdzO0rCxaymfBewDmZ3098F6drncFz++InACBzmaqhZXXkAZFxLtsTwQQi4wL8vw9uYgcES8vA==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@testing-library/react": "^16.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^18"
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/store": {
|
||||
"version": "2.0.0-alpha.20",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/store/-/store-2.0.0-alpha.20.tgz",
|
||||
"integrity": "sha512-JlUjff+pclpo2SH/4WE8cM7ONPYsCH3YaQcYFHm6AeepnD3SK7eXn8xUBREI56kmeENNsOK2AnYz1smZEb0zpg==",
|
||||
"version": "2.0.0-alpha.21",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/store/-/store-2.0.0-alpha.21.tgz",
|
||||
"integrity": "sha512-cgBcekfkW0AZMCVCNpopfuGEmlEziqQI1bnUdbOZAA8aWCTG5/WuqM9anknZKccg+Dvfr2d/g2FcCSMKDlUH4w==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@bigbluebutton/state": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/state": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.21",
|
||||
"lodash.isequal": "^4.5.0",
|
||||
"nanoid": "4.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/tldraw": {
|
||||
"version": "2.0.0-alpha.24",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/tldraw/-/tldraw-2.0.0-alpha.24.tgz",
|
||||
"integrity": "sha512-MCNkpvkd4nqHXA4pfeQwA286CUZkIeQ+CFSAlkT48MBmZsa6de+mg9kKHmeOU0BnK4F/W2BOBHfDYDKrR6T6hw==",
|
||||
"version": "2.0.0-alpha.25",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/tldraw/-/tldraw-2.0.0-alpha.25.tgz",
|
||||
"integrity": "sha512-0DlcHUOryCxhNmZhvXXJNaOi1N99F00OPJj6HHnTXlf/qAIRFBWJn6o1w288ORRULL6gE9WVG2K7+xuN17zaew==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@bigbluebutton/editor": "2.0.0-alpha.23",
|
||||
"@bigbluebutton/editor": "2.0.0-alpha.24",
|
||||
"@radix-ui/react-alert-dialog": "^1.0.0",
|
||||
"@radix-ui/react-context-menu": "^2.1.5",
|
||||
"@radix-ui/react-dialog": "^1.0.5",
|
||||
@ -2058,28 +2066,31 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/tlschema": {
|
||||
"version": "2.0.0-alpha.20",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/tlschema/-/tlschema-2.0.0-alpha.20.tgz",
|
||||
"integrity": "sha512-Pl7mhU19zNtUBEE/QkTU1W18Uci+qH8MvYd+p2AlbGRk63uDqULQDWCoQuBSYWvDmmgrlvgOpvB+x3YeFuMnuw==",
|
||||
"version": "2.0.0-alpha.21",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/tlschema/-/tlschema-2.0.0-alpha.21.tgz",
|
||||
"integrity": "sha512-redk2SmrU8hG0Rwl4cYn8mkp4iqT0Bk3A3pmlqMuI+c0O1r6Ko41C0gviKqfHRlnNqObq5JcYFirxc/UO+L75g==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@bigbluebutton/state": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/store": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/validate": "2.0.0-alpha.20",
|
||||
"@bigbluebutton/state": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/store": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.21",
|
||||
"@bigbluebutton/validate": "2.0.0-alpha.21",
|
||||
"nanoid": "4.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@bigbluebutton/utils": {
|
||||
"version": "2.0.0-alpha.20",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/utils/-/utils-2.0.0-alpha.20.tgz",
|
||||
"integrity": "sha512-ikED5jKof9fDYsx7d75r/b6l6U/qlVTD0tnX/eB7khvZEyrdsmPpxeZeRx3B6nz5XogndupozoWqJCQAlP7nqA=="
|
||||
"version": "2.0.0-alpha.21",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/utils/-/utils-2.0.0-alpha.21.tgz",
|
||||
"integrity": "sha512-4Cc90N6HJMTdCtk8lm9mTEI6oBF3Sg3b1rWLeSNWCIfCed/lrfilTw80PrskGzznwkWkGbtmFCE9vQmpB6Ppbg==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@bigbluebutton/validate": {
|
||||
"version": "2.0.0-alpha.20",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/validate/-/validate-2.0.0-alpha.20.tgz",
|
||||
"integrity": "sha512-RK3VF1WrLRmOMejcNSTKW0eHs2h3Rxci+LU8AA6373ICSGuviT5HCxGkT9caixMX4+A20wd969nPaCurqoxFDQ==",
|
||||
"version": "2.0.0-alpha.21",
|
||||
"resolved": "https://registry.npmjs.org/@bigbluebutton/validate/-/validate-2.0.0-alpha.21.tgz",
|
||||
"integrity": "sha512-fQ7DBLPVCos1HMCC8KA52Lhm4uRAdg3PCsUuAU+fgHF2sMzuCIinjKX86U1f2MPSZKpbEWeKOIhojQnWErC5tw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.20"
|
||||
"@bigbluebutton/utils": "2.0.0-alpha.21"
|
||||
}
|
||||
},
|
||||
"node_modules/@browser-bunyan/console-formatted-stream": {
|
||||
@ -4338,6 +4349,146 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom": {
|
||||
"version": "10.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
|
||||
"integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.10.4",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@types/aria-query": "^5.0.1",
|
||||
"aria-query": "5.3.0",
|
||||
"chalk": "^4.1.0",
|
||||
"dom-accessibility-api": "^0.5.9",
|
||||
"lz-string": "^1.5.0",
|
||||
"pretty-format": "^27.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"color-convert": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/aria-query": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
|
||||
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"dequal": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"color-name": "~1.1.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/dom/node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@testing-library/react": {
|
||||
"version": "16.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz",
|
||||
"integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@testing-library/dom": "^10.0.0",
|
||||
"@types/react": "^18.0.0",
|
||||
"@types/react-dom": "^18.0.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
},
|
||||
"@types/react-dom": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@types/aria-query": {
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
|
||||
"integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@types/body-parser": {
|
||||
"version": "1.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
|
||||
@ -4379,7 +4530,8 @@
|
||||
"node_modules/@types/core-js": {
|
||||
"version": "2.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-2.5.8.tgz",
|
||||
"integrity": "sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg=="
|
||||
"integrity": "sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/d3-array": {
|
||||
"version": "3.2.1",
|
||||
@ -4935,12 +5087,14 @@
|
||||
"node_modules/@use-gesture/core": {
|
||||
"version": "10.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz",
|
||||
"integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw=="
|
||||
"integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@use-gesture/react": {
|
||||
"version": "10.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz",
|
||||
"integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@use-gesture/core": "10.3.1"
|
||||
},
|
||||
@ -5345,7 +5499,6 @@
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@ -7261,6 +7414,13 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dom-accessibility-api": {
|
||||
"version": "0.5.16",
|
||||
"resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
|
||||
"integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/dom-converter": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
|
||||
@ -9746,7 +9906,8 @@
|
||||
"node_modules/idb": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
|
||||
"integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="
|
||||
"integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/ignore": {
|
||||
"version": "5.3.1",
|
||||
@ -10952,7 +11113,8 @@
|
||||
"node_modules/lodash.isequal": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
||||
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
|
||||
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.merge": {
|
||||
"version": "4.6.2",
|
||||
@ -10962,7 +11124,8 @@
|
||||
"node_modules/lodash.throttle": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
||||
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
|
||||
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.truncate": {
|
||||
"version": "4.4.2",
|
||||
@ -10973,7 +11136,8 @@
|
||||
"node_modules/lodash.uniq": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
||||
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
|
||||
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/log-update": {
|
||||
"version": "4.0.0",
|
||||
@ -11813,6 +11977,7 @@
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.js"
|
||||
},
|
||||
@ -12925,6 +13090,41 @@
|
||||
"renderkid": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pretty-format": {
|
||||
"version": "27.5.1",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
|
||||
"integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1",
|
||||
"ansi-styles": "^5.0.0",
|
||||
"react-is": "^17.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pretty-format/node_modules/ansi-styles": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
|
||||
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/pretty-format/node_modules/react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/probe-image-size": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz",
|
||||
|
@ -38,7 +38,7 @@
|
||||
"dependencies": {
|
||||
"@apollo/client": "^3.10.4",
|
||||
"@babel/runtime": "^7.17.9",
|
||||
"@bigbluebutton/tldraw": "^2.0.0-alpha.24",
|
||||
"@bigbluebutton/tldraw": "^2.0.0-alpha.25",
|
||||
"@browser-bunyan/console-formatted-stream": "^1.8.0",
|
||||
"@browser-bunyan/console-raw-stream": "^1.8.0",
|
||||
"@browser-bunyan/server-stream": "^1.8.0",
|
||||
|
Loading…
Reference in New Issue
Block a user