From 4b3a18eec646b4518db3ad3922e2b55550ea7e16 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Thu, 18 Jul 2024 17:23:41 +0900 Subject: [PATCH 01/61] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 144 +++++++++++++++++++++++++++--- 1 file changed, 132 insertions(+), 12 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index 93d39298..e928ba3f 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -23,7 +23,11 @@ export default class QPolygon extends fabric.Group { shape = 0 // 점 6개일때의 shape 모양 helpPoints = [] helpLines = [] + constructor(points, options, canvas) { + if (points.length !== 4 && points.length !== 6) { + throw new Error('Points must be 4 or 6.') + } if (points.length !== 4 && points.length !== 6) { throw new Error('Points must be 4 or 6.') } @@ -69,7 +73,7 @@ export default class QPolygon extends fabric.Group { this.#updateLengthText() }) - this.on('selected', function () { + this.on('selected', function() { // 모든 컨트롤 떼기 Object.keys(this.controls).forEach((controlKey) => { @@ -249,7 +253,7 @@ export default class QPolygon extends fabric.Group { let xInt = ((point.y - vertex1.y) * (vertex2.x - vertex1.x)) / - (vertex2.y - vertex1.y) + + (vertex2.y - vertex1.y) + vertex1.x if (xInt < point.x) { intersects++ @@ -328,19 +332,21 @@ export default class QPolygon extends fabric.Group { // 보조선 그리기 drawHelpLine(chon = 4) { + console.log(chon) if (!this.isValid()) { return } - if (this.lines.length === 4) { - this.#drawHelpLineInRect(chon) - } else if (this.lines.length === 6) { - // TODO : 6각형 - this.#drawHelpLineInHexagon(chon) - } else if (this.lines.length === 8) { - // TODO : 8각형 - this.#drawHelpLineInOctagon(chon) - } + /* if (this.lines.length === 4) { + this.#drawHelpLineInRect(chon) + } else if (this.lines.length === 6) { + // TODO : 6각형 + this.#drawHelpLineInHexagon(chon) + } else if (this.lines.length === 8) { + // TODO : 8각형 + this.#drawHelpLineInOctagon(chon) + }*/ + this.#drawHelpLineInOctagon(chon) } /** @@ -920,5 +926,119 @@ export default class QPolygon extends fabric.Group { this.canvas.renderAll() } - #drawHelpLineInOctagon(chon) {} + #drawHelpLineInOctagon(chon) { + console.log(this.lines) + + let prevLine, currentLine, nextLine + let point + + this.lines.forEach( + (value, index) => { + if (index === 0) { + prevLine = this.lines[this.lines.length - 1] + } else { + prevLine = this.lines[index - 1] + } + currentLine = this.lines[index] + + if (index === this.lines.length - 1) { + nextLine = this.lines[0] + } else if (index === this.lines.length) { + nextLine = this.lines[0] + } else { + nextLine = this.lines[index + 1] + } + // point = this.getPointBetweenLine(currentLine, nextLine) + + this.getRoofRidge(prevLine, currentLine, nextLine) + + }, + ) + } + + getRoofRidge(prevLine, currentLine, nextLine) { + console.log(prevLine) + console.log(this.getLineDirection(prevLine), this.getLineDirection(currentLine), this.getLineDirection(nextLine)) + if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine)) { + + } + } + + getPointBetweenLine(line1, line2) { + let dVector = this.getDirectionForDegree(line1, line2) + let xp = line1.x2, yp = line1.y2 + + console.log(xp, yp) + + // let alpha = 45.0 * Math.PI / 180 + // let a = c * Math.sin(alpha) + + switch (dVector) { + case 45: + + break + } + + return 'a' + } + + getDirectionForDegree(line1, line2) { + let degree = this.getLineDirection(line1) + this.getLineDirection(line2) + let vector + + switch (degree) { + case 'rb': + vector = 45 + break + case 'br': + vector = 45 + break + case 'lb': + vector = 135 + break + case 'bl': + vector = 135 + break + case 'lt': + vector = 225 + break + case 'tl': + vector = 225 + break + case 'rt': + vector = 315 + break + case 'tr': + vector = 315 + break + } + + return vector + } + + getLineDirection(line) { + let x1, x2, y1, y2, xp, yp + x1 = Math.round(line.x1) + x2 = Math.round(line.x2) + y1 = Math.round(line.y1) + y2 = Math.round(line.y2) + + xp = x1 - x2 + yp = y1 - y2 + + if (xp === 0) { + if (yp < 0) { + return 'b' + } else { + return 't' + } + } + if (yp === 0) { + if (xp < 0) { + return 'r' + } else { + return 'l' + } + } + } } From e0a644c84ec7d82b137625f9c26bd15a7e668f47 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Thu, 18 Jul 2024 18:19:12 +0900 Subject: [PATCH 02/61] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index df66abb4..ef880c35 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -27,6 +27,7 @@ export default class QPolygon extends fabric.Group { helpLines = [] wall + constructor(points, options, canvas) { /*if (points.length !== 4 && points.length !== 6) { throw new Error('Points must be 4 or 6.') @@ -701,13 +702,21 @@ export default class QPolygon extends fabric.Group { } getRoofRidge(prevLine, currentLine, nextLine) { - console.log(prevLine) - console.log(this.getLineDirection(prevLine), this.getLineDirection(currentLine), this.getLineDirection(nextLine)) if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine)) { - + console.log(this.getLineDirection(prevLine), this.getLineDirection(currentLine), this.getLineDirection(nextLine)) + console.log(currentLine.length) + if (currentLine.length < prevLine.length && currentLine.length < nextLine.length) { + console.log(currentLine.length) + } } } + getMaxRidge(length) { + let a1 = 4 + let d = 2 + return ((length - a1) / d) + 1 + } + getPointBetweenLine(line1, line2) { let dVector = this.getDirectionForDegree(line1, line2) let xp = line1.x2, yp = line1.y2 From 01faaead930fccd45e4758140e370ffadc49ccb7 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Fri, 19 Jul 2024 20:30:12 +0900 Subject: [PATCH 03/61] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=A4=91?= =?UTF-8?q?=20=EC=A7=81=EA=B0=81=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=20=EC=A7=80?= =?UTF-8?q?=EB=B6=95=20=EB=9D=BC=EC=9D=B8=20=EA=B7=B8=EB=A6=AC=EA=B8=B0=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 256 ++++++++++++++++++++++++++---- 1 file changed, 224 insertions(+), 32 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index ef880c35..843166b0 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -27,6 +27,8 @@ export default class QPolygon extends fabric.Group { helpLines = [] wall + ridges = [] + hips = [] constructor(points, options, canvas) { /*if (points.length !== 4 && points.length !== 6) { @@ -672,11 +674,111 @@ export default class QPolygon extends fabric.Group { } #drawHelpLineInOctagon(chon) { - console.log(this.lines) + this.drawRoofRidge() + this.drawHips() + this.connectLinePoint() + } - let prevLine, currentLine, nextLine - let point + /*마루 그리기 + 외벽의 모양이 돌출된 ㄷ의 형태일때 + 현재 라인의 외벽길이가 붙어있는 두외벽의 길이보다 짧거나 같다면 + 지붕의 두 꼭지점에서 외벽의 두 꼭지점으로 45도 방향으로 선을 그려 만나는 지점이 마루의 시작점이 되고 + 시작점에서 부터 (가장 긴선 - ( 삼각형의 빗변 에서 직각까지의 수직길이 x 2))의 길이가 마루의 끝점이 된다. + 다만 마루의 길이는 나머지 나머지 두 지붕의 길이중 짧은선의 길이를 넘어갈수 없다. + */ + drawRoofRidge() { + let prevLine, currentLine, nextLine, prevWall, currentWall, nextWall + let startXPoint, startYPoint, endXPoint, endYPoint + let dVector, ridgeMaxLength, ridgeMinLength, ridgeRun + this.lines.forEach( + (value, index) => { + if (index === 0) { + prevLine = this.lines[this.lines.length - 1] + prevWall = this.wall.lines[this.wall.lines.length - 1] + } else { + prevLine = this.lines[index - 1] + prevWall = this.wall.lines[index - 1] + } + currentLine = this.lines[index] + currentWall = this.wall.lines[index] + + if (index === this.lines.length - 1) { + nextLine = this.lines[0] + nextWall = this.wall.lines[0] + } else if (index === this.lines.length) { + nextLine = this.lines[1] + nextWall = this.wall.lines[1] + } else { + nextLine = this.lines[index + 1] + nextWall = this.wall.lines[index + 1] + } + if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine)) { + if (currentWall.length <= prevWall.length && currentWall.length <= nextWall.length) { + ridgeMaxLength = Math.min(prevLine.length, currentLine.length, nextLine.length) + ridgeMinLength = Math.max(prevLine.length, currentLine.length, nextLine.length) - currentLine.length + ridgeRun = ridgeMinLength < ridgeMaxLength ? ridgeMinLength : ridgeMaxLength + dVector = this.getDirectionForDegree(prevLine, currentLine) + switch (dVector) { + case 45: + startXPoint = currentLine.x1 + (currentLine.length / 2) + startYPoint = currentLine.y1 - (currentLine.length / 2) + endXPoint = startXPoint + endYPoint = startYPoint - ridgeRun + break + case 135: + startXPoint = currentLine.x1 + (currentLine.length / 2) + startYPoint = currentLine.y1 + (currentLine.length / 2) + endXPoint = startXPoint + ridgeRun + endYPoint = startYPoint + break + case 225: + startXPoint = currentLine.x1 - (currentLine.length / 2) + startYPoint = currentLine.y1 + (currentLine.length / 2) + endXPoint = startXPoint + endYPoint = startYPoint + ridgeRun + break + case 315: + startXPoint = currentLine.x1 - (currentLine.length / 2) + startYPoint = currentLine.y1 - (currentLine.length / 2) + endXPoint = startXPoint - ridgeRun + endYPoint = startYPoint + break + } + if (this.ridges.length < this.getMaxRidge(this.lines.length)) { + const ridge = new QLine([startXPoint, startYPoint, endXPoint, endYPoint], { + fontSize: this.fontSize, + stroke: 'blue', + strokeWidth: 1, + }) + this.addWithUpdate(ridge) + this.ridges.push(ridge) + } + //마루와 연결될 추녀마루을 그려준다. + const leftHip = new QLine([currentLine.x1, currentLine.y1, startXPoint, startYPoint], { + fontSize: this.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + const rightHip = new QLine([currentLine.x2, currentLine.y2, startXPoint, startYPoint], { + fontSize: this.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + this.addWithUpdate(leftHip) + this.addWithUpdate(rightHip) + this.hips.push(leftHip) + this.hips.push(rightHip) + } + } + }, + ) + + this.canvas.renderAll() + } + + drawHips() { + let prevLine, currentLine, nextLine, endXPoint, endYPoint this.lines.forEach( (value, index) => { if (index === 0) { @@ -689,52 +791,139 @@ export default class QPolygon extends fabric.Group { if (index === this.lines.length - 1) { nextLine = this.lines[0] } else if (index === this.lines.length) { - nextLine = this.lines[0] + nextLine = this.lines[1] } else { nextLine = this.lines[index + 1] } - // point = this.getPointBetweenLine(currentLine, nextLine) - - this.getRoofRidge(prevLine, currentLine, nextLine) + if (!this.isAlreadyHip(currentLine)) { + this.ridges.forEach(ridge => { + if (Math.abs(currentLine.x1 - ridge.x1) === Math.abs(currentLine.y1 - ridge.y1)) { + endXPoint = ridge.x1 + endYPoint = ridge.y1 + } + if (Math.abs(currentLine.x1 - ridge.x2) === Math.abs(currentLine.y1 - ridge.y2)) { + endXPoint = ridge.x2 + endYPoint = ridge.y2 + } + // TODO [ljyoung] : 마루와 만나지 않는 hip 계산 + }) + const hip = new QLine([currentLine.x1, currentLine.y1, endXPoint, endYPoint], { + fontSize: this.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + this.addWithUpdate(hip) + this.hips.push(hip) + } }, ) + + this.canvas.renderAll() } - getRoofRidge(prevLine, currentLine, nextLine) { - if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine)) { - console.log(this.getLineDirection(prevLine), this.getLineDirection(currentLine), this.getLineDirection(nextLine)) - console.log(currentLine.length) - if (currentLine.length < prevLine.length && currentLine.length < nextLine.length) { - console.log(currentLine.length) + /* + 추녀마루(hip) 중복방지를 위해 마루와 함께 그려진 추녀마루를 확인한다 + */ + isAlreadyHip(line) { + let isAlreadyHip = false + this.hips.forEach(hip => { + if (line.x1 === hip.x1 && line.y1 === hip.y1) { + isAlreadyHip = true } - } + }) + return isAlreadyHip } + /* + 3개 이상 이어지지 않은 라인 포인트 계산 + 모임지붕에서 point는 3개 이상의 라인과 접해야 함. + */ + connectLinePoint() { + let missedPoints = [] + let missedLine = [] + this.ridges.forEach(ridge => { + if (this.findConnectionLineCount(ridge.x1, ridge.y1) < 2) { + missedPoints.push({ x: ridge.x1, y: ridge.y1 }) + } + if (this.findConnectionLineCount(ridge.x2, ridge.y2) < 2) { + missedPoints.push({ x: ridge.x2, y: ridge.y2 }) + } + }) + console.log(missedPoints) + + missedPoints.forEach(p1 => { + let nearX, nearY, diffX, diffY, diffMinX, diffMinY + //가장 가까운 포인트를 확인 + missedPoints.forEach(p2 => { + diffX = Math.abs(p1.x - p2.x) + diffY = Math.abs(p1.y - p2.y) + if (diffMinX === undefined && diffMinY === undefined && diffX > 0 && diffY > 0) { + diffMinX = diffX + diffMinY = diffY + } + console.log(nearX, nearY, diffX, diffY, diffMinX, diffMinY) + if (diffX !== 0 && diffY !== 0 && (diffX === diffY) + && diffX <= diffMinX && diffY <= diffMinY) { + nearX = p2.x + nearY = p2.y + diffMinX = Math.abs(p1.x - p2.x) + diffMinY = Math.abs(p1.y - p2.y) + } + }) + console.log(nearX, nearY) + if (nearX !== undefined && nearY !== undefined) { + if (p1.x < nearX && p1.y < nearY) { + missedLine.push({ x1: p1.x, y1: p1.y, x2: nearX, y2: nearY }) + } else if (p1.x > nearX && p1.y < nearY) { + missedLine.push({ x1: nearX, y1: p1.y, x2: p1.x, y2: nearY }) + } else if (p1.x > nearX && p1.y > nearY) { + missedLine.push({ x1: nearX, y1: nearY, x2: p1.x, y2: p1.y }) + } else if (p1.x < nearX && p1.y > nearY) { + missedLine.push({ x1: nearX, y1: nearY, x2: p1.x, y2: p1.y }) + } + } + }) + // TODO [ljyoung] : 중복라인제거 + console.log(missedLine) + missedLine.forEach(p => { + const line = new QLine([p.x1, p.y1, p.x2, p.y2], { + fontSize: this.fontSize, + stroke: 'green', + strokeWidth: 1, + }) + this.addWithUpdate(line) + }) + + this.canvas.renderAll() + } + + /* + hip은 항상 마루에 연결되고 마루에는 2개 이상의 hip이 연결된다. + hip의 시작은 처마꼭지점이며 끝은 마루이기 때문에 힙의 끝 좌표와 비교한다. + */ + findConnectionLineCount(x, y) { + let count = 0 + this.hips.forEach((hip, index) => { + if (x === hip.x2 && y === hip.y2) { + count++ + } + }) + return count + } + + /* + 최대 생성 마루 갯수 + */ getMaxRidge(length) { let a1 = 4 let d = 2 return ((length - a1) / d) + 1 } - getPointBetweenLine(line1, line2) { - let dVector = this.getDirectionForDegree(line1, line2) - let xp = line1.x2, yp = line1.y2 - - console.log(xp, yp) - - // let alpha = 45.0 * Math.PI / 180 - // let a = c * Math.sin(alpha) - - switch (dVector) { - case 45: - - break - } - - return 'a' - } - + /* + 두 라인의 사잇각 계산 + */ getDirectionForDegree(line1, line2) { let degree = this.getLineDirection(line1) + this.getLineDirection(line2) let vector @@ -769,6 +958,9 @@ export default class QPolygon extends fabric.Group { return vector } + /* + 현재 라인의 방향을 계산 + */ getLineDirection(line) { let x1, x2, y1, y2, xp, yp x1 = Math.round(line.x1) From 9cf523dac48d705e3e58a5ec8e3149cc8e280ffd Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Mon, 22 Jul 2024 18:35:19 +0900 Subject: [PATCH 04/61] =?UTF-8?q?=EB=8B=A4=EA=B0=81=ED=98=95=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 201 ++++++++++++++++++++++++++---- 1 file changed, 174 insertions(+), 27 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index c394677d..a9c462ab 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -531,6 +531,7 @@ export default class QPolygon extends fabric.Group { this.canvas.add(ridge) } } + #drawHelpLineInHexagon2(chon) { const oneSideLines = [...this.lines].map((line) => { let newX1, newY1, newX2, newY2 @@ -747,6 +748,7 @@ export default class QPolygon extends fabric.Group { this.canvas.renderAll() }) } + #drawHelpLineInHexagon(chon) { const historyLines = [] const helpPoints = [] @@ -892,7 +894,7 @@ export default class QPolygon extends fabric.Group { #drawHelpLineInOctagon(chon) { this.drawRoofRidge() this.drawHips() - this.connectLinePoint() + // this.connectLinePoint() } /*마루 그리기 @@ -907,6 +909,9 @@ export default class QPolygon extends fabric.Group { let startXPoint, startYPoint, endXPoint, endYPoint let dVector, ridgeMaxLength, ridgeMinLength, ridgeRun + let maxSquare = this.getLargestSquareCoordinate() + console.log(maxSquare) + this.lines.forEach( (value, index) => { if (index === 0) { @@ -929,12 +934,18 @@ export default class QPolygon extends fabric.Group { nextLine = this.lines[index + 1] nextWall = this.wall.lines[index + 1] } - if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine)) { + + console.log('currentWall.length < currentLine.length') + console.log(currentWall.length, currentLine.length) + if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine) && currentWall.length < currentLine.length) { + console.log(currentWall.length <= prevWall.length) + console.log(currentWall.length <= nextWall.length) if (currentWall.length <= prevWall.length && currentWall.length <= nextWall.length) { - ridgeMaxLength = Math.min(prevLine.length, currentLine.length, nextLine.length) - ridgeMinLength = Math.max(prevLine.length, currentLine.length, nextLine.length) - currentLine.length + ridgeMaxLength = Math.min(prevLine.length, nextLine.length) + ridgeMinLength = Math.max(prevLine.length, nextLine.length) - currentLine.length ridgeRun = ridgeMinLength < ridgeMaxLength ? ridgeMinLength : ridgeMaxLength dVector = this.getDirectionForDegree(prevLine, currentLine) + console.log(ridgeMinLength, ridgeMaxLength, ridgeRun) switch (dVector) { case 45: startXPoint = currentLine.x1 + (currentLine.length / 2) @@ -961,6 +972,9 @@ export default class QPolygon extends fabric.Group { endYPoint = startYPoint break } + console.log('startXPoint, startYPoint, endXPoint, endYPoint') + console.log(startXPoint, startYPoint, endXPoint, endYPoint) + if (this.ridges.length < this.getMaxRidge(this.lines.length)) { const ridge = new QLine([startXPoint, startYPoint, endXPoint, endYPoint], { fontSize: this.fontSize, @@ -969,22 +983,23 @@ export default class QPolygon extends fabric.Group { }) this.addWithUpdate(ridge) this.ridges.push(ridge) + + // 마루와 연결될 추녀마루을 그려준다. + const leftHip = new QLine([currentLine.x1, currentLine.y1, startXPoint, startYPoint], { + fontSize: this.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + const rightHip = new QLine([currentLine.x2, currentLine.y2, startXPoint, startYPoint], { + fontSize: this.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + this.addWithUpdate(leftHip) + this.addWithUpdate(rightHip) + this.hips.push(leftHip) + this.hips.push(rightHip) } - //마루와 연결될 추녀마루을 그려준다. - const leftHip = new QLine([currentLine.x1, currentLine.y1, startXPoint, startYPoint], { - fontSize: this.fontSize, - stroke: 'red', - strokeWidth: 1, - }) - const rightHip = new QLine([currentLine.x2, currentLine.y2, startXPoint, startYPoint], { - fontSize: this.fontSize, - stroke: 'red', - strokeWidth: 1, - }) - this.addWithUpdate(leftHip) - this.addWithUpdate(rightHip) - this.hips.push(leftHip) - this.hips.push(rightHip) } } }, @@ -994,7 +1009,7 @@ export default class QPolygon extends fabric.Group { } drawHips() { - let prevLine, currentLine, nextLine, endXPoint, endYPoint + let prevLine, currentLine, nextLine this.lines.forEach( (value, index) => { if (index === 0) { @@ -1012,17 +1027,97 @@ export default class QPolygon extends fabric.Group { nextLine = this.lines[index + 1] } if (!this.isAlreadyHip(currentLine)) { + let endXPoint, endYPoint + let dVector = this.getDirectionForDegree(prevLine, currentLine) + let linesXCoordinate = [] + console.log('hip dVector : ' + dVector) + switch (dVector) { + case 45: + this.lines.forEach((line) => { + if ((currentLine.x1 < line.x1 || currentLine.x1 < line.x2) + && (currentLine.y1 < line.y1 || currentLine.y1 < line.y2)) { + console.log('line.x1 : ' + line.x1 + ' line.x2 : ' + line.x2) + if (currentLine.x1 !== line.x1) { + linesXCoordinate.push(line.x1) + } + if (currentLine.x1 !== line.x2) { + linesXCoordinate.push(line.x2) + } + } + }) + break + case 135: + this.lines.forEach((line) => { + console.log('currentLine.x1 < line.x1 || currentLine.x1 < line.x2') + console.log(currentLine.x1 + '<' + line.x1 + '||' + currentLine.x1 + '<' + line.x2) + console.log('line.y1 < currentLine.y1 || line.y2 < currentLine.y1') + console.log(line.y1 + '<' + currentLine.y1 + '||' + line.y2 + '<' + currentLine.y1) + if ((currentLine.x1 < line.x1 || currentLine.x1 < line.x2) + && (currentLine.y1 < line.y1 || currentLine.y1 < line.y2)) { + if (currentLine.x1 !== line.x1) { + linesXCoordinate.push(line.x1) + } + if (currentLine.x1 !== line.x2) { + linesXCoordinate.push(line.x2) + } + } + }) + break + case 225: + this.lines.forEach((line) => { + if ((line.x1 < currentLine.x1 || line.x2 < currentLine.x1) + && (line.y1 < currentLine.y1 || line.y2 < currentLine.y1)) { + if (currentLine.x1 !== line.x1) { + linesXCoordinate.push(line.x1) + } + if (currentLine.x1 !== line.x2) { + linesXCoordinate.push(line.x2) + } + } + }) + break + case 315: + this.lines.forEach((line) => { + if ((line.x1 < currentLine.x1 || line.x2 < currentLine.x1) + && (currentLine.y1 < line.y1 || currentLine.y1 < line.y2)) { + if (currentLine.x1 !== line.x1) { + linesXCoordinate.push(line.x1) + } + if (currentLine.x1 !== line.x2) { + linesXCoordinate.push(line.x2) + } + } + }) + break + } + + console.log(linesXCoordinate) + console.log(new Set(linesXCoordinate)) + if (linesXCoordinate.length > 0) { + // linesXCoordinate = Math.min.apply(null, linesXCoordinate) + // linesXCoordinate = new Set(linesXCoordinate) + console.log(currentLine.x1, Math.min.apply(null, linesXCoordinate)) + + } this.ridges.forEach(ridge => { if (Math.abs(currentLine.x1 - ridge.x1) === Math.abs(currentLine.y1 - ridge.y1)) { endXPoint = ridge.x1 endYPoint = ridge.y1 - } - if (Math.abs(currentLine.x1 - ridge.x2) === Math.abs(currentLine.y1 - ridge.y2)) { - endXPoint = ridge.x2 - endYPoint = ridge.y2 + console.log('currentLine.x1, currentLine.y1') + console.log(currentLine.x1, currentLine.y1) + } else { + if (Math.abs(currentLine.x1 - ridge.x2) === Math.abs(currentLine.y1 - ridge.y2)) { + endXPoint = ridge.x2 + endYPoint = ridge.y2 + console.log('currentLine.x2, currentLine.x2') + console.log(currentLine.x2, currentLine.x2) + } else { + console.log('todo') + } } // TODO [ljyoung] : 마루와 만나지 않는 hip 계산 }) + console.log(currentLine.x1, currentLine.y1, endXPoint, endYPoint) const hip = new QLine([currentLine.x1, currentLine.y1, endXPoint, endYPoint], { fontSize: this.fontSize, @@ -1038,6 +1133,56 @@ export default class QPolygon extends fabric.Group { this.canvas.renderAll() } + /* + 안쪽으로 들어간 모양의 기준을 잡기 위해 가장긴 x좌표와 y좌표를 구한다. + */ + getLargestSquareCoordinate() { + let arrX = [] + let arrY = [] + + this.points.forEach(point => { + arrX.push(point.x) + arrY.push(point.y) + }) + + let minX = Math.min.apply(null, arrX) + let minY = Math.min.apply(null, arrY) + let maxX = Math.max.apply(null, arrX) + let maxY = Math.max.apply(null, arrY) + + return { minX: minX, minY: minY, maxX: maxX, maxY: maxY } + } + + /* + 두 선의 교차점이 존재하는지 확인한다. + */ + findIntersection(line1, line2) { + const [x1, y1, x2, y2] = line1 // 첫 번째 선의 두 점 + const [x3, y3, x4, y4] = line2 // 두 번째 선의 두 점 + + // 선의 방정식의 계수 계산 + const A1 = y2 - y1 + const B1 = x1 - x2 + const C1 = A1 * x1 + B1 * y1 + + const A2 = y4 - y3 + const B2 = x3 - x4 + const C2 = A2 * x3 + B2 * y3 + + const determinant = A1 * B2 - A2 * B1 + + if (determinant === 0) { + // 두 선이 평행하거나 일직선일 경우 + console.log('두 직선은 평행하거나 일직선입니다.') + return null + } + + const x = (B1 * C2 - B2 * C1) / determinant + const y = (A1 * C2 - A2 * C1) / determinant + + return { x, y } + } + /* 추녀마루(hip) 중복방지를 위해 마루와 함께 그려진 추녀마루를 확인한다 */ @@ -1100,9 +1245,11 @@ export default class QPolygon extends fabric.Group { } } }) - // TODO [ljyoung] : 중복라인제거 - console.log(missedLine) - missedLine.forEach(p => { + //중복라인제거 + missedLine = [ + ...new Set(missedLine.map((line) => JSON.stringify(line))), + ].map((line) => JSON.parse(line)) + missedLine.forEach((p, index) => { const line = new QLine([p.x1, p.y1, p.x2, p.y2], { fontSize: this.fontSize, stroke: 'green', From b8cba10fe20056aa96670903d63bb1f1c839701b Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Wed, 24 Jul 2024 14:46:50 +0900 Subject: [PATCH 05/61] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 41 ++- src/components/fabric/QPolygon.js | 415 +++++++++++++++++++++++------- 2 files changed, 351 insertions(+), 105 deletions(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index d5e511aa..787ea08d 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -6,7 +6,7 @@ import QRect from '@/components/fabric/QRect' import QPolygon from '@/components/fabric/QPolygon' import RangeSlider from './ui/RangeSlider' -import { useRecoilState, useRecoilValue } from 'recoil' +import { useRecoilState } from 'recoil' import { canvasSizeState, fontSizeState, sortedPolygonArray } from '@/store/canvasAtom' import { QLine } from '@/components/fabric/QLine' @@ -179,8 +179,19 @@ export default function Roof2() { { x: 1088, y: 991 }, { x: 1088, y: 42 }, ] + + const eightPoint = [ + { x: 240, y: 130 }, + { x: 240, y: 630 }, + { x: 640, y: 630 }, + { x: 640, y: 480 }, + { x: 440, y: 480 }, + { x: 440, y: 280 }, + { x: 740, y: 280 }, + { x: 740, y: 130 }, + ] if (canvas) { - const polygon = new QPolygon(type4, { + const polygon = new QPolygon(eightPoint, { fill: 'transparent', stroke: 'black', strokeWidth: 1, @@ -226,7 +237,7 @@ export default function Roof2() { } const addBackgroundInPolygon = (polygon) => { - fabric.Image.fromURL('assets/img/check2.png', function (img) { + fabric.Image.fromURL('assets/img/check2.png', function(img) { // 패턴 객체를 생성합니다. const pattern = new fabric.Pattern({ source: img.getElement(), @@ -260,7 +271,8 @@ export default function Roof2() { {canvas && ( <>
- - - - - - - - - - - - - -
From 79df68e395718ba9a304babf486693e9229d3e9f Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Mon, 5 Aug 2024 10:27:41 +0900 Subject: [PATCH 16/61] =?UTF-8?q?fix:=20=ED=8C=8C=EC=9D=BC=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.js | 4 ++-- src/components/Main.jsx | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/components/Main.jsx diff --git a/src/app/page.js b/src/app/page.js index feb99992..9c905040 100644 --- a/src/app/page.js +++ b/src/app/page.js @@ -1,5 +1,5 @@ -import Hero from '@/components/Hero' +import Main from '@/components/Main' export default function Home() { - return + return
} diff --git a/src/components/Main.jsx b/src/components/Main.jsx new file mode 100644 index 00000000..bcacb091 --- /dev/null +++ b/src/components/Main.jsx @@ -0,0 +1,5 @@ +import Hero from './Hero' + +export default function Main() { + return +} From 4c764497897c165ccf2c30c010f791dd5bf02cf2 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Mon, 5 Aug 2024 12:18:07 +0900 Subject: [PATCH 17/61] =?UTF-8?q?=EC=84=A0=ED=83=9D=20=EC=85=80=20?= =?UTF-8?q?=EC=A7=80=EC=9A=B0=EA=B8=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 17 +++++++++++---- src/components/fabric/QPolygon.js | 35 +++++++++++++------------------ src/hooks/useCanvas.js | 18 ++++++++++++++-- src/hooks/useMode.js | 1 + src/util/qpolygon-utils.js | 8 +++---- 5 files changed, 49 insertions(+), 30 deletions(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index be84a135..1e59f3c1 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -249,7 +249,7 @@ export default function Roof2() { { x: 675, y: 275 }, { x: 450, y: 850 }, ] - const polygon = new QPolygon(type1, { + const polygon = new QPolygon(type2, { fill: 'transparent', stroke: 'black', strokeWidth: 1, @@ -259,9 +259,7 @@ export default function Roof2() { }) canvas?.add(polygon) - handleOuterlinesTest2(polygon) - // const lines = togglePolygonLine(polygon) - // togglePolygonLine(lines[0]) + handleOuterlinesTest2(polygon, 50) } const rotateShape = () => { @@ -433,6 +431,14 @@ export default function Roof2() { makeRoofPatternPolygon(roofStyle) } + const deleteCell = () => { + const selectedCells = canvas?.getObjects().filter((obj) => obj.name === 'cell' && obj.selected) + + selectedCells.forEach((cell) => { + canvas?.remove(cell) + }) + } + return ( <> {canvas && ( @@ -539,6 +545,9 @@ export default function Roof2() { + diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index 61a7928c..10c19deb 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -14,6 +14,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { ridges: [], connectRidges: [], cells: [], + parentId: null, initialize: function (points, options, canvas) { // 소수점 전부 제거 points.forEach((point) => { @@ -21,6 +22,8 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { point.y = Math.round(point.y) }) options.sort = options.sort ?? true + options.parentId = options.parentId ?? null + if (!options.sort && points.length <= 8) { points = sortedPointLessEightPoint(points) } else { @@ -150,7 +153,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { }, addLengthText() { - let points = this.points + let points = this.getCurrentPoints() points.forEach((start, i) => { const thisText = this.canvas.getObjects().find((obj) => obj.name === 'lengthText' && obj.parentId === this.id && obj.idx === i) @@ -201,7 +204,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { this.canvas = canvas }, fillCell(cell = { width: 50, height: 100, padding: 10 }) { - const points = this.points + const points = this.getCurrentPoints() const minX = Math.min(...points.map((p) => p.x)) const maxX = Math.max(...points.map((p) => p.x)) @@ -256,6 +259,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { opacity: 0.8, name: 'cell', idx: idx, + parentId: this.id, }) idx++ @@ -330,24 +334,15 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { return minDistance }, getCurrentPoints() { - const scaleX = this.scaleX - const scaleY = this.scaleY - - const left = this.left - const top = this.top - - // 시작점 - const point = this.points[0] - - const movingX = left - point.x * scaleX - const movingY = top - point.y * scaleY - - return this.points.map((point) => { - return { - x: point.x * scaleX + movingX, - y: point.y * scaleY + movingY, - } - }) + const pathOffset = this.get('pathOffset') + const matrix = this.calcTransformMatrix() + return this.get('points') + .map(function (p) { + return new fabric.Point(p.x - pathOffset.x, p.y - pathOffset.y) + }) + .map(function (p) { + return fabric.util.transformPoint(p, matrix) + }) }, setWall: function (wall) { this.wall = wall diff --git a/src/hooks/useCanvas.js b/src/hooks/useCanvas.js index 77f261cc..e2a17008 100644 --- a/src/hooks/useCanvas.js +++ b/src/hooks/useCanvas.js @@ -97,13 +97,27 @@ export function useCanvas(id) { const target = e.target if (target.name === 'cell') { target.on('mousedown', () => { - target.set({ fill: 'red' }) + if (target.get('selected')) { + target.set({ selected: false }) + target.set({ fill: '#BFFD9F' }) + } else { + target.set({ selected: true }) + target.set({ fill: 'red' }) + } + canvas?.renderAll() }) } if (target.name === 'trestle') { target.on('mousedown', () => { - target.set({ strokeWidth: 5 }) + if (target.get('selected')) { + target.set({ strokeWidth: 1 }) + target.set({ selected: false }) + } else { + target.set({ strokeWidth: 5 }) + target.set({ selected: true }) + } + canvas?.renderAll() }) } } diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index efa933e2..1411cb26 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -3389,6 +3389,7 @@ export function useMode() { lockScalingX: true, // X 축 크기 조정 잠금 lockScalingY: true, // Y 축 크기 조정 잠금 idx: index, + parentId: roof.id, }) canvas?.add(trestlePoly) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 80693e04..c13cb393 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -533,7 +533,7 @@ export const dividePolygon = (polygon) => { const newPolygon = new QPolygon(polygonPoints, { fontSize: polygon.fontSize, - id: polygon.id, + parentId: polygon.id, name: 'roof', selectable: false, stroke: 'black', @@ -578,7 +578,7 @@ export const dividePolygon = (polygon) => { const newPolygon = new QPolygon(polygonPoints, { fontSize: polygon.fontSize, - id: polygon.id, + parentId: polygon.id, name: 'roof', selectable: false, stroke: 'black', @@ -596,7 +596,7 @@ export const dividePolygon = (polygon) => { const newPolygon = new QPolygon(polygonPoints, { fontSize: polygon.fontSize, - id: polygon.id, + parentId: polygon.id, name: 'roof', selectable: false, stroke: 'black', @@ -671,7 +671,7 @@ export const dividePolygon = (polygon) => { const newPolygon = new QPolygon(polygonPoints, { fontSize: polygon.fontSize, - id: polygon.id, + parentId: polygon.id, name: 'roof', selectable: false, stroke: 'black', From 1b080eba554c90e7ee8c6eeeb86fcf266a34025d Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Mon, 5 Aug 2024 13:03:55 +0900 Subject: [PATCH 18/61] =?UTF-8?q?=EB=B0=A9=ED=96=A5=ED=82=A4=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=EC=88=98=EC=A0=95,=20offset=20Arc=20defau?= =?UTF-8?q?lt=EA=B0=92=200=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useCanvas.js | 8 ++++---- src/hooks/useMode.js | 5 ++++- src/util/qpolygon-utils.js | 3 ++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/hooks/useCanvas.js b/src/hooks/useCanvas.js index e2a17008..f106ec5a 100644 --- a/src/hooks/useCanvas.js +++ b/src/hooks/useCanvas.js @@ -353,8 +353,8 @@ export function useCanvas(id) { let top = targetObj.top + 10 - if (top > CANVAS.HEIGHT) { - top = CANVAS.HEIGHT + if (top > canvasSize.vertical) { + top = canvasSize.vertical } targetObj.set({ top: top }) @@ -401,8 +401,8 @@ export function useCanvas(id) { let left = targetObj.left + 10 - if (left > CANVAS.WIDTH) { - left = CANVAS.WIDTH + if (left > canvasSize.horizontal) { + left = canvasSize.horizontal } targetObj.set({ left: left }) diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 1411cb26..8cb71496 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -333,6 +333,9 @@ export function useMode() { } const handleKeyDown = (e) => { + if (mode !== Mode.EDIT) { + return + } switch (e.key) { case 'ArrowDown': { if (!keyValid()) { @@ -3373,7 +3376,7 @@ export function useMode() { return acc.length > cur.length ? acc : cur }) - const offsetPolygonPoint = offsetPolygon(roof.points, -20, 0) + const offsetPolygonPoint = offsetPolygon(roof.points, -20) const trestlePoly = new QPolygon(offsetPolygonPoint, { fill: 'transparent', diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index c13cb393..96dbf621 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -928,8 +928,9 @@ function createPaddingPolygon(polygon, offset, arcSegments = 0) { return paddingPolygon } -export default function offsetPolygon(vertices, offset, arcSegments = 0) { +export default function offsetPolygon(vertices, offset) { const polygon = createPolygon(vertices) + const arcSegments = 0 const originPolygon = new QPolygon(vertices, { fontSize: 0 }) From 060c8ce5b4c304a3726ba2e29c886852140c7b89 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Mon, 5 Aug 2024 13:13:20 +0900 Subject: [PATCH 19/61] =?UTF-8?q?=EC=9B=90=EB=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useMode.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 8cb71496..6116c2c9 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -333,9 +333,6 @@ export function useMode() { } const handleKeyDown = (e) => { - if (mode !== Mode.EDIT) { - return - } switch (e.key) { case 'ArrowDown': { if (!keyValid()) { @@ -537,8 +534,7 @@ export function useMode() { if (historyPoints.current.length >= 4) { const wall = drawWallPolygon() handleOuterlinesTest2(wall) - /*setWall(wall) - roof.drawHelpLine()*/ + setTemplateType(1) } } From 20229c7ef77466e374ff48a127113d68635f3380 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Mon, 5 Aug 2024 13:18:12 +0900 Subject: [PATCH 20/61] =?UTF-8?q?=EB=B2=84=ED=8A=BC=20visible=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 85 +++++++++++++++++++++------------------- src/hooks/useMode.js | 1 + src/store/canvasAtom.js | 2 +- 3 files changed, 47 insertions(+), 41 deletions(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index 1e59f3c1..c1e9a875 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -5,7 +5,7 @@ import { Button } from '@nextui-org/react' import RangeSlider from './ui/RangeSlider' import { useRecoilState, useRecoilValue } from 'recoil' -import { canvasSizeState, fontSizeState, roofMaterialState, sortedPolygonArray } from '@/store/canvasAtom' +import { canvasSizeState, fontSizeState, roofMaterialState, sortedPolygonArray, templateTypeState } from '@/store/canvasAtom' import { QLine } from '@/components/fabric/QLine' import { getCanvasState, insertCanvasState } from '@/lib/canvas' import { calculateIntersection } from '@/util/canvas-util' @@ -34,6 +34,8 @@ export default function Roof2() { //지붕재 const roofMaterial = useRecoilValue(roofMaterialState) + const [templateType, setTemplateType] = useRecoilState(templateTypeState) + const { mode, setMode, @@ -260,6 +262,7 @@ export default function Roof2() { canvas?.add(polygon) handleOuterlinesTest2(polygon, 50) + setTemplateType(1) } const rotateShape = () => { @@ -477,21 +480,21 @@ export default function Roof2() { - + */} - + */} 현재 줌 : {zoom}% - - + {templateType === 0 && ( + <> + + + + + )} - - - */} + {/* - {/* - */} - - + */} + {templateType === 1 && ( + <> + + + + )} diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 6116c2c9..bd3bbd94 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -710,6 +710,7 @@ export function useMode() { canvas?.clear() startPoint.current = null setEndPoint(null) + setTemplateType(0) points.current = [] historyPoints.current = [] historyLines.current = [] diff --git a/src/store/canvasAtom.js b/src/store/canvasAtom.js index 48eb0281..c607796c 100644 --- a/src/store/canvasAtom.js +++ b/src/store/canvasAtom.js @@ -50,7 +50,7 @@ export const roofPolygonArrayState = atom({ export const templateTypeState = atom({ key: 'templateType', - default: 1, //1:모임지붕, 2:A타입, 3:B타입 + default: 0, //1:모임지붕, 2:A타입, 3:B타입 dangerouslyAllowMutability: true, }) From 4ce2e1fd7aeb784d6152da63ceecd52d52321e5b Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Mon, 5 Aug 2024 13:44:30 +0900 Subject: [PATCH 21/61] feat: Add datepicker prototype --- package.json | 1 + src/app/intro/page.jsx | 4 +- src/components/Hero.jsx | 2 +- src/components/Intro.jsx | 34 +++++++- .../ui/datepicker/RangeDatePicker.jsx | 19 +++++ .../ui/datepicker/SingleDatePicker.jsx | 8 ++ yarn.lock | 80 ++++++++++++++++++- 7 files changed, 141 insertions(+), 7 deletions(-) create mode 100644 src/components/ui/datepicker/RangeDatePicker.jsx create mode 100644 src/components/ui/datepicker/SingleDatePicker.jsx diff --git a/package.json b/package.json index 28845ef0..07d7828e 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "mongodb": "^6.8.0", "next": "14.2.3", "react": "^18", + "react-datepicker": "^7.3.0", "react-dom": "^18", "recoil": "^0.7.7", "uuid": "^9.0.1" diff --git a/src/app/intro/page.jsx b/src/app/intro/page.jsx index d26257fb..840b1f93 100644 --- a/src/app/intro/page.jsx +++ b/src/app/intro/page.jsx @@ -6,8 +6,8 @@ import Intro from '@/components/Intro' export default function IntroPage() { return ( <> - -
+ +
diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx index c7ac519f..a6e7761f 100644 --- a/src/components/Hero.jsx +++ b/src/components/Hero.jsx @@ -1,7 +1,7 @@ export default function Hero(props) { return (
-

{props.title}

+

{props.title}

) } diff --git a/src/components/Intro.jsx b/src/components/Intro.jsx index fdb994b0..b6626a37 100644 --- a/src/components/Intro.jsx +++ b/src/components/Intro.jsx @@ -1,8 +1,38 @@ +'use client' + +import { useState } from 'react' +import SingleDatePicker from './ui/datepicker/SingleDatePicker' +import RangeDatePicker from './ui/datepicker/RangeDatePicker' + export default function Intro() { + const [startDate, setStartDate] = useState(new Date()) + const singleDatePickerProps = { + startDate, + setStartDate, + } + + const [dateRange, setDateRange] = useState([null, null]) + const [startRangeDate, endRangeDate] = dateRange + const rangeDatePickerProps = { + startRangeDate, + endRangeDate, + setDateRange, + } + return ( <> -

Intro

-

Drawing on canvas 2D is a simple way to create graphics on the web.

+
+

Single Date Picker

+
+ +
+
+
+

Range Date Picker

+
+ +
+
) } diff --git a/src/components/ui/datepicker/RangeDatePicker.jsx b/src/components/ui/datepicker/RangeDatePicker.jsx new file mode 100644 index 00000000..ad802f49 --- /dev/null +++ b/src/components/ui/datepicker/RangeDatePicker.jsx @@ -0,0 +1,19 @@ +import DatePicker from 'react-datepicker' +import 'react-datepicker/dist/react-datepicker.css' + +export default function RangeDatePicker(props) { + const { startRangeDate, endRangeDate, setDateRange } = props + + return ( + { + setDateRange(update) + }} + isClearable={true} + /> + ) +} diff --git a/src/components/ui/datepicker/SingleDatePicker.jsx b/src/components/ui/datepicker/SingleDatePicker.jsx new file mode 100644 index 00000000..ca5feba0 --- /dev/null +++ b/src/components/ui/datepicker/SingleDatePicker.jsx @@ -0,0 +1,8 @@ +import DatePicker from 'react-datepicker' +import 'react-datepicker/dist/react-datepicker.css' + +export default function SingleDatePicker(props) { + const { startDate, setStartDate } = props + + return setStartDate(date)} /> +} diff --git a/yarn.lock b/yarn.lock index 7c678f91..e77fea4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,6 +21,42 @@ dependencies: regenerator-runtime "^0.14.0" +"@floating-ui/core@^1.6.0": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.5.tgz#102335cac0d22035b04d70ca5ff092d2d1a26f2b" + integrity sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA== + dependencies: + "@floating-ui/utils" "^0.2.5" + +"@floating-ui/dom@^1.0.0": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.8.tgz#45e20532b6d8a061b356a4fb336022cf2609754d" + integrity sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.5" + +"@floating-ui/react-dom@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.1.tgz#cca58b6b04fc92b4c39288252e285e0422291fb0" + integrity sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/react@^0.26.2": + version "0.26.20" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.20.tgz#49ae23347666626db8671c2aa2df469bbec7db71" + integrity sha512-RixKJJG92fcIsVoqrFr4Onpzh7hlOx4U7NV4aLhMLmtvjZ5oTB/WzXaANYUZATKqXvvW7t9sCxtzejip26N5Ag== + dependencies: + "@floating-ui/react-dom" "^2.1.1" + "@floating-ui/utils" "^0.2.5" + tabbable "^6.0.0" + +"@floating-ui/utils@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.5.tgz#105c37d9d9620ce69b7f692a20c821bf1ad2cbf9" + integrity sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ== + "@formatjs/ecma402-abstract@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz#39197ab90b1c78b7342b129a56a7acdb8f512e17" @@ -2288,7 +2324,7 @@ clsx@^1.2.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -clsx@^2.0.0: +clsx@^2.0.0, clsx@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -2403,6 +2439,11 @@ data-urls@^3.0.1: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" +date-fns@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" + integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== + debug@4: version "4.3.5" resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" @@ -2902,7 +2943,7 @@ lodash.omit@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== -loose-envify@^1.0.0, loose-envify@^1.1.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3252,6 +3293,15 @@ prisma@^5.17.0: dependencies: "@prisma/engines" "5.17.0" +prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -3277,6 +3327,17 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +react-datepicker@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-7.3.0.tgz#666664a609d4b57b095083fe29d080943fa7b3ed" + integrity sha512-EqRKLAtLZUTztiq6a+tjSjQX9ES0Xd229JPckAtyZZ4GoY3rtvNWAzkYZnQUf6zTWT50Ki0+t+W9VRQIkSJLfg== + dependencies: + "@floating-ui/react" "^0.26.2" + clsx "^2.1.0" + date-fns "^3.3.1" + prop-types "^15.7.2" + react-onclickoutside "^6.13.0" + react-dom@^18: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" @@ -3285,6 +3346,16 @@ react-dom@^18: loose-envify "^1.1.0" scheduler "^0.23.2" +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-onclickoutside@^6.13.0: + version "6.13.1" + resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz#1f5e0241c08784b6e65745d91aca0d700c548a89" + integrity sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w== + react-remove-scroll-bar@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" @@ -3607,6 +3678,11 @@ symbol-tree@^3.2.4: resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tabbable@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + tailwind-merge@^1.14.0: version "1.14.0" resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-1.14.0.tgz#e677f55d864edc6794562c63f5001f45093cdb8b" From 2e5346a38700965352179deb507a5e43e47ad610 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Mon, 5 Aug 2024 17:58:22 +0900 Subject: [PATCH 22/61] feat: add i18n settings --- package.json | 1 + src/app/[locale]/LocaleProvider.js | 11 +++ .../changelog copy}/changelog.module.css | 0 .../changelog copy}/page.jsx | 0 .../[locale]/changelog/changelog.module.css | 4 + src/app/[locale]/changelog/page.jsx | 73 +++++++++++++++++++ .../{ => [locale]}/community/archive/page.jsx | 0 src/app/{ => [locale]}/community/faq/page.jsx | 0 .../{ => [locale]}/community/notice/page.jsx | 0 src/app/[locale]/error.jsx | 15 ++++ src/app/{ => [locale]}/intro/page.jsx | 1 - src/app/[locale]/layout.js | 13 ++++ src/app/{ => [locale]}/login/page.jsx | 0 .../{ => [locale]}/management/plan/page.jsx | 0 .../{ => [locale]}/management/stuff/page.jsx | 0 .../{ => [locale]}/master/company/page.jsx | 0 src/app/{ => [locale]}/master/price/page.jsx | 0 src/app/[locale]/not-found.jsx | 25 +++++++ src/app/[locale]/page.js | 19 +++++ src/app/{ => [locale]}/roof/page.jsx | 0 src/app/{ => [locale]}/roof2/page.jsx | 0 src/components/Headers.jsx | 2 +- src/components/Main.jsx | 28 ++++++- src/locales/client.js | 18 +++++ src/locales/ja.js | 7 ++ src/locales/ko.js | 7 ++ src/locales/server.js | 14 ++++ src/middleware.js | 33 ++++++--- yarn.lock | 21 +++++- 29 files changed, 277 insertions(+), 15 deletions(-) create mode 100644 src/app/[locale]/LocaleProvider.js rename src/app/{changelog => [locale]/changelog copy}/changelog.module.css (100%) rename src/app/{changelog => [locale]/changelog copy}/page.jsx (100%) create mode 100644 src/app/[locale]/changelog/changelog.module.css create mode 100644 src/app/[locale]/changelog/page.jsx rename src/app/{ => [locale]}/community/archive/page.jsx (100%) rename src/app/{ => [locale]}/community/faq/page.jsx (100%) rename src/app/{ => [locale]}/community/notice/page.jsx (100%) create mode 100644 src/app/[locale]/error.jsx rename src/app/{ => [locale]}/intro/page.jsx (82%) create mode 100644 src/app/[locale]/layout.js rename src/app/{ => [locale]}/login/page.jsx (100%) rename src/app/{ => [locale]}/management/plan/page.jsx (100%) rename src/app/{ => [locale]}/management/stuff/page.jsx (100%) rename src/app/{ => [locale]}/master/company/page.jsx (100%) rename src/app/{ => [locale]}/master/price/page.jsx (100%) create mode 100644 src/app/[locale]/not-found.jsx create mode 100644 src/app/[locale]/page.js rename src/app/{ => [locale]}/roof/page.jsx (100%) rename src/app/{ => [locale]}/roof2/page.jsx (100%) create mode 100644 src/locales/client.js create mode 100644 src/locales/ja.js create mode 100644 src/locales/ko.js create mode 100644 src/locales/server.js diff --git a/package.json b/package.json index 07d7828e..b4af1ba6 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "mathjs": "^13.0.2", "mongodb": "^6.8.0", "next": "14.2.3", + "next-international": "^1.2.4", "react": "^18", "react-datepicker": "^7.3.0", "react-dom": "^18", diff --git a/src/app/[locale]/LocaleProvider.js b/src/app/[locale]/LocaleProvider.js new file mode 100644 index 00000000..b4649135 --- /dev/null +++ b/src/app/[locale]/LocaleProvider.js @@ -0,0 +1,11 @@ +'use client' + +import { I18nProviderClient } from '@/locales/client' + +export function LocaleProvider({ locale, children }) { + return ( + Loading...

}> + {children} +
+ ) +} diff --git a/src/app/changelog/changelog.module.css b/src/app/[locale]/changelog copy/changelog.module.css similarity index 100% rename from src/app/changelog/changelog.module.css rename to src/app/[locale]/changelog copy/changelog.module.css diff --git a/src/app/changelog/page.jsx b/src/app/[locale]/changelog copy/page.jsx similarity index 100% rename from src/app/changelog/page.jsx rename to src/app/[locale]/changelog copy/page.jsx diff --git a/src/app/[locale]/changelog/changelog.module.css b/src/app/[locale]/changelog/changelog.module.css new file mode 100644 index 00000000..273a4a34 --- /dev/null +++ b/src/app/[locale]/changelog/changelog.module.css @@ -0,0 +1,4 @@ +.test { + @apply bg-red-500; + @apply text-2xl; +} diff --git a/src/app/[locale]/changelog/page.jsx b/src/app/[locale]/changelog/page.jsx new file mode 100644 index 00000000..ad626beb --- /dev/null +++ b/src/app/[locale]/changelog/page.jsx @@ -0,0 +1,73 @@ +'use client' + +import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@nextui-org/react' +import Hero from '@/components/Hero' +import QSelect from '@/components/ui/QSelect' +import styles from './changelog.module.css' +import { get } from '@/lib/Axios' + +export default function changelogPage() { + const testVar = process.env.NEXT_PUBLIC_TEST + + const handleUsers = async () => { + const users = await get('/api/user/find-all') + console.log(users) + } + + const data = [ + { + id: 1, + author: 'SWYOO', + contents: '버튼 정리(템플릿 적용)', + date: '2024.07.16', + }, + { + id: 2, + author: 'SWYOO', + contents: 'README.md 파일 이미지 경로 수정', + date: '2024.07.17', + }, + { + id: 3, + author: 'SWYOO', + contents: '', + date: '', + }, + ] + return ( + <> + +
이 영역은 테스트입니다.
+
+ + + DATE + NAME + CONTENTS + + + {data.map((item) => ( + + {item.date} + {item.author} + {item.contents} + + ))} + +
+
+
+ +
+
{testVar}
+
+
+ +
+
+
+

Sass 테스트입니다.

+
+ + ) +} diff --git a/src/app/community/archive/page.jsx b/src/app/[locale]/community/archive/page.jsx similarity index 100% rename from src/app/community/archive/page.jsx rename to src/app/[locale]/community/archive/page.jsx diff --git a/src/app/community/faq/page.jsx b/src/app/[locale]/community/faq/page.jsx similarity index 100% rename from src/app/community/faq/page.jsx rename to src/app/[locale]/community/faq/page.jsx diff --git a/src/app/community/notice/page.jsx b/src/app/[locale]/community/notice/page.jsx similarity index 100% rename from src/app/community/notice/page.jsx rename to src/app/[locale]/community/notice/page.jsx diff --git a/src/app/[locale]/error.jsx b/src/app/[locale]/error.jsx new file mode 100644 index 00000000..07d75e7e --- /dev/null +++ b/src/app/[locale]/error.jsx @@ -0,0 +1,15 @@ +'use client' + +export default function ServerError() { + return ( +
+
+
+

500

+

Internal Server Error.

+

We are already working to solve the problem.

+
+
+
+ ) +} diff --git a/src/app/intro/page.jsx b/src/app/[locale]/intro/page.jsx similarity index 82% rename from src/app/intro/page.jsx rename to src/app/[locale]/intro/page.jsx index 840b1f93..64a7c6ab 100644 --- a/src/app/intro/page.jsx +++ b/src/app/[locale]/intro/page.jsx @@ -6,7 +6,6 @@ import Intro from '@/components/Intro' export default function IntroPage() { return ( <> -
diff --git a/src/app/[locale]/layout.js b/src/app/[locale]/layout.js new file mode 100644 index 00000000..00f84991 --- /dev/null +++ b/src/app/[locale]/layout.js @@ -0,0 +1,13 @@ +'use client' + +import { useCurrentLocale } from '@/locales/client' +import { LocaleProvider } from './LocaleProvider' + +export default function LocaleLayout({ children }) { + const locale = useCurrentLocale() + return ( + <> + {children} + + ) +} diff --git a/src/app/login/page.jsx b/src/app/[locale]/login/page.jsx similarity index 100% rename from src/app/login/page.jsx rename to src/app/[locale]/login/page.jsx diff --git a/src/app/management/plan/page.jsx b/src/app/[locale]/management/plan/page.jsx similarity index 100% rename from src/app/management/plan/page.jsx rename to src/app/[locale]/management/plan/page.jsx diff --git a/src/app/management/stuff/page.jsx b/src/app/[locale]/management/stuff/page.jsx similarity index 100% rename from src/app/management/stuff/page.jsx rename to src/app/[locale]/management/stuff/page.jsx diff --git a/src/app/master/company/page.jsx b/src/app/[locale]/master/company/page.jsx similarity index 100% rename from src/app/master/company/page.jsx rename to src/app/[locale]/master/company/page.jsx diff --git a/src/app/master/price/page.jsx b/src/app/[locale]/master/price/page.jsx similarity index 100% rename from src/app/master/price/page.jsx rename to src/app/[locale]/master/price/page.jsx diff --git a/src/app/[locale]/not-found.jsx b/src/app/[locale]/not-found.jsx new file mode 100644 index 00000000..8127943b --- /dev/null +++ b/src/app/[locale]/not-found.jsx @@ -0,0 +1,25 @@ +'use client' + +import Link from 'next/link' + +export default function NotFound() { + return ( +
+
+
+

404

+

Something's missing.

+

+ Sorry, we can't find that page. You'll find lots to explore on the home page.{' '} +

+ + Back to Homepage + +
+
+
+ ) +} diff --git a/src/app/[locale]/page.js b/src/app/[locale]/page.js new file mode 100644 index 00000000..ab223428 --- /dev/null +++ b/src/app/[locale]/page.js @@ -0,0 +1,19 @@ +import MainPage from '@/components/Main' +import { getCurrentLocale } from '@/locales/server' + +export default function page() { + const currentLocale = getCurrentLocale() + + const mainPageProps = { + currentLocale, + } + + return ( + <> +
+

Main

+ +
+ + ) +} diff --git a/src/app/roof/page.jsx b/src/app/[locale]/roof/page.jsx similarity index 100% rename from src/app/roof/page.jsx rename to src/app/[locale]/roof/page.jsx diff --git a/src/app/roof2/page.jsx b/src/app/[locale]/roof2/page.jsx similarity index 100% rename from src/app/roof2/page.jsx rename to src/app/[locale]/roof2/page.jsx diff --git a/src/components/Headers.jsx b/src/components/Headers.jsx index 12d36144..a5503b8c 100644 --- a/src/components/Headers.jsx +++ b/src/components/Headers.jsx @@ -2,7 +2,7 @@ import Link from 'next/link' export default function Headers() { return ( -
+
+
+
QModal
+
+ + {ipsum} +
+
) } diff --git a/src/components/common/modal/QModal.jsx b/src/components/common/modal/QModal.jsx new file mode 100644 index 00000000..60ce318c --- /dev/null +++ b/src/components/common/modal/QModal.jsx @@ -0,0 +1,12 @@ +import { Modal } from 'react-responsive-modal' +import 'react-responsive-modal/styles.css' + +export default function QModal(props) { + const { open, setOpen, children } = props + + return ( + setOpen(false)} center> + {children} + + ) +} diff --git a/yarn.lock b/yarn.lock index cfb210ea..b7d6abf3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,6 +21,18 @@ dependencies: regenerator-runtime "^0.14.0" +"@bedrock-layout/use-forwarded-ref@^1.3.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bedrock-layout/use-forwarded-ref/-/use-forwarded-ref-1.6.1.tgz#e0d25c35af41ccaa36df809a7de8d5ccd9c70d1e" + integrity sha512-GD9A9AFLzFNjr7k6fgerSqxfwDWl+wsPS11PErOKe1zkVz0y7RGC9gzlOiX/JrgpyB3NFHWIuGtoOQqifJQQpw== + dependencies: + "@bedrock-layout/use-stateful-ref" "^1.4.1" + +"@bedrock-layout/use-stateful-ref@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz#c543c61d15885e19506f068618a4d6427a5bf817" + integrity sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ== + "@floating-ui/core@^1.6.0": version "1.6.5" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.5.tgz#102335cac0d22035b04d70ca5ff092d2d1a26f2b" @@ -2256,6 +2268,11 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== +body-scroll-lock@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz#c1392d9217ed2c3e237fee1e910f6cdd80b7aaec" + integrity sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2334,6 +2351,11 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +classnames@^2.3.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + client-only@0.0.1, client-only@^0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" @@ -3409,6 +3431,15 @@ react-remove-scroll@^2.5.6: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-responsive-modal@^6.4.2: + version "6.4.2" + resolved "https://registry.yarnpkg.com/react-responsive-modal/-/react-responsive-modal-6.4.2.tgz#666b5c35b232cec617981006c9fe59414531a5a0" + integrity sha512-ARjGEKE5Gu5CSvyA8U9ARVbtK4SMAtdXsjtzwtxRlQIHC99RQTnOUctLpl7+/sp1Kg1OJZ6yqvp6ivd4TBueEw== + dependencies: + "@bedrock-layout/use-forwarded-ref" "^1.3.1" + body-scroll-lock "^3.1.5" + classnames "^2.3.1" + react-style-singleton@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" From b54b6a5b574685bc0659e16f1e8b15c91e6b5591 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Tue, 6 Aug 2024 16:26:44 +0900 Subject: [PATCH 30/61] =?UTF-8?q?fix:=20=EC=86=8C=EC=8A=A4=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 레이아웃 일관성 유지를 위한 마크업 수정 --- src/app/[locale]/changelog/page.jsx | 62 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/app/[locale]/changelog/page.jsx b/src/app/[locale]/changelog/page.jsx index ad626beb..85ca6310 100644 --- a/src/app/[locale]/changelog/page.jsx +++ b/src/app/[locale]/changelog/page.jsx @@ -1,7 +1,6 @@ 'use client' import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@nextui-org/react' -import Hero from '@/components/Hero' import QSelect from '@/components/ui/QSelect' import styles from './changelog.module.css' import { get } from '@/lib/Axios' @@ -36,37 +35,38 @@ export default function changelogPage() { ] return ( <> - -
이 영역은 테스트입니다.
-
- - - DATE - NAME - CONTENTS - - - {data.map((item) => ( - - {item.date} - {item.author} - {item.contents} - - ))} - -
-
-
- -
-
{testVar}
-
-
- +
+
이 영역은 테스트입니다.
+
+ + + DATE + NAME + CONTENTS + + + {data.map((item) => ( + + {item.date} + {item.author} + {item.contents} + + ))} + +
+
+
+ +
+
{testVar}
+
+
+ +
+
+
+

Sass 테스트입니다.

-
-
-

Sass 테스트입니다.

) From 78f77e8c6ea9b329292d85d89946b5bb3e436406 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Tue, 6 Aug 2024 16:29:48 +0900 Subject: [PATCH 31/61] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EB=B0=8F=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../changelog copy/changelog.module.css | 4 - src/app/[locale]/changelog copy/page.jsx | 73 ------------------- 2 files changed, 77 deletions(-) delete mode 100644 src/app/[locale]/changelog copy/changelog.module.css delete mode 100644 src/app/[locale]/changelog copy/page.jsx diff --git a/src/app/[locale]/changelog copy/changelog.module.css b/src/app/[locale]/changelog copy/changelog.module.css deleted file mode 100644 index 273a4a34..00000000 --- a/src/app/[locale]/changelog copy/changelog.module.css +++ /dev/null @@ -1,4 +0,0 @@ -.test { - @apply bg-red-500; - @apply text-2xl; -} diff --git a/src/app/[locale]/changelog copy/page.jsx b/src/app/[locale]/changelog copy/page.jsx deleted file mode 100644 index ad626beb..00000000 --- a/src/app/[locale]/changelog copy/page.jsx +++ /dev/null @@ -1,73 +0,0 @@ -'use client' - -import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@nextui-org/react' -import Hero from '@/components/Hero' -import QSelect from '@/components/ui/QSelect' -import styles from './changelog.module.css' -import { get } from '@/lib/Axios' - -export default function changelogPage() { - const testVar = process.env.NEXT_PUBLIC_TEST - - const handleUsers = async () => { - const users = await get('/api/user/find-all') - console.log(users) - } - - const data = [ - { - id: 1, - author: 'SWYOO', - contents: '버튼 정리(템플릿 적용)', - date: '2024.07.16', - }, - { - id: 2, - author: 'SWYOO', - contents: 'README.md 파일 이미지 경로 수정', - date: '2024.07.17', - }, - { - id: 3, - author: 'SWYOO', - contents: '', - date: '', - }, - ] - return ( - <> - -
이 영역은 테스트입니다.
-
- - - DATE - NAME - CONTENTS - - - {data.map((item) => ( - - {item.date} - {item.author} - {item.contents} - - ))} - -
-
-
- -
-
{testVar}
-
-
- -
-
-
-

Sass 테스트입니다.

-
- - ) -} From 69568966ba115073f06fdfd3f37a014aae48a90b Mon Sep 17 00:00:00 2001 From: yjnoh Date: Tue, 6 Aug 2024 17:56:37 +0900 Subject: [PATCH 32/61] =?UTF-8?q?=EC=85=80=EC=B6=94=EA=B0=80=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 105 +++++++++++++++++++++++++-- src/hooks/useMode.js | 115 ++++++++++++++++-------------- 2 files changed, 164 insertions(+), 56 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index e1f7377b..2c7a36ca 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -204,7 +204,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { this.canvas = canvas }, fillCell(cell = { width: 50, height: 100, padding: 10 }) { - const points = this.getCurrentPoints() + const points = this.points const minX = Math.min(...points.map((p) => p.x)) const maxX = Math.max(...points.map((p) => p.x)) @@ -231,8 +231,8 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { for (let i = 0; i < cols; i++) { for (let j = 0; j < rows; j++) { - const rectLeft = minX + i * (rectWidth + cell.padding) + tmpWidth - const rectTop = minY + j * (rectHeight + cell.padding) + tmpHeight + const rectLeft = minX + i * (rectWidth + cell.padding) + const rectTop = minY + j * (rectHeight + cell.padding) const rectPoints = [ { x: rectLeft, y: rectTop }, @@ -240,6 +240,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { { x: rectLeft, y: rectTop + rectHeight }, { x: rectLeft + rectWidth, y: rectTop + rectHeight }, ] + const allPointsInside = rectPoints.every((point) => this.inPolygon(point)) if (allPointsInside) { @@ -272,6 +273,102 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { this.cells = drawCellsArray return drawCellsArray }, + fillCellABTemplate(cell = { width: 50, height: 100, padding: 5, parallelPoint: undefined, startX: 0, startY: 0 }) { + const points = this.points + + const minX = Math.min(...points.map((p) => p.x)) //왼쪽 + const maxX = Math.max(...points.map((p) => p.x)) //오른쪽 + const minY = Math.min(...points.map((p) => p.y)) //위 + const maxY = Math.max(...points.map((p) => p.y)) //아래 + + const boundingBoxWidth = maxX - minX + const boundingBoxHeight = maxY - minY + + const rectWidth = cell.width + const rectHeight = cell.height + + const cols = Math.floor((boundingBoxWidth + cell.padding) / (rectWidth + cell.padding)) + const rows = Math.floor((boundingBoxHeight + cell.padding) / (rectHeight + cell.padding)) + + //전체 높이에서 패딩을 포함하고 rows를 곱해서 여백길이를 계산 후에 2로 나누면 반높이를 넣어서 중간으로 정렬 + const tmpHeight = (boundingBoxHeight - (rectHeight + cell.padding) * rows) / 2 + //센터 정렬시에 쓴다 체크박스가 존재함 TODO: if문 추가해서 정렬해야함 + const tmpWidth = (boundingBoxWidth - (rectWidth + cell.padding) * cols) / 2 + + const drawCellsArray = [] //그려진 셀의 배열 + + let idx = 1 + + if (cell.parallelPoint > -1) { + //4각형 이상이면 각 꼭지점에서 위, 아래로 이동하면서 채움 + //앞에서 -1로 선언함 + if (cell.parallelPoint === 1 || cell.parallelPoint === 2) { + //ㄴ자 역ㄱ자 + //밑에서 위로 올라가야하면 + cell.startY = cell.startY - (rectHeight + cell.padding) * rows + if (cell.parallelPoint === 2) { + cell.startX = cell.startX - (rectWidth + cell.padding) * cols + } + } else { + if (cell.parallelPoint === 5) { + cell.startX = cell.startX - (rectWidth + cell.padding) * cols + } + } + } + + let startXPos, startYPos + + for (let i = 0; i < cols; i++) { + for (let j = 0; j < rows; j++) { + if (cell.parallelPoint > -1) { + startXPos = cell.startX + i * (rectWidth + cell.padding) + startYPos = cell.startY + j * (rectHeight + cell.padding) + } else { + startXPos = minX + i * (rectWidth + cell.padding) + startYPos = minY + j * (rectHeight + cell.padding) + } + + const rectPoints = [] + + rectPoints.push( + { x: startXPos, y: startYPos }, + { x: startXPos + rectWidth, y: startYPos }, + { x: startXPos, y: startYPos + rectHeight }, + { x: startXPos + rectWidth, y: startYPos + rectHeight }, + ) + + const allPointsInside = rectPoints.every((point) => this.inPolygon(point)) + + if (allPointsInside) { + const rect = new fabric.Rect({ + left: startXPos, + top: startYPos, + width: rectWidth, + height: rectHeight, + fill: '#BFFD9F', + stroke: 'black', + selectable: true, // 선택 가능하게 설정 + // lockMovementX: true, // X 축 이동 잠금 + // lockMovementY: true, // Y 축 이동 잠금 + // lockRotation: true, // 회전 잠금 + // lockScalingX: true, // X 축 크기 조정 잠금 + // lockScalingY: true, // Y 축 크기 조정 잠금 + opacity: 0.8, + name: 'cell', + idx: idx, + }) + + idx++ + drawCellsArray.push(rect) //배열에 넣어서 반환한다 + this.canvas.add(rect) + } + } + } + this.canvas?.renderAll() + this.cells = drawCellsArray + return drawCellsArray + }, + inPolygon(point) { const vertices = this.points let intersects = 0 @@ -295,7 +392,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { } let xInt = ((point.y - vertex1.y) * (vertex2.x - vertex1.x)) / (vertex2.y - vertex1.y) + vertex1.x - if (xInt < point.x) { + if (xInt <= point.x) { intersects++ } } diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index bd3bbd94..da7b8bf7 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -510,7 +510,7 @@ export function useMode() { * 마우스로 그린 점 기준으로 외벽선을 완성시켜준다. * makePolygon 함수에 포함되어있던 내용을 다른 템플릿 적용에서도 사용할수 있도록 함수로 대체 */ - const drawWallPolygon = () => { + const drawWallPolygon = (sort = true) => { const firstPoint = historyPoints.current[0] const lastPoint = historyPoints.current[historyPoints.current.length - 1] historyPoints.current.forEach((point) => { @@ -521,7 +521,7 @@ export function useMode() { historyPoints.current = [] // handleOuterlines() - const wall = makePolygon() + const wall = makePolygon(null, sort) wall.set({ name: 'wall' }) setWall(wall) @@ -638,7 +638,7 @@ export function useMode() { canvas?.renderAll() } - const makePolygon = (otherLines) => { + const makePolygon = (otherLines, sort = true) => { // 캔버스에서 모든 라인 객체를 찾습니다. const lines = otherLines || historyLines.current @@ -685,6 +685,7 @@ export function useMode() { fill: 'transparent', viewLengthText: true, fontSize: fontSize, + sort: sort, }, canvas, ) @@ -1087,7 +1088,7 @@ export function useMode() { offsetPoints.push(offsetPoint) } - return makePolygon(offsetPoints) + return makePolygon(offsetPoints, false) } /** @@ -1146,7 +1147,7 @@ export function useMode() { const applyTemplateA = () => { changeMode(canvas, Mode.EDIT) - const polygon = drawWallPolygon() + const polygon = drawWallPolygon(false) handleClear() if (polygon.lines.length === 4) { @@ -1895,12 +1896,7 @@ export function useMode() { //작은 지붕쪽 높이 길이를 구하는 로직 let secondVertCenterPoint = (lastLine.x1 + lastLine.x2) / 2 - secondVertCenterLine = new QLine([secondVertCenterPoint, middleSubLine.y1, secondVertCenterPoint, middleSubLine.y2 + edge], { - stroke: 'blue', - strokeWidth: 4, - property: 'centerLine', - fontSize: 14, - }) + secondVertCenterLine = new QLine([secondVertCenterPoint, middleSubLine.y1, secondVertCenterPoint, middleSubLine.y2 + edge], centerLineOpt) canvas.add(secondVertCenterLine) outLines.push(secondVertCenterLine) @@ -2085,38 +2081,10 @@ export function useMode() { return tmpArray } - // 외적을 계산하는 함수 - function crossProduct(p1, p2, p3) { - const dx1 = p2.x - p1.x - const dy1 = p2.y - p1.y - const dx2 = p3.x - p2.x - const dy2 = p3.y - p2.y - return dx1 * dy2 - dy1 * dx2 - } - - let concaveIndices = [] //볼록한 부분 인덱스 배열 - let concavePointIndices = [] //오목한 부분 인덱스 배열 - - // 오목한 부분 찾기 - function findConcavePointIndices(points) { - let concaveIndices = [] - for (let i = 0; i < points.length; i++) { - const p1 = points[i] - const p2 = points[(i + 1) % points.length] - const p3 = points[(i + 2) % points.length] - const cross = crossProduct(p1, p2, p3) - if (cross < 0) { - concaveIndices.push((i + 1) % points.length) - } else { - concavePointIndices.push((i + 1) % points.length) - } - } - return concaveIndices - } - // 오목한 부분 인덱스 찾기 - concaveIndices = findConcavePointIndices(points) //오목한 부분을 제외한 인덱스 - const concavePoints = concaveIndices.map((index) => points[index]) + const concaveIndicesObj = findConcavePointIndices(points) //오목한 부분을 제외한 인덱스 + let concavePointIndices = concaveIndicesObj.concavePointIndices + const concaveLine = { index: concavePointIndices[0], line: lines[concavePointIndices[0]], @@ -2168,7 +2136,7 @@ export function useMode() { offsetPoints.push(offsetPoint) } - const outlinePolygon = makePolygon(offsetPoints) + const outlinePolygon = makePolygon(offsetPoints, false) outlinePolygon.setViewLengthText(false) // 아웃라인 폴리곤의 각 변을 선으로 생성 @@ -2178,7 +2146,7 @@ export function useMode() { const line = new QLine([start.x, start.y, end.x, end.y], { stroke: 'blue', - strokeWidth: 2, + strokeWidth: 1, property: 'normal', fontSize: 14, idx: i, @@ -2607,7 +2575,7 @@ export function useMode() { */ const applyTemplateB = () => { changeMode(canvas, Mode.EDIT) - const polygon = drawWallPolygon() + const polygon = drawWallPolygon(false) const params = { eaves: 50, edge: 20, @@ -3149,7 +3117,7 @@ export function useMode() { ctx.scale(ratio, ratio) if (mode === 'cell') { - ctx.fillStyle = 'rgba(0, 0, 0, 0.3)' + ctx.fillStyle = 'rgba(0, 0, 0, 0.1)' ctx.fillRect(0, 0, patternSize.width * 2, patternSize.height * 2) } @@ -3286,7 +3254,9 @@ export function useMode() { canvas?.renderAll() } - const pattern = getRoofPattern(roofStyle, 'cell') + const pattern = getRoofPattern(roofStyle, 'cell') //셀모드 배경색을 칠한다 + + polygons.sort((a, b) => a.lines.length > b.lines.length) //무조건 잴 긴거 정렬 // 외각선을 안쪽으로 그려 가대선을 그린다. polygons.forEach((polygon, index) => { @@ -3312,9 +3282,6 @@ export function useMode() { trestlePolygon.on('mousedown', function () { toggleSelection(trestlePolygon) }) - - console.log('polygon', polygon) - polygon.set({ fill: pattern }) }) @@ -3349,7 +3316,7 @@ export function useMode() { } } - const inputCellSize = { width: 172, height: 113 } + const inputCellSize = { width: 172, height: 113 } //추후 입력받는 값으로 변경 const cellSize = { ...inputCellSize } //기본으로 가로형으로 넣고 if (templateType === 2) { @@ -3357,7 +3324,25 @@ export function useMode() { } selectedCellRoofArray.forEach((polygon, index) => { - const drawCells = polygon.fillCell({ width: cellSize.width, height: cellSize.height, padding: 10 }) + let parallelPoint = -1 //오목한 부분의 반대 꼭지점 //없는 애들도 있어서 -1 + const startPoint = {} //도형의 시작점을 찾기 위해 + + if (polygon.lines.length > 4) { + const concave = findConcavePointIndices(polygon.points) //오목한 부분기준으로 시작점을 찾으려 계산 + parallelPoint = parseInt(concave.concavePointIndices[0] + 3) % polygon.points.length //시작점을 찾기 위해 적용 + startPoint.x = polygon.points[parallelPoint].x + startPoint.y = polygon.points[parallelPoint].y + } + + const drawCells = polygon.fillCellABTemplate({ + width: cellSize.width, + height: cellSize.height, + padding: 10, + parallelPoint: parallelPoint, + startX: startPoint.x, + startY: startPoint.y, + }) + // const drawCells = polygon.fillCell({ width: cellSize.width, height: cellSize.height, padding: 10 }) drawCellsArray.push({ roofIndex: polygon.customIndex, drawCells: drawCells }) }) @@ -3411,6 +3396,32 @@ export function useMode() { setDrewRoofCells(roofCells) } + // 외적을 계산하는 함수 + const crossProduct = (p1, p2, p3) => { + const dx1 = p2.x - p1.x + const dy1 = p2.y - p1.y + const dx2 = p3.x - p2.x + const dy2 = p3.y - p2.y + return dx1 * dy2 - dy1 * dx2 + } + // 오목한 부분 찾기 + const findConcavePointIndices = (points) => { + let concaveIndices = [] + let concavePointIndices = [] + for (let i = 0; i < points.length; i++) { + const p1 = points[i] + const p2 = points[(i + 1) % points.length] + const p3 = points[(i + 2) % points.length] + const cross = crossProduct(p1, p2, p3) + if (cross < 0) { + concaveIndices.push((i + 1) % points.length) + } else { + concavePointIndices.push((i + 1) % points.length) + } + } + return { concaveIndices: concaveIndices, concavePointIndices: concavePointIndices } + } + return { mode, setMode, From 1dc6c8d1583a1196b914df7b134d59dd42b67073 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 7 Aug 2024 11:30:37 +0900 Subject: [PATCH 33/61] =?UTF-8?q?feat:=20prisma=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +++- .env.production | 4 +++- prisma/schema.prisma | 29 +++++++++++++++++++---------- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/.env.development b/.env.development index 161467af..b676dfd3 100644 --- a/.env.development +++ b/.env.development @@ -1,3 +1,5 @@ NEXT_PUBLIC_TEST="테스트변수입니다. development" -NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" \ No newline at end of file +NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" + +DATABASE_URL="sqlserver://mssql.devgrr.kr:1433;database=qcast;user=sa;password=Qwertqaz!@#45;trustServerCertificate=true" \ No newline at end of file diff --git a/.env.production b/.env.production index efb12105..97e47582 100644 --- a/.env.production +++ b/.env.production @@ -1,3 +1,5 @@ NEXT_PUBLIC_TEST="테스트변수입니다. production" -NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" \ No newline at end of file +NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" + +DATABASE_URL="" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 327b757a..027c8859 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -3,17 +3,26 @@ generator client { } datasource db { - provider = "mongodb" + provider = "sqlserver" url = env("DATABASE_URL") } -model test { - id String @id @default(auto()) @map("_id") @db.ObjectId - content String -} - -model canvas { - id String @id @default(auto()) @map("_id") @db.ObjectId - loginId String - canvas Json +model M_USER { + USER_ID String @id(map: "M_USER_pk") @db.VarChar(50) + SALE_STORE_ID String @db.VarChar(10) + PASSWORD String @db.VarChar(10) + CATEGORY String? @db.NVarChar(20) + NAME String @db.NVarChar(20) + NAME_KANA String @db.NVarChar(20) + TEL String? @db.VarChar(15) + FAX String? @db.VarChar(15) + MAIL String? @db.NVarChar(100) + GROUP_ID String @db.VarChar(5) + MODULE_SELECT_GROUP_ID String? @db.VarChar(5) + VERSION_MANAGEMENT_ID String? @db.VarChar(20) + DISP_COST_PRICE Boolean? + DISP_SELLING_PRICE Boolean? + REGIST_DATETIME DateTime? @db.DateTime + LAST_EDIT_DATETIME DateTime? @db.DateTime + LAST_EDIT_USER String? @db.VarChar(50) } \ No newline at end of file From a6a034a2df937b8b00982ac5dc2094464a98087f Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 7 Aug 2024 12:55:37 +0900 Subject: [PATCH 34/61] =?UTF-8?q?feat:=20=EA=B4=80=EB=A0=A8=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- yarn.lock | 555 ++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 486 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index 7080a5cb..c2fd75f6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "fabric": "^5.3.0", "framer-motion": "^11.2.13", "mathjs": "^13.0.2", - "mongodb": "^6.8.0", + "mssql": "^11.0.1", "next": "14.2.3", "next-international": "^1.2.4", "react": "^18", diff --git a/yarn.lock b/yarn.lock index b7d6abf3..28d10bbf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,162 @@ resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@azure/abort-controller@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" + integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== + dependencies: + tslib "^2.2.0" + +"@azure/abort-controller@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d" + integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA== + dependencies: + tslib "^2.6.2" + +"@azure/core-auth@^1.3.0", "@azure/core-auth@^1.4.0", "@azure/core-auth@^1.5.0", "@azure/core-auth@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.7.2.tgz#558b7cb7dd12b00beec07ae5df5907d74df1ebd9" + integrity sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-util" "^1.1.0" + tslib "^2.6.2" + +"@azure/core-client@^1.3.0", "@azure/core-client@^1.5.0", "@azure/core-client@^1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.2.tgz#6fc69cee2816883ab6c5cdd653ee4f2ff9774f74" + integrity sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-rest-pipeline" "^1.9.1" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.6.1" + "@azure/logger" "^1.0.0" + tslib "^2.6.2" + +"@azure/core-http-compat@^2.0.1": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz#d1585ada24ba750dc161d816169b33b35f762f0d" + integrity sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-client" "^1.3.0" + "@azure/core-rest-pipeline" "^1.3.0" + +"@azure/core-lro@^2.2.0": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.7.2.tgz#787105027a20e45c77651a98b01a4d3b01b75a08" + integrity sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-util" "^1.2.0" + "@azure/logger" "^1.0.0" + tslib "^2.6.2" + +"@azure/core-paging@^1.1.1": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.6.2.tgz#40d3860dc2df7f291d66350b2cfd9171526433e7" + integrity sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA== + dependencies: + tslib "^2.6.2" + +"@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.3.0", "@azure/core-rest-pipeline@^1.8.1", "@azure/core-rest-pipeline@^1.9.1": + version "1.16.3" + resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz#bde3bc3ebad7f885ddd9de6af5e5a8fc254b287e" + integrity sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-tracing" "^1.0.1" + "@azure/core-util" "^1.9.0" + "@azure/logger" "^1.0.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + tslib "^2.6.2" + +"@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.1.2.tgz#065dab4e093fb61899988a1cdbc827d9ad90b4ee" + integrity sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA== + dependencies: + tslib "^2.6.2" + +"@azure/core-util@^1.0.0", "@azure/core-util@^1.1.0", "@azure/core-util@^1.2.0", "@azure/core-util@^1.3.0", "@azure/core-util@^1.6.1", "@azure/core-util@^1.9.0": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.2.tgz#1dc37dc5b0dae34c578be62cf98905ba7c0cafe7" + integrity sha512-l1Qrqhi4x1aekkV+OlcqsJa4AnAkj5p0JV8omgwjaV9OAbP41lvrMvs+CptfetKkeEaGRGSzby7sjPZEX7+kkQ== + dependencies: + "@azure/abort-controller" "^2.0.0" + tslib "^2.6.2" + +"@azure/identity@^4.2.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.4.1.tgz#490fa2ad26786229afa36411892bb53dfa3478d3" + integrity sha512-DwnG4cKFEM7S3T+9u05NstXU/HN0dk45kPOinUyNKsn5VWwpXd9sbPKEg6kgJzGbm1lMuhx9o31PVbCtM5sfBA== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-auth" "^1.5.0" + "@azure/core-client" "^1.9.2" + "@azure/core-rest-pipeline" "^1.1.0" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.3.0" + "@azure/logger" "^1.0.0" + "@azure/msal-browser" "^3.14.0" + "@azure/msal-node" "^2.9.2" + events "^3.0.0" + jws "^4.0.0" + open "^8.0.0" + stoppable "^1.1.0" + tslib "^2.2.0" + +"@azure/keyvault-keys@^4.4.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@azure/keyvault-keys/-/keyvault-keys-4.8.0.tgz#1513b3a187bb3a9a372b5980c593962fb793b2ad" + integrity sha512-jkuYxgkw0aaRfk40OQhFqDIupqblIOIlYESWB6DKCVDxQet1pyv86Tfk9M+5uFM0+mCs6+MUHU+Hxh3joiUn4Q== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-auth" "^1.3.0" + "@azure/core-client" "^1.5.0" + "@azure/core-http-compat" "^2.0.1" + "@azure/core-lro" "^2.2.0" + "@azure/core-paging" "^1.1.1" + "@azure/core-rest-pipeline" "^1.8.1" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.0.0" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" + +"@azure/logger@^1.0.0": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.4.tgz#223cbf2b424dfa66478ce9a4f575f59c6f379768" + integrity sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ== + dependencies: + tslib "^2.6.2" + +"@azure/msal-browser@^3.14.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.20.0.tgz#12ae45d0d398dac25b2b37710277103539c23994" + integrity sha512-ErsxbfCGIwdqD8jipqdxpfAGiUEQS7MWUe39Rjhl0ZVPsb1JEe9bZCe2+0g23HDH6DGyCAtnTNN9scPtievrMQ== + dependencies: + "@azure/msal-common" "14.14.0" + +"@azure/msal-common@14.14.0": + version "14.14.0" + resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.14.0.tgz#31a015070d5864ebcf9ebb988fcbc5c5536f22d1" + integrity sha512-OxcOk9H1/1fktHh6//VCORgSNJc2dCQObTm6JNmL824Z6iZSO6eFo/Bttxe0hETn9B+cr7gDouTQtsRq3YPuSQ== + +"@azure/msal-node@^2.9.2": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.12.0.tgz#57ee6b6011a320046d72dc0828fec46278f2ab2c" + integrity sha512-jmk5Im5KujRA2AcyCb0awA3buV8niSrwXZs+NBJWIvxOz76RvNlusGIqi43A0h45BPUy93Qb+CPdpJn82NFTIg== + dependencies: + "@azure/msal-common" "14.14.0" + jsonwebtoken "^9.0.0" + uuid "^8.3.0" + "@babel/runtime@^7.20.13": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" @@ -181,6 +337,11 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@js-joda/core@^5.6.1": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-5.6.3.tgz#41ae1c07de1ebe0f6dde1abcbc9700a09b9c6056" + integrity sha512-T1rRxzdqkEXcou0ZprN1q9yDRlvzCPLqmlNt5IIsGBzoEVgLCCYrKEwc84+TvsXuAc95VAZwtWD2zVsKPY4bcA== + "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" @@ -196,13 +357,6 @@ semver "^7.3.5" tar "^6.1.11" -"@mongodb-js/saslprep@^1.1.5": - version "1.1.8" - resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz#d39744540be8800d17749990b0da95b4271840d1" - integrity sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ== - dependencies: - sparse-bitfield "^3.0.3" - "@next/env@14.2.3": version "14.2.3" resolved "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz" @@ -2102,6 +2256,11 @@ dependencies: tslib "^2.4.0" +"@tediousjs/connection-string@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@tediousjs/connection-string/-/connection-string-0.5.0.tgz#9b3d858c040aac6bdf5584bf45370cef5b6522b4" + integrity sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ== + "@tootallnate/once@2": version "2.0.0" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" @@ -2119,17 +2278,20 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543" integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA== -"@types/webidl-conversions@*": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" - integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== - -"@types/whatwg-url@^11.0.2": - version "11.0.5" - resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.5.tgz#aaa2546e60f0c99209ca13360c32c78caf2c409f" - integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== +"@types/node@*", "@types/node@>=18": + version "22.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" + integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== dependencies: - "@types/webidl-conversions" "*" + undici-types "~6.13.0" + +"@types/readable-stream@^4.0.0": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-4.0.15.tgz#e6ec26fe5b02f578c60baf1fa9452e90957d2bfb" + integrity sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" abab@^2.0.5, abab@^2.0.6: version "2.0.6" @@ -2141,6 +2303,13 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" @@ -2191,6 +2360,13 @@ agent-base@6: dependencies: debug "4" +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" @@ -2263,11 +2439,26 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.3.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== +bl@^6.0.11: + version "6.0.14" + resolved "https://registry.yarnpkg.com/bl/-/bl-6.0.14.tgz#b9ae9862118a3d2ebec999c5318466012314f96c" + integrity sha512-TJfbvGdL7KFGxTsEbsED7avqpFdY56q9IW0/aiytyheJzxST/+Io6cx/4Qx0K2/u0BPRDs65mjaQzYvMZeNocQ== + dependencies: + "@types/readable-stream" "^4.0.0" + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^4.2.0" + body-scroll-lock@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz#c1392d9217ed2c3e237fee1e910f6cdd80b7aaec" @@ -2300,10 +2491,18 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -bson@^6.7.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.8.0.tgz#5063c41ba2437c2b8ff851b50d9e36cb7aaa7525" - integrity sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ== +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" busboy@1.6.0: version "1.6.0" @@ -2416,6 +2615,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + commander@^4.0.0: version "4.1.1" resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" @@ -2493,6 +2697,13 @@ debug@4: dependencies: ms "2.1.2" +debug@^4.3.3, debug@^4.3.4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + decimal.js@^10.3.1, decimal.js@^10.4.3: version "10.4.3" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" @@ -2510,6 +2721,11 @@ deepmerge@4.3.1: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -2552,6 +2768,13 @@ eastasianwidth@^0.2.0: resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -2593,6 +2816,16 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.0.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + fabric@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/fabric/-/fabric-5.3.0.tgz" @@ -2782,6 +3015,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" @@ -2790,13 +3031,26 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -iconv-lite@0.6.3: +https-proxy-agent@^7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== + dependencies: + agent-base "^7.0.2" + debug "4" + +iconv-lite@0.6.3, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + immutable@^4.0.0: version "4.3.7" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" @@ -2810,7 +3064,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2856,6 +3110,11 @@ is-core-module@^2.13.0: dependencies: hasown "^2.0.0" +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" @@ -2883,6 +3142,13 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -2907,6 +3173,11 @@ jiti@^1.21.0: resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +js-md4@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/js-md4/-/js-md4-0.3.2.tgz#cd3b3dc045b0c404556c81ddb5756c23e59d7cf5" + integrity sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA== + "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -2945,6 +3216,56 @@ jsdom@^19.0.0: ws "^8.2.3" xml-name-validator "^4.0.0" +jsonwebtoken@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jwa@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -2975,6 +3296,36 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -2990,6 +3341,11 @@ lodash.omit@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -3024,11 +3380,6 @@ mathjs@^13.0.2: tiny-emitter "^2.1.0" typed-function "^4.2.1" -memory-pager@^1.0.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" - integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== - merge2@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" @@ -3103,28 +3454,28 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mongodb-connection-string-url@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz#c13e6ac284ae401752ebafdb8cd7f16c6723b141" - integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== - dependencies: - "@types/whatwg-url" "^11.0.2" - whatwg-url "^13.0.0" - -mongodb@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.8.0.tgz#680450f113cdea6d2d9f7121fe57cd29111fd2ce" - integrity sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw== - dependencies: - "@mongodb-js/saslprep" "^1.1.5" - bson "^6.7.0" - mongodb-connection-string-url "^3.0.0" - ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mssql@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/mssql/-/mssql-11.0.1.tgz#a32ab7763bfbb3f5d970e47563df3911fc04e21d" + integrity sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w== + dependencies: + "@tediousjs/connection-string" "^0.5.0" + commander "^11.0.0" + debug "^4.3.3" + rfdc "^1.3.0" + tarn "^3.0.2" + tedious "^18.2.1" + mz@^2.7.0: version "2.7.0" resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" @@ -3144,6 +3495,11 @@ nanoid@^3.3.6, nanoid@^3.3.7: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +native-duplexpair@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/native-duplexpair/-/native-duplexpair-1.0.0.tgz#7899078e64bf3c8a3d732601b3d40ff05db58fa0" + integrity sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA== + next-international@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/next-international/-/next-international-1.2.4.tgz#abe50b2aa3ba7ecf92d41f87537796a4b2dd0ba3" @@ -3227,6 +3583,15 @@ once@^1.3.0, once@^1.3.1: dependencies: wrappy "1" +open@^8.0.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + parse5@6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" @@ -3349,6 +3714,11 @@ prisma@^5.17.0: dependencies: "@prisma/engines" "5.17.0" +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -3368,7 +3738,7 @@ psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -punycode@^2.1.1, punycode@^2.3.0: +punycode@^2.1.1: version "2.3.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== @@ -3481,6 +3851,17 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.2.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -3519,6 +3900,11 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -3533,11 +3919,16 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -3588,6 +3979,11 @@ semver@^7.3.5: resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== +semver@^7.5.4: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + server-only@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/server-only/-/server-only-0.0.1.tgz#0f366bb6afb618c37c9255a314535dc412cd1c9e" @@ -3651,12 +4047,15 @@ source-map@~0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sparse-bitfield@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" - integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== - dependencies: - memory-pager "^1.0.2" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +stoppable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" + integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== streamsearch@^1.1.0: version "1.1.0" @@ -3690,7 +4089,7 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -3805,6 +4204,27 @@ tar@^6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" +tarn@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" + integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== + +tedious@^18.2.1: + version "18.3.0" + resolved "https://registry.yarnpkg.com/tedious/-/tedious-18.3.0.tgz#49ef1a26b090d71e4d2b87c7fde6170db07fa6d0" + integrity sha512-/aVCX2VLu9Ihf5UyxifRXfmWQ1P8HNJvapk1as+LMzSdw9AmbNtEHllrffZpNrzBCptcK0Z4m06k+tutL2wowA== + dependencies: + "@azure/core-auth" "^1.7.2" + "@azure/identity" "^4.2.1" + "@azure/keyvault-keys" "^4.4.0" + "@js-joda/core" "^5.6.1" + "@types/node" ">=18" + bl "^6.0.11" + iconv-lite "^0.6.3" + js-md4 "^0.3.2" + native-duplexpair "^1.0.0" + sprintf-js "^1.1.3" + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" @@ -3848,13 +4268,6 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" -tr46@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" - integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== - dependencies: - punycode "^2.3.0" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -3865,7 +4278,7 @@ ts-interface-checker@^0.1.9: resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0, tslib@^2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== @@ -3875,6 +4288,11 @@ typed-function@^4.2.1: resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-4.2.1.tgz#19aa51847aa2dea9ef5e7fb7641c060179a74426" integrity sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA== +undici-types@~6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" + integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" @@ -3925,6 +4343,11 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + uuid@^9.0.1: version "9.0.1" resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" @@ -3982,14 +4405,6 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" -whatwg-url@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-13.0.0.tgz#b7b536aca48306394a34e44bda8e99f332410f8f" - integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== - dependencies: - tr46 "^4.1.1" - webidl-conversions "^7.0.0" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" From aaad92044352a3f9c62cfb294e7d50ad35612ee3 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 7 Aug 2024 13:04:38 +0900 Subject: [PATCH 35/61] =?UTF-8?q?chore:=20package=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +-- yarn.lock | 74 ++++++++++++++++++++++++++-------------------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index c2fd75f6..3cc13b60 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@nextui-org/react": "^2.4.2", - "@prisma/client": "^5.17.0", + "@prisma/client": "^5.18.0", "ag-grid-react": "^32.0.2", "axios": "^1.7.3", "fabric": "^5.3.0", @@ -29,7 +29,7 @@ "devDependencies": { "postcss": "^8", "prettier": "^3.3.3", - "prisma": "^5.17.0", + "prisma": "^5.18.0", "sass": "^1.77.8", "tailwindcss": "^3.4.1" } diff --git a/yarn.lock b/yarn.lock index 28d10bbf..0f4aee9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1352,46 +1352,46 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@prisma/client@^5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.17.0.tgz#9079947bd749689c2dabfb9ecc70a24ebefb1f43" - integrity sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw== +"@prisma/client@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.18.0.tgz#526e4281a448f214c0ff81d65c39243608c98294" + integrity sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw== -"@prisma/debug@5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.17.0.tgz#a765105848993984535b6066f8ebc6e6ead26533" - integrity sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg== +"@prisma/debug@5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.18.0.tgz#527799e044d2903a35945e61ac2d8916e4b61ead" + integrity sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw== -"@prisma/engines-version@5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053": - version "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053.tgz#3c7cc1ef3ebc34cbd069e5873b9982f2aabf5acd" - integrity sha512-tUuxZZysZDcrk5oaNOdrBnnkoTtmNQPkzINFDjz7eG6vcs9AVDmA/F6K5Plsb2aQc/l5M2EnFqn3htng9FA4hg== +"@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169": + version "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169.tgz#203426ebf4ec4e1acce7da4a59ec8f0df92b29e7" + integrity sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg== -"@prisma/engines@5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.17.0.tgz#74dd1aabb22675892760b3cf69a448e3aef4616b" - integrity sha512-+r+Nf+JP210Jur+/X8SIPLtz+uW9YA4QO5IXA+KcSOBe/shT47bCcRMTYCbOESw3FFYFTwe7vU6KTWHKPiwvtg== +"@prisma/engines@5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.18.0.tgz#26ea46e26498be622407cf95663d7fb4c39c895b" + integrity sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg== dependencies: - "@prisma/debug" "5.17.0" - "@prisma/engines-version" "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053" - "@prisma/fetch-engine" "5.17.0" - "@prisma/get-platform" "5.17.0" + "@prisma/debug" "5.18.0" + "@prisma/engines-version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" + "@prisma/fetch-engine" "5.18.0" + "@prisma/get-platform" "5.18.0" -"@prisma/fetch-engine@5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.17.0.tgz#f718dc7426411d1ebeeee53e2d0d38652387f87c" - integrity sha512-ESxiOaHuC488ilLPnrv/tM2KrPhQB5TRris/IeIV4ZvUuKeaicCl4Xj/JCQeG9IlxqOgf1cCg5h5vAzlewN91Q== +"@prisma/fetch-engine@5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.18.0.tgz#5b343e2b36b27e2713901ddd032ddd6932b3d55f" + integrity sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg== dependencies: - "@prisma/debug" "5.17.0" - "@prisma/engines-version" "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053" - "@prisma/get-platform" "5.17.0" + "@prisma/debug" "5.18.0" + "@prisma/engines-version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" + "@prisma/get-platform" "5.18.0" -"@prisma/get-platform@5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.17.0.tgz#89fdcae2adddebbbf0e7bd0474a6c49d6023519b" - integrity sha512-UlDgbRozCP1rfJ5Tlkf3Cnftb6srGrEQ4Nm3og+1Se2gWmCZ0hmPIi+tQikGDUVLlvOWx3Gyi9LzgRP+HTXV9w== +"@prisma/get-platform@5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.18.0.tgz#0dc4c82fe9a4971f4519a57cb2dd69d8e0df4b71" + integrity sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA== dependencies: - "@prisma/debug" "5.17.0" + "@prisma/debug" "5.18.0" "@react-aria/breadcrumbs@3.5.13": version "3.5.13" @@ -3707,12 +3707,12 @@ prettier@^3.3.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== -prisma@^5.17.0: - version "5.17.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.17.0.tgz#267b43921ab94805b010537cffa5ccaf530fa066" - integrity sha512-m4UWkN5lBE6yevqeOxEvmepnL5cNPEjzMw2IqDB59AcEV6w7D8vGljDLd1gPFH+W6gUxw9x7/RmN5dCS/WTPxA== +prisma@^5.18.0: + version "5.18.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.18.0.tgz#5ef69c802a075b7596231ea57003496873610b9e" + integrity sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g== dependencies: - "@prisma/engines" "5.17.0" + "@prisma/engines" "5.18.0" process@^0.11.10: version "0.11.10" From e12a9231860724ea1e5ad122f56677cf3c4c674b Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 7 Aug 2024 14:16:12 +0900 Subject: [PATCH 36/61] feat: Add prisma method --- src/lib/user.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/lib/user.js diff --git a/src/lib/user.js b/src/lib/user.js new file mode 100644 index 00000000..5203053e --- /dev/null +++ b/src/lib/user.js @@ -0,0 +1,31 @@ +'use server' + +const { PrismaClient } = require('@prisma/client') + +const prisma = new PrismaClient() + +export async function createUser({ userId, password }) { + return prisma.m_USER.create({ + data: { + USER_ID: userId, + PASSWORD: password, + }, + }) +} + +export async function getUser(userId) { + return prisma.m_USER.findUnique({ + where: { + user_id: userId, + }, + }) +} + +export async function getUsers() { + return prisma.m_USER.findMany({ + where: { + // USER_ID: 'daiwajoho01', + USER_ID: { in: ['daiwajoho01', 'daiwajoho', 'daiwabutsuryu'] }, + }, + }) +} From 46ecb8fdee6ef01b0b20c0b6595598918cf0d6ef Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Wed, 7 Aug 2024 15:04:55 +0900 Subject: [PATCH 37/61] =?UTF-8?q?polygon=20=EB=82=98=EB=88=84=EB=8A=94=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 4 +- src/util/qpolygon-utils.js | 125 ++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 2 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index 2c7a36ca..c9e7b45f 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -2,7 +2,7 @@ import { fabric } from 'fabric' import { v4 as uuidv4 } from 'uuid' import { QLine } from '@/components/fabric/QLine' import { distanceBetweenPoints, findTopTwoIndexesByDistance, getDirectionByPoint, sortedPointLessEightPoint, sortedPoints } from '@/util/canvas-util' -import { calculateAngle, dividePolygon, drawHelpLineInHexagon } from '@/util/qpolygon-utils' +import { calculateAngle, dividePolygon, drawHelpLineInHexagon, splitPolygonWithLines } from '@/util/qpolygon-utils' export const QPolygon = fabric.util.createClass(fabric.Polygon, { type: 'QPolygon', @@ -450,6 +450,6 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { }) }, divideLine() { - dividePolygon(this) + splitPolygonWithLines(this) }, }) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 96dbf621..9c8ed937 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -2,6 +2,7 @@ import { fabric } from 'fabric' import { QLine } from '@/components/fabric/QLine' import { calculateIntersection, distanceBetweenPoints, findClosestPoint, getDirectionByPoint } from '@/util/canvas-util' import { QPolygon } from '@/components/fabric/QPolygon' +import polygonSplitter from 'polygon-splitter' const TWO_PI = Math.PI * 2 @@ -954,3 +955,127 @@ export default function offsetPolygon(vertices, offset) { } } } + +export const splitPolygonWithLines = (polygon) => { + //todo: polygon의 모든 line들 모음 hip, ridge, connectRidge + const allLines = [...polygon.hips, ...polygon.ridges, ...polygon.connectRidges] + + polygon.points.forEach((point, index) => { + allLines.forEach((line) => { + if (line.endPoint.x === point.x && line.endPoint.y === point.y) { + const temp = line.startPoint + line.startPoint = line.endPoint + line.endPoint = temp + } + }) + }) + + polygon.points.forEach((point, index) => { + const routes = [] + + const polygonPoints = [...polygon.points].map((point, index) => { + return { ...point, index } + }) + + // 시작점은 시작 hip라인의 출발점 + const startPoint = point + // 도착점은 마지막 hip라인의 끝나는 점 + const endPoint = polygon.points[(index + 1) % polygon.points.length] + + const startLine = allLines.find((line) => line.startPoint.x === startPoint.x && line.startPoint.y === startPoint.y) + const endLine = allLines.find((line) => line.startPoint.x === endPoint.x && line.startPoint.y === endPoint.y) + + const arrivalPoint = endLine.endPoint + routes.push(startLine.startPoint) + routes.push(startLine.endPoint) + //hip끼리 만나는 경우는 아무것도 안해도됨 + if (!isSamePoint(startLine.endPoint, arrivalPoint)) { + // polygon line까지 추가 + const allLinesCopy = [...allLines, ...polygon.lines] + // hip이 만나지 않는 경우 갈 수 있는 길을 다 돌아야함 + let currentPoint = startLine.endPoint + let currentLine = startLine + + while (!isSamePoint(currentPoint, arrivalPoint)) { + // startHip에서 만나는 출발선 두개. 두개의 선을 출발하여 arrivalPoint에 도착할 때 까지 count를 세고, 더 낮은 count를 가진 길을 선택한다. + let connectedLines = allLinesCopy.filter( + (line) => isSamePoint(line.startPoint, currentPoint) || (isSamePoint(line.endPoint, currentPoint) && line !== currentLine), + ) + + if (connectedLines.length === 0) { + throw new Error('connectedLines is empty') + } + + let tempPoints = [] + + for (let i = 0; i < connectedLines.length; i++) { + if (isSamePoint(connectedLines[i].startPoint, currentPoint)) { + tempPoints.push({ point: connectedLines[i].endPoint, index: i, line: connectedLines[i] }) + } else { + tempPoints.push({ point: connectedLines[i].startPoint, index: i, line: connectedLines[i] }) + } + } + + //tempPoints에서 arrivalPoint와 가장 가까운 점을 찾는다. + let minDistance = Number.MAX_SAFE_INTEGER + let minIndex = 0 + tempPoints.forEach((tempPoint, index) => { + const distance = Math.sqrt(Math.pow(tempPoint.point.x - arrivalPoint.x, 2) + Math.pow(tempPoint.point.y - arrivalPoint.y, 2)) + if (distance < minDistance) { + minDistance = distance + minIndex = tempPoint.index + } + }) + + currentPoint = tempPoints[minIndex].point + currentLine = tempPoints[minIndex].line + routes.push(currentPoint) + } + } + + routes.push(endLine.startPoint) + const roof = new QPolygon(routes, { + fontSize: polygon.fontSize, + stroke: 'black', + fill: 'transparent', + strokeWidth: 3, + name: 'roof', + }) + + polygon.canvas.add(roof) + polygon.canvas.renderAll() + }) +} + +const isSamePoint = (a, b) => { + return a.x === b.x && a.y === b.y +} + +/** + * Calculate the angle between two lines. + * @param {Object} line1 - The first line defined by two points {x1, y1} and {x2, y2}. + * @param {Object} line2 - The second line defined by two points {x1, y1} and {x2, y2}. + * @returns {number} - The angle between the two lines in degrees. + */ +function calculateAngleBetweenLines(line1, line2) { + const { x1: x1_1, y1: y1_1, x2: x2_1, y2: y2_1 } = line1 + const { x1: x1_2, y1: y1_2, x2: x2_2, y2: y2_2 } = line2 + + // Calculate direction vectors + const vector1 = { x: x2_1 - x1_1, y: y2_1 - y1_1 } + const vector2 = { x: x2_2 - x1_2, y: y2_2 - y1_2 } + + // Calculate dot product and magnitudes + const dotProduct = vector1.x * vector2.x + vector1.y * vector2.y + const magnitude1 = Math.sqrt(vector1.x * vector1.x + vector1.y * vector1.y) + const magnitude2 = Math.sqrt(vector2.x * vector2.x + vector2.y * vector2.y) + + // Calculate the cosine of the angle + const cosTheta = dotProduct / (magnitude1 * magnitude2) + + // Calculate the angle in radians and then convert to degrees + const angleInRadians = Math.acos(cosTheta) + const angleInDegrees = (angleInRadians * 180) / Math.PI + + return angleInDegrees +} From 34def76dc44131ef39e378fee566c519cd1c8ce3 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Wed, 7 Aug 2024 15:10:32 +0900 Subject: [PATCH 38/61] =?UTF-8?q?=EB=8B=A4=EA=B0=81=ED=98=95=20=EB=AA=A8?= =?UTF-8?q?=EC=9E=84=EC=A7=80=EB=B6=95=20=EA=B3=84=EC=82=B0=20=EC=A4=91=20?= =?UTF-8?q?1=EC=B0=A8=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 26 ++ src/util/qpolygon-utils.js | 653 ++++++++++++++++++++++++------------- 2 files changed, 453 insertions(+), 226 deletions(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index ab867827..922215a5 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -214,6 +214,17 @@ export default function Roof2() { { x: 1100, y: 200 }, ] + const eightPoint5 = [ + { x: 140, y: 101 }, + { x: 140, y: 601 }, + { x: 440, y: 601 }, + { x: 440, y: 801 }, + { x: 840, y: 801 }, + { x: 840, y: 601 }, + { x: 1140, y: 601 }, + { x: 1140, y: 101 }, + ] + const twelvePoint = [ { x: 195, y: 166 }, { x: 195, y: 466 }, @@ -229,6 +240,21 @@ export default function Roof2() { { x: 995, y: 166 }, ] + const twelvePoint2 = [ + { x: 165, y: 81 }, + { x: 165, y: 1081 }, + { x: 465, y: 1081 }, + { x: 465, y: 781 }, + { x: 765, y: 781 }, + { x: 765, y: 1081 }, + { x: 1065, y: 1081 }, + { x: 1065, y: 581 }, + { x: 765, y: 581 }, + { x: 765, y: 281 }, + { x: 1065, y: 281 }, + { x: 1065, y: 81 }, + ] + const complicatedType = [ { x: 100, y: 100 }, { x: 100, y: 1100 }, diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 1acc3d27..0999660c 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -1,6 +1,13 @@ import { fabric } from 'fabric' import { QLine } from '@/components/fabric/QLine' -import { calculateIntersection, distanceBetweenPoints, findClosestPoint, getDirectionByPoint } from '@/util/canvas-util' +import { + calculateIntersection, + distanceBetweenPoints, + findClosestPoint, + getAdjacent, + getDirectionByPoint, + getRoofHypotenuse, +} from '@/util/canvas-util' import { QPolygon } from '@/components/fabric/QPolygon' const TWO_PI = Math.PI * 2 @@ -958,7 +965,7 @@ export default function offsetPolygon(vertices, offset) { export const drawHippedRoof = (polygon, chon) => { drawRoofRidge(polygon) drawHips(polygon) - // connectLinePoint(polygon) + connectLinePoint(polygon) } /*마루 그리기 외벽의 모양이 돌출된 ㄷ의 형태일때 @@ -969,6 +976,7 @@ export const drawHippedRoof = (polygon, chon) => { */ const drawRoofRidge = (polygon) => { const lines = polygon.wall.lines + console.log('polygon.wall.points : ', polygon.wall.points) polygon.lines.forEach((value, index) => { let currentLine, prevWall, currentWall, nextWall let startXPoint, startYPoint, endXPoint, endYPoint @@ -1031,11 +1039,42 @@ const drawRoofRidge = (polygon) => { } }, undefined) + console.log('여기 확인 ===== currentWall : ', currentWall) let acrossLine = lines .filter((line) => { + /*let minAcrossX, maxAcrossX, minAcrossY, maxAcrossY + if (currentWall.direction === 'top' || currentWall.direction === 'bottom') { + minAcrossX = Math.min(currentWall.x1, line.x1) + maxAcrossX = Math.max(currentWall.x1, line.x1) + minAcrossY = Math.min(currentWall.y1, currentWall.y2) + maxAcrossY = Math.max(currentWall.y1, currentWall.y2) + } + if (currentWall.direction === 'left' || currentWall.direction === 'right') { + minAcrossX = Math.min(currentWall.x1, currentWall.x2) + maxAcrossX = Math.max(currentWall.x1, currentWall.x2) + minAcrossY = Math.min(currentWall.y1, line.y1) + maxAcrossY = Math.max(currentWall.y1, line.y1) + } + let coordinate = [ + { x: minAcrossX, y: minAcrossY }, + { x: minAcrossX, y: maxAcrossY }, + { x: maxAcrossX, y: maxAcrossY }, + { x: maxAcrossX, y: minAcrossY }, + ] + console.log('coordinate : ', coordinate) + let isPointInLine = false + lines.forEach((l) => { + if (getPointInPolygon(coordinate, { x: l.x1, y: l.y1 }, true)) { + isPointInLine = true + } + }) + console.log('line : ', line) + console.log('isPointInLine : ', isPointInLine)*/ + // if (!isPointInLine && (currentWall.direction === 'top' || currentWall.direction === 'bottom')) { if (currentWall.direction === 'top' || currentWall.direction === 'bottom') { return line.direction === 'top' || line.direction === 'bottom' } + // if (!isPointInLine && (currentWall.direction === 'left' || currentWall.direction === 'right')) { if (currentWall.direction === 'left' || currentWall.direction === 'right') { return line.direction === 'left' || line.direction === 'right' } @@ -1081,14 +1120,14 @@ const drawRoofRidge = (polygon) => { let ridgeLengthToWall, ridgeBaseLength, ridgeLengthToAcrossLine, ridgeMaxLength - console.log('currentWall : ', currentWall.length) - console.log('innerPointLine : ', innerPointLine) + // console.log('currentWall : ', currentWall.length) + // console.log('innerPointLine : ', innerPointLine) if (innerPointLine !== undefined) { if (currentWall.direction === 'top' || currentWall.direction === 'bottom') { - console.log('currentWall : ', currentWall) - console.log('acrossLine : ', acrossLine) + // console.log('currentWall : ', currentWall) + // console.log('acrossLine : ', acrossLine) if (innerPointLine.y1 === innerPointLine.y2) { - console.log('innerPointLine : ', innerPointLine) + // console.log('innerPointLine : ', innerPointLine) ridgeBaseLength = Math.abs(currentWall.y1 - innerPointLine.y1) ridgeLengthToWall = Math.max(prevWall.length, nextWall.length, Math.abs(currentWall.x1 - acrossLine.x1)) - ridgeBaseLength ridgeLengthToWall = Math.min( @@ -1111,7 +1150,7 @@ const drawRoofRidge = (polygon) => { ridgeLengthToAcrossLine = Math.abs(acrossLine.x1 - innerPointLine.x1) ridgeMaxLength = Math.max(prevWall.length, nextWall.length, Math.abs(currentWall.x1 - acrossLine.x1)) } - console.log( + /*console.log( 'ridgeBaseLength : ', ridgeBaseLength, ' ridgeLengthToWall : ', @@ -1120,7 +1159,7 @@ const drawRoofRidge = (polygon) => { ridgeLengthToAcrossLine, 'ridgeMaxLength : ', ridgeMaxLength, - ) + )*/ if (ridgeBaseLength > 0) { if (ridgeLengthToWall <= ridgeLengthToAcrossLine) { if (nextWall.direction === 'right') { @@ -1152,7 +1191,7 @@ const drawRoofRidge = (polygon) => { } } if (currentWall.direction === 'right' || currentWall.direction === 'left') { - console.log('currentWall.length : ', currentWall.length) + // console.log('currentWall.length : ', currentWall.length) if (innerPointLine.x1 === innerPointLine.x2) { ridgeBaseLength = Math.abs(currentWall.x1 - innerPointLine.x1) ridgeLengthToWall = Math.max(prevWall.length, nextWall.length, Math.abs(currentWall.x1 - acrossLine.x1)) - ridgeBaseLength @@ -1176,14 +1215,14 @@ const drawRoofRidge = (polygon) => { ridgeLengthToAcrossLine = Math.abs(acrossLine.y1 - innerPointLine.y1) ridgeMaxLength = Math.max(prevWall.length, nextWall.length, Math.abs(currentWall.y1 - acrossLine.y1)) } - console.log( + /*console.log( 'ridgeBaseLength : ', ridgeBaseLength, ' ridgeLengthToWall : ', ridgeLengthToWall, ' ridgeLengthToAcrossLine : ', ridgeLengthToAcrossLine, - ) + )*/ if (ridgeBaseLength > 0) { if (ridgeLengthToWall <= ridgeLengthToAcrossLine) { if (nextWall.direction === 'top') { @@ -1215,11 +1254,15 @@ const drawRoofRidge = (polygon) => { } } } else { + // console.log('여기부터 확인 currentWall : ', currentWall.length) + // console.log('acrossLine : ', acrossLine) ridgeBaseLength = currentWall.length ridgeLengthToWall = Math.min(prevWall.length, nextWall.length) ridgeMaxLength = Math.max(prevWall.length, nextWall.length) + // console.log('ridgeBaseLength : ', ridgeBaseLength, ' ridgeLengthToWall : ', ridgeLengthToWall, ' ridgeMaxLength : ', ridgeMaxLength) if (currentWall.direction === 'top' || currentWall.direction === 'bottom') { ridgeLengthToAcrossLine = Math.abs(acrossLine.x1 - currentWall.x1) - ridgeBaseLength + ridgeMaxLength = Math.max(ridgeMaxLength, Math.abs(acrossLine.x1 - currentWall.x1)) if (ridgeLengthToWall <= ridgeLengthToAcrossLine) { if (nextWall.direction === 'right') { startXPoint = currentWall.x1 + ridgeBaseLength / 2 @@ -1250,6 +1293,7 @@ const drawRoofRidge = (polygon) => { } if (currentWall.direction === 'left' || currentWall.direction === 'right') { ridgeLengthToAcrossLine = Math.abs(acrossLine.y1 - currentWall.y1) - ridgeBaseLength + ridgeMaxLength = Math.max(ridgeMaxLength, Math.abs(acrossLine.x1 - currentWall.x1)) if (ridgeLengthToWall <= ridgeLengthToAcrossLine) { if (nextWall.direction === 'top') { startYPoint = currentWall.y1 - ridgeBaseLength / 2 @@ -1279,7 +1323,8 @@ const drawRoofRidge = (polygon) => { } } } - console.log(startXPoint, startYPoint, endXPoint, endYPoint) + // console.log('ridgeLengthToAcrossLine : ', ridgeLengthToAcrossLine) + // console.log(startXPoint, startYPoint, endXPoint, endYPoint) if ( // polygon.ridges.length < getMaxRidge(lines.length) && ridgeBaseLength <= ridgeMaxLength && @@ -1304,7 +1349,7 @@ const drawRoofRidge = (polygon) => { }) //중복 제거 polygon.ridges = polygon.ridges.filter((ridge, index, self) => index === self.findIndex((t) => t.x1 === ridge.x1 && t.y1 === ridge.y1)) - console.log('polygon.ridges', polygon.ridges) + // console.log('polygon.ridges', polygon.ridges) } const drawHips = (polygon) => { /* @@ -1358,44 +1403,120 @@ const drawHips = (polygon) => { } }, undefined) if (leftTop !== undefined) { - const hip = new QLine([leftTop.x1, leftTop.y1, ridge.x1, ridge.y1], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if ( + r.x1 < ridge.x1 && + r.y1 < ridge.y1 && + (r.y1 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x1 - rightTop.x1) * (ridge.y1 - rightTop.y1) + ) { + isRidgePointOnLine = true + } + if ( + r.x2 < ridge.x1 && + r.y2 < ridge.y1 && + (r.y2 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x2 - rightTop.x1) * (ridge.y1 - rightTop.y1) + ) { + isRidgePointOnLine = true + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([leftTop.x1, leftTop.y1, ridge.x1, ridge.y1], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } if (leftBottom !== undefined) { - const hip = new QLine([leftBottom.x1, leftBottom.y1, ridge.x1, ridge.y1], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if ( + r.x1 < ridge.x1 && + r.y1 > ridge.y1 && + (r.y1 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x1 - rightTop.x1) * (ridge.y1 - rightTop.y1) + ) { + isRidgePointOnLine = true + } + if ( + r.x2 < ridge.x1 && + r.y2 > ridge.y1 && + (r.y2 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x2 - rightTop.x1) * (ridge.y1 - rightTop.y1) + ) { + isRidgePointOnLine = true + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([leftBottom.x1, leftBottom.y1, ridge.x1, ridge.y1], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } if (rightTop !== undefined) { - const hip = new QLine([rightTop.x1, rightTop.y1, ridge.x2, ridge.y2], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if ( + r.x1 > ridge.x2 && + r.y1 < ridge.y2 && + (r.y1 - rightTop.y1) * (ridge.x2 - rightTop.x1) === (r.x1 - rightTop.x1) * (ridge.y2 - rightTop.y1) + ) { + isRidgePointOnLine = true + } + if ( + r.x2 > ridge.x2 && + r.y2 < ridge.y2 && + (r.y2 - rightTop.y1) * (ridge.x2 - rightTop.x1) === (r.x2 - rightTop.x1) * (ridge.y2 - rightTop.y1) + ) { + isRidgePointOnLine = true + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([rightTop.x1, rightTop.y1, ridge.x2, ridge.y2], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } if (rightBottom !== undefined) { - const hip = new QLine([rightBottom.x1, rightBottom.y1, ridge.x2, ridge.y2], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if ( + r.x1 > ridge.x2 && + r.y1 > ridge.y2 && + (r.y1 - rightBottom.y1) * (ridge.x2 - rightBottom.x1) === (r.x1 - rightBottom.x1) * (ridge.y2 - rightBottom.y1) + ) { + isRidgePointOnLine = true + } + if ( + r.x2 > ridge.x2 && + r.y2 > ridge.y2 && + (r.y2 - rightBottom.y1) * (ridge.x2 - rightBottom.x1) === (r.x2 - rightBottom.x1) * (ridge.y2 - rightBottom.y1) + ) { + isRidgePointOnLine = true + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([rightBottom.x1, rightBottom.y1, ridge.x2, ridge.y2], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } } if (ridge.x1 === ridge.x2) { @@ -1443,63 +1564,119 @@ const drawHips = (polygon) => { }, undefined) if (leftTop !== undefined) { - const hip = new QLine([leftTop.x1, leftTop.y1, ridge.x1, ridge.y1], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if (r.x1 < ridge.x1 && r.y1 < ridge.y1) { + if ((r.y1 - leftTop.y1) * (ridge.x1 - leftTop.x1) === (r.x1 - leftTop.x1) * (ridge.y1 - leftTop.y1)) { + isRidgePointOnLine = true + } + } + if (r.x2 < ridge.x1 && r.y2 < ridge.y1) { + if ((r.y2 - leftTop.y1) * (ridge.x1 - leftTop.x1) === (r.x2 - leftTop.x1) * (ridge.y1 - leftTop.y1)) { + isRidgePointOnLine = true + } + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([leftTop.x1, leftTop.y1, ridge.x1, ridge.y1], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } if (rightTop !== undefined) { - console.log('rightTop : ', rightTop) + let isRidgePointOnLine = false polygon.ridges.forEach((r) => { if (r.x1 > ridge.x1 && r.y1 < ridge.y1) { - console.log('ridge : ', r) - console.log((r.y1 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x1 - rightTop.x1) * (ridge.y1 - rightTop.y1)) + if ((r.y1 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x1 - rightTop.x1) * (ridge.y1 - rightTop.y1)) { + isRidgePointOnLine = true + } } if (r.x2 > ridge.x1 && r.y2 < ridge.y1) { - console.log('ridge : ', r) - console.log((r.y2 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x2 - rightTop.x1) * (ridge.y1 - rightTop.y1)) + if ((r.y2 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (r.x2 - rightTop.x1) * (ridge.y1 - rightTop.y1)) { + isRidgePointOnLine = true + } } }) - const hip = new QLine([rightTop.x1, rightTop.y1, ridge.x1, ridge.y1], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, - }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([rightTop.x1, rightTop.y1, ridge.x1, ridge.y1], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } if (leftBottom !== undefined) { - const hip = new QLine([leftBottom.x1, leftBottom.y1, ridge.x2, ridge.y2], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if ( + r.x1 < ridge.x2 && + r.y1 > ridge.y2 && + (r.y1 - leftBottom.y1) * (ridge.x2 - leftBottom.x1) === (r.x1 - leftBottom.x1) * (ridge.y2 - leftBottom.y1) + ) { + isRidgePointOnLine = true + } + if ( + r.x2 < ridge.x2 && + r.y2 > ridge.y2 && + (r.y2 - leftBottom.y1) * (ridge.x2 - leftBottom.x1) === (r.x2 - leftBottom.x1) * (ridge.y2 - leftBottom.y1) + ) { + isRidgePointOnLine = true + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + console.log('leftBottom isRidgePointOnLine : ', isRidgePointOnLine) + if (!isRidgePointOnLine) { + const hip = new QLine([leftBottom.x1, leftBottom.y1, ridge.x2, ridge.y2], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } if (rightBottom !== undefined) { - const hip = new QLine([rightBottom.x1, rightBottom.y1, ridge.x2, ridge.y2], { - fontSize: polygon.fontSize, - stroke: 'red', - strokeWidth: 1, + let isRidgePointOnLine = false + polygon.ridges.forEach((r) => { + if ( + r.x1 < ridge.x2 && + r.y1 > ridge.y2 && + (r.y1 - rightBottom.y1) * (ridge.x2 - rightBottom.x1) === (r.x1 - rightBottom.x1) * (ridge.y2 - rightBottom.y1) + ) { + isRidgePointOnLine = true + } + if ( + r.x2 < ridge.x2 && + r.y2 > ridge.y2 && + (r.y2 - rightBottom.y1) * (ridge.x2 - rightBottom.x1) === (r.x2 - rightBottom.x1) * (ridge.y2 - rightBottom.y1) + ) { + isRidgePointOnLine = true + } }) - polygon.canvas.add(hip) - polygon.hips.push(hip) - polygon.innerLines.push(hip) + if (!isRidgePointOnLine) { + const hip = new QLine([rightBottom.x1, rightBottom.y1, ridge.x2, ridge.y2], { + fontSize: polygon.fontSize, + stroke: 'red', + strokeWidth: 1, + }) + polygon.canvas.add(hip) + polygon.hips.push(hip) + polygon.innerLines.push(hip) + } } } }) - console.log('polygon.hips : ', polygon.hips) - // 가장 가까운 마루를 확인하여 그릴 수 있는 라인이 존재하면 먼저 그린다. - /*let prevLine, currentLine, nextLine + let prevLine, currentLine, nextLine polygon.lines.forEach((value, index) => { if (index === 0) { prevLine = polygon.lines[polygon.lines.length - 1] @@ -1525,26 +1702,50 @@ const drawHips = (polygon) => { nearRidge = polygon.ridges .filter( (ridge) => - (currentLine.x1 < ridge.x1 && currentLine.y1 > ridge.y1) || - (currentLine.x1 < ridge.x2 && - currentLine.y1 > ridge.y2 && - (Math.abs(currentLine.x1 - ridge.x1) === Math.abs(currentLine.y1 - ridge.y1) || - Math.abs(currentLine.x1 - ridge.x2) === Math.abs(currentLine.y1 - ridge.y2))), + ((currentLine.x1 < ridge.x1 && currentLine.y1 > ridge.y1) || (currentLine.x1 < ridge.x2 && currentLine.y1 > ridge.y2)) && + (Math.abs(currentLine.x1 - ridge.x1) === Math.abs(currentLine.y1 - ridge.y1) || + Math.abs(currentLine.x1 - ridge.x2) === Math.abs(currentLine.y1 - ridge.y2)), ) .reduce((prev, current) => { if (prev !== undefined) { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev + if ( + currentLine.x1 < current.x1 && + currentLine.y1 > current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x1, + y: current.y1, + } + : prev + } else if ( + currentLine.x1 < current.x2 && + currentLine.y1 > current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return Math.min(Math.abs(current.x2 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x2, + y: current.y2, + } + : prev } else { return prev } } else { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return current - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return current + if ( + currentLine.x1 < current.x1 && + currentLine.y1 > current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return { x: current.x1, y: current.y1 } + } else if ( + currentLine.x1 < current.x2 && + currentLine.y1 > current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return { x: current.x2, y: current.y2 } } else { return undefined } @@ -1561,18 +1762,44 @@ const drawHips = (polygon) => { ) .reduce((prev, current) => { if (prev !== undefined) { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev + if ( + currentLine.x1 < current.x1 && + currentLine.y1 < current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x1, + y: current.y1, + } + : prev + } else if ( + currentLine.x1 < current.x2 && + currentLine.y1 < current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x2, + y: current.y2, + } + : prev } else { return prev } } else { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return current - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return current + if ( + currentLine.x1 < current.x1 && + currentLine.y1 < current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return { x: current.x1, y: current.y1 } + } else if ( + currentLine.x1 < current.x2 && + currentLine.y1 < current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return { x: current.x2, y: current.y2 } } else { return undefined } @@ -1589,18 +1816,44 @@ const drawHips = (polygon) => { ) .reduce((prev, current) => { if (prev !== undefined) { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev + if ( + currentLine.x1 > current.x1 && + currentLine.y1 < current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x1, + y: current.y1, + } + : prev + } else if ( + currentLine.x1 > current.x2 && + currentLine.y1 < current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x2, + y: current.y2, + } + : prev } else { return prev } } else { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return current - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return current + if ( + currentLine.x1 > current.x1 && + currentLine.y1 < current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return { x: current.x1, y: current.y1 } + } else if ( + currentLine.x1 > current.x2 && + currentLine.y1 < current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return { x: current.x2, y: current.y2 } } else { return undefined } @@ -1617,18 +1870,44 @@ const drawHips = (polygon) => { ) .reduce((prev, current) => { if (prev !== undefined) { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x1 - currentLine.x1)) ? current : prev + if ( + currentLine.x1 > current.x1 && + currentLine.y1 > current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x1, + y: current.y1, + } + : prev + } else if ( + currentLine.x1 > current.x2 && + currentLine.y1 > current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return Math.min(Math.abs(current.x1 - currentLine.x1)) < Math.min(Math.abs(prev.x - currentLine.x1)) + ? { + x: current.x2, + y: current.y2, + } + : prev } else { return prev } } else { - if (Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1)) { - return current - } else if (Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2)) { - return current + if ( + currentLine.x1 > current.x1 && + currentLine.y1 > current.y1 && + Math.abs(currentLine.x1 - current.x1) === Math.abs(currentLine.y1 - current.y1) + ) { + return { x: current.x1, y: current.y1 } + } else if ( + currentLine.x1 > current.x2 && + currentLine.y1 > current.y2 && + Math.abs(currentLine.x1 - current.x2) === Math.abs(currentLine.y1 - current.y2) + ) { + return { x: current.x2, y: current.y2 } } else { return undefined } @@ -1637,116 +1916,44 @@ const drawHips = (polygon) => { break } - // console.log('nearRidge : ', nearRidge) + console.log('nearRidge : ', nearRidge) - if (nearRidge !== undefined && nearRidge.length > 0) { + if (nearRidge !== undefined) { let endXPoint, endYPoint let minX, maxX, minY, maxY switch (dVector) { case 45: - if ( - currentLine.x1 < nearRidge.x1 && - currentLine.y1 > nearRidge.y1 && - Math.abs(currentLine.x1 - nearRidge.x1) === Math.abs(currentLine.y1 - nearRidge.y1) - ) { - endXPoint = nearRidge.x1 - endYPoint = nearRidge.y1 - minX = Math.min(currentLine.x1, nearRidge.x1) - minY = Math.min(currentLine.y1, nearRidge.y1) - maxX = Math.max(currentLine.x1, nearRidge.x1) - maxY = Math.max(currentLine.y1, nearRidge.y1) - } - if ( - currentLine.x1 < nearRidge.x2 && - currentLine.y1 > nearRidge.y2 && - Math.abs(currentLine.x1 - nearRidge.x2) === Math.abs(currentLine.y1 - nearRidge.y2) - ) { - endXPoint = nearRidge.x2 - endYPoint = nearRidge.y2 - minX = Math.min(currentLine.x1, nearRidge.x2) - minY = Math.min(currentLine.y1, nearRidge.y2) - maxX = Math.max(currentLine.x1, nearRidge.x2) - maxY = Math.max(currentLine.y1, nearRidge.y2) - } + endXPoint = nearRidge.x + endYPoint = nearRidge.y + minX = Math.min(currentLine.x1, nearRidge.x) + minY = Math.min(currentLine.y1, nearRidge.y) + maxX = Math.max(currentLine.x1, nearRidge.x) + maxY = Math.max(currentLine.y1, nearRidge.y) break case 135: - if ( - currentLine.x1 < nearRidge.x1 && - currentLine.y1 < nearRidge.y1 && - Math.abs(currentLine.x1 - nearRidge.x1) === Math.abs(currentLine.y1 - nearRidge.y1) - ) { - endXPoint = nearRidge.x1 - endYPoint = nearRidge.y1 - minX = Math.min(currentLine.x1, nearRidge.x1) - minY = Math.min(currentLine.y1, nearRidge.y1) - maxX = Math.max(currentLine.x1, nearRidge.x1) - maxY = Math.max(currentLine.y1, nearRidge.y1) - } - if ( - currentLine.x1 < nearRidge.x2 && - currentLine.y1 < nearRidge.y2 && - Math.abs(currentLine.x1 - nearRidge.x2) === Math.abs(currentLine.y1 - nearRidge.y2) - ) { - endXPoint = nearRidge.x2 - endYPoint = nearRidge.y2 - minX = Math.min(currentLine.x1, nearRidge.x2) - minY = Math.min(currentLine.y1, nearRidge.y2) - maxX = Math.max(currentLine.x1, nearRidge.x2) - maxY = Math.max(currentLine.y1, nearRidge.y2) - } + endXPoint = nearRidge.x + endYPoint = nearRidge.y + minX = Math.min(currentLine.x1, nearRidge.x) + minY = Math.min(currentLine.y1, nearRidge.y) + maxX = Math.max(currentLine.x1, nearRidge.x) + maxY = Math.max(currentLine.y1, nearRidge.y) break case 225: - if ( - currentLine.x1 > nearRidge.x1 && - currentLine.y1 < nearRidge.y1 && - Math.abs(currentLine.x1 - nearRidge.x1) === Math.abs(currentLine.y1 - nearRidge.y1) - ) { - endXPoint = nearRidge.x1 - endYPoint = nearRidge.y1 - minX = Math.min(currentLine.x1, nearRidge.x1) - minY = Math.min(currentLine.y1, nearRidge.y1) - maxX = Math.max(currentLine.x1, nearRidge.x1) - maxY = Math.max(currentLine.y1, nearRidge.y1) - } - if ( - currentLine.x1 > nearRidge.x2 && - currentLine.y1 < nearRidge.y2 && - Math.abs(currentLine.x1 - nearRidge.x2) === Math.abs(currentLine.y1 - nearRidge.y2) - ) { - endXPoint = nearRidge.x2 - endYPoint = nearRidge.y2 - minX = Math.min(currentLine.x1, nearRidge.x2) - minY = Math.min(currentLine.y1, nearRidge.y2) - maxX = Math.max(currentLine.x1, nearRidge.x2) - maxY = Math.max(currentLine.y1, nearRidge.y2) - } + endXPoint = nearRidge.x + endYPoint = nearRidge.y + minX = Math.min(currentLine.x1, nearRidge.x) + minY = Math.min(currentLine.y1, nearRidge.y) + maxX = Math.max(currentLine.x1, nearRidge.x) + maxY = Math.max(currentLine.y1, nearRidge.y) break case 315: - if ( - currentLine.x1 > nearRidge.x1 && - currentLine.y1 > nearRidge.y1 && - Math.abs(currentLine.x1 - nearRidge.x1) === Math.abs(currentLine.y1 - nearRidge.y1) - ) { - endXPoint = nearRidge.x1 - endYPoint = nearRidge.y1 - minX = Math.min(currentLine.x1, nearRidge.x1) - minY = Math.min(currentLine.y1, nearRidge.y1) - maxX = Math.max(currentLine.x1, nearRidge.x1) - maxY = Math.max(currentLine.y1, nearRidge.y1) - } - if ( - currentLine.x1 > nearRidge.x2 && - currentLine.y1 > nearRidge.y2 && - Math.abs(currentLine.x1 - nearRidge.x2) === Math.abs(currentLine.y1 - nearRidge.y2) - ) { - endXPoint = nearRidge.x2 - endYPoint = nearRidge.y2 - minX = Math.min(currentLine.x1, nearRidge.x2) - minY = Math.min(currentLine.y1, nearRidge.y2) - maxX = Math.max(currentLine.x1, nearRidge.x2) - maxY = Math.max(currentLine.y1, nearRidge.y2) - } + endXPoint = nearRidge.x + endYPoint = nearRidge.y + minX = Math.min(currentLine.x1, nearRidge.x) + minY = Math.min(currentLine.y1, nearRidge.y) + maxX = Math.max(currentLine.x1, nearRidge.x) + maxY = Math.max(currentLine.y1, nearRidge.y) break } @@ -1858,27 +2065,21 @@ const drawHips = (polygon) => { polygon.hips.push(hip) polygon.innerLines.push(hip) } - })*/ + }) // this.canvas.renderAll() } -const isRidgePointOnLine = (polygon, x1, y1, x2, y2) => { - let isRidgePointOnLine = false - - polygon.ridges.forEach((ridge) => { - console.log((ridge.y1 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (ridge.x1 - rightTop.x1) * (ridge.y1 - rightTop.y1)) - console.log((ridge.y2 - rightTop.y1) * (ridge.x1 - rightTop.x1) === (ridge.x2 - rightTop.x1) * (ridge.y1 - rightTop.y1)) - }) -} - -const getPointInPolygon = (polygon, point) => { +const getPointInPolygon = (polygon, point, isInclude = false) => { let inside = false let minX = Math.min(polygon[0].x, polygon[1].x, polygon[2].x, polygon[3].x), maxX = Math.max(polygon[0].x, polygon[1].x, polygon[2].x, polygon[3].x), minY = Math.min(polygon[0].y, polygon[1].y, polygon[2].y, polygon[3].y), maxY = Math.max(polygon[0].y, polygon[1].y, polygon[2].y, polygon[3].y) - if (minX < point.x && point.x < maxX && minY < point.y && point.y < maxY) { + if (!isInclude && minX < point.x && point.x < maxX && minY < point.y && point.y < maxY) { + inside = true + } + if (isInclude && minX <= point.x && point.x <= maxX && minY <= point.y && point.y <= maxY) { inside = true } return inside From 4b6dae85cc65e2043699c1e55cd14b9caf79ccf1 Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 7 Aug 2024 15:12:18 +0900 Subject: [PATCH 39/61] =?UTF-8?q?-=20Toast=20Component=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4320 ++++++++++++++++++++++++++++++++++-- package.json | 1 + src/app/test/page.js | 50 + src/components/ui/Toast.js | 30 + src/styles/style.scss | 3 +- yarn.lock | 2026 +++++++++-------- 6 files changed, 5344 insertions(+), 1086 deletions(-) create mode 100644 src/app/test/page.js create mode 100644 src/components/ui/Toast.js diff --git a/package-lock.json b/package-lock.json index 463cc5fb..9610f12a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,14 +8,25 @@ "name": "q.cast.prototype-nontype", "version": "0.1.0", "dependencies": { + "@nextui-org/react": "^2.4.2", + "@prisma/client": "^5.17.0", + "axios": "^1.7.3", "fabric": "^5.3.0", + "framer-motion": "^11.2.13", + "mathjs": "^13.0.2", + "mongodb": "^6.8.0", "next": "14.2.3", "react": "^18", "react-dom": "^18", + "react-toastify": "^10.0.5", + "recoil": "^0.7.7", "uuid": "^9.0.1" }, "devDependencies": { "postcss": "^8", + "prettier": "^3.3.3", + "prisma": "^5.17.0", + "sass": "^1.77.8", "tailwindcss": "^3.4.1" } }, @@ -23,7 +34,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "engines": { "node": ">=10" }, @@ -31,11 +41,108 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/runtime": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", + "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", + "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/icu-skeleton-parser": "1.8.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", + "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@internationalized/date": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz", + "integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.4.tgz", + "integrity": "sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.3.tgz", + "integrity": "sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.3.tgz", + "integrity": "sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -52,7 +159,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -66,7 +172,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -75,7 +180,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -83,14 +187,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -116,6 +218,15 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz", + "integrity": "sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==", + "license": "MIT", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@next/env": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", @@ -256,11 +367,1399 @@ "node": ">= 10" } }, + "node_modules/@nextui-org/accordion": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/@nextui-org/accordion/-/accordion-2.0.38.tgz", + "integrity": "sha512-kFCZU1VaKkUI295Fg3NxuQR2+kZ5vTH4ftIs0oByrOs0+l14dVQGFOd9ZV402fHNykZJt7Sk6oWjTp4Qwl83JA==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/divider": "2.0.31", + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-accordion": "2.0.7", + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-stately/tree": "3.8.1", + "@react-types/accordion": "3.0.0-alpha.21", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/aria-utils": { + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@nextui-org/aria-utils/-/aria-utils-2.0.24.tgz", + "integrity": "sha512-YD+YvT01zFqN1Ey137OeFl9SEhAYf2BoZz+ykWiIJlMjl/LY1d5WE0nkzsjMHh6MV3HgS6CExxlf7TuApN6Piw==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-rsc-utils": "2.0.13", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system": "2.2.5", + "@react-aria/utils": "3.24.1", + "@react-stately/collections": "3.10.7", + "@react-stately/overlays": "3.6.7", + "@react-types/overlays": "3.8.7", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/autocomplete": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nextui-org/autocomplete/-/autocomplete-2.1.5.tgz", + "integrity": "sha512-VcSe3B/CmIvfZnAJHHYKp3r83QrqI0T8v9jjrpQ0PN8qKOc7LmQUsvnAkBRuHCLlaC1xPwZtyJp0TJyRF8tM3w==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/button": "2.0.37", + "@nextui-org/input": "2.2.4", + "@nextui-org/listbox": "2.1.25", + "@nextui-org/popover": "2.1.27", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/scroll-shadow": "2.1.19", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/spinner": "2.0.33", + "@nextui-org/use-aria-button": "2.0.10", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/combobox": "3.9.1", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/combobox": "3.8.4", + "@react-types/combobox": "3.11.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/avatar": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/avatar/-/avatar-2.0.32.tgz", + "integrity": "sha512-2dCpIKuGvbOVLJ6m2AkNhPqqamIin3FDqDLop2ILNhyAxgxPYitqE3JqsUA/hlZCzu79sZudruuubzHWzHqf0Q==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-image": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/badge": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/badge/-/badge-2.0.31.tgz", + "integrity": "sha512-ayOw9j6Fa/RxZjk+2AhhBzXFm2Xv2RNYMrXAqGaJ+cbhofsqu8QnP0/4W+CiVXx8C0jpPmNAgSklRXgbKHs10Q==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/breadcrumbs": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@nextui-org/breadcrumbs/-/breadcrumbs-2.0.12.tgz", + "integrity": "sha512-PCZI7xqu1UrjJcCkd6HwGJ+h2L5k6LMBQRVbD8/7jMKkJxpoQXC7h5uCtEeLG2CafVih4cUCBTuzUnsubtKLnQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/breadcrumbs": "3.5.13", + "@react-aria/focus": "3.17.1", + "@react-aria/utils": "3.24.1", + "@react-types/breadcrumbs": "3.7.5", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/button": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/@nextui-org/button/-/button-2.0.37.tgz", + "integrity": "sha512-dBtdO30qfu+K4YYLNmmpUy16Q82H1ucY8A4NjP4iEAJ1sPunoAYvba7h9xabrpUKW9IOyItOThSesxsfpaXYug==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/ripple": "2.0.32", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/spinner": "2.0.33", + "@nextui-org/use-aria-button": "2.0.10", + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/button": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/calendar": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@nextui-org/calendar/-/calendar-2.0.11.tgz", + "integrity": "sha512-pgCEekJHSr5QKxpJaABIFS2ItqgK8qZ7pKrCOJjmRHBh4Y9WGfndrIW6z3IkHZiO01CKJbpjb9ytTjufsU6kIA==", + "license": "MIT", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/button": "2.0.37", + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-button": "2.0.10", + "@react-aria/calendar": "3.5.8", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/calendar": "3.5.1", + "@react-stately/utils": "3.10.1", + "@react-types/button": "3.9.4", + "@react-types/calendar": "3.4.6", + "@react-types/shared": "3.23.1", + "@types/lodash.debounce": "^4.0.7", + "lodash.debounce": "^4.0.8", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.1.0", + "@nextui-org/theme": ">=2.2.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/card": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/card/-/card-2.0.33.tgz", + "integrity": "sha512-iO/ThbUz75YlcFrWO9EssMhOxbc9LN0SSk181+2QnPDbKls9wbkUEfGjq/d9k3h6jb9FaR5N5XwVpT4aUt2Usw==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/ripple": "2.0.32", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-button": "2.0.10", + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/checkbox": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nextui-org/checkbox/-/checkbox-2.1.4.tgz", + "integrity": "sha512-74AD4imL064mvs4trQKQj/efwIZYaBt0TmXO6jV+6xGE6S9YjCAy+OBotrgRBG9fURQVQU1qJGnwwsOIdxCXkA==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-callback-ref": "2.0.6", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/checkbox": "3.14.3", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/checkbox": "3.6.5", + "@react-stately/toggle": "3.7.4", + "@react-types/checkbox": "3.8.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/chip": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/chip/-/chip-2.0.32.tgz", + "integrity": "sha512-fGqXamG7xs+DvKPra+rJEkIAjaQwPi8FSvsJ4P4LWzQ3U+HjymEI07BW8xQmaLceHInbTLTfdbTjAYdGNzAdOQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/checkbox": "3.8.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/code": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/code/-/code-2.0.32.tgz", + "integrity": "sha512-YBLCWDgR+ebWIr+noN02/ls+PsQV9leLskgPLFUfpRzHoXdGeUUhE8IjTv14KFP3XlW3Cf9ALFy3IgPuIZ+yuQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system-rsc": "2.1.5" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/date-input": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nextui-org/date-input/-/date-input-2.1.3.tgz", + "integrity": "sha512-Y6d+AVPnM7uYy7boSHrk+cW/pft1fKbpXh/ed5omTgFx6rKRZ/agQmP5erMcmNzpv3Bis4wCc89WNnBtCjEZMw==", + "license": "MIT", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/datepicker": "3.10.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/utils": "3.24.1", + "@react-stately/datepicker": "3.9.4", + "@react-types/datepicker": "3.7.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.1.0", + "@nextui-org/theme": ">=2.2.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/date-picker": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nextui-org/date-picker/-/date-picker-2.1.6.tgz", + "integrity": "sha512-PycYKAm1tmew64aQWQtZfTbV73S4GPGYJnK6hr9W0iXUCOQQH5UbzLwdWGXnVXvtrJzczFQllaXaQccwWCeTzg==", + "license": "MIT", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/button": "2.0.37", + "@nextui-org/calendar": "2.0.11", + "@nextui-org/date-input": "2.1.3", + "@nextui-org/popover": "2.1.27", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/datepicker": "3.10.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/utils": "3.24.1", + "@react-stately/datepicker": "3.9.4", + "@react-stately/overlays": "3.6.7", + "@react-stately/utils": "3.10.1", + "@react-types/datepicker": "3.7.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.1.0", + "@nextui-org/theme": ">=2.2.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/divider": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/divider/-/divider-2.0.31.tgz", + "integrity": "sha512-z9GhrpmhXhJGuW0GSO1OP01mwDTSItuIRIz0VGpKOPVTqOzOMHkXN978wgNXqJ+knWZcaiF7WHvd83O05jmbkg==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-rsc-utils": "2.0.13", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system-rsc": "2.1.5", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/dropdown": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/@nextui-org/dropdown/-/dropdown-2.1.29.tgz", + "integrity": "sha512-ujHJVHzOcfwqNqlkt14t8YV3AAn03sME7gBxujQcwtDFGYMJeP9pvTU24L/FjBEb3Fd1XdhjwowU/sTuVTK4Yg==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/menu": "2.0.28", + "@nextui-org/popover": "2.1.27", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/focus": "3.17.1", + "@react-aria/menu": "3.14.1", + "@react-aria/utils": "3.24.1", + "@react-stately/menu": "3.7.1", + "@react-types/menu": "3.9.9" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/framer-utils": { + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@nextui-org/framer-utils/-/framer-utils-2.0.24.tgz", + "integrity": "sha512-Fc5ugVaLsXhd3bgJg+hvw20uaaz9gAxYY2ouS/3leN7QBSRAwpy3Dl+tX8BbLeyx3ZosVrHIJ3w4bhDMzFVk9Q==", + "license": "MIT", + "dependencies": { + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system": "2.2.5", + "@nextui-org/use-measure": "2.0.2" + }, + "peerDependencies": { + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/image": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/image/-/image-2.0.31.tgz", + "integrity": "sha512-HxWaGUBtNaT9pLGvDo5Q2ruGxdhXYrdNcLvRhtoohiZeIKo1Y8jTbBUCVGxdxklTZAF3H7klrTcsdSwHTGfk0g==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-image": "2.0.6" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/input": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@nextui-org/input/-/input-2.2.4.tgz", + "integrity": "sha512-CVeTwwUJn9pEJC+kq3Jg0nAFeYVGBbIU7U2YFSG8XJK2X75odj8RSQdVd3Dt2U/b5Mtwt5sBh9gMzCedtjffWg==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/textfield": "3.14.5", + "@react-aria/utils": "3.24.1", + "@react-stately/utils": "3.10.1", + "@react-types/shared": "3.23.1", + "@react-types/textfield": "3.9.3", + "react-textarea-autosize": "^8.5.3" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/kbd": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/kbd/-/kbd-2.0.33.tgz", + "integrity": "sha512-1Q7vKKJjfn5RPMsySQEljo2clf03Ta4V4ZA4O92ktJ8YzbdNnDfUiWtfFxF64R183ZVfe869RBSpuOdzZLNuKQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system-rsc": "2.1.5", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/link": { + "version": "2.0.34", + "resolved": "https://registry.npmjs.org/@nextui-org/link/-/link-2.0.34.tgz", + "integrity": "sha512-497AvjzckEB/TE1eJEziS2QkxwCY81RPsWoApNSeHGdYrMO1tfgUFKATgadfBQjoba6FdCcLc2QaUapOetqFaA==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-link": "2.0.19", + "@react-aria/focus": "3.17.1", + "@react-aria/link": "3.7.1", + "@react-aria/utils": "3.24.1", + "@react-types/link": "3.5.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/listbox": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/@nextui-org/listbox/-/listbox-2.1.25.tgz", + "integrity": "sha512-WJqxhzPxADLIsenREaaoQ44bs3gQx5yqOvK86Jkiv/m9nXr0YuxZOJEsVa5GenkmyJBrEd6LkBV5cZ1TGNzbJw==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/divider": "2.0.31", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-is-mobile": "2.0.9", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/listbox": "3.12.1", + "@react-aria/utils": "3.24.1", + "@react-stately/list": "3.10.5", + "@react-types/menu": "3.9.9", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/menu": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/@nextui-org/menu/-/menu-2.0.28.tgz", + "integrity": "sha512-/bcIeBCGpauDkdz6VZvl1YXP5xpSSSYVTvhsChkcvzWzDXLG004uVAsw4kjP2i9OGxoehrjkl9wkIzCFCEdsHw==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/divider": "2.0.31", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-menu": "2.0.6", + "@nextui-org/use-is-mobile": "2.0.9", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/menu": "3.14.1", + "@react-aria/utils": "3.24.1", + "@react-stately/menu": "3.7.1", + "@react-stately/tree": "3.8.1", + "@react-types/menu": "3.9.9", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/modal": { + "version": "2.0.39", + "resolved": "https://registry.npmjs.org/@nextui-org/modal/-/modal-2.0.39.tgz", + "integrity": "sha512-b0G5IRNrfQumx8mQQO92rn2iC2ueUuk4XKvxYYmYNpx3/qpdEP9tckozw+s0QFyZocRPY+yYa0pBtMBGC2lWGQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-button": "2.0.10", + "@nextui-org/use-aria-modal-overlay": "2.0.11", + "@nextui-org/use-disclosure": "2.0.10", + "@react-aria/dialog": "3.5.14", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/overlays": "3.6.7", + "@react-types/overlays": "3.8.7" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/navbar": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@nextui-org/navbar/-/navbar-2.0.36.tgz", + "integrity": "sha512-uobdPsh4TSPm2Us74/Vey43z0/oRqWb6x4+eHIJf9VhYP9pY733N2n17v2mvU7SvcNhkold/PWfXPYiA8kMlug==", + "license": "MIT", + "dependencies": { + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-toggle-button": "2.0.10", + "@nextui-org/use-scroll-position": "2.0.8", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/toggle": "3.7.4", + "@react-stately/utils": "3.10.1", + "react-remove-scroll": "^2.5.6" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/pagination": { + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@nextui-org/pagination/-/pagination-2.0.35.tgz", + "integrity": "sha512-07KJgZcJBt2e9RY6TsiQm5qrjDLH+gT3yB7yQ4jPdCK9fkTB0r2kvTOYdPUvrtVJYRq2bwFCWOz+9mokdNfcwg==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-pagination": "2.0.9", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/popover": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/@nextui-org/popover/-/popover-2.1.27.tgz", + "integrity": "sha512-UV42nqvUR9IOy7Hgc5S2Xo+2YWzBAHCcU+C/9O9SchXL0DyU/ol+IPqxuBxdJDi5fiFYr9mTBoPZgAEGDoJjDg==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/button": "2.0.37", + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-aria-button": "2.0.10", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/dialog": "3.5.14", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/overlays": "3.6.7", + "@react-types/button": "3.9.4", + "@react-types/overlays": "3.8.7", + "react-remove-scroll": "^2.5.6" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/progress": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/progress/-/progress-2.0.33.tgz", + "integrity": "sha512-rP54lZbH7BSzX9sFj7k3ylrUpk10XDWngc1dB1M+GlPsI2XRnzI3s+GE9kuZG2+N6eL/KLVG1YOg8u9eAYnwpA==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-is-mounted": "2.0.6", + "@react-aria/i18n": "3.11.1", + "@react-aria/progress": "3.4.13", + "@react-aria/utils": "3.24.1", + "@react-types/progress": "3.5.4" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/radio": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nextui-org/radio/-/radio-2.1.4.tgz", + "integrity": "sha512-Y18TXvGVz/G1E3jjYmutSSx1EdQRs5iMCVZNS/Bz4avE9QMSrHl6fOhZIndrm8LwCTqn7lbKRQngZLN4tvPinQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/radio": "3.10.4", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/radio": "3.10.4", + "@react-types/radio": "3.8.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/react": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@nextui-org/react/-/react-2.4.6.tgz", + "integrity": "sha512-8o/k5A5g0xXj6hmV2AulkAswQnZGt2WI64Coq+toWBTumQLcW6iAqPJBDztCDiz+6yiU6Nvk/1ZuZJeRs3XMRw==", + "license": "MIT", + "dependencies": { + "@nextui-org/accordion": "2.0.38", + "@nextui-org/autocomplete": "2.1.5", + "@nextui-org/avatar": "2.0.32", + "@nextui-org/badge": "2.0.31", + "@nextui-org/breadcrumbs": "2.0.12", + "@nextui-org/button": "2.0.37", + "@nextui-org/calendar": "2.0.11", + "@nextui-org/card": "2.0.33", + "@nextui-org/checkbox": "2.1.4", + "@nextui-org/chip": "2.0.32", + "@nextui-org/code": "2.0.32", + "@nextui-org/date-input": "2.1.3", + "@nextui-org/date-picker": "2.1.6", + "@nextui-org/divider": "2.0.31", + "@nextui-org/dropdown": "2.1.29", + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/image": "2.0.31", + "@nextui-org/input": "2.2.4", + "@nextui-org/kbd": "2.0.33", + "@nextui-org/link": "2.0.34", + "@nextui-org/listbox": "2.1.25", + "@nextui-org/menu": "2.0.28", + "@nextui-org/modal": "2.0.39", + "@nextui-org/navbar": "2.0.36", + "@nextui-org/pagination": "2.0.35", + "@nextui-org/popover": "2.1.27", + "@nextui-org/progress": "2.0.33", + "@nextui-org/radio": "2.1.4", + "@nextui-org/ripple": "2.0.32", + "@nextui-org/scroll-shadow": "2.1.19", + "@nextui-org/select": "2.2.5", + "@nextui-org/skeleton": "2.0.31", + "@nextui-org/slider": "2.2.15", + "@nextui-org/snippet": "2.0.41", + "@nextui-org/spacer": "2.0.32", + "@nextui-org/spinner": "2.0.33", + "@nextui-org/switch": "2.0.33", + "@nextui-org/system": "2.2.5", + "@nextui-org/table": "2.0.39", + "@nextui-org/tabs": "2.0.35", + "@nextui-org/theme": "2.2.9", + "@nextui-org/tooltip": "2.0.39", + "@nextui-org/user": "2.0.33", + "@react-aria/visually-hidden": "3.8.12" + }, + "peerDependencies": { + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/react-rsc-utils": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@nextui-org/react-rsc-utils/-/react-rsc-utils-2.0.13.tgz", + "integrity": "sha512-QewsXtoQlMsR9stThdazKEImg9oyZkPLs7wsymhrzh6/HdQCl9bTdb6tJcROg4vg5LRYKGG11USSQO2nKlfCcQ==", + "license": "MIT" + }, + "node_modules/@nextui-org/react-utils": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@nextui-org/react-utils/-/react-utils-2.0.16.tgz", + "integrity": "sha512-QdDoqzhx+4t9cDTVmtw5iOrfyLvpqyKsq8PARHUniCiQQDQd1ao7FCpzHgvU9poYcEdRk+Lsna66zbeMkFBB6w==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-rsc-utils": "2.0.13", + "@nextui-org/shared-utils": "2.0.7" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/ripple": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/ripple/-/ripple-2.0.32.tgz", + "integrity": "sha512-xOqoHWzpvv5KRh7P8pXt3aZEmI1tyhiTNhrwjJaRME0d5xSA0gNzYhrjP5g0+Dxy4nKRDIZ1znJcd87KI07JFA==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/scroll-shadow": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/@nextui-org/scroll-shadow/-/scroll-shadow-2.1.19.tgz", + "integrity": "sha512-od5AnhX6iO0sHoTAVReWv1O1dbNCEeOBOFdnyzFins6ZC5EnAl/oBPR/KLd8glHtgM3Jt8dvIVlBXPEPZKZwaw==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-data-scroll-overflow": "2.1.6" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/select": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@nextui-org/select/-/select-2.2.5.tgz", + "integrity": "sha512-Il1eigjSXOBgJ745nhn6TDPD1jj1avrnvk9WV/DCjOsFRwfstRnDzsS1aNpZKHqJgHhFRQZ1ivz8hA4x3Zgasg==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/listbox": "2.1.25", + "@nextui-org/popover": "2.1.27", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/scroll-shadow": "2.1.19", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/spinner": "2.0.33", + "@nextui-org/use-aria-button": "2.0.10", + "@nextui-org/use-aria-multiselect": "2.2.3", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/form": "3.0.5", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/shared-icons": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@nextui-org/shared-icons/-/shared-icons-2.0.9.tgz", + "integrity": "sha512-WG3yinVY7Tk9VqJgcdF4V8Ok9+fcm5ey7S1els7kujrfqLYxtqoKywgiY/7QHwZlfQkzpykAfy+NAlHkTP5hMg==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/shared-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nextui-org/shared-utils/-/shared-utils-2.0.7.tgz", + "integrity": "sha512-FxY3N0i1Al7Oz3yOQN0dSpG8UUrLIP3iYh3ubD7BhdQoZLl5xbG6++q1gqOzZXV+ZWeUFMY/or0ofzWxGHiOow==", + "license": "MIT" + }, + "node_modules/@nextui-org/skeleton": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/skeleton/-/skeleton-2.0.31.tgz", + "integrity": "sha512-pT0l2skPP6Nq9edLJNQxUJI/WLKu4Lx5Vvs7nlE/9NpkxyQ805l4LiYsMD30dkjjxe+WpXtIjjAXY0BQqdid0Q==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/slider": { + "version": "2.2.15", + "resolved": "https://registry.npmjs.org/@nextui-org/slider/-/slider-2.2.15.tgz", + "integrity": "sha512-ImsxvxAJ2wxRL45y4IbVWThZI/vw2Gq/6qUVZFAwyF54dlro08eJZJIOOG7bKfA5Ob63JLfroUijrlZ9kGP5cA==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/tooltip": "2.0.39", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/slider": "3.7.8", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/slider": "3.5.4" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/snippet": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@nextui-org/snippet/-/snippet-2.0.41.tgz", + "integrity": "sha512-ZZopaecAZbKJIdabwGVF3ahL2MM7L0zZII61SO3LDPAwqXOuta9ixMYk1XVCI0V2PVqTkabQgdpt1ZLgmFH+Kw==", + "license": "MIT", + "dependencies": { + "@nextui-org/button": "2.0.37", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/tooltip": "2.0.39", + "@nextui-org/use-clipboard": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/spacer": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/spacer/-/spacer-2.0.32.tgz", + "integrity": "sha512-NxqEYTig4OfkLDPlO2/jASB4gV8L9DLpsNZSqzaacIJZwk4BCTsNoBi3CuNt5ZsMoGYujtFP6QU0zH9fZbuzwA==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system-rsc": "2.1.5" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/spinner": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/spinner/-/spinner-2.0.33.tgz", + "integrity": "sha512-c1wW4YEbzdn0t1MJAXhJ2W0PuNxrxtZg2DVqJeqh3180y4iQPYDzEy7oFoU0FpK53LcBPxjfsKHNL6v1pn+60A==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/system-rsc": "2.1.5" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/switch": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/switch/-/switch-2.0.33.tgz", + "integrity": "sha512-T7w+8+ex7Pey9HVGXkNft4D11mO5J9iPfmemfLbSOYqbSydcOuINuGRQ1QWy7X+lLYhhZBHb9Ykcf4QtR4dqTQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/switch": "3.6.4", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/toggle": "3.7.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/system": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@nextui-org/system/-/system-2.2.5.tgz", + "integrity": "sha512-nrX6768aiyWtpxX3OTFBIVWR+v9nlMsC3KaBinNfek97sNm7gAfTHi7q5kylE3L5yIMpNG+DclAKpuxgDQEmvw==", + "license": "MIT", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/system-rsc": "2.1.5", + "@react-aria/i18n": "3.11.1", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/utils": "3.10.1" + }, + "peerDependencies": { + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/system-rsc": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nextui-org/system-rsc/-/system-rsc-2.1.5.tgz", + "integrity": "sha512-tkJLAyJu34Rr5KUMMqoB7cZjOVXB+7a/7N4ushZfuiLdoYijgmcXFMzLxjm+tbt9zA5AV+ivsfbHvscg77dJ6w==", + "license": "MIT", + "dependencies": { + "@react-types/shared": "3.23.1", + "clsx": "^1.2.1" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18" + } + }, + "node_modules/@nextui-org/table": { + "version": "2.0.39", + "resolved": "https://registry.npmjs.org/@nextui-org/table/-/table-2.0.39.tgz", + "integrity": "sha512-VYvmrQ6GliwmzukKLZ7Nxp3sFXdskWZp8/BjwROLFE9Zco22CC0++7VPG3ebOYAIhi4e1Je+QUTx4/eh2wZZgg==", + "license": "MIT", + "dependencies": { + "@nextui-org/checkbox": "2.1.4", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-icons": "2.0.9", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/spacer": "2.0.32", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/table": "3.14.1", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/table": "3.11.8", + "@react-stately/virtualizer": "3.7.1", + "@react-types/grid": "3.2.6", + "@react-types/table": "3.9.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/tabs": { + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@nextui-org/tabs/-/tabs-2.0.35.tgz", + "integrity": "sha512-K6uDZbJwn1qLRw8XeBS2TwGQl9zKXg3Q1ShLzVG2IjTGHGNAn9lwkUzn0FNUNaU1GK2o8wOyKhX7K02J3Ev5fw==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-is-mounted": "2.0.6", + "@nextui-org/use-update-effect": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/tabs": "3.9.1", + "@react-aria/utils": "3.24.1", + "@react-stately/tabs": "3.6.6", + "@react-types/shared": "3.23.1", + "@react-types/tabs": "3.3.7", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/theme": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/@nextui-org/theme/-/theme-2.2.9.tgz", + "integrity": "sha512-TN2I9sMriLaj00pXsIMlg19+UHeOdjzS2JV0u4gjL14mSbQl5BYNxgbvU3gbMqkZZQ6OpwT4RnT8RS+ks6TXCw==", + "license": "MIT", + "dependencies": { + "clsx": "^1.2.1", + "color": "^4.2.3", + "color2k": "^2.0.2", + "deepmerge": "4.3.1", + "flat": "^5.0.2", + "lodash.foreach": "^4.5.0", + "lodash.get": "^4.4.2", + "lodash.kebabcase": "^4.1.1", + "lodash.mapkeys": "^4.6.0", + "lodash.omit": "^4.5.0", + "tailwind-merge": "^1.14.0", + "tailwind-variants": "^0.1.20" + }, + "peerDependencies": { + "tailwindcss": ">=3.4.0" + } + }, + "node_modules/@nextui-org/tooltip": { + "version": "2.0.39", + "resolved": "https://registry.npmjs.org/@nextui-org/tooltip/-/tooltip-2.0.39.tgz", + "integrity": "sha512-DWP3XAmVb/SlcdI4SQodtT8ZyMzYMuvRbq4+JQwm+qq1+FGs55z15+8h9DRFQEseEEaDs0hCs6+kgbieZlUitw==", + "license": "MIT", + "dependencies": { + "@nextui-org/aria-utils": "2.0.24", + "@nextui-org/framer-utils": "2.0.24", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@nextui-org/use-safe-layout-effect": "2.0.6", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/tooltip": "3.7.4", + "@react-aria/utils": "3.24.1", + "@react-stately/tooltip": "3.4.9", + "@react-types/overlays": "3.8.7", + "@react-types/tooltip": "3.4.9" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-accordion": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-accordion/-/use-aria-accordion-2.0.7.tgz", + "integrity": "sha512-VzGlxmsu2tWG2Pht1e0PBz40jz95v0OEKYVXq91WpDMwj8Bl1CYvxrw2Qz41/5Xi0X843Mmo4sPwrc/hk0+RHA==", + "license": "MIT", + "dependencies": { + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/selection": "3.18.1", + "@react-aria/utils": "3.24.1", + "@react-stately/tree": "3.8.1", + "@react-types/accordion": "3.0.0-alpha.21", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-button": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-button/-/use-aria-button-2.0.10.tgz", + "integrity": "sha512-tUpp4QMr1zugKPevyToeRHIufTuc/g+67/r/oQLRTG0mMo3yGVmggykQuYn22fqqZPpW6nHcB9VYc+XtZZ27TQ==", + "license": "MIT", + "dependencies": { + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/button": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-link": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-link/-/use-aria-link-2.0.19.tgz", + "integrity": "sha512-ef61cJLlwcR4zBWiaeHZy4K18juFjUup2SslfLIAiZz3kVosBCGKmkJkw1SASYY8+D/oUc2B6BFIk25YEsRKRw==", + "license": "MIT", + "dependencies": { + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/link": "3.5.5", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-menu/-/use-aria-menu-2.0.6.tgz", + "integrity": "sha512-fGDF25E99THbgeDV2r2w4BHw5ZbGW3Lu6Y+vbLUcLBBh6x8/W8cqrpYFrzSUzn1RCun1t17yOAHZEV2rbvtMzA==", + "license": "MIT", + "dependencies": { + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/menu": "3.14.1", + "@react-aria/selection": "3.18.1", + "@react-aria/utils": "3.24.1", + "@react-stately/collections": "3.10.7", + "@react-stately/tree": "3.8.1", + "@react-types/menu": "3.9.9", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-modal-overlay": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-modal-overlay/-/use-aria-modal-overlay-2.0.11.tgz", + "integrity": "sha512-crMOCHyGIiBJiihxqidJCNR3AHH62uewfImDLEwyE/SlIkhAqW5jteUhkq0QfCSH4U/ydWisQ14niWDEgtzxXg==", + "license": "MIT", + "dependencies": { + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/overlays": "3.6.7", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-multiselect": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-multiselect/-/use-aria-multiselect-2.2.3.tgz", + "integrity": "sha512-VeRoyyUUVgJ7DrdfzU6onjohHxJfG7bmwpIfQyurMzvTZcmcVUGTnddAnRPVEoOro68tTAj4IuPs/4xkf1aXxg==", + "license": "MIT", + "dependencies": { + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/label": "3.7.8", + "@react-aria/listbox": "3.12.1", + "@react-aria/menu": "3.14.1", + "@react-aria/selection": "3.18.1", + "@react-aria/utils": "3.24.1", + "@react-stately/form": "3.0.3", + "@react-stately/list": "3.10.5", + "@react-stately/menu": "3.7.1", + "@react-types/button": "3.9.4", + "@react-types/overlays": "3.8.7", + "@react-types/select": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-toggle-button": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-toggle-button/-/use-aria-toggle-button-2.0.10.tgz", + "integrity": "sha512-U5jOmEO+nMIgYvBF0+gJtdq8C6dynGMjzAboPG4FhuHOzDoNiC12G5FIbGnRe8K1hMsKVuaI72p9986NhfqNgw==", + "license": "MIT", + "dependencies": { + "@nextui-org/use-aria-button": "2.0.10", + "@react-aria/utils": "3.24.1", + "@react-stately/toggle": "3.7.4", + "@react-types/button": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-callback-ref": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-callback-ref/-/use-callback-ref-2.0.6.tgz", + "integrity": "sha512-2WcwWuK1L/wIpTbibnLrysmmkzWomvkVIcgWayB6n/w+bpPrPCG7Zyg2WHzmMmDhe6imV//KKBgNKRi8Xhu/VA==", + "license": "MIT", + "dependencies": { + "@nextui-org/use-safe-layout-effect": "2.0.6" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-clipboard/-/use-clipboard-2.0.6.tgz", + "integrity": "sha512-UQbCoAX1vqEKYeMF8Xp2RdTqbDD8Or16+7W4f8OQc5+uaJeKaAL6LPITi5M5ipgruTvzM845XooHdiAStH322Q==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-data-scroll-overflow": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-data-scroll-overflow/-/use-data-scroll-overflow-2.1.6.tgz", + "integrity": "sha512-z9XzBF64qjTSp6jTttMDEPku7Xpgci/tYTokEQHWgydRg3FZEaBqRgOOMeiXAV1Py/kQB062MjPSneUtwYlozA==", + "license": "MIT", + "dependencies": { + "@nextui-org/shared-utils": "2.0.7" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-disclosure": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@nextui-org/use-disclosure/-/use-disclosure-2.0.10.tgz", + "integrity": "sha512-s2I58d7x2f1JRriZnNm9ZoxrGmxF+DnC9BXM1sD99Wq1VNMd0dhitmx0mUWfUB7l5HLyZgKOeiSLG+ugy1F1Yw==", + "license": "MIT", + "dependencies": { + "@nextui-org/use-callback-ref": "2.0.6", + "@react-aria/utils": "3.24.1", + "@react-stately/utils": "3.10.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-image": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-image/-/use-image-2.0.6.tgz", + "integrity": "sha512-VelN9y3vzwIpPfubFMh00YRQ0f4+I5FElcAvAqoo0Kfb0K7sGrTo1lZNApHm6yBN2gJMMeccG9u7bZB+wcDGZQ==", + "license": "MIT", + "dependencies": { + "@nextui-org/use-safe-layout-effect": "2.0.6" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-is-mobile": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@nextui-org/use-is-mobile/-/use-is-mobile-2.0.9.tgz", + "integrity": "sha512-u5pRmPV0wacdpOcAkQnWwE30yNBl2uk1WvbWkrSELxIVRN22+fTIYn8ynnHK0JbJFTA6/5zh7uIfETQu3L6KjA==", + "license": "MIT", + "dependencies": { + "@react-aria/ssr": "3.9.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-is-mounted": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-is-mounted/-/use-is-mounted-2.0.6.tgz", + "integrity": "sha512-/lcMdYnwBZ1EuKMLRIhHeAZG8stXWNTz7wBweAlLId23VC4VHgCp/s9K9Vbj1A5/r8FiFQeoTmXQuMAMUoPRtg==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-measure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nextui-org/use-measure/-/use-measure-2.0.2.tgz", + "integrity": "sha512-H/RSPPA9B5sZ10wiXR3jLlYFEuiVnc0O/sgLLQfrb5M0hvHoaqMThnsZpm//5iyS7tD7kxPeYNLa1EhzlQKxDA==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-pagination": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@nextui-org/use-pagination/-/use-pagination-2.0.9.tgz", + "integrity": "sha512-p5Gssyb71/SjRezq2o1aRsYTmC9idziW3pLCJFpVwLGfgWNARf9C6NS1oQsqKgjF5lvzoa88soZRDhKKvRAt/g==", + "license": "MIT", + "dependencies": { + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/i18n": "3.11.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-safe-layout-effect": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-safe-layout-effect/-/use-safe-layout-effect-2.0.6.tgz", + "integrity": "sha512-xzEJXf/g9GaSqjLpQ4+Z2/pw1GPq2Fc5cWRGqEXbGauEMXuH8UboRls1BmIV1RuOpqI6FgxkEmxL1EuVIRVmvQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-scroll-position": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@nextui-org/use-scroll-position/-/use-scroll-position-2.0.8.tgz", + "integrity": "sha512-sUuoLEPWxCNlgzayy3VZSneVA1rKSdh4kBuBbYJTp/g2yyrpZYnyYzWpeNJ4dhDQr1cpTDODehJekWPBhNN+uw==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-update-effect": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-update-effect/-/use-update-effect-2.0.6.tgz", + "integrity": "sha512-n5Qiv3ferKn+cSxU3Vv+96LdG8I/00mzc7Veoan+P9GL0aCTrsPB6RslTsiblaiAXQcqTiFXd8xwsK309DXOXA==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/user": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/user/-/user-2.0.33.tgz", + "integrity": "sha512-v6gGTlsaqM7Ndwtx9N/AAQFRICcIE5DuFxRZRqPfLa+jbZhJuWG2OSIATPeUOxgr8pKWpeV78nETdFKEKcsUPA==", + "license": "MIT", + "dependencies": { + "@nextui-org/avatar": "2.0.32", + "@nextui-org/react-utils": "2.0.16", + "@nextui-org/shared-utils": "2.0.7", + "@react-aria/focus": "3.17.1", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -273,7 +1772,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -282,7 +1780,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -295,12 +1792,1922 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" } }, + "node_modules/@prisma/client": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.17.0.tgz", + "integrity": "sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.17.0.tgz", + "integrity": "sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.17.0.tgz", + "integrity": "sha512-+r+Nf+JP210Jur+/X8SIPLtz+uW9YA4QO5IXA+KcSOBe/shT47bCcRMTYCbOESw3FFYFTwe7vU6KTWHKPiwvtg==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.17.0", + "@prisma/engines-version": "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053", + "@prisma/fetch-engine": "5.17.0", + "@prisma/get-platform": "5.17.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053.tgz", + "integrity": "sha512-tUuxZZysZDcrk5oaNOdrBnnkoTtmNQPkzINFDjz7eG6vcs9AVDmA/F6K5Plsb2aQc/l5M2EnFqn3htng9FA4hg==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.17.0.tgz", + "integrity": "sha512-ESxiOaHuC488ilLPnrv/tM2KrPhQB5TRris/IeIV4ZvUuKeaicCl4Xj/JCQeG9IlxqOgf1cCg5h5vAzlewN91Q==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.17.0", + "@prisma/engines-version": "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053", + "@prisma/get-platform": "5.17.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.17.0.tgz", + "integrity": "sha512-UlDgbRozCP1rfJ5Tlkf3Cnftb6srGrEQ4Nm3og+1Se2gWmCZ0hmPIi+tQikGDUVLlvOWx3Gyi9LzgRP+HTXV9w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.17.0" + } + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz", + "integrity": "sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/link": "^3.7.1", + "@react-aria/utils": "^3.24.1", + "@react-types/breadcrumbs": "^3.7.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/button": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.5.tgz", + "integrity": "sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/toggle": "^3.7.4", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.8.tgz", + "integrity": "sha512-Whlp4CeAA5/ZkzrAHUv73kgIRYjw088eYGSc+cvSOCxfrc/2XkBm9rNrnSBv0DvhJ8AG0Fjz3vYakTmF3BgZBw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-stately/calendar": "^3.5.1", + "@react-types/button": "^3.9.4", + "@react-types/calendar": "^3.4.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.3.tgz", + "integrity": "sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.0.5", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/toggle": "^3.10.4", + "@react-aria/utils": "^3.24.1", + "@react-stately/checkbox": "^3.6.5", + "@react-stately/form": "^3.0.3", + "@react-stately/toggle": "^3.7.4", + "@react-types/checkbox": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.9.1.tgz", + "integrity": "sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/listbox": "^3.12.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/menu": "^3.14.1", + "@react-aria/overlays": "^3.22.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/textfield": "^3.14.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/combobox": "^3.8.4", + "@react-stately/form": "^3.0.3", + "@react-types/button": "^3.9.4", + "@react-types/combobox": "^3.11.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.10.1.tgz", + "integrity": "sha512-4HZL593nrNMa1GjBmWEN/OTvNS6d3/16G1YJWlqiUlv11ADulSbqBIjMmkgwrJVFcjrgqtXFy+yyrTA/oq94Zw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/spinbutton": "^3.6.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/datepicker": "^3.9.4", + "@react-stately/form": "^3.0.3", + "@react-types/button": "^3.9.4", + "@react-types/calendar": "^3.4.6", + "@react-types/datepicker": "^3.7.4", + "@react-types/dialog": "^3.5.10", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.14.tgz", + "integrity": "sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/overlays": "^3.22.1", + "@react-aria/utils": "^3.24.1", + "@react-types/dialog": "^3.5.10", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", + "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/focus/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-aria/form": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz", + "integrity": "sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.10.1.tgz", + "integrity": "sha512-7dSgiYVQapBtPV4SIit+9fJ1qoEjtp+PXffJkWAPtGbg/jJ4b0jcVzykH7ARD4w/6jAJN/oVSfrKZqFPoLAd9w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/grid": "^3.9.1", + "@react-stately/selection": "^3.16.1", + "@react-types/checkbox": "^3.8.3", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-aria/focus": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.1.tgz", + "integrity": "sha512-N0Cy61WCIv+57mbqC7hiZAsB+3rF5n4JKabxUmg/2RTJL6lq7hJ5N4gx75ymKxkN8GnVDwt4pKZah48Wopa5jw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-aria/i18n": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.1.tgz", + "integrity": "sha512-0q3gyogF9Ekah+9LOo6tcfshxsk2Ope+KdbtFHJVhznedMxn6RpHGcVur5ImbQ1dYafA5CmjBUGJW70b56+BGA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.5", + "@internationalized/message": "^3.1.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-aria/interactions": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-aria/selection": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.19.1.tgz", + "integrity": "sha512-mbExvq2Omi60sTWFGjwcNz1ja2P8VDsxWAqSypHRTyqXhtgqbv8V/v8Gp+7BmVPH1YHcbhztl6rvUZTDOSszzw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/selection": "^3.16.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-aria/ssr": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-aria/utils": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz", + "integrity": "sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-stately/collections": { + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz", + "integrity": "sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-stately/utils": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-types/checkbox": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.3.tgz", + "integrity": "sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-types/grid": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.8.tgz", + "integrity": "sha512-6PJrpukwMqlv3IhJSDkJuVbhHM8Oe6hd2supWqd9adMXrlSP7QHt9a8SgFcFblCCTx8JzUaA0PvY5sTudcEtOQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz", + "integrity": "sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/message": "^3.1.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.21.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", + "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/label": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz", + "integrity": "sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/link": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz", + "integrity": "sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/link": "^3.5.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz", + "integrity": "sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/list": "^3.10.5", + "@react-types/listbox": "^3.4.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.3.4.tgz", + "integrity": "sha512-w8lxs35QrRrn6pBNzVfyGOeqWdxeVKf9U6bXIVwhq7rrTqRULL8jqy8RJIMfIs1s8G5FpwWYjyBOjl2g5Cu1iA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz", + "integrity": "sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/overlays": "^3.22.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/menu": "^3.7.1", + "@react-stately/tree": "^3.8.1", + "@react-types/button": "^3.9.4", + "@react-types/menu": "^3.9.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz", + "integrity": "sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/overlays": "^3.6.7", + "@react-types/button": "^3.9.4", + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.13.tgz", + "integrity": "sha512-YBV9bOO5JzKvG8QCI0IAA00o6FczMgIDiK8Q9p5gKorFMatFUdRayxlbIPoYHMi+PguLil0jHgC7eOyaUcrZ0g==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-types/progress": "^3.5.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.4.tgz", + "integrity": "sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/radio": "^3.10.4", + "@react-types/radio": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz", + "integrity": "sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/selection": "^3.15.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.8.tgz", + "integrity": "sha512-MYvPcM0K8jxEJJicUK2+WxUkBIM/mquBxOTOSSIL3CszA80nXIGVnLlCUnQV3LOUzpWtabbWaZokSPtGgOgQOw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/slider": "^3.5.4", + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.7.tgz", + "integrity": "sha512-OCimp4yXoFIgh6WAMOls5DDDRDRO75ZFic3YA6wLWTRNHxo1Lj8S90i1A6pakY6bi4hdBCKmj4DnFSNKAw1iWg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.25.1", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/@react-aria/i18n": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.1.tgz", + "integrity": "sha512-0q3gyogF9Ekah+9LOo6tcfshxsk2Ope+KdbtFHJVhznedMxn6RpHGcVur5ImbQ1dYafA5CmjBUGJW70b56+BGA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.5", + "@internationalized/message": "^3.1.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/@react-aria/ssr": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/@react-aria/utils": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz", + "integrity": "sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/@react-stately/utils": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/@react-types/button": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.6.tgz", + "integrity": "sha512-8lA+D5JLbNyQikf8M/cPP2cji91aVTcqjrGpDqI7sQnaLFikM8eFR6l1ZWGtZS5MCcbfooko77ha35SYplSQvw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.4.tgz", + "integrity": "sha512-2nVqz4ZuJyof47IpGSt3oZRmp+EdS8wzeDYgf42WHQXrx4uEOk1mdLJ20+NnsYhj/2NHZsvXVrjBeKMjlMs+0w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/toggle": "^3.10.4", + "@react-stately/toggle": "^3.7.4", + "@react-types/switch": "^3.5.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/table": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.14.1.tgz", + "integrity": "sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/grid": "^3.9.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/collections": "^3.10.7", + "@react-stately/flags": "^3.0.3", + "@react-stately/table": "^3.11.8", + "@react-stately/virtualizer": "^3.7.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.1.tgz", + "integrity": "sha512-S5v/0sRcOaSXaJYZuuy1ZVzYc7JD4sDyseG1133GjyuNjJOFHgoWMb+b4uxNIJbZxnLgynn/ZDBZSO+qU+fIxw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/tabs": "^3.6.6", + "@react-types/shared": "^3.23.1", + "@react-types/tabs": "^3.3.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz", + "integrity": "sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@react-types/textfield": "^3.9.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.6.tgz", + "integrity": "sha512-AGlbtB1b8grrtjbiW5Au0LKYzxR83RHbHhaUkFwajyYRGyuEzr3Y03OiveoPB+DayA8Gz3H1ZVmW++8JZQOWHw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/toggle": "^3.7.6", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-aria/focus": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.1.tgz", + "integrity": "sha512-N0Cy61WCIv+57mbqC7hiZAsB+3rF5n4JKabxUmg/2RTJL6lq7hJ5N4gx75ymKxkN8GnVDwt4pKZah48Wopa5jw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-aria/interactions": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-aria/ssr": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-aria/utils": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz", + "integrity": "sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-stately/toggle": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.6.tgz", + "integrity": "sha512-xRZyrjNVu1VCd1xpg5RwmNYs9fXb+JHChoUaRcBmGCCjsPD0R5uR3iNuE17RXJtWS3/8o9IJVn90+/7NW7boOg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.2", + "@react-types/checkbox": "^3.8.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-stately/utils": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-types/checkbox": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.3.tgz", + "integrity": "sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.4.tgz", + "integrity": "sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/tooltip": "^3.4.9", + "@react-types/shared": "^3.23.1", + "@react-types/tooltip": "^3.4.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", + "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.12", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz", + "integrity": "sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz", + "integrity": "sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-stately/utils": "^3.10.1", + "@react-types/calendar": "^3.4.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz", + "integrity": "sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz", + "integrity": "sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz", + "integrity": "sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/form": "^3.0.3", + "@react-stately/list": "^3.10.5", + "@react-stately/overlays": "^3.6.7", + "@react-stately/select": "^3.6.4", + "@react-stately/utils": "^3.10.1", + "@react-types/combobox": "^3.11.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz", + "integrity": "sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/string": "^3.2.3", + "@react-stately/form": "^3.0.3", + "@react-stately/overlays": "^3.6.7", + "@react-stately/utils": "^3.10.1", + "@react-types/datepicker": "^3.7.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.0.3.tgz", + "integrity": "sha512-/ha7XFA0RZTQsbzSPwu3KkbNMgbvuM0GuMTYLTBWpgBrovBNTM+QqI/PfZTdHg8PwCYF4H5Y8gjdSpdulCvJFw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-stately/form": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz", + "integrity": "sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.9.1.tgz", + "integrity": "sha512-LSVIcXO/cqwG0IgDSk2juDbpARBS1IzGnsTp/8vSOejMxq5MXrwxL5hUcqNczL8Ss6aLpELm42tCS0kPm3cMKw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.1", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/grid/node_modules/@react-stately/collections": { + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz", + "integrity": "sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/grid/node_modules/@react-types/grid": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.8.tgz", + "integrity": "sha512-6PJrpukwMqlv3IhJSDkJuVbhHM8Oe6hd2supWqd9adMXrlSP7QHt9a8SgFcFblCCTx8JzUaA0PvY5sTudcEtOQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/grid/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/list": { + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz", + "integrity": "sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz", + "integrity": "sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.7", + "@react-types/menu": "^3.9.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/overlays": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz", + "integrity": "sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/overlays": "^3.8.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz", + "integrity": "sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/radio": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/select": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.6.tgz", + "integrity": "sha512-JEpBosWNSXRexE/iReATei1EiVdTIwOWlLcCGw6K7oC/5/f+OHMsh2Kkt/c/RzM/to3vgR+Wbbqwrb712AWgYQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.7", + "@react-stately/overlays": "^3.6.9", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-stately/collections": { + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz", + "integrity": "sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-stately/form": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.5.tgz", + "integrity": "sha512-J3plwJ63HQz109OdmaTqTA8Qhvl3gcYYK7DtgKyNP6mc/Me2Q4tl2avkWoA+22NRuv5m+J8TpBk4AVHUEOwqeQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-stately/list": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.7.tgz", + "integrity": "sha512-W5PG7uG5GQV2Q59vXJE7QLKHZIoUNEx+JmHrBUCMKUgyngSpKIIEDR/R/C1b6ZJ9jMqqZA68Zlnd5iK1/mBi1A==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.1", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-stately/overlays": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.9.tgz", + "integrity": "sha512-4chfyzKw7P2UEainm0yzjUgYwG1ovBejN88eTrn+O62x5huuMCwe0cbMxmYh4y7IhRFSee3jIJd0SP0u/+i39w==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.2", + "@react-types/overlays": "^3.8.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-stately/utils": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-types/overlays": { + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.9.tgz", + "integrity": "sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-types/select": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.6.tgz", + "integrity": "sha512-cVSFR0eJLup/ht1Uto+y8uyLmHO89J6wNh65SIHb3jeVz9oLBAedP3YNI2qB+F9qFMUcA8PBSLXIIuT6gXzLgQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.16.1.tgz", + "integrity": "sha512-qmnmYaXY7IhhzmIiInec1a/yPxlPSBHka6vrWddvt0S6zN7FU5cv6sm69ONUwYwLKSoaNHgOGvZhmsTzyV0O2A==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/selection/node_modules/@react-stately/collections": { + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz", + "integrity": "sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/selection/node_modules/@react-stately/utils": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/selection/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/slider": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz", + "integrity": "sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/table": { + "version": "3.11.8", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz", + "integrity": "sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/flags": "^3.0.3", + "@react-stately/grid": "^3.8.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tabs": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz", + "integrity": "sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/list": "^3.10.5", + "@react-types/shared": "^3.23.1", + "@react-types/tabs": "^3.3.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz", + "integrity": "sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/checkbox": "^3.8.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tooltip": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz", + "integrity": "sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.7", + "@react-types/tooltip": "^3.4.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz", + "integrity": "sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz", + "integrity": "sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/accordion": { + "version": "3.0.0-alpha.21", + "resolved": "https://registry.npmjs.org/@react-types/accordion/-/accordion-3.0.0-alpha.21.tgz", + "integrity": "sha512-cbE06jH/ZoI+1898xd7ocQ/A/Rtkz8wTJAVOYgc8VRY1SYNQ/XZTGH5T6dD6aERAmiDwL/kjD7xhsE80DyaEKA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz", + "integrity": "sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/link": "^3.5.5", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/button": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz", + "integrity": "sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz", + "integrity": "sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz", + "integrity": "sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz", + "integrity": "sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz", + "integrity": "sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-types/calendar": "^3.4.6", + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/dialog": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.12.tgz", + "integrity": "sha512-JmpQbSpXltqEyYfEwoqDolABIiojeExkqolHNdQlayIsfFuSxZxNwXZPOpz58Ri/iwv21JP7K3QF0Gb2Ohxl9w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/dialog/node_modules/@react-types/overlays": { + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.9.tgz", + "integrity": "sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/dialog/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/grid": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz", + "integrity": "sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/link": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz", + "integrity": "sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/listbox": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.5.1.tgz", + "integrity": "sha512-n5bOgD9lgfK1qaLtag9WPnu151SwXBCNn/OgGY/Br9mWRl+nPUEYtFcPX+2VCld7uThf54kwrTmzlFnaraIlcw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/listbox/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/menu": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz", + "integrity": "sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/overlays": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz", + "integrity": "sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/progress": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz", + "integrity": "sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/radio": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz", + "integrity": "sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/select": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz", + "integrity": "sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", + "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/slider": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.5.tgz", + "integrity": "sha512-bRitwQRQjQoOcKEdPMljnvm474dwrmsc6pdsVQDh/qynzr+KO9IHuYc3qPW53WVE2hMQJDohlqtCAWQXWQ5Vcg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/slider/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/switch": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.5.tgz", + "integrity": "sha512-SZx1Bd+COhAOs/RTifbZG+uq/llwba7VAKx7XBeX4LeIz1dtguy5bigOBgFTMQi4qsIVCpybSWEEl+daj4XFPw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/switch/node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/table": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz", + "integrity": "sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/tabs": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz", + "integrity": "sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/textfield": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz", + "integrity": "sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/tooltip": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz", + "integrity": "sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", @@ -324,6 +3731,36 @@ "node": ">= 10" } }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "license": "MIT" + }, + "node_modules/@types/lodash.debounce": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz", + "integrity": "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "license": "MIT", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -396,7 +3833,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -408,7 +3844,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "engines": { "node": ">=12" }, @@ -419,14 +3854,12 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -458,26 +3891,33 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "optional": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", + "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, "engines": { "node": ">=8" }, @@ -489,7 +3929,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -498,7 +3937,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -512,6 +3950,15 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "optional": true }, + "node_modules/bson": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", + "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -527,7 +3974,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "engines": { "node": ">= 6" } @@ -570,7 +4016,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -594,7 +4039,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -616,11 +4060,32 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "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==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -631,8 +4096,17 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/color-support": { "version": "1.1.3", @@ -643,11 +4117,16 @@ "color-support": "bin.js" } }, + "node_modules/color2k": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz", + "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==", + "license": "MIT" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "optional": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -659,11 +4138,29 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "engines": { "node": ">= 6" } }, + "node_modules/complex.js": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", + "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==", + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -680,7 +4177,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -694,7 +4190,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -773,8 +4268,7 @@ "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "optional": true + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "node_modules/decompress-response": { "version": "4.2.1", @@ -788,11 +4282,19 @@ "node": ">=8" } }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "optional": true, "engines": { "node": ">=0.4.0" } @@ -812,17 +4314,21 @@ "node": ">=8" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "node_modules/domexception": { "version": "4.0.0", @@ -840,14 +4346,18 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", + "license": "MIT" }, "node_modules/escodegen": { "version": "2.1.0", @@ -917,7 +4427,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -933,7 +4442,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -945,7 +4453,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -954,7 +4461,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -962,11 +4468,39 @@ "node": ">=8" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -982,7 +4516,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -992,6 +4525,44 @@ "node": ">= 6" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "11.3.21", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.21.tgz", + "integrity": "sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -1026,7 +4597,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -1040,7 +4610,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1113,11 +4682,19 @@ "node": ">=8" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/glob": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", - "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -1139,7 +4716,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -1152,6 +4728,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/hamt_plus": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz", + "integrity": "sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==", + "license": "MIT" + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -1162,7 +4744,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -1221,6 +4802,13 @@ "node": ">=0.10.0" } }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1238,11 +4826,37 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "optional": true }, + "node_modules/intl-messageformat": { + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", + "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.8", + "tslib": "^2.4.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1254,7 +4868,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -1266,7 +4879,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1275,7 +4887,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "devOptional": true, "engines": { "node": ">=8" } @@ -1284,7 +4895,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1296,7 +4906,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -1310,14 +4919,12 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/jackspeak": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -1331,11 +4938,16 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "license": "MIT" + }, "node_modules/jiti": { "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -1395,7 +5007,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, "engines": { "node": ">=10" } @@ -1403,8 +5014,43 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "license": "MIT" + }, + "node_modules/lodash.mapkeys": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapkeys/-/lodash.mapkeys-4.6.0.tgz", + "integrity": "sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA==", + "license": "MIT" + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -1421,7 +5067,6 @@ "version": "10.2.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, "engines": { "node": "14 || >=16.14" } @@ -1450,11 +5095,39 @@ "semver": "bin/semver.js" } }, + "node_modules/mathjs": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-13.0.3.tgz", + "integrity": "sha512-GpP9OW6swA5POZXvgpc/1FYkAr8lKgV04QHS1tIU60klFfplVCYaNzn6qy0vSp0hAQQN7shcx9CeB507dlLujA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.24.8", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "^4.3.7", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.2.1" + }, + "bin": { + "mathjs": "bin/cli.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -1463,7 +5136,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1476,7 +5148,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "optional": true, "engines": { "node": ">= 0.6" } @@ -1485,7 +5156,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "optional": true, "dependencies": { "mime-db": "1.52.0" }, @@ -1509,7 +5179,6 @@ "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1524,7 +5193,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -1566,6 +5234,87 @@ "node": ">=10" } }, + "node_modules/mongodb": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", + "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "license": "MIT", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1576,7 +5325,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -1743,7 +5491,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1771,7 +5518,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -1780,7 +5526,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "engines": { "node": ">= 6" } @@ -1813,7 +5558,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -1821,14 +5565,12 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -1849,7 +5591,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -1861,7 +5602,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1870,7 +5610,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "engines": { "node": ">= 6" } @@ -1879,7 +5618,6 @@ "version": "8.4.38", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -1907,7 +5645,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -1924,7 +5661,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -1943,7 +5679,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -1978,7 +5713,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, "engines": { "node": ">=14" }, @@ -1990,7 +5724,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -2009,7 +5742,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2021,8 +5753,46 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prisma": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.17.0.tgz", + "integrity": "sha512-m4UWkN5lBE6yevqeOxEvmepnL5cNPEjzMw2IqDB59AcEV6w7D8vGljDLd1gPFH+W6gUxw9x7/RmN5dCS/WTPxA==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/engines": "5.17.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/psl": { "version": "1.9.0", @@ -2034,7 +5804,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "optional": true, "engines": { "node": ">=6" } @@ -2049,7 +5818,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -2088,11 +5856,119 @@ "react": "^18.3.1" } }, + "node_modules/react-remove-scroll": { + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz", + "integrity": "sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-toastify": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", + "integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-toastify/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "dependencies": { "pify": "^2.3.0" } @@ -2115,7 +5991,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -2123,6 +5998,32 @@ "node": ">=8.10.0" } }, + "node_modules/recoil": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz", + "integrity": "sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ==", + "license": "MIT", + "dependencies": { + "hamt_plus": "1.0.2" + }, + "peerDependencies": { + "react": ">=16.13.1" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -2133,7 +6034,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -2150,7 +6050,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -2219,7 +6118,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -2264,6 +6162,24 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "optional": true }, + "node_modules/sass": { + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -2284,6 +6200,21 @@ "loose-envify": "^1.1.0" } }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz", + "integrity": "sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "license": "MIT" + }, "node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", @@ -2306,7 +6237,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2318,7 +6248,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -2327,7 +6256,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -2366,6 +6294,15 @@ "simple-concat": "^1.0.0" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2383,6 +6320,15 @@ "node": ">=0.10.0" } }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -2404,7 +6350,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2422,7 +6367,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2436,7 +6380,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" } @@ -2444,14 +6387,12 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2463,7 +6404,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2479,7 +6419,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2491,7 +6430,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" } @@ -2522,7 +6460,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -2544,7 +6481,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2558,11 +6494,36 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "optional": true }, + "node_modules/tailwind-merge": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.14.0.tgz", + "integrity": "sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-0.1.20.tgz", + "integrity": "sha512-AMh7x313t/V+eTySKB0Dal08RHY7ggYK0MSn/ad8wKWOrDUIzyiWNayRUm2PIJ4VRkvRnfNuyRuKbLV3EN+ewQ==", + "license": "MIT", + "dependencies": { + "tailwind-merge": "^1.14.0" + }, + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwindcss": "*" + } + }, "node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", - "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -2625,7 +6586,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -2634,7 +6594,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -2642,11 +6601,16 @@ "node": ">=0.8" } }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -2684,14 +6648,22 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, + "node_modules/typed-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz", + "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==", + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -2711,11 +6683,93 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "devOptional": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "9.0.1", @@ -2755,7 +6809,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "optional": true, "engines": { "node": ">=12" } @@ -2798,7 +6851,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2863,7 +6915,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2881,7 +6932,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2898,7 +6948,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" } @@ -2907,7 +6956,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2921,14 +6969,12 @@ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2942,7 +6988,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3002,7 +7047,6 @@ "version": "2.4.5", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", - "dev": true, "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index 28845ef0..e17af193 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "next": "14.2.3", "react": "^18", "react-dom": "^18", + "react-toastify": "^10.0.5", "recoil": "^0.7.7", "uuid": "^9.0.1" }, diff --git a/src/app/test/page.js b/src/app/test/page.js new file mode 100644 index 00000000..cb9a07b5 --- /dev/null +++ b/src/app/test/page.js @@ -0,0 +1,50 @@ +'use client' + +import Hero from '@/components/Hero' +import React from 'react' +import QToast from '@/components/ui/Toast' +import { ToastContainer } from 'react-toastify' + +export default function TestPage() { + const toastOption = { + position: 'top-right', + autoClose: 5000, + draggable: true, + hideProgressBar: true, + rtl: false, + pauseOnFocusLoss: true, + pauseOnHover: true, + theme: 'light', + limit: 2, + closeOnClick: true + } + const toastTest = () => { + QToast( { + type: 'info', // type TypeOptions = 'info' | 'success' | 'warning' | 'error' | 'default'; + message: getContent('Toast Test'), + option: toastOption + }); + } + + const getContent = (title) => { + return
+

{title}

+ +
+ } + + const onToastButtonClick = () => { + console.log('on toast button click') + } + + return ( + <> + +
+ +
+ + + ) +} + diff --git a/src/components/ui/Toast.js b/src/components/ui/Toast.js new file mode 100644 index 00000000..a292028f --- /dev/null +++ b/src/components/ui/Toast.js @@ -0,0 +1,30 @@ +import { toast } from 'react-toastify' +/* +* toast option +* position: top-left | top-right(default) | top-center | bottom-left | bottom-right | bottom-center +* autoClose: n(Milliseconds); 자동 닫힘 시간 설정; default 3000 +* draggable: 드레그로 닫기; true | false(default) +* hideProgressBar: 진행 시간바 숨김 여부; true | false(default) +* rtl: Toast 좌우반전 여부; true | false(default) +* pauseOnFocusLoss: 창에서 벗어나 있으면 닫힘시간 정지; true(default) | false +* pauseOnHover: Mouse Hover 시 닫힘시간 정지; true(default) | false +* theme: light(default) | dark | colored +* limit: toast 개수 제한 +* closeOnClick: Toast 클릭시 닫기 +* */ +export default function QToast(props) { + const {message, type = '', option} = props; + + switch(type) { + case 'info': + return toast.info(message, option); + case 'success': + return toast.success(message, option); + case 'warning': + return toast.warn(message, option); + case 'error': + return toast.error(message, option); + default: + return toast(message, option); + } +} \ No newline at end of file diff --git a/src/styles/style.scss b/src/styles/style.scss index e7f56590..92085ad6 100644 --- a/src/styles/style.scss +++ b/src/styles/style.scss @@ -1 +1,2 @@ -@import '_test.scss'; \ No newline at end of file +@import '_test.scss'; +@import 'react-toastify/dist/ReactToastify.css'; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 7c678f91..6bd1ba53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,23 +7,16 @@ resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== -"@babel/runtime@^7.20.13": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" - integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.24.7": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" - integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== +"@babel/runtime@^7.20.13", "@babel/runtime@^7.24.8": + version "7.25.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz" + integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== dependencies: regenerator-runtime "^0.14.0" "@formatjs/ecma402-abstract@2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz#39197ab90b1c78b7342b129a56a7acdb8f512e17" + resolved "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz" integrity sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g== dependencies: "@formatjs/intl-localematcher" "0.5.4" @@ -31,14 +24,14 @@ "@formatjs/fast-memoize@2.2.0": version "2.2.0" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz#33bd616d2e486c3e8ef4e68c99648c196887802b" + resolved "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz" integrity sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA== dependencies: tslib "^2.4.0" "@formatjs/icu-messageformat-parser@2.7.8": version "2.7.8" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz#f6d7643001e9bb5930d812f1f9a9856f30fa0343" + resolved "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz" integrity sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA== dependencies: "@formatjs/ecma402-abstract" "2.0.0" @@ -47,7 +40,7 @@ "@formatjs/icu-skeleton-parser@1.8.2": version "1.8.2" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz#2252c949ae84ee66930e726130ea66731a123c9f" + resolved "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz" integrity sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q== dependencies: "@formatjs/ecma402-abstract" "2.0.0" @@ -55,21 +48,21 @@ "@formatjs/intl-localematcher@0.5.4": version "0.5.4" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz#caa71f2e40d93e37d58be35cfffe57865f2b366f" + resolved "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz" integrity sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g== dependencies: tslib "^2.4.0" -"@internationalized/date@^3.5.4": - version "3.5.4" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.5.4.tgz#49ba11634fd4350b7a9308e297032267b4063c44" - integrity sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw== +"@internationalized/date@^3.5.4", "@internationalized/date@^3.5.5": + version "3.5.5" + resolved "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz" + integrity sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ== dependencies: "@swc/helpers" "^0.5.0" "@internationalized/message@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.4.tgz#4da041155829ffb57c9563fa7c99e2b94c8a5766" + resolved "https://registry.npmjs.org/@internationalized/message/-/message-3.1.4.tgz" integrity sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw== dependencies: "@swc/helpers" "^0.5.0" @@ -77,14 +70,14 @@ "@internationalized/number@^3.5.3": version "3.5.3" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.5.3.tgz#9fa060c1c4809f23fb3d38dd3f3d1ae4c87e95a8" + resolved "https://registry.npmjs.org/@internationalized/number/-/number-3.5.3.tgz" integrity sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw== dependencies: "@swc/helpers" "^0.5.0" "@internationalized/string@^3.2.3": version "3.2.3" - resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.2.3.tgz#b0a8379e779a69e7874979714e27f2ae86761d3c" + resolved "https://registry.npmjs.org/@internationalized/string/-/string-3.2.3.tgz" integrity sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw== dependencies: "@swc/helpers" "^0.5.0" @@ -135,7 +128,7 @@ "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== dependencies: detect-libc "^2.0.0" @@ -150,7 +143,7 @@ "@mongodb-js/saslprep@^1.1.5": version "1.1.8" - resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz#d39744540be8800d17749990b0da95b4271840d1" + resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz" integrity sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ== dependencies: sparse-bitfield "^3.0.3" @@ -160,63 +153,23 @@ resolved "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz" integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== -"@next/swc-darwin-arm64@14.2.3": - version "14.2.3" - resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz" - integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== - -"@next/swc-darwin-x64@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" - integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== - -"@next/swc-linux-arm64-gnu@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" - integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== - -"@next/swc-linux-arm64-musl@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" - integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== - -"@next/swc-linux-x64-gnu@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" - integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== - -"@next/swc-linux-x64-musl@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" - integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== - -"@next/swc-win32-arm64-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" - integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== - -"@next/swc-win32-ia32-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" - integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== - "@next/swc-win32-x64-msvc@14.2.3": version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" + resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz" integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== -"@nextui-org/accordion@2.0.35": - version "2.0.35" - resolved "https://registry.yarnpkg.com/@nextui-org/accordion/-/accordion-2.0.35.tgz#381cc4b514a4ab7f06dfc8d151ebf88c000c685c" - integrity sha512-42T8DAgpICKORry5h1UCgAQ71QJ3dCzvqrnnJQco3LICeIER2JT/wEdpxHUVT893MkL6z6CFsJmWNfFJPk59kA== +"@nextui-org/accordion@2.0.38": + version "2.0.38" + resolved "https://registry.npmjs.org/@nextui-org/accordion/-/accordion-2.0.38.tgz" + integrity sha512-kFCZU1VaKkUI295Fg3NxuQR2+kZ5vTH4ftIs0oByrOs0+l14dVQGFOd9ZV402fHNykZJt7Sk6oWjTp4Qwl83JA== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/divider" "2.0.28" - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-accordion" "2.0.6" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/divider" "2.0.31" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-accordion" "2.0.7" "@react-aria/button" "3.9.5" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -225,37 +178,37 @@ "@react-types/accordion" "3.0.0-alpha.21" "@react-types/shared" "3.23.1" -"@nextui-org/aria-utils@2.0.21": - version "2.0.21" - resolved "https://registry.yarnpkg.com/@nextui-org/aria-utils/-/aria-utils-2.0.21.tgz#9ef84dd5d6ac6b4b3bb5446af1d38a09258eb759" - integrity sha512-aQXFVm4qNrXrUAHhRtr363BgRDX+zgN3Vm+7bW1qtMbnMGOqTWApCD48FP59bka5JArd3K+85tFEhkdD+UfKbQ== +"@nextui-org/aria-utils@2.0.24": + version "2.0.24" + resolved "https://registry.npmjs.org/@nextui-org/aria-utils/-/aria-utils-2.0.24.tgz" + integrity sha512-YD+YvT01zFqN1Ey137OeFl9SEhAYf2BoZz+ykWiIJlMjl/LY1d5WE0nkzsjMHh6MV3HgS6CExxlf7TuApN6Piw== dependencies: - "@nextui-org/react-rsc-utils" "2.0.12" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system" "2.2.2" + "@nextui-org/react-rsc-utils" "2.0.13" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system" "2.2.5" "@react-aria/utils" "3.24.1" "@react-stately/collections" "3.10.7" "@react-stately/overlays" "3.6.7" "@react-types/overlays" "3.8.7" "@react-types/shared" "3.23.1" -"@nextui-org/autocomplete@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@nextui-org/autocomplete/-/autocomplete-2.1.2.tgz#abf71950104cc3c4cf0004e92e972e466990a61a" - integrity sha512-3mtYQDBbSRLG8wZ+gDMsOsGH/0m2VG/RcwIiXoteZMyX7yhGl2JPp7ZjX6XWyUpUbq0w2QVprZ6Ld4ck3cuMKg== +"@nextui-org/autocomplete@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nextui-org/autocomplete/-/autocomplete-2.1.5.tgz" + integrity sha512-VcSe3B/CmIvfZnAJHHYKp3r83QrqI0T8v9jjrpQ0PN8qKOc7LmQUsvnAkBRuHCLlaC1xPwZtyJp0TJyRF8tM3w== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/button" "2.0.34" - "@nextui-org/input" "2.2.2" - "@nextui-org/listbox" "2.1.22" - "@nextui-org/popover" "2.1.24" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/scroll-shadow" "2.1.17" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/spinner" "2.0.30" - "@nextui-org/use-aria-button" "2.0.9" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/button" "2.0.37" + "@nextui-org/input" "2.2.4" + "@nextui-org/listbox" "2.1.25" + "@nextui-org/popover" "2.1.27" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/scroll-shadow" "2.1.19" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/spinner" "2.0.33" + "@nextui-org/use-aria-button" "2.0.10" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/combobox" "3.9.1" "@react-aria/focus" "3.17.1" "@react-aria/i18n" "3.11.1" @@ -266,50 +219,50 @@ "@react-types/combobox" "3.11.1" "@react-types/shared" "3.23.1" -"@nextui-org/avatar@2.0.30": - version "2.0.30" - resolved "https://registry.yarnpkg.com/@nextui-org/avatar/-/avatar-2.0.30.tgz#be8e112013dadacd45615e79af3248566adfaba2" - integrity sha512-FIrvdJE+dBkmU3YDR1AXTkcks/WXjbnQsojWBMAq+1oXDCcNiGMUvKBzsW0F5m5HVHhn+Edc+CbTzIZUTm78Bw== +"@nextui-org/avatar@2.0.32": + version "2.0.32" + resolved "https://registry.npmjs.org/@nextui-org/avatar/-/avatar-2.0.32.tgz" + integrity sha512-2dCpIKuGvbOVLJ6m2AkNhPqqamIin3FDqDLop2ILNhyAxgxPYitqE3JqsUA/hlZCzu79sZudruuubzHWzHqf0Q== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-image" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-image" "2.0.6" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/utils" "3.24.1" -"@nextui-org/badge@2.0.29": - version "2.0.29" - resolved "https://registry.yarnpkg.com/@nextui-org/badge/-/badge-2.0.29.tgz#07c69493a5829ad328facc488581789898aab80d" - integrity sha512-kd6BJ1BWkX6UuHttmySUgQBPOBJCrG1+eKwWDd1HL4YuBLayuYoTZuE5Q01HYTbXjFMqzsFX3A+jcJ3RYc0X7w== +"@nextui-org/badge@2.0.31": + version "2.0.31" + resolved "https://registry.npmjs.org/@nextui-org/badge/-/badge-2.0.31.tgz" + integrity sha512-ayOw9j6Fa/RxZjk+2AhhBzXFm2Xv2RNYMrXAqGaJ+cbhofsqu8QnP0/4W+CiVXx8C0jpPmNAgSklRXgbKHs10Q== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" -"@nextui-org/breadcrumbs@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@nextui-org/breadcrumbs/-/breadcrumbs-2.0.10.tgz#e301a35c15f8d2e39929d9e4020b5742fc113e15" - integrity sha512-TCrOHCH/gNrPwEQyd30mu6Y9x/ojJk3vUWZJSPuVhzG6WdpUFyqen4QCoDTUTvFJBL3TwqNYwOIxooizzFSK7g== +"@nextui-org/breadcrumbs@2.0.12": + version "2.0.12" + resolved "https://registry.npmjs.org/@nextui-org/breadcrumbs/-/breadcrumbs-2.0.12.tgz" + integrity sha512-PCZI7xqu1UrjJcCkd6HwGJ+h2L5k6LMBQRVbD8/7jMKkJxpoQXC7h5uCtEeLG2CafVih4cUCBTuzUnsubtKLnQ== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/breadcrumbs" "3.5.13" "@react-aria/focus" "3.17.1" "@react-aria/utils" "3.24.1" "@react-types/breadcrumbs" "3.7.5" "@react-types/shared" "3.23.1" -"@nextui-org/button@2.0.34": - version "2.0.34" - resolved "https://registry.yarnpkg.com/@nextui-org/button/-/button-2.0.34.tgz#0621aec4dec1c4ec3e8d091f71ba7b86b02f4c19" - integrity sha512-VeFpOs7trX6u6FqeGr0XCpuNqPhXTLqsmt4iaygvheZCbzrTKvWHd4QMqSh2CPsNH8UFUBSFJjr3oaf3a0SYWQ== +"@nextui-org/button@2.0.37": + version "2.0.37" + resolved "https://registry.npmjs.org/@nextui-org/button/-/button-2.0.37.tgz" + integrity sha512-dBtdO30qfu+K4YYLNmmpUy16Q82H1ucY8A4NjP4iEAJ1sPunoAYvba7h9xabrpUKW9IOyItOThSesxsfpaXYug== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/ripple" "2.0.30" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/spinner" "2.0.30" - "@nextui-org/use-aria-button" "2.0.9" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/ripple" "2.0.32" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/spinner" "2.0.33" + "@nextui-org/use-aria-button" "2.0.10" "@react-aria/button" "3.9.5" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -317,18 +270,18 @@ "@react-types/button" "3.9.4" "@react-types/shared" "3.23.1" -"@nextui-org/calendar@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@nextui-org/calendar/-/calendar-2.0.7.tgz#912abbfb099b57a1bfff8df029a1db50ea9a8cd9" - integrity sha512-6mdgKJSl6tWo68FJQB1txSTRQ6/6+c3hipDYvzqDZRc+NbOJ3VevbFaPj5673JxeI2J5SyHLY2AEVw4q6HfaNw== +"@nextui-org/calendar@2.0.11": + version "2.0.11" + resolved "https://registry.npmjs.org/@nextui-org/calendar/-/calendar-2.0.11.tgz" + integrity sha512-pgCEekJHSr5QKxpJaABIFS2ItqgK8qZ7pKrCOJjmRHBh4Y9WGfndrIW6z3IkHZiO01CKJbpjb9ytTjufsU6kIA== dependencies: "@internationalized/date" "^3.5.4" - "@nextui-org/button" "2.0.34" - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-button" "2.0.9" + "@nextui-org/button" "2.0.37" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-button" "2.0.10" "@react-aria/calendar" "3.5.8" "@react-aria/focus" "3.17.1" "@react-aria/i18n" "3.11.1" @@ -344,30 +297,30 @@ lodash.debounce "^4.0.8" scroll-into-view-if-needed "3.0.10" -"@nextui-org/card@2.0.31": - version "2.0.31" - resolved "https://registry.yarnpkg.com/@nextui-org/card/-/card-2.0.31.tgz#562fc8e60013045bb2dc8322345eef32fa84fa0a" - integrity sha512-KXeI4xu0HVOgC2sNBxv+OGbzYy+kA6HbsDB677j3R+MhyCrqCLsE5ahkn7FRWgIJAzoDkcHSunmc+q9ApoSWig== +"@nextui-org/card@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/@nextui-org/card/-/card-2.0.33.tgz" + integrity sha512-iO/ThbUz75YlcFrWO9EssMhOxbc9LN0SSk181+2QnPDbKls9wbkUEfGjq/d9k3h6jb9FaR5N5XwVpT4aUt2Usw== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/ripple" "2.0.30" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-button" "2.0.9" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/ripple" "2.0.32" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-button" "2.0.10" "@react-aria/button" "3.9.5" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/utils" "3.24.1" "@react-types/shared" "3.23.1" -"@nextui-org/checkbox@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@nextui-org/checkbox/-/checkbox-2.1.2.tgz#e950eeed4de1f2b0f722c6c1b4430b949af38c25" - integrity sha512-0C5xcYcBMM/iAva3/fFYIvUiy91guV+mehUwRcPIxEFLA9bIOdOdGTkoAXlVcGCLIuYvlPiqSH0gShXvscOlNQ== +"@nextui-org/checkbox@2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@nextui-org/checkbox/-/checkbox-2.1.4.tgz" + integrity sha512-74AD4imL064mvs4trQKQj/efwIZYaBt0TmXO6jV+6xGE6S9YjCAy+OBotrgRBG9fURQVQU1qJGnwwsOIdxCXkA== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-callback-ref" "2.0.5" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-callback-ref" "2.0.6" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/checkbox" "3.14.3" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -378,36 +331,36 @@ "@react-types/checkbox" "3.8.1" "@react-types/shared" "3.23.1" -"@nextui-org/chip@2.0.30": - version "2.0.30" - resolved "https://registry.yarnpkg.com/@nextui-org/chip/-/chip-2.0.30.tgz#4d345e9bdbd826e7ea5417c9e7c930306202ebf2" - integrity sha512-u/PbKFW8pGoPzBh8dDRvhBSdhX30lJbscQJvXzmCKHpSvK8rvBG1kHtOJEJ4fiuXbo/O0CYwZVAi03XloyOCdQ== +"@nextui-org/chip@2.0.32": + version "2.0.32" + resolved "https://registry.npmjs.org/@nextui-org/chip/-/chip-2.0.32.tgz" + integrity sha512-fGqXamG7xs+DvKPra+rJEkIAjaQwPi8FSvsJ4P4LWzQ3U+HjymEI07BW8xQmaLceHInbTLTfdbTjAYdGNzAdOQ== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/utils" "3.24.1" "@react-types/checkbox" "3.8.1" -"@nextui-org/code@2.0.29": - version "2.0.29" - resolved "https://registry.yarnpkg.com/@nextui-org/code/-/code-2.0.29.tgz#6c3bb0540f70a2b4f21cff3fdc2d6b70270bc724" - integrity sha512-+aevUjVJxSkJ4Un/O3rBdI1NfHikatzDK6iD6nqWDCDR/I+9a5m+s3N8yuNt/Mt8jGKg0KEklPh3deYfCVCXdg== +"@nextui-org/code@2.0.32": + version "2.0.32" + resolved "https://registry.npmjs.org/@nextui-org/code/-/code-2.0.32.tgz" + integrity sha512-YBLCWDgR+ebWIr+noN02/ls+PsQV9leLskgPLFUfpRzHoXdGeUUhE8IjTv14KFP3XlW3Cf9ALFy3IgPuIZ+yuQ== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system-rsc" "2.1.2" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system-rsc" "2.1.5" -"@nextui-org/date-input@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@nextui-org/date-input/-/date-input-2.1.1.tgz#54222fc44189f77339bd695a40119e709648f60b" - integrity sha512-fts8R058AVN8dhkBGaJ/7F68ZwM/E3Imu5uhauHoXVoJhaXNft5fA23HJYpNkFrG0k/Tk7vGcGSPistiERQuKg== +"@nextui-org/date-input@2.1.3": + version "2.1.3" + resolved "https://registry.npmjs.org/@nextui-org/date-input/-/date-input-2.1.3.tgz" + integrity sha512-Y6d+AVPnM7uYy7boSHrk+cW/pft1fKbpXh/ed5omTgFx6rKRZ/agQmP5erMcmNzpv3Bis4wCc89WNnBtCjEZMw== dependencies: "@internationalized/date" "^3.5.4" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/datepicker" "3.10.1" "@react-aria/i18n" "3.11.1" "@react-aria/utils" "3.24.1" @@ -415,20 +368,20 @@ "@react-types/datepicker" "3.7.4" "@react-types/shared" "3.23.1" -"@nextui-org/date-picker@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@nextui-org/date-picker/-/date-picker-2.1.2.tgz#f4fa1f42764efbfd073dbe630e26e9418340fcf7" - integrity sha512-gNqhyA85SDtGNdr2CUBJ5FSy/wCtj2AKJGs2yEvKtA9A66khOH2H0tdfGALOWoAQdxGgOvP7c+9U5Oadogoygg== +"@nextui-org/date-picker@2.1.6": + version "2.1.6" + resolved "https://registry.npmjs.org/@nextui-org/date-picker/-/date-picker-2.1.6.tgz" + integrity sha512-PycYKAm1tmew64aQWQtZfTbV73S4GPGYJnK6hr9W0iXUCOQQH5UbzLwdWGXnVXvtrJzczFQllaXaQccwWCeTzg== dependencies: "@internationalized/date" "^3.5.4" - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/button" "2.0.34" - "@nextui-org/calendar" "2.0.7" - "@nextui-org/date-input" "2.1.1" - "@nextui-org/popover" "2.1.24" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/button" "2.0.37" + "@nextui-org/calendar" "2.0.11" + "@nextui-org/date-input" "2.1.3" + "@nextui-org/popover" "2.1.27" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/datepicker" "3.10.1" "@react-aria/i18n" "3.11.1" "@react-aria/utils" "3.24.1" @@ -438,59 +391,59 @@ "@react-types/datepicker" "3.7.4" "@react-types/shared" "3.23.1" -"@nextui-org/divider@2.0.28": - version "2.0.28" - resolved "https://registry.yarnpkg.com/@nextui-org/divider/-/divider-2.0.28.tgz#e574b5d212b0e81f78d8f9a54783ce9927b65582" - integrity sha512-IskKmDOO8qwmTO2WtDmrH8fZvnV2JebP3PFfwqpToAdDRbRUs78pls2e8/T9clbLLtNxjfCFAI/Yi9C+LPPEXw== +"@nextui-org/divider@2.0.31": + version "2.0.31" + resolved "https://registry.npmjs.org/@nextui-org/divider/-/divider-2.0.31.tgz" + integrity sha512-z9GhrpmhXhJGuW0GSO1OP01mwDTSItuIRIz0VGpKOPVTqOzOMHkXN978wgNXqJ+knWZcaiF7WHvd83O05jmbkg== dependencies: - "@nextui-org/react-rsc-utils" "2.0.12" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system-rsc" "2.1.2" - "@react-types/shared" "3.22.1" + "@nextui-org/react-rsc-utils" "2.0.13" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system-rsc" "2.1.5" + "@react-types/shared" "3.23.1" -"@nextui-org/dropdown@2.1.26": - version "2.1.26" - resolved "https://registry.yarnpkg.com/@nextui-org/dropdown/-/dropdown-2.1.26.tgz#e805670425d0df0843fa10563e01b3a20feb6990" - integrity sha512-rPrn8hN7v2nLm9OJKagvf7AivsCAT0EWUcgWGaf5GVdwGJ65TZpjR18eAOyKBZRe5cdZ+FV6qqnavGVhD3458w== +"@nextui-org/dropdown@2.1.29": + version "2.1.29" + resolved "https://registry.npmjs.org/@nextui-org/dropdown/-/dropdown-2.1.29.tgz" + integrity sha512-ujHJVHzOcfwqNqlkt14t8YV3AAn03sME7gBxujQcwtDFGYMJeP9pvTU24L/FjBEb3Fd1XdhjwowU/sTuVTK4Yg== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/menu" "2.0.25" - "@nextui-org/popover" "2.1.24" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/menu" "2.0.28" + "@nextui-org/popover" "2.1.27" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/focus" "3.17.1" "@react-aria/menu" "3.14.1" "@react-aria/utils" "3.24.1" "@react-stately/menu" "3.7.1" "@react-types/menu" "3.9.9" -"@nextui-org/framer-utils@2.0.21": - version "2.0.21" - resolved "https://registry.yarnpkg.com/@nextui-org/framer-utils/-/framer-utils-2.0.21.tgz#3117df92d75b2c6c7a1f24cfa0cb5bd9e87161dc" - integrity sha512-kZzkaAHbtuBl85mivZ1WKVCcwdk8Z2NDmJiIpaLy16yliLNV1tnhoDOzRrxhv+6cbkKftx21tRrpImB4AyeqLw== +"@nextui-org/framer-utils@2.0.24": + version "2.0.24" + resolved "https://registry.npmjs.org/@nextui-org/framer-utils/-/framer-utils-2.0.24.tgz" + integrity sha512-Fc5ugVaLsXhd3bgJg+hvw20uaaz9gAxYY2ouS/3leN7QBSRAwpy3Dl+tX8BbLeyx3ZosVrHIJ3w4bhDMzFVk9Q== dependencies: - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system" "2.2.2" - "@nextui-org/use-measure" "2.0.1" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system" "2.2.5" + "@nextui-org/use-measure" "2.0.2" -"@nextui-org/image@2.0.29": - version "2.0.29" - resolved "https://registry.yarnpkg.com/@nextui-org/image/-/image-2.0.29.tgz#038a72d9956421360d06236e9a16f7a4ddfdc09a" - integrity sha512-w8MneV/JNUTCJUcIZcxtUYw1ZEZqlpezcCgGLr0cH3vp5pa+BZ9SdptwAL2wFoJAG8xk+et9fMXTROvF4h5W1g== +"@nextui-org/image@2.0.31": + version "2.0.31" + resolved "https://registry.npmjs.org/@nextui-org/image/-/image-2.0.31.tgz" + integrity sha512-HxWaGUBtNaT9pLGvDo5Q2ruGxdhXYrdNcLvRhtoohiZeIKo1Y8jTbBUCVGxdxklTZAF3H7klrTcsdSwHTGfk0g== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-image" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-image" "2.0.6" -"@nextui-org/input@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@nextui-org/input/-/input-2.2.2.tgz#db5d4bac963a9e5f53403254570ddbefd262a0c9" - integrity sha512-mCcFsObJdlCWMuSutKTRniFIDX5+z4BAAtt/XI1uzOtUO6WXgT97BwVzMihC1l14WQsw9TCwFKAl8JWdolkNCA== +"@nextui-org/input@2.2.4": + version "2.2.4" + resolved "https://registry.npmjs.org/@nextui-org/input/-/input-2.2.4.tgz" + integrity sha512-CVeTwwUJn9pEJC+kq3Jg0nAFeYVGBbIU7U2YFSG8XJK2X75odj8RSQdVd3Dt2U/b5Mtwt5sBh9gMzCedtjffWg== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/textfield" "3.14.5" @@ -500,40 +453,40 @@ "@react-types/textfield" "3.9.3" react-textarea-autosize "^8.5.3" -"@nextui-org/kbd@2.0.30": - version "2.0.30" - resolved "https://registry.yarnpkg.com/@nextui-org/kbd/-/kbd-2.0.30.tgz#06dee8ecf7be6f75cd79246177fb2f919128acb3" - integrity sha512-rQw71noVUIRPf8N/Z5hdIGCtjFEVZO9xs2JVkiusKDxbGXFWKxJ3sTFzEY4VyLtORt2mEOQEWh26wbTnNjJzMw== +"@nextui-org/kbd@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/@nextui-org/kbd/-/kbd-2.0.33.tgz" + integrity sha512-1Q7vKKJjfn5RPMsySQEljo2clf03Ta4V4ZA4O92ktJ8YzbdNnDfUiWtfFxF64R183ZVfe869RBSpuOdzZLNuKQ== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system-rsc" "2.1.2" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system-rsc" "2.1.5" "@react-aria/utils" "3.24.1" -"@nextui-org/link@2.0.32": - version "2.0.32" - resolved "https://registry.yarnpkg.com/@nextui-org/link/-/link-2.0.32.tgz#30f640870508b36a1c7bc6f3181f42a7fb0c0949" - integrity sha512-NIG8Ay/WfFxwMYKB11xg0iVAzJR1jy0QrtKFGaZscyJ522beM+aMBZuourC9u7kwjucTvt5fuGRm86KBVDBXCQ== +"@nextui-org/link@2.0.34": + version "2.0.34" + resolved "https://registry.npmjs.org/@nextui-org/link/-/link-2.0.34.tgz" + integrity sha512-497AvjzckEB/TE1eJEziS2QkxwCY81RPsWoApNSeHGdYrMO1tfgUFKATgadfBQjoba6FdCcLc2QaUapOetqFaA== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-link" "2.0.18" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-link" "2.0.19" "@react-aria/focus" "3.17.1" "@react-aria/link" "3.7.1" "@react-aria/utils" "3.24.1" "@react-types/link" "3.5.5" -"@nextui-org/listbox@2.1.22": - version "2.1.22" - resolved "https://registry.yarnpkg.com/@nextui-org/listbox/-/listbox-2.1.22.tgz#4d8649efbc82744f494c719225aa7853398f49a4" - integrity sha512-VFULRE7BBpNnXulhySHlENRiRUP7KdpozJfKM3X2kIwWoFekO8DDUT8RiLj2PyDtGjKam74ghHhMuAFXFhVQ+g== +"@nextui-org/listbox@2.1.25": + version "2.1.25" + resolved "https://registry.npmjs.org/@nextui-org/listbox/-/listbox-2.1.25.tgz" + integrity sha512-WJqxhzPxADLIsenREaaoQ44bs3gQx5yqOvK86Jkiv/m9nXr0YuxZOJEsVa5GenkmyJBrEd6LkBV5cZ1TGNzbJw== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/divider" "2.0.28" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-is-mobile" "2.0.8" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/divider" "2.0.31" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-is-mobile" "2.0.9" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/listbox" "3.12.1" @@ -542,17 +495,17 @@ "@react-types/menu" "3.9.9" "@react-types/shared" "3.23.1" -"@nextui-org/menu@2.0.25": - version "2.0.25" - resolved "https://registry.yarnpkg.com/@nextui-org/menu/-/menu-2.0.25.tgz#99fc2c3debeef9117465834866a3c870106541f9" - integrity sha512-VkCaaq19JKNjIgg4bmGebzHkSV1A3C1CRV5w5qRPg5AI59pdWlbMLpllm5mPqz+U0R0P5saGfCfEfcC0LrCFdQ== +"@nextui-org/menu@2.0.28": + version "2.0.28" + resolved "https://registry.npmjs.org/@nextui-org/menu/-/menu-2.0.28.tgz" + integrity sha512-/bcIeBCGpauDkdz6VZvl1YXP5xpSSSYVTvhsChkcvzWzDXLG004uVAsw4kjP2i9OGxoehrjkl9wkIzCFCEdsHw== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/divider" "2.0.28" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-menu" "2.0.5" - "@nextui-org/use-is-mobile" "2.0.8" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/divider" "2.0.31" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-menu" "2.0.6" + "@nextui-org/use-is-mobile" "2.0.9" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/menu" "3.14.1" @@ -562,18 +515,18 @@ "@react-types/menu" "3.9.9" "@react-types/shared" "3.23.1" -"@nextui-org/modal@2.0.36": - version "2.0.36" - resolved "https://registry.yarnpkg.com/@nextui-org/modal/-/modal-2.0.36.tgz#39f52fa39ed605c8631efb98991cf7073c2c0cc4" - integrity sha512-ucWBobeoM8BVLpgXrtZ/H5TD9eFS2YF4W7vntWC05Q13A34LSHgBjNHJkfwW/OebGjJoaDoRiIBohWaiyyliTA== +"@nextui-org/modal@2.0.39": + version "2.0.39" + resolved "https://registry.npmjs.org/@nextui-org/modal/-/modal-2.0.39.tgz" + integrity sha512-b0G5IRNrfQumx8mQQO92rn2iC2ueUuk4XKvxYYmYNpx3/qpdEP9tckozw+s0QFyZocRPY+yYa0pBtMBGC2lWGQ== dependencies: - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-button" "2.0.9" - "@nextui-org/use-aria-modal-overlay" "2.0.10" - "@nextui-org/use-disclosure" "2.0.9" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-button" "2.0.10" + "@nextui-org/use-aria-modal-overlay" "2.0.11" + "@nextui-org/use-disclosure" "2.0.10" "@react-aria/dialog" "3.5.14" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -582,16 +535,16 @@ "@react-stately/overlays" "3.6.7" "@react-types/overlays" "3.8.7" -"@nextui-org/navbar@2.0.33": - version "2.0.33" - resolved "https://registry.yarnpkg.com/@nextui-org/navbar/-/navbar-2.0.33.tgz#2cd2d3a3b421f5ab7ecfbdf304ef10802dd8ec29" - integrity sha512-WbPLEz6yE1vxKTqZDN85YPCWR/JSvpOO604xBpaaCf+OLfEsb+herz7+GDPnvHKaPDASoxU5WaSQJR9nrJ/YHg== +"@nextui-org/navbar@2.0.36": + version "2.0.36" + resolved "https://registry.npmjs.org/@nextui-org/navbar/-/navbar-2.0.36.tgz" + integrity sha512-uobdPsh4TSPm2Us74/Vey43z0/oRqWb6x4+eHIJf9VhYP9pY733N2n17v2mvU7SvcNhkold/PWfXPYiA8kMlug== dependencies: - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-toggle-button" "2.0.9" - "@nextui-org/use-scroll-position" "2.0.6" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-toggle-button" "2.0.10" + "@nextui-org/use-scroll-position" "2.0.8" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/overlays" "3.22.1" @@ -600,33 +553,33 @@ "@react-stately/utils" "3.10.1" react-remove-scroll "^2.5.6" -"@nextui-org/pagination@2.0.33": - version "2.0.33" - resolved "https://registry.yarnpkg.com/@nextui-org/pagination/-/pagination-2.0.33.tgz#06a76917a55b49462ae9152df0583e9f1300803f" - integrity sha512-LiDDTSTuC0Q9gSI1gc/b+lmKR8/zFiwSfYjLh7KDND3m+qE44waICWnK1U7P6Y999Nu1LwaGSGtqayd326aPrg== +"@nextui-org/pagination@2.0.35": + version "2.0.35" + resolved "https://registry.npmjs.org/@nextui-org/pagination/-/pagination-2.0.35.tgz" + integrity sha512-07KJgZcJBt2e9RY6TsiQm5qrjDLH+gT3yB7yQ4jPdCK9fkTB0r2kvTOYdPUvrtVJYRq2bwFCWOz+9mokdNfcwg== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-pagination" "2.0.7" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-pagination" "2.0.9" "@react-aria/focus" "3.17.1" "@react-aria/i18n" "3.11.1" "@react-aria/interactions" "3.21.3" "@react-aria/utils" "3.24.1" scroll-into-view-if-needed "3.0.10" -"@nextui-org/popover@2.1.24": - version "2.1.24" - resolved "https://registry.yarnpkg.com/@nextui-org/popover/-/popover-2.1.24.tgz#fd575dc0c1ab314e7d8a18a4aec3c2812ba2412b" - integrity sha512-PGbTxdcc06BMxEd/HYsL0sVa0fdGjHPYNSvcSSM0KA6Fh98pznO9DoQHjIEPAul87yEwl7cDDj7mANcdK9BVnA== +"@nextui-org/popover@2.1.27": + version "2.1.27" + resolved "https://registry.npmjs.org/@nextui-org/popover/-/popover-2.1.27.tgz" + integrity sha512-UV42nqvUR9IOy7Hgc5S2Xo+2YWzBAHCcU+C/9O9SchXL0DyU/ol+IPqxuBxdJDi5fiFYr9mTBoPZgAEGDoJjDg== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/button" "2.0.34" - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-aria-button" "2.0.9" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/button" "2.0.37" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-aria-button" "2.0.10" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/dialog" "3.5.14" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -637,26 +590,26 @@ "@react-types/overlays" "3.8.7" react-remove-scroll "^2.5.6" -"@nextui-org/progress@2.0.31": - version "2.0.31" - resolved "https://registry.yarnpkg.com/@nextui-org/progress/-/progress-2.0.31.tgz#b70c9c586dc5dff8b22ff761fc27a9049105ce1a" - integrity sha512-ZFjV4068gYPe9S4R1e/8oqwtPFKd9ag8RB0JoToq55AM5aLItOA/Q/uwBnDz7ait3C7viWawcN4leW1C8dSurQ== +"@nextui-org/progress@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/@nextui-org/progress/-/progress-2.0.33.tgz" + integrity sha512-rP54lZbH7BSzX9sFj7k3ylrUpk10XDWngc1dB1M+GlPsI2XRnzI3s+GE9kuZG2+N6eL/KLVG1YOg8u9eAYnwpA== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-is-mounted" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-is-mounted" "2.0.6" "@react-aria/i18n" "3.11.1" "@react-aria/progress" "3.4.13" "@react-aria/utils" "3.24.1" "@react-types/progress" "3.5.4" -"@nextui-org/radio@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@nextui-org/radio/-/radio-2.1.2.tgz#5039b098f80dd4050acbe88b247ddba25022de57" - integrity sha512-JcWKRqXXRwQtz5ABzykuu+S4/8cO9GKa21Gget1fdo/iSDcUtGDHIf6wlpvWSNekpvIERZd9UdpwhaXWbD4pOg== +"@nextui-org/radio@2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@nextui-org/radio/-/radio-2.1.4.tgz" + integrity sha512-Y18TXvGVz/G1E3jjYmutSSx1EdQRs5iMCVZNS/Bz4avE9QMSrHl6fOhZIndrm8LwCTqn7lbKRQngZLN4tvPinQ== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/radio" "3.10.4" @@ -666,102 +619,102 @@ "@react-types/radio" "3.8.1" "@react-types/shared" "3.23.1" -"@nextui-org/react-rsc-utils@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@nextui-org/react-rsc-utils/-/react-rsc-utils-2.0.12.tgz#a931a2e6a9523e9f11f3397a57cde0861ba9ff7a" - integrity sha512-s2IG4pM1K+kbm6A2g3UpqrS592AExpGixtZNPJ2lV5+UQi1ld3vb4EiBIOViZMoSCNCoNdaeO5Yqo6cKghwCPA== +"@nextui-org/react-rsc-utils@2.0.13": + version "2.0.13" + resolved "https://registry.npmjs.org/@nextui-org/react-rsc-utils/-/react-rsc-utils-2.0.13.tgz" + integrity sha512-QewsXtoQlMsR9stThdazKEImg9oyZkPLs7wsymhrzh6/HdQCl9bTdb6tJcROg4vg5LRYKGG11USSQO2nKlfCcQ== -"@nextui-org/react-utils@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@nextui-org/react-utils/-/react-utils-2.0.14.tgz#e075fd8af2f59804186af6dbfd64605b945c5cbc" - integrity sha512-fed97WSaHt8/sC5F4DFTVj25YQsepFGDyudommPGQsTksQ6GQkMITuHckzAyPiTTuWHSW/GZykvVVAlK9hS5Wg== +"@nextui-org/react-utils@2.0.16": + version "2.0.16" + resolved "https://registry.npmjs.org/@nextui-org/react-utils/-/react-utils-2.0.16.tgz" + integrity sha512-QdDoqzhx+4t9cDTVmtw5iOrfyLvpqyKsq8PARHUniCiQQDQd1ao7FCpzHgvU9poYcEdRk+Lsna66zbeMkFBB6w== dependencies: - "@nextui-org/react-rsc-utils" "2.0.12" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-rsc-utils" "2.0.13" + "@nextui-org/shared-utils" "2.0.7" "@nextui-org/react@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@nextui-org/react/-/react-2.4.2.tgz#236941ccdcb103b80d186bec23b852a40d5d513c" - integrity sha512-g7CqAX/x0DJsIUmD+Z6I4T1699uVmu5kbuY0n1PdA4IDjFSKzgkMCIogcIKu2iUV+LVlvfF1lDhs300OIpouig== + version "2.4.6" + resolved "https://registry.npmjs.org/@nextui-org/react/-/react-2.4.6.tgz" + integrity sha512-8o/k5A5g0xXj6hmV2AulkAswQnZGt2WI64Coq+toWBTumQLcW6iAqPJBDztCDiz+6yiU6Nvk/1ZuZJeRs3XMRw== dependencies: - "@nextui-org/accordion" "2.0.35" - "@nextui-org/autocomplete" "2.1.2" - "@nextui-org/avatar" "2.0.30" - "@nextui-org/badge" "2.0.29" - "@nextui-org/breadcrumbs" "2.0.10" - "@nextui-org/button" "2.0.34" - "@nextui-org/calendar" "2.0.7" - "@nextui-org/card" "2.0.31" - "@nextui-org/checkbox" "2.1.2" - "@nextui-org/chip" "2.0.30" - "@nextui-org/code" "2.0.29" - "@nextui-org/date-input" "2.1.1" - "@nextui-org/date-picker" "2.1.2" - "@nextui-org/divider" "2.0.28" - "@nextui-org/dropdown" "2.1.26" - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/image" "2.0.29" - "@nextui-org/input" "2.2.2" - "@nextui-org/kbd" "2.0.30" - "@nextui-org/link" "2.0.32" - "@nextui-org/listbox" "2.1.22" - "@nextui-org/menu" "2.0.25" - "@nextui-org/modal" "2.0.36" - "@nextui-org/navbar" "2.0.33" - "@nextui-org/pagination" "2.0.33" - "@nextui-org/popover" "2.1.24" - "@nextui-org/progress" "2.0.31" - "@nextui-org/radio" "2.1.2" - "@nextui-org/ripple" "2.0.30" - "@nextui-org/scroll-shadow" "2.1.17" - "@nextui-org/select" "2.2.2" - "@nextui-org/skeleton" "2.0.29" - "@nextui-org/slider" "2.2.12" - "@nextui-org/snippet" "2.0.38" - "@nextui-org/spacer" "2.0.29" - "@nextui-org/spinner" "2.0.30" - "@nextui-org/switch" "2.0.31" - "@nextui-org/system" "2.2.2" - "@nextui-org/table" "2.0.36" - "@nextui-org/tabs" "2.0.32" - "@nextui-org/theme" "2.2.6" - "@nextui-org/tooltip" "2.0.36" - "@nextui-org/user" "2.0.31" + "@nextui-org/accordion" "2.0.38" + "@nextui-org/autocomplete" "2.1.5" + "@nextui-org/avatar" "2.0.32" + "@nextui-org/badge" "2.0.31" + "@nextui-org/breadcrumbs" "2.0.12" + "@nextui-org/button" "2.0.37" + "@nextui-org/calendar" "2.0.11" + "@nextui-org/card" "2.0.33" + "@nextui-org/checkbox" "2.1.4" + "@nextui-org/chip" "2.0.32" + "@nextui-org/code" "2.0.32" + "@nextui-org/date-input" "2.1.3" + "@nextui-org/date-picker" "2.1.6" + "@nextui-org/divider" "2.0.31" + "@nextui-org/dropdown" "2.1.29" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/image" "2.0.31" + "@nextui-org/input" "2.2.4" + "@nextui-org/kbd" "2.0.33" + "@nextui-org/link" "2.0.34" + "@nextui-org/listbox" "2.1.25" + "@nextui-org/menu" "2.0.28" + "@nextui-org/modal" "2.0.39" + "@nextui-org/navbar" "2.0.36" + "@nextui-org/pagination" "2.0.35" + "@nextui-org/popover" "2.1.27" + "@nextui-org/progress" "2.0.33" + "@nextui-org/radio" "2.1.4" + "@nextui-org/ripple" "2.0.32" + "@nextui-org/scroll-shadow" "2.1.19" + "@nextui-org/select" "2.2.5" + "@nextui-org/skeleton" "2.0.31" + "@nextui-org/slider" "2.2.15" + "@nextui-org/snippet" "2.0.41" + "@nextui-org/spacer" "2.0.32" + "@nextui-org/spinner" "2.0.33" + "@nextui-org/switch" "2.0.33" + "@nextui-org/system" "2.2.5" + "@nextui-org/table" "2.0.39" + "@nextui-org/tabs" "2.0.35" + "@nextui-org/theme" "2.2.9" + "@nextui-org/tooltip" "2.0.39" + "@nextui-org/user" "2.0.33" "@react-aria/visually-hidden" "3.8.12" -"@nextui-org/ripple@2.0.30": - version "2.0.30" - resolved "https://registry.yarnpkg.com/@nextui-org/ripple/-/ripple-2.0.30.tgz#abe44dc757a52e7b707284b2f57caae20ddd4c53" - integrity sha512-GmHwC+F2JIYQAeFuwtFbdE6av8lzOJVdA5yops9vhhzeBPT33dMjgazCn0HZT5TvP0gX+xxT/74ONE0ik0Kayg== +"@nextui-org/ripple@2.0.32": + version "2.0.32" + resolved "https://registry.npmjs.org/@nextui-org/ripple/-/ripple-2.0.32.tgz" + integrity sha512-xOqoHWzpvv5KRh7P8pXt3aZEmI1tyhiTNhrwjJaRME0d5xSA0gNzYhrjP5g0+Dxy4nKRDIZ1znJcd87KI07JFA== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" -"@nextui-org/scroll-shadow@2.1.17": - version "2.1.17" - resolved "https://registry.yarnpkg.com/@nextui-org/scroll-shadow/-/scroll-shadow-2.1.17.tgz#f037431c26e99dfffd0214ba132c6febaa191133" - integrity sha512-JOJc6nbdFHcMn/zpaf78AAZ8Vwo/iQO6iWJVHlN6ROjSKL7EImP/V78m14Y+kd0hkzU8CcHswdpmCefaioFlRA== +"@nextui-org/scroll-shadow@2.1.19": + version "2.1.19" + resolved "https://registry.npmjs.org/@nextui-org/scroll-shadow/-/scroll-shadow-2.1.19.tgz" + integrity sha512-od5AnhX6iO0sHoTAVReWv1O1dbNCEeOBOFdnyzFins6ZC5EnAl/oBPR/KLd8glHtgM3Jt8dvIVlBXPEPZKZwaw== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-data-scroll-overflow" "2.1.4" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-data-scroll-overflow" "2.1.6" -"@nextui-org/select@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@nextui-org/select/-/select-2.2.2.tgz#eb18757529aade858d32b09c69064914c8a1fb50" - integrity sha512-bCk6/LJAhhSM5VXiny7rDTH5f7ri7mGKx4V+K83kY9uW01ioWWYId1EhbP6Crd9PSvmQL42mhId/5dLRxgUimA== +"@nextui-org/select@2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@nextui-org/select/-/select-2.2.5.tgz" + integrity sha512-Il1eigjSXOBgJ745nhn6TDPD1jj1avrnvk9WV/DCjOsFRwfstRnDzsS1aNpZKHqJgHhFRQZ1ivz8hA4x3Zgasg== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/listbox" "2.1.22" - "@nextui-org/popover" "2.1.24" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/scroll-shadow" "2.1.17" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/spinner" "2.0.30" - "@nextui-org/use-aria-button" "2.0.9" - "@nextui-org/use-aria-multiselect" "2.2.2" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/listbox" "2.1.25" + "@nextui-org/popover" "2.1.27" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/scroll-shadow" "2.1.19" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/spinner" "2.0.33" + "@nextui-org/use-aria-button" "2.0.10" + "@nextui-org/use-aria-multiselect" "2.2.3" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/focus" "3.17.1" "@react-aria/form" "3.0.5" "@react-aria/interactions" "3.21.3" @@ -769,32 +722,32 @@ "@react-aria/visually-hidden" "3.8.12" "@react-types/shared" "3.23.1" -"@nextui-org/shared-icons@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@nextui-org/shared-icons/-/shared-icons-2.0.8.tgz#2dd34322503bad5ce06420940369bbc4140c9f15" - integrity sha512-siKuw+CN03cB2N1eUpIleP+lTpjM4gSmcco7RXTpXiwXJXlxjKo4N8gQYS04HCBXm9QMWgyngvUEt2II9NYyrw== +"@nextui-org/shared-icons@2.0.9": + version "2.0.9" + resolved "https://registry.npmjs.org/@nextui-org/shared-icons/-/shared-icons-2.0.9.tgz" + integrity sha512-WG3yinVY7Tk9VqJgcdF4V8Ok9+fcm5ey7S1els7kujrfqLYxtqoKywgiY/7QHwZlfQkzpykAfy+NAlHkTP5hMg== -"@nextui-org/shared-utils@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/shared-utils/-/shared-utils-2.0.5.tgz#f04072240f35b0a5748fe38b4ec1c285231d6074" - integrity sha512-aFc/CUL8RVfBh0IotIpxkpKjyUPc/zJaMJd5pRCQA1kIpKLdSrlh3//MLYMaP/fo/NQtE3DPeXqfKhHRr1fkEw== +"@nextui-org/shared-utils@2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@nextui-org/shared-utils/-/shared-utils-2.0.7.tgz" + integrity sha512-FxY3N0i1Al7Oz3yOQN0dSpG8UUrLIP3iYh3ubD7BhdQoZLl5xbG6++q1gqOzZXV+ZWeUFMY/or0ofzWxGHiOow== -"@nextui-org/skeleton@2.0.29": - version "2.0.29" - resolved "https://registry.yarnpkg.com/@nextui-org/skeleton/-/skeleton-2.0.29.tgz#37b1147b3b6f814f29050a41b1fee0ed994422b6" - integrity sha512-s/oQdUc1Ao7XRmUP82V2/hI3B644ZQzIYuPIgp+A6DyDLfyRUx8PLWN/EhN5Ku2M/s6WYTkwulDrKeo4dlMsrw== +"@nextui-org/skeleton@2.0.31": + version "2.0.31" + resolved "https://registry.npmjs.org/@nextui-org/skeleton/-/skeleton-2.0.31.tgz" + integrity sha512-pT0l2skPP6Nq9edLJNQxUJI/WLKu4Lx5Vvs7nlE/9NpkxyQ805l4LiYsMD30dkjjxe+WpXtIjjAXY0BQqdid0Q== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" -"@nextui-org/slider@2.2.12": - version "2.2.12" - resolved "https://registry.yarnpkg.com/@nextui-org/slider/-/slider-2.2.12.tgz#a9293980c42c21b07d4538531f3491700517555c" - integrity sha512-5+72YlWxV6bm9hGNpWN5G+6OeqU7S9N2ECwEdO4COQ1hvMiimiJ3lrTUHIS2AvKimEpw+MLkUoKIbqAV23zxuw== +"@nextui-org/slider@2.2.15": + version "2.2.15" + resolved "https://registry.npmjs.org/@nextui-org/slider/-/slider-2.2.15.tgz" + integrity sha512-ImsxvxAJ2wxRL45y4IbVWThZI/vw2Gq/6qUVZFAwyF54dlro08eJZJIOOG7bKfA5Ob63JLfroUijrlZ9kGP5cA== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/tooltip" "2.0.36" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/tooltip" "2.0.39" "@react-aria/focus" "3.17.1" "@react-aria/i18n" "3.11.1" "@react-aria/interactions" "3.21.3" @@ -803,46 +756,46 @@ "@react-aria/visually-hidden" "3.8.12" "@react-stately/slider" "3.5.4" -"@nextui-org/snippet@2.0.38": - version "2.0.38" - resolved "https://registry.yarnpkg.com/@nextui-org/snippet/-/snippet-2.0.38.tgz#a5a15bacc94e7f67a2f8804f76d6197ee24ae79c" - integrity sha512-8lMqtB1KQtMkpZFb3x/T42zdZ+QqcGr6d/yVE+zKzyEd+xqzm2g/hDpPqy0Mf5JaC1Z+lXoRzF/6XbD99FCEbw== +"@nextui-org/snippet@2.0.41": + version "2.0.41" + resolved "https://registry.npmjs.org/@nextui-org/snippet/-/snippet-2.0.41.tgz" + integrity sha512-ZZopaecAZbKJIdabwGVF3ahL2MM7L0zZII61SO3LDPAwqXOuta9ixMYk1XVCI0V2PVqTkabQgdpt1ZLgmFH+Kw== dependencies: - "@nextui-org/button" "2.0.34" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/tooltip" "2.0.36" - "@nextui-org/use-clipboard" "2.0.5" + "@nextui-org/button" "2.0.37" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/tooltip" "2.0.39" + "@nextui-org/use-clipboard" "2.0.6" "@react-aria/focus" "3.17.1" "@react-aria/utils" "3.24.1" -"@nextui-org/spacer@2.0.29": - version "2.0.29" - resolved "https://registry.yarnpkg.com/@nextui-org/spacer/-/spacer-2.0.29.tgz#2cce8bc0e69a87a91e8ee320df407fe989129e3c" - integrity sha512-lcgzHIvTXXllnM6MMjti0ub8jEx9jmtzdd5+zgFAHLTeDS3pDffNZndmU+RkzpyGSyK20PCrMkV/sB4SCDN1KA== +"@nextui-org/spacer@2.0.32": + version "2.0.32" + resolved "https://registry.npmjs.org/@nextui-org/spacer/-/spacer-2.0.32.tgz" + integrity sha512-NxqEYTig4OfkLDPlO2/jASB4gV8L9DLpsNZSqzaacIJZwk4BCTsNoBi3CuNt5ZsMoGYujtFP6QU0zH9fZbuzwA== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system-rsc" "2.1.2" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system-rsc" "2.1.5" -"@nextui-org/spinner@2.0.30": - version "2.0.30" - resolved "https://registry.yarnpkg.com/@nextui-org/spinner/-/spinner-2.0.30.tgz#f8f40a45da575f73f3d94a2f804041f6b71216ba" - integrity sha512-+oygL2dewHZzJiSUEIvzL0tIx+G+98mvO3ToFAMXaH0N3bOQNSiFDPwUHUx6PgAQ9pr9RKtdnb4ywstcG9j+Gg== +"@nextui-org/spinner@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/@nextui-org/spinner/-/spinner-2.0.33.tgz" + integrity sha512-c1wW4YEbzdn0t1MJAXhJ2W0PuNxrxtZg2DVqJeqh3180y4iQPYDzEy7oFoU0FpK53LcBPxjfsKHNL6v1pn+60A== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/system-rsc" "2.1.2" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/system-rsc" "2.1.5" -"@nextui-org/switch@2.0.31": - version "2.0.31" - resolved "https://registry.yarnpkg.com/@nextui-org/switch/-/switch-2.0.31.tgz#189846066692687ad879ad7d4b048e899e7bfe55" - integrity sha512-WPHqWQfyISA8nmQ8ihaO5rIHm/K9nyfrV0Fxm6EcnFilTMZhh4Kt+p7FfJrZw+MMyzIEGFfMDySk1KVrMubc1g== +"@nextui-org/switch@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/@nextui-org/switch/-/switch-2.0.33.tgz" + integrity sha512-T7w+8+ex7Pey9HVGXkNft4D11mO5J9iPfmemfLbSOYqbSydcOuINuGRQ1QWy7X+lLYhhZBHb9Ykcf4QtR4dqTQ== dependencies: - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/switch" "3.6.4" @@ -851,36 +804,37 @@ "@react-stately/toggle" "3.7.4" "@react-types/shared" "3.23.1" -"@nextui-org/system-rsc@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@nextui-org/system-rsc/-/system-rsc-2.1.2.tgz#42b6568617018ec108cb60d22cb7bff96f6117b3" - integrity sha512-3F7pG68Ikh1JsMtRQqmyXAojAV4lMPCKCy0n8RiIxJkEJg11RGTXhnABHF2jP6uxMH/0q5zVzuFubQJfW++ISQ== +"@nextui-org/system-rsc@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nextui-org/system-rsc/-/system-rsc-2.1.5.tgz" + integrity sha512-tkJLAyJu34Rr5KUMMqoB7cZjOVXB+7a/7N4ushZfuiLdoYijgmcXFMzLxjm+tbt9zA5AV+ivsfbHvscg77dJ6w== dependencies: + "@react-types/shared" "3.23.1" clsx "^1.2.1" -"@nextui-org/system@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@nextui-org/system/-/system-2.2.2.tgz#2ed5758bc7589a5e958f6ff9d08fc623be41e953" - integrity sha512-u30lWSIO4Q7DStiK5tJjDgKBQtmODeQZcC6llz973sJ9QlE4GeC1fgu0+/zXL8AZZ8o/iEXhHWXsZIJ26EquUQ== +"@nextui-org/system@>=2.0.0", "@nextui-org/system@>=2.1.0", "@nextui-org/system@2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@nextui-org/system/-/system-2.2.5.tgz" + integrity sha512-nrX6768aiyWtpxX3OTFBIVWR+v9nlMsC3KaBinNfek97sNm7gAfTHi7q5kylE3L5yIMpNG+DclAKpuxgDQEmvw== dependencies: "@internationalized/date" "^3.5.4" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/system-rsc" "2.1.2" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/system-rsc" "2.1.5" "@react-aria/i18n" "3.11.1" "@react-aria/overlays" "3.22.1" "@react-aria/utils" "3.24.1" "@react-stately/utils" "3.10.1" -"@nextui-org/table@2.0.36": - version "2.0.36" - resolved "https://registry.yarnpkg.com/@nextui-org/table/-/table-2.0.36.tgz#607dc9d55637e0160abf48ffe72aa52cb7142db7" - integrity sha512-vpohZo5p3XmT6FLOKKwmm8SdCA/h2QPQz6Y66sAfHuoqAfkmfVfAeyKgYTe20pVJy3Whvyix6IA8e0eWETDTEw== +"@nextui-org/table@2.0.39": + version "2.0.39" + resolved "https://registry.npmjs.org/@nextui-org/table/-/table-2.0.39.tgz" + integrity sha512-VYvmrQ6GliwmzukKLZ7Nxp3sFXdskWZp8/BjwROLFE9Zco22CC0++7VPG3ebOYAIhi4e1Je+QUTx4/eh2wZZgg== dependencies: - "@nextui-org/checkbox" "2.1.2" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-icons" "2.0.8" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/spacer" "2.0.29" + "@nextui-org/checkbox" "2.1.4" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-icons" "2.0.9" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/spacer" "2.0.32" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/table" "3.14.1" @@ -891,17 +845,17 @@ "@react-types/grid" "3.2.6" "@react-types/table" "3.9.5" -"@nextui-org/tabs@2.0.32": - version "2.0.32" - resolved "https://registry.yarnpkg.com/@nextui-org/tabs/-/tabs-2.0.32.tgz#13fe104097664f6d627bc60e37673492b9069456" - integrity sha512-TVCwm1GI7rkf/o7+eWpklRQBTg2Y/m3eNBLU1jA+Ppqs+Mr31y7BHoNLqTZ6jpj59DA1OcpwbJH5xhGk0pOvwA== +"@nextui-org/tabs@2.0.35": + version "2.0.35" + resolved "https://registry.npmjs.org/@nextui-org/tabs/-/tabs-2.0.35.tgz" + integrity sha512-K6uDZbJwn1qLRw8XeBS2TwGQl9zKXg3Q1ShLzVG2IjTGHGNAn9lwkUzn0FNUNaU1GK2o8wOyKhX7K02J3Ev5fw== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-is-mounted" "2.0.5" - "@nextui-org/use-update-effect" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-is-mounted" "2.0.6" + "@nextui-org/use-update-effect" "2.0.6" "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" "@react-aria/tabs" "3.9.1" @@ -911,10 +865,10 @@ "@react-types/tabs" "3.3.7" scroll-into-view-if-needed "3.0.10" -"@nextui-org/theme@2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@nextui-org/theme/-/theme-2.2.6.tgz#57f8fca6c2fddaf72df3c92e0e9befbd4a5a3002" - integrity sha512-FyDp5edpmjbvPzRx+D2+Km1oZ73wQOzKMSBPomOgP0h9OFnnTHqKlmtbGhWSk2cEyYN9VsaGvqJTw8X35/aChQ== +"@nextui-org/theme@>=2.1.0", "@nextui-org/theme@>=2.2.0", "@nextui-org/theme@2.2.9": + version "2.2.9" + resolved "https://registry.npmjs.org/@nextui-org/theme/-/theme-2.2.9.tgz" + integrity sha512-TN2I9sMriLaj00pXsIMlg19+UHeOdjzS2JV0u4gjL14mSbQl5BYNxgbvU3gbMqkZZQ6OpwT4RnT8RS+ks6TXCw== dependencies: clsx "^1.2.1" color "^4.2.3" @@ -929,16 +883,16 @@ tailwind-merge "^1.14.0" tailwind-variants "^0.1.20" -"@nextui-org/tooltip@2.0.36": - version "2.0.36" - resolved "https://registry.yarnpkg.com/@nextui-org/tooltip/-/tooltip-2.0.36.tgz#59ca20f60f7e8268659e1ee3a9b7a7ff25ef971e" - integrity sha512-tV3BefTvmYzSC4TX+UPV7p3F5fs52sFzQ1/Try/Bkz5B1F9yXviO9dV2/pqXSfOJVvLVJS2RMi5wZkaYh1xtNw== +"@nextui-org/tooltip@2.0.39": + version "2.0.39" + resolved "https://registry.npmjs.org/@nextui-org/tooltip/-/tooltip-2.0.39.tgz" + integrity sha512-DWP3XAmVb/SlcdI4SQodtT8ZyMzYMuvRbq4+JQwm+qq1+FGs55z15+8h9DRFQEseEEaDs0hCs6+kgbieZlUitw== dependencies: - "@nextui-org/aria-utils" "2.0.21" - "@nextui-org/framer-utils" "2.0.21" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/aria-utils" "2.0.24" + "@nextui-org/framer-utils" "2.0.24" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" + "@nextui-org/use-safe-layout-effect" "2.0.6" "@react-aria/interactions" "3.21.3" "@react-aria/overlays" "3.22.1" "@react-aria/tooltip" "3.7.4" @@ -947,10 +901,10 @@ "@react-types/overlays" "3.8.7" "@react-types/tooltip" "3.4.9" -"@nextui-org/use-aria-accordion@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-accordion/-/use-aria-accordion-2.0.6.tgz#6cdad59f02a9496c505782658e3a3ce996d47e2d" - integrity sha512-47+/gO67YufQUtL0f2TIdaa8++5EBtIK7Ltq1GpUat2qjbMFvIb6Ao/Jf3KHU5NicLLRnWPSK1vNaupkYwN/ew== +"@nextui-org/use-aria-accordion@2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-accordion/-/use-aria-accordion-2.0.7.tgz" + integrity sha512-VzGlxmsu2tWG2Pht1e0PBz40jz95v0OEKYVXq91WpDMwj8Bl1CYvxrw2Qz41/5Xi0X843Mmo4sPwrc/hk0+RHA== dependencies: "@react-aria/button" "3.9.5" "@react-aria/focus" "3.17.1" @@ -960,10 +914,10 @@ "@react-types/accordion" "3.0.0-alpha.21" "@react-types/shared" "3.23.1" -"@nextui-org/use-aria-button@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-button/-/use-aria-button-2.0.9.tgz#b537c0d208ad2502c0835415b039146612c5153f" - integrity sha512-5FjDl57/1Ey3MgJn+yB0/CPABsSVgXiE+jT7ZLnSqH9kmdXV/eMiuplF7fOOvaSMCA1cE3KCetaPVDIZoJI1/w== +"@nextui-org/use-aria-button@2.0.10": + version "2.0.10" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-button/-/use-aria-button-2.0.10.tgz" + integrity sha512-tUpp4QMr1zugKPevyToeRHIufTuc/g+67/r/oQLRTG0mMo3yGVmggykQuYn22fqqZPpW6nHcB9VYc+XtZZ27TQ== dependencies: "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -971,10 +925,10 @@ "@react-types/button" "3.9.4" "@react-types/shared" "3.23.1" -"@nextui-org/use-aria-link@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-link/-/use-aria-link-2.0.18.tgz#9cf8760a98faa4f4931f07172fae3e1c2bd42f7e" - integrity sha512-6ZIIOfMMGbSOF9FcJTPrsVOm2LP7OV+QwF0vYelZeEK5zFXb5f8e2J/fEbCVWKLPFDB2VyoBUDWMzRfrizixzg== +"@nextui-org/use-aria-link@2.0.19": + version "2.0.19" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-link/-/use-aria-link-2.0.19.tgz" + integrity sha512-ef61cJLlwcR4zBWiaeHZy4K18juFjUup2SslfLIAiZz3kVosBCGKmkJkw1SASYY8+D/oUc2B6BFIk25YEsRKRw== dependencies: "@react-aria/focus" "3.17.1" "@react-aria/interactions" "3.21.3" @@ -982,10 +936,10 @@ "@react-types/link" "3.5.5" "@react-types/shared" "3.23.1" -"@nextui-org/use-aria-menu@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-menu/-/use-aria-menu-2.0.5.tgz#a27cdb58179eb96770e85a0d0caaae229ec09229" - integrity sha512-7bAwISb4vIGhAuvZEHpb/28u0k2/HxNhMJUcz/UxVJTMqSkbSJR2RKdm64WfhEq2A8ZtvED0BAJbDuPf4Q4avg== +"@nextui-org/use-aria-menu@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-menu/-/use-aria-menu-2.0.6.tgz" + integrity sha512-fGDF25E99THbgeDV2r2w4BHw5ZbGW3Lu6Y+vbLUcLBBh6x8/W8cqrpYFrzSUzn1RCun1t17yOAHZEV2rbvtMzA== dependencies: "@react-aria/i18n" "3.11.1" "@react-aria/interactions" "3.21.3" @@ -997,20 +951,20 @@ "@react-types/menu" "3.9.9" "@react-types/shared" "3.23.1" -"@nextui-org/use-aria-modal-overlay@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-modal-overlay/-/use-aria-modal-overlay-2.0.10.tgz#863b879cc780421c1f5d4277a60309ab444a2683" - integrity sha512-/VONX/beH4vu7SQjAtxcQoRhdAOro+QeBk9XOW+qcNvxZG4Em1vf1KFmpHRC40DtsrUk3I0cxaZezeIgfOZ41Q== +"@nextui-org/use-aria-modal-overlay@2.0.11": + version "2.0.11" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-modal-overlay/-/use-aria-modal-overlay-2.0.11.tgz" + integrity sha512-crMOCHyGIiBJiihxqidJCNR3AHH62uewfImDLEwyE/SlIkhAqW5jteUhkq0QfCSH4U/ydWisQ14niWDEgtzxXg== dependencies: "@react-aria/overlays" "3.22.1" "@react-aria/utils" "3.24.1" "@react-stately/overlays" "3.6.7" "@react-types/shared" "3.23.1" -"@nextui-org/use-aria-multiselect@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-multiselect/-/use-aria-multiselect-2.2.2.tgz#b253d9412d5868434137551b283d770b6db2e0e2" - integrity sha512-iFw9CVRWTKBl+c1FbbHxp4K0B6aQTXSzXiIP09TJ1NQ10fk1GQXBIhFUIyvIwRJRGvYAL+vwkgj39Ac1p1esJQ== +"@nextui-org/use-aria-multiselect@2.2.3": + version "2.2.3" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-multiselect/-/use-aria-multiselect-2.2.3.tgz" + integrity sha512-VeRoyyUUVgJ7DrdfzU6onjohHxJfG7bmwpIfQyurMzvTZcmcVUGTnddAnRPVEoOro68tTAj4IuPs/4xkf1aXxg== dependencies: "@react-aria/i18n" "3.11.1" "@react-aria/interactions" "3.21.3" @@ -1027,100 +981,100 @@ "@react-types/select" "3.9.4" "@react-types/shared" "3.23.1" -"@nextui-org/use-aria-toggle-button@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@nextui-org/use-aria-toggle-button/-/use-aria-toggle-button-2.0.9.tgz#d97751d871e65c3ce399ebfe87b14988456de3cd" - integrity sha512-JpPD97tYpPwyhgXgJbWYgMDp5ZysM1LyvvmyHmq6BtvSpyYqQKU7V3LDXuirBEN6NwHHZRfXy4/mUid/L6W0wA== +"@nextui-org/use-aria-toggle-button@2.0.10": + version "2.0.10" + resolved "https://registry.npmjs.org/@nextui-org/use-aria-toggle-button/-/use-aria-toggle-button-2.0.10.tgz" + integrity sha512-U5jOmEO+nMIgYvBF0+gJtdq8C6dynGMjzAboPG4FhuHOzDoNiC12G5FIbGnRe8K1hMsKVuaI72p9986NhfqNgw== dependencies: - "@nextui-org/use-aria-button" "2.0.9" + "@nextui-org/use-aria-button" "2.0.10" "@react-aria/utils" "3.24.1" "@react-stately/toggle" "3.7.4" "@react-types/button" "3.9.4" "@react-types/shared" "3.23.1" -"@nextui-org/use-callback-ref@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-callback-ref/-/use-callback-ref-2.0.5.tgz#7664dfedfb4ad35dd00b61d1d57477b805e1e8d2" - integrity sha512-lcjlV5yaDTiFSv06E5RtQNqy+O6XqH/Q/yz+ka1ZBlZF/FdzEPNRfJ0shN2D7Sh3DdbvV2lySbA2g/0d94geaw== +"@nextui-org/use-callback-ref@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@nextui-org/use-callback-ref/-/use-callback-ref-2.0.6.tgz" + integrity sha512-2WcwWuK1L/wIpTbibnLrysmmkzWomvkVIcgWayB6n/w+bpPrPCG7Zyg2WHzmMmDhe6imV//KKBgNKRi8Xhu/VA== dependencies: - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/use-safe-layout-effect" "2.0.6" -"@nextui-org/use-clipboard@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-clipboard/-/use-clipboard-2.0.5.tgz#846293369105d386ea0b6e4dfd4e776ce561ed03" - integrity sha512-1ExwXM8ENmc/kVDqKoiPGrBP/0B7rZ43iSv2MoWD1Qpc8GHg71Rv7NTIlBDoD/pfUfqkab6x66iKC7AVR8rifA== +"@nextui-org/use-clipboard@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@nextui-org/use-clipboard/-/use-clipboard-2.0.6.tgz" + integrity sha512-UQbCoAX1vqEKYeMF8Xp2RdTqbDD8Or16+7W4f8OQc5+uaJeKaAL6LPITi5M5ipgruTvzM845XooHdiAStH322Q== -"@nextui-org/use-data-scroll-overflow@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nextui-org/use-data-scroll-overflow/-/use-data-scroll-overflow-2.1.4.tgz#56cdc6b45076b56b9e1d035fb7e2d12b6c43e41b" - integrity sha512-0YqUAe/b9aZftUQOH7sWqBMJHGLyC2Q/ixFyjq8Q1TijrqEyGESGQ2tm0+FHytI04drV+mnsbf6+q2QIKyqGSg== +"@nextui-org/use-data-scroll-overflow@2.1.6": + version "2.1.6" + resolved "https://registry.npmjs.org/@nextui-org/use-data-scroll-overflow/-/use-data-scroll-overflow-2.1.6.tgz" + integrity sha512-z9XzBF64qjTSp6jTttMDEPku7Xpgci/tYTokEQHWgydRg3FZEaBqRgOOMeiXAV1Py/kQB062MjPSneUtwYlozA== dependencies: - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/shared-utils" "2.0.7" -"@nextui-org/use-disclosure@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@nextui-org/use-disclosure/-/use-disclosure-2.0.9.tgz#082f55998508241b8c9b008ee96d96c5df483da4" - integrity sha512-d1Pksmm6zleZAdNraD0s97E+sXHrzI0vZ8tLNzE9yGNOf/VRMBvjpfa9S4Zl7oR+StNbST3JofCqmSHtRNe7hg== +"@nextui-org/use-disclosure@2.0.10": + version "2.0.10" + resolved "https://registry.npmjs.org/@nextui-org/use-disclosure/-/use-disclosure-2.0.10.tgz" + integrity sha512-s2I58d7x2f1JRriZnNm9ZoxrGmxF+DnC9BXM1sD99Wq1VNMd0dhitmx0mUWfUB7l5HLyZgKOeiSLG+ugy1F1Yw== dependencies: - "@nextui-org/use-callback-ref" "2.0.5" + "@nextui-org/use-callback-ref" "2.0.6" "@react-aria/utils" "3.24.1" "@react-stately/utils" "3.10.1" -"@nextui-org/use-image@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-image/-/use-image-2.0.5.tgz#1482fed65e152e84fe742658e6e6f42e08547608" - integrity sha512-FAMyvZS9XSNLqHEmU6xykMgwIFJj/V9/JpTiZAQziz2wqMiUONIBpYpGOlI+pPBNlhCkw62KHm/19vHW49FWhA== +"@nextui-org/use-image@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@nextui-org/use-image/-/use-image-2.0.6.tgz" + integrity sha512-VelN9y3vzwIpPfubFMh00YRQ0f4+I5FElcAvAqoo0Kfb0K7sGrTo1lZNApHm6yBN2gJMMeccG9u7bZB+wcDGZQ== dependencies: - "@nextui-org/use-safe-layout-effect" "2.0.5" + "@nextui-org/use-safe-layout-effect" "2.0.6" -"@nextui-org/use-is-mobile@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@nextui-org/use-is-mobile/-/use-is-mobile-2.0.8.tgz#9b77f22f68a4ce959de9a0f101ce465a33fcdcd8" - integrity sha512-fp6UgfmYTkdri3fKeFUapr0TuJGRTskrTZixh+r1aqTcEWtaeef+Nli5VKRTJb9nqYKkgJDRhC39Z5s/rgq0mA== +"@nextui-org/use-is-mobile@2.0.9": + version "2.0.9" + resolved "https://registry.npmjs.org/@nextui-org/use-is-mobile/-/use-is-mobile-2.0.9.tgz" + integrity sha512-u5pRmPV0wacdpOcAkQnWwE30yNBl2uk1WvbWkrSELxIVRN22+fTIYn8ynnHK0JbJFTA6/5zh7uIfETQu3L6KjA== dependencies: "@react-aria/ssr" "3.9.4" -"@nextui-org/use-is-mounted@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-is-mounted/-/use-is-mounted-2.0.5.tgz#bdd739c23f7cc8268bfbff35a0a57080d8837332" - integrity sha512-gk698Uwmj/XhchBsnI5Ups5uzEXuZvsPK45K6goi2/ADKXSYxHOcSgwoexytqJBb/7tpi+emi2CRTAjAFZDQqA== +"@nextui-org/use-is-mounted@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@nextui-org/use-is-mounted/-/use-is-mounted-2.0.6.tgz" + integrity sha512-/lcMdYnwBZ1EuKMLRIhHeAZG8stXWNTz7wBweAlLId23VC4VHgCp/s9K9Vbj1A5/r8FiFQeoTmXQuMAMUoPRtg== -"@nextui-org/use-measure@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@nextui-org/use-measure/-/use-measure-2.0.1.tgz#05cad80847492a3399ac5b8bf7756c86c136ea32" - integrity sha512-uEtdrdBdFz4Fgbfk2vmQ+rEb+eFa5o4yI90udasvfpaIrMBfrFOlRW5+yn3uXKB8JThET4Gf2on/wlJpo567Dg== +"@nextui-org/use-measure@2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@nextui-org/use-measure/-/use-measure-2.0.2.tgz" + integrity sha512-H/RSPPA9B5sZ10wiXR3jLlYFEuiVnc0O/sgLLQfrb5M0hvHoaqMThnsZpm//5iyS7tD7kxPeYNLa1EhzlQKxDA== -"@nextui-org/use-pagination@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@nextui-org/use-pagination/-/use-pagination-2.0.7.tgz#164cc6f0a8b8a9811c8dc726a0bbd2cd5f2da660" - integrity sha512-a05vLp8YSk4nI+LmDUdjjKj2U1/d3Z1ZALUUrjWJVnTUckaiglHGeoYEh8nqcjDXj4sPC4OcK3ZnW+AGUXDGwA== +"@nextui-org/use-pagination@2.0.9": + version "2.0.9" + resolved "https://registry.npmjs.org/@nextui-org/use-pagination/-/use-pagination-2.0.9.tgz" + integrity sha512-p5Gssyb71/SjRezq2o1aRsYTmC9idziW3pLCJFpVwLGfgWNARf9C6NS1oQsqKgjF5lvzoa88soZRDhKKvRAt/g== dependencies: - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/i18n" "3.11.1" -"@nextui-org/use-safe-layout-effect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-safe-layout-effect/-/use-safe-layout-effect-2.0.5.tgz#36c40fb2511667f3593035d995c971a29c8495f8" - integrity sha512-YQQlqz82aYxMoEq23jQNG/JBPHF1x3opzyXRHAVxgBEFo9OJqBMZTm23ukpTXm2Ev98T6mpWiTHdfyHJ7IoRog== - -"@nextui-org/use-scroll-position@2.0.6": +"@nextui-org/use-safe-layout-effect@2.0.6": version "2.0.6" - resolved "https://registry.yarnpkg.com/@nextui-org/use-scroll-position/-/use-scroll-position-2.0.6.tgz#58bd0205708709fec8e8224d6dee019449f3aa7b" - integrity sha512-dRwew37XnJOh8d35BuyqzRfnrmKsOUHqi0Owhk0tIGyqifQ/jw65udWpBfa6rwXcd4cKOOqXXHuNGsYTclzc6w== + resolved "https://registry.npmjs.org/@nextui-org/use-safe-layout-effect/-/use-safe-layout-effect-2.0.6.tgz" + integrity sha512-xzEJXf/g9GaSqjLpQ4+Z2/pw1GPq2Fc5cWRGqEXbGauEMXuH8UboRls1BmIV1RuOpqI6FgxkEmxL1EuVIRVmvQ== -"@nextui-org/use-update-effect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nextui-org/use-update-effect/-/use-update-effect-2.0.5.tgz#b949d5403ba05879f2a6bd78b586b8bed7839ee5" - integrity sha512-4r2CXAD598xc2ifMu97kf8V/lj+NDct2oITbxgXeV4ezWaXHy5/26r1iyVnBzRN/VBz3fwHx3hHdftzcYSZxdA== +"@nextui-org/use-scroll-position@2.0.8": + version "2.0.8" + resolved "https://registry.npmjs.org/@nextui-org/use-scroll-position/-/use-scroll-position-2.0.8.tgz" + integrity sha512-sUuoLEPWxCNlgzayy3VZSneVA1rKSdh4kBuBbYJTp/g2yyrpZYnyYzWpeNJ4dhDQr1cpTDODehJekWPBhNN+uw== -"@nextui-org/user@2.0.31": - version "2.0.31" - resolved "https://registry.yarnpkg.com/@nextui-org/user/-/user-2.0.31.tgz#dab104787169bb46d57cb27c0a7f0bd848affcc6" - integrity sha512-PXWVLB2igKi3MwjVeI5auoK6fhBgT3nizPzabBa95m0/3dg8aex/4oexCRpjef+V5cRD/2z37VHqfelQWqOHjQ== +"@nextui-org/use-update-effect@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@nextui-org/use-update-effect/-/use-update-effect-2.0.6.tgz" + integrity sha512-n5Qiv3ferKn+cSxU3Vv+96LdG8I/00mzc7Veoan+P9GL0aCTrsPB6RslTsiblaiAXQcqTiFXd8xwsK309DXOXA== + +"@nextui-org/user@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/@nextui-org/user/-/user-2.0.33.tgz" + integrity sha512-v6gGTlsaqM7Ndwtx9N/AAQFRICcIE5DuFxRZRqPfLa+jbZhJuWG2OSIATPeUOxgr8pKWpeV78nETdFKEKcsUPA== dependencies: - "@nextui-org/avatar" "2.0.30" - "@nextui-org/react-utils" "2.0.14" - "@nextui-org/shared-utils" "2.0.5" + "@nextui-org/avatar" "2.0.32" + "@nextui-org/react-utils" "2.0.16" + "@nextui-org/shared-utils" "2.0.7" "@react-aria/focus" "3.17.1" "@react-aria/utils" "3.24.1" @@ -1132,7 +1086,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1152,22 +1106,22 @@ "@prisma/client@^5.17.0": version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.17.0.tgz#9079947bd749689c2dabfb9ecc70a24ebefb1f43" + resolved "https://registry.npmjs.org/@prisma/client/-/client-5.17.0.tgz" integrity sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw== "@prisma/debug@5.17.0": version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.17.0.tgz#a765105848993984535b6066f8ebc6e6ead26533" + resolved "https://registry.npmjs.org/@prisma/debug/-/debug-5.17.0.tgz" integrity sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg== "@prisma/engines-version@5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053": version "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053.tgz#3c7cc1ef3ebc34cbd069e5873b9982f2aabf5acd" + resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053.tgz" integrity sha512-tUuxZZysZDcrk5oaNOdrBnnkoTtmNQPkzINFDjz7eG6vcs9AVDmA/F6K5Plsb2aQc/l5M2EnFqn3htng9FA4hg== "@prisma/engines@5.17.0": version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.17.0.tgz#74dd1aabb22675892760b3cf69a448e3aef4616b" + resolved "https://registry.npmjs.org/@prisma/engines/-/engines-5.17.0.tgz" integrity sha512-+r+Nf+JP210Jur+/X8SIPLtz+uW9YA4QO5IXA+KcSOBe/shT47bCcRMTYCbOESw3FFYFTwe7vU6KTWHKPiwvtg== dependencies: "@prisma/debug" "5.17.0" @@ -1177,7 +1131,7 @@ "@prisma/fetch-engine@5.17.0": version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.17.0.tgz#f718dc7426411d1ebeeee53e2d0d38652387f87c" + resolved "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.17.0.tgz" integrity sha512-ESxiOaHuC488ilLPnrv/tM2KrPhQB5TRris/IeIV4ZvUuKeaicCl4Xj/JCQeG9IlxqOgf1cCg5h5vAzlewN91Q== dependencies: "@prisma/debug" "5.17.0" @@ -1186,14 +1140,14 @@ "@prisma/get-platform@5.17.0": version "5.17.0" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.17.0.tgz#89fdcae2adddebbbf0e7bd0474a6c49d6023519b" + resolved "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.17.0.tgz" integrity sha512-UlDgbRozCP1rfJ5Tlkf3Cnftb6srGrEQ4Nm3og+1Se2gWmCZ0hmPIi+tQikGDUVLlvOWx3Gyi9LzgRP+HTXV9w== dependencies: "@prisma/debug" "5.17.0" "@react-aria/breadcrumbs@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz#2686f7f460f20d67fe5cdfe185e32e3e78186962" + resolved "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz" integrity sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g== dependencies: "@react-aria/i18n" "^3.11.1" @@ -1205,7 +1159,7 @@ "@react-aria/button@3.9.5": version "3.9.5" - resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.9.5.tgz#f0082f58394394f3d16fdf45de57b382748f3345" + resolved "https://registry.npmjs.org/@react-aria/button/-/button-3.9.5.tgz" integrity sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg== dependencies: "@react-aria/focus" "^3.17.1" @@ -1218,7 +1172,7 @@ "@react-aria/calendar@3.5.8": version "3.5.8" - resolved "https://registry.yarnpkg.com/@react-aria/calendar/-/calendar-3.5.8.tgz#fd0858b34c8961b76957e9ac13b514f485c329a3" + resolved "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.8.tgz" integrity sha512-Whlp4CeAA5/ZkzrAHUv73kgIRYjw088eYGSc+cvSOCxfrc/2XkBm9rNrnSBv0DvhJ8AG0Fjz3vYakTmF3BgZBw== dependencies: "@internationalized/date" "^3.5.4" @@ -1234,7 +1188,7 @@ "@react-aria/checkbox@3.14.3": version "3.14.3" - resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.14.3.tgz#6e2579681008e460d2c764a03f1f1b54e0815868" + resolved "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.3.tgz" integrity sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA== dependencies: "@react-aria/form" "^3.0.5" @@ -1251,7 +1205,7 @@ "@react-aria/combobox@3.9.1": version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.9.1.tgz#ab12b698b76fd063f386aa5516129b2c72f5bf60" + resolved "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.9.1.tgz" integrity sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ== dependencies: "@react-aria/i18n" "^3.11.1" @@ -1272,7 +1226,7 @@ "@react-aria/datepicker@3.10.1": version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-aria/datepicker/-/datepicker-3.10.1.tgz#513a9d18e118d4c3d078fdbfc45dca76b7eeb37f" + resolved "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.10.1.tgz" integrity sha512-4HZL593nrNMa1GjBmWEN/OTvNS6d3/16G1YJWlqiUlv11ADulSbqBIjMmkgwrJVFcjrgqtXFy+yyrTA/oq94Zw== dependencies: "@internationalized/date" "^3.5.4" @@ -1296,7 +1250,7 @@ "@react-aria/dialog@3.5.14": version "3.5.14" - resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.5.14.tgz#d4b078410c00b7cc7e6f25f67dfe53fa755be769" + resolved "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.14.tgz" integrity sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ== dependencies: "@react-aria/focus" "^3.17.1" @@ -1306,9 +1260,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/focus@3.17.1", "@react-aria/focus@^3.17.1": +"@react-aria/focus@^3.17.1", "@react-aria/focus@3.17.1": version "3.17.1" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.17.1.tgz#c796a188120421e2fedf438cadacdf463c77ad29" + resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz" integrity sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ== dependencies: "@react-aria/interactions" "^3.21.3" @@ -1317,9 +1271,20 @@ "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/form@3.0.5", "@react-aria/form@^3.0.5": +"@react-aria/focus@^3.18.1": + version "3.18.1" + resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.1.tgz" + integrity sha512-N0Cy61WCIv+57mbqC7hiZAsB+3rF5n4JKabxUmg/2RTJL6lq7hJ5N4gx75ymKxkN8GnVDwt4pKZah48Wopa5jw== + dependencies: + "@react-aria/interactions" "^3.22.1" + "@react-aria/utils" "^3.25.1" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + clsx "^2.0.0" + +"@react-aria/form@^3.0.5", "@react-aria/form@3.0.5": version "3.0.5" - resolved "https://registry.yarnpkg.com/@react-aria/form/-/form-3.0.5.tgz#abaf6ac005dc3f98760ac74fdb6524ad189399d6" + resolved "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz" integrity sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ== dependencies: "@react-aria/interactions" "^3.21.3" @@ -1329,28 +1294,27 @@ "@swc/helpers" "^0.5.0" "@react-aria/grid@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-aria/grid/-/grid-3.9.1.tgz#7fcf7a8352ece79406caf3cd149947fb9f000009" - integrity sha512-fGEZqAEaS8mqzV/II3N4ndoNWegIcbh+L3PmKbXdpKKUP8VgMs/WY5rYl5WAF0f5RoFwXqx3ibDLeR9tKj/bOg== + version "3.10.1" + resolved "https://registry.npmjs.org/@react-aria/grid/-/grid-3.10.1.tgz" + integrity sha512-7dSgiYVQapBtPV4SIit+9fJ1qoEjtp+PXffJkWAPtGbg/jJ4b0jcVzykH7ARD4w/6jAJN/oVSfrKZqFPoLAd9w== dependencies: - "@react-aria/focus" "^3.17.1" - "@react-aria/i18n" "^3.11.1" - "@react-aria/interactions" "^3.21.3" + "@react-aria/focus" "^3.18.1" + "@react-aria/i18n" "^3.12.1" + "@react-aria/interactions" "^3.22.1" "@react-aria/live-announcer" "^3.3.4" - "@react-aria/selection" "^3.18.1" - "@react-aria/utils" "^3.24.1" - "@react-stately/collections" "^3.10.7" - "@react-stately/grid" "^3.8.7" - "@react-stately/selection" "^3.15.1" - "@react-stately/virtualizer" "^3.7.1" - "@react-types/checkbox" "^3.8.1" - "@react-types/grid" "^3.2.6" - "@react-types/shared" "^3.23.1" + "@react-aria/selection" "^3.19.1" + "@react-aria/utils" "^3.25.1" + "@react-stately/collections" "^3.10.9" + "@react-stately/grid" "^3.9.1" + "@react-stately/selection" "^3.16.1" + "@react-types/checkbox" "^3.8.3" + "@react-types/grid" "^3.2.8" + "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-aria/i18n@3.11.1", "@react-aria/i18n@^3.11.1": +"@react-aria/i18n@^3.11.1", "@react-aria/i18n@3.11.1": version "3.11.1" - resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.11.1.tgz#2d238d2be30d8c691b5fa3161f5fb48066fc8e4b" + resolved "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz" integrity sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ== dependencies: "@internationalized/date" "^3.5.4" @@ -1362,9 +1326,23 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/interactions@3.21.3", "@react-aria/interactions@^3.21.3": +"@react-aria/i18n@^3.12.1": + version "3.12.1" + resolved "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.1.tgz" + integrity sha512-0q3gyogF9Ekah+9LOo6tcfshxsk2Ope+KdbtFHJVhznedMxn6RpHGcVur5ImbQ1dYafA5CmjBUGJW70b56+BGA== + dependencies: + "@internationalized/date" "^3.5.5" + "@internationalized/message" "^3.1.4" + "@internationalized/number" "^3.5.3" + "@internationalized/string" "^3.2.3" + "@react-aria/ssr" "^3.9.5" + "@react-aria/utils" "^3.25.1" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + +"@react-aria/interactions@^3.21.3", "@react-aria/interactions@3.21.3": version "3.21.3" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.21.3.tgz#a2a3e354a8b894bed7a46e1143453f397f2538d7" + resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz" integrity sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA== dependencies: "@react-aria/ssr" "^3.9.4" @@ -1372,18 +1350,28 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/label@3.7.8", "@react-aria/label@^3.7.8": +"@react-aria/interactions@^3.22.1": + version "3.22.1" + resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz" + integrity sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw== + dependencies: + "@react-aria/ssr" "^3.9.5" + "@react-aria/utils" "^3.25.1" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + +"@react-aria/label@^3.7.8", "@react-aria/label@3.7.8": version "3.7.8" - resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.7.8.tgz#69f1c184836b04445fcedce78db9fd939a0570ea" + resolved "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz" integrity sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg== dependencies: "@react-aria/utils" "^3.24.1" "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/link@3.7.1", "@react-aria/link@^3.7.1": +"@react-aria/link@^3.7.1", "@react-aria/link@3.7.1": version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.7.1.tgz#ae75feebc5c6f40e1031abf57f3125d45882e976" + resolved "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz" integrity sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw== dependencies: "@react-aria/focus" "^3.17.1" @@ -1393,9 +1381,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/listbox@3.12.1", "@react-aria/listbox@^3.12.1": +"@react-aria/listbox@^3.12.1", "@react-aria/listbox@3.12.1": version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.12.1.tgz#cc4f0d23630f496273ca5c31b4dfacf6d6f37df1" + resolved "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz" integrity sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA== dependencies: "@react-aria/interactions" "^3.21.3" @@ -1410,14 +1398,14 @@ "@react-aria/live-announcer@^3.3.4": version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-aria/live-announcer/-/live-announcer-3.3.4.tgz#97a5830ae7da8546b2d19311fe1606c5d5e0151c" + resolved "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.3.4.tgz" integrity sha512-w8lxs35QrRrn6pBNzVfyGOeqWdxeVKf9U6bXIVwhq7rrTqRULL8jqy8RJIMfIs1s8G5FpwWYjyBOjl2g5Cu1iA== dependencies: "@swc/helpers" "^0.5.0" -"@react-aria/menu@3.14.1", "@react-aria/menu@^3.14.1": +"@react-aria/menu@^3.14.1", "@react-aria/menu@3.14.1": version "3.14.1" - resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.14.1.tgz#c9ec25bc374ee9bb02dc3d92d8260df702349133" + resolved "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz" integrity sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA== dependencies: "@react-aria/focus" "^3.17.1" @@ -1434,9 +1422,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/overlays@3.22.1", "@react-aria/overlays@^3.22.1": +"@react-aria/overlays@^3.22.1", "@react-aria/overlays@3.22.1": version "3.22.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.22.1.tgz#7a01673317fa6517bb91b0b7504e303facdc9ccb" + resolved "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz" integrity sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg== dependencies: "@react-aria/focus" "^3.17.1" @@ -1453,7 +1441,7 @@ "@react-aria/progress@3.4.13": version "3.4.13" - resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.4.13.tgz#dc86c98ed0f9a164cf62140e13865235c1991548" + resolved "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.13.tgz" integrity sha512-YBV9bOO5JzKvG8QCI0IAA00o6FczMgIDiK8Q9p5gKorFMatFUdRayxlbIPoYHMi+PguLil0jHgC7eOyaUcrZ0g== dependencies: "@react-aria/i18n" "^3.11.1" @@ -1465,7 +1453,7 @@ "@react-aria/radio@3.10.4": version "3.10.4" - resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.10.4.tgz#e1b54fa7a9ee3912a5fe170fc752000eef836c06" + resolved "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.4.tgz" integrity sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA== dependencies: "@react-aria/focus" "^3.17.1" @@ -1479,9 +1467,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/selection@3.18.1", "@react-aria/selection@^3.18.1": +"@react-aria/selection@^3.18.1", "@react-aria/selection@3.18.1": version "3.18.1" - resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.18.1.tgz#fd6a10a86be187ac2a591cbbc1f41c3aa0c09f7f" + resolved "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz" integrity sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ== dependencies: "@react-aria/focus" "^3.17.1" @@ -1492,9 +1480,22 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" +"@react-aria/selection@^3.19.1": + version "3.19.1" + resolved "https://registry.npmjs.org/@react-aria/selection/-/selection-3.19.1.tgz" + integrity sha512-mbExvq2Omi60sTWFGjwcNz1ja2P8VDsxWAqSypHRTyqXhtgqbv8V/v8Gp+7BmVPH1YHcbhztl6rvUZTDOSszzw== + dependencies: + "@react-aria/focus" "^3.18.1" + "@react-aria/i18n" "^3.12.1" + "@react-aria/interactions" "^3.22.1" + "@react-aria/utils" "^3.25.1" + "@react-stately/selection" "^3.16.1" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + "@react-aria/slider@3.7.8": version "3.7.8" - resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.7.8.tgz#6f2109527e0ebfaa1aaf46fce2460549d5550e1b" + resolved "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.8.tgz" integrity sha512-MYvPcM0K8jxEJJicUK2+WxUkBIM/mquBxOTOSSIL3CszA80nXIGVnLlCUnQV3LOUzpWtabbWaZokSPtGgOgQOw== dependencies: "@react-aria/focus" "^3.17.1" @@ -1508,27 +1509,34 @@ "@swc/helpers" "^0.5.0" "@react-aria/spinbutton@^3.6.5": - version "3.6.5" - resolved "https://registry.yarnpkg.com/@react-aria/spinbutton/-/spinbutton-3.6.5.tgz#77a69c26dfc74381bc1f112835eb59c572d659dd" - integrity sha512-0aACBarF/Xr/7ixzjVBTQ0NBwwwsoGkf5v6AVFVMTC0uYMXHTALvRs+ULHjHMa5e/cX/aPlEvaVT7jfSs+Xy9Q== + version "3.6.7" + resolved "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.7.tgz" + integrity sha512-OCimp4yXoFIgh6WAMOls5DDDRDRO75ZFic3YA6wLWTRNHxo1Lj8S90i1A6pakY6bi4hdBCKmj4DnFSNKAw1iWg== dependencies: - "@react-aria/i18n" "^3.11.1" + "@react-aria/i18n" "^3.12.1" "@react-aria/live-announcer" "^3.3.4" - "@react-aria/utils" "^3.24.1" - "@react-types/button" "^3.9.4" - "@react-types/shared" "^3.23.1" + "@react-aria/utils" "^3.25.1" + "@react-types/button" "^3.9.6" + "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-aria/ssr@3.9.4", "@react-aria/ssr@^3.9.4": +"@react-aria/ssr@^3.9.4", "@react-aria/ssr@3.9.4": version "3.9.4" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.4.tgz#9da8b10342c156e816dbfa4c9e713b21f274d7ab" + resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz" integrity sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ== dependencies: "@swc/helpers" "^0.5.0" +"@react-aria/ssr@^3.9.5": + version "3.9.5" + resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz" + integrity sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ== + dependencies: + "@swc/helpers" "^0.5.0" + "@react-aria/switch@3.6.4": version "3.6.4" - resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.6.4.tgz#6dba901414785de23ee2f4873ea5e23973fdf58d" + resolved "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.4.tgz" integrity sha512-2nVqz4ZuJyof47IpGSt3oZRmp+EdS8wzeDYgf42WHQXrx4uEOk1mdLJ20+NnsYhj/2NHZsvXVrjBeKMjlMs+0w== dependencies: "@react-aria/toggle" "^3.10.4" @@ -1538,7 +1546,7 @@ "@react-aria/table@3.14.1": version "3.14.1" - resolved "https://registry.yarnpkg.com/@react-aria/table/-/table-3.14.1.tgz#6316349e17fe6adfe9132aab75ce72c4a44c028f" + resolved "https://registry.npmjs.org/@react-aria/table/-/table-3.14.1.tgz" integrity sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw== dependencies: "@react-aria/focus" "^3.17.1" @@ -1560,7 +1568,7 @@ "@react-aria/tabs@3.9.1": version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.9.1.tgz#3cfb44648de1f896499d210b80deb1ead8ec4295" + resolved "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.1.tgz" integrity sha512-S5v/0sRcOaSXaJYZuuy1ZVzYc7JD4sDyseG1133GjyuNjJOFHgoWMb+b4uxNIJbZxnLgynn/ZDBZSO+qU+fIxw== dependencies: "@react-aria/focus" "^3.17.1" @@ -1572,9 +1580,9 @@ "@react-types/tabs" "^3.3.7" "@swc/helpers" "^0.5.0" -"@react-aria/textfield@3.14.5", "@react-aria/textfield@^3.14.5": +"@react-aria/textfield@^3.14.5", "@react-aria/textfield@3.14.5": version "3.14.5" - resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.14.5.tgz#afb46b4af019dc88fc7f77396cea5ec0c9701f01" + resolved "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz" integrity sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA== dependencies: "@react-aria/focus" "^3.17.1" @@ -1588,20 +1596,21 @@ "@swc/helpers" "^0.5.0" "@react-aria/toggle@^3.10.4": - version "3.10.4" - resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.10.4.tgz#a3673ead72c389381c6217b5bed7269300351a8e" - integrity sha512-bRk+CdB8QzrSyGNjENXiTWxfzYKRw753iwQXsEAU7agPCUdB8cZJyrhbaUoD0rwczzTp2zDbZ9rRbUPdsBE2YQ== + version "3.10.6" + resolved "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.6.tgz" + integrity sha512-AGlbtB1b8grrtjbiW5Au0LKYzxR83RHbHhaUkFwajyYRGyuEzr3Y03OiveoPB+DayA8Gz3H1ZVmW++8JZQOWHw== dependencies: - "@react-aria/focus" "^3.17.1" - "@react-aria/interactions" "^3.21.3" - "@react-aria/utils" "^3.24.1" - "@react-stately/toggle" "^3.7.4" - "@react-types/checkbox" "^3.8.1" + "@react-aria/focus" "^3.18.1" + "@react-aria/interactions" "^3.22.1" + "@react-aria/utils" "^3.25.1" + "@react-stately/toggle" "^3.7.6" + "@react-types/checkbox" "^3.8.3" + "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" "@react-aria/tooltip@3.7.4": version "3.7.4" - resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.7.4.tgz#0efe8b4cc543a39395e99861ad6f0c64cd746026" + resolved "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.4.tgz" integrity sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ== dependencies: "@react-aria/focus" "^3.17.1" @@ -1612,9 +1621,9 @@ "@react-types/tooltip" "^3.4.9" "@swc/helpers" "^0.5.0" -"@react-aria/utils@3.24.1", "@react-aria/utils@^3.24.1": +"@react-aria/utils@^3.24.1", "@react-aria/utils@3.24.1": version "3.24.1" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.24.1.tgz#9d16023f07c23c41793c9030a9bd203a9c8cf0a7" + resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz" integrity sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q== dependencies: "@react-aria/ssr" "^3.9.4" @@ -1623,9 +1632,20 @@ "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/visually-hidden@3.8.12", "@react-aria/visually-hidden@^3.8.12": +"@react-aria/utils@^3.25.1": + version "3.25.1" + resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz" + integrity sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw== + dependencies: + "@react-aria/ssr" "^3.9.5" + "@react-stately/utils" "^3.10.2" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + clsx "^2.0.0" + +"@react-aria/visually-hidden@^3.8.12", "@react-aria/visually-hidden@3.8.12": version "3.8.12" - resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz#89388b4773b8fbea4b5f9682e807510c14218c93" + resolved "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz" integrity sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw== dependencies: "@react-aria/interactions" "^3.21.3" @@ -1633,9 +1653,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/calendar@3.5.1", "@react-stately/calendar@^3.5.1": +"@react-stately/calendar@^3.5.1", "@react-stately/calendar@3.5.1": version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-stately/calendar/-/calendar-3.5.1.tgz#3e865d69675ba78f56e7abfadff0ef667f438a69" + resolved "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz" integrity sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA== dependencies: "@internationalized/date" "^3.5.4" @@ -1644,9 +1664,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/checkbox@3.6.5", "@react-stately/checkbox@^3.6.5": +"@react-stately/checkbox@^3.6.5", "@react-stately/checkbox@3.6.5": version "3.6.5" - resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.6.5.tgz#0566eae3ba3a84af6f29526b3feaf124d3c3a66b" + resolved "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz" integrity sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg== dependencies: "@react-stately/form" "^3.0.3" @@ -1655,17 +1675,25 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/collections@3.10.7", "@react-stately/collections@^3.10.7": +"@react-stately/collections@^3.10.7", "@react-stately/collections@3.10.7": version "3.10.7" - resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.10.7.tgz#b1add46cb8e2f2a0d33938ef1b232fb2d0fd11eb" + resolved "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz" integrity sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA== dependencies: "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/combobox@3.8.4", "@react-stately/combobox@^3.8.4": +"@react-stately/collections@^3.10.9": + version "3.10.9" + resolved "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz" + integrity sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w== + dependencies: + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + +"@react-stately/combobox@^3.8.4", "@react-stately/combobox@3.8.4": version "3.8.4" - resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.8.4.tgz#6540ec4d53af210e6f3a769ba3f2615a55380984" + resolved "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz" integrity sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA== dependencies: "@react-stately/collections" "^3.10.7" @@ -1678,9 +1706,9 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/datepicker@3.9.4", "@react-stately/datepicker@^3.9.4": +"@react-stately/datepicker@^3.9.4", "@react-stately/datepicker@3.9.4": version "3.9.4" - resolved "https://registry.yarnpkg.com/@react-stately/datepicker/-/datepicker-3.9.4.tgz#c9862cdc09da72760ed3005169223c7743b44b2d" + resolved "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz" integrity sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA== dependencies: "@internationalized/date" "^3.5.4" @@ -1694,33 +1722,41 @@ "@react-stately/flags@^3.0.3": version "3.0.3" - resolved "https://registry.yarnpkg.com/@react-stately/flags/-/flags-3.0.3.tgz#53a58c0140d61575787127a762b7901b4a7fa896" + resolved "https://registry.npmjs.org/@react-stately/flags/-/flags-3.0.3.tgz" integrity sha512-/ha7XFA0RZTQsbzSPwu3KkbNMgbvuM0GuMTYLTBWpgBrovBNTM+QqI/PfZTdHg8PwCYF4H5Y8gjdSpdulCvJFw== dependencies: "@swc/helpers" "^0.5.0" -"@react-stately/form@3.0.3", "@react-stately/form@^3.0.3": +"@react-stately/form@^3.0.3", "@react-stately/form@3.0.3": version "3.0.3" - resolved "https://registry.yarnpkg.com/@react-stately/form/-/form-3.0.3.tgz#9894f9b219cc4cfbbde814d43d3f897bc43b25b3" + resolved "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz" integrity sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg== dependencies: "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/grid@^3.8.7": - version "3.8.7" - resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.8.7.tgz#5c8aa22c83c0cb1146edad716c218739768e72ca" - integrity sha512-he3TXCLAhF5C5z1/G4ySzcwyt7PEiWcVIupxebJQqRyFrNWemSuv+7tolnStmG8maMVIyV3P/3j4eRBbdSlOIg== +"@react-stately/form@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@react-stately/form/-/form-3.0.5.tgz" + integrity sha512-J3plwJ63HQz109OdmaTqTA8Qhvl3gcYYK7DtgKyNP6mc/Me2Q4tl2avkWoA+22NRuv5m+J8TpBk4AVHUEOwqeQ== dependencies: - "@react-stately/collections" "^3.10.7" - "@react-stately/selection" "^3.15.1" - "@react-types/grid" "^3.2.6" - "@react-types/shared" "^3.23.1" + "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/list@3.10.5", "@react-stately/list@^3.10.5": +"@react-stately/grid@^3.8.7", "@react-stately/grid@^3.9.1": + version "3.9.1" + resolved "https://registry.npmjs.org/@react-stately/grid/-/grid-3.9.1.tgz" + integrity sha512-LSVIcXO/cqwG0IgDSk2juDbpARBS1IzGnsTp/8vSOejMxq5MXrwxL5hUcqNczL8Ss6aLpELm42tCS0kPm3cMKw== + dependencies: + "@react-stately/collections" "^3.10.9" + "@react-stately/selection" "^3.16.1" + "@react-types/grid" "^3.2.8" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + +"@react-stately/list@^3.10.5", "@react-stately/list@3.10.5": version "3.10.5" - resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.10.5.tgz#b68ebd595b5f4a51d6719cdcabd34f0780e95b85" + resolved "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz" integrity sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA== dependencies: "@react-stately/collections" "^3.10.7" @@ -1729,9 +1765,20 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/menu@3.7.1", "@react-stately/menu@^3.7.1": +"@react-stately/list@^3.10.7": + version "3.10.7" + resolved "https://registry.npmjs.org/@react-stately/list/-/list-3.10.7.tgz" + integrity sha512-W5PG7uG5GQV2Q59vXJE7QLKHZIoUNEx+JmHrBUCMKUgyngSpKIIEDR/R/C1b6ZJ9jMqqZA68Zlnd5iK1/mBi1A== + dependencies: + "@react-stately/collections" "^3.10.9" + "@react-stately/selection" "^3.16.1" + "@react-stately/utils" "^3.10.2" + "@react-types/shared" "^3.24.1" + "@swc/helpers" "^0.5.0" + +"@react-stately/menu@^3.7.1", "@react-stately/menu@3.7.1": version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.7.1.tgz#af3c259c519de036d9e80d7d8370278c7b042c6a" + resolved "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz" integrity sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg== dependencies: "@react-stately/overlays" "^3.6.7" @@ -1739,18 +1786,27 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/overlays@3.6.7", "@react-stately/overlays@^3.6.7": +"@react-stately/overlays@^3.6.7", "@react-stately/overlays@3.6.7": version "3.6.7" - resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.7.tgz#d4aa1b709e6e72306c33308bb031466730dd0480" + resolved "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz" integrity sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw== dependencies: "@react-stately/utils" "^3.10.1" "@react-types/overlays" "^3.8.7" "@swc/helpers" "^0.5.0" -"@react-stately/radio@3.10.4", "@react-stately/radio@^3.10.4": +"@react-stately/overlays@^3.6.9": + version "3.6.9" + resolved "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.9.tgz" + integrity sha512-4chfyzKw7P2UEainm0yzjUgYwG1ovBejN88eTrn+O62x5huuMCwe0cbMxmYh4y7IhRFSee3jIJd0SP0u/+i39w== + dependencies: + "@react-stately/utils" "^3.10.2" + "@react-types/overlays" "^3.8.9" + "@swc/helpers" "^0.5.0" + +"@react-stately/radio@^3.10.4", "@react-stately/radio@3.10.4": version "3.10.4" - resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.10.4.tgz#499ef1e781a47b5ac89b3af571fc61054327f55b" + resolved "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz" integrity sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ== dependencies: "@react-stately/form" "^3.0.3" @@ -1760,30 +1816,30 @@ "@swc/helpers" "^0.5.0" "@react-stately/select@^3.6.4": - version "3.6.4" - resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.6.4.tgz#efd512c94545309e2373ea2f17cd97c8a1803321" - integrity sha512-whZgF1N53D0/dS8tOFdrswB0alsk5Q5620HC3z+5f2Hpi8gwgAZ8TYa+2IcmMYRiT+bxVuvEc/NirU9yPmqGbA== + version "3.6.6" + resolved "https://registry.npmjs.org/@react-stately/select/-/select-3.6.6.tgz" + integrity sha512-JEpBosWNSXRexE/iReATei1EiVdTIwOWlLcCGw6K7oC/5/f+OHMsh2Kkt/c/RzM/to3vgR+Wbbqwrb712AWgYQ== dependencies: - "@react-stately/form" "^3.0.3" - "@react-stately/list" "^3.10.5" - "@react-stately/overlays" "^3.6.7" - "@react-types/select" "^3.9.4" - "@react-types/shared" "^3.23.1" + "@react-stately/form" "^3.0.5" + "@react-stately/list" "^3.10.7" + "@react-stately/overlays" "^3.6.9" + "@react-types/select" "^3.9.6" + "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/selection@^3.15.1": - version "3.15.1" - resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.15.1.tgz#853af4958e7eb02d75487c878460338bbec3f548" - integrity sha512-6TQnN9L0UY9w19B7xzb1P6mbUVBtW840Cw1SjgNXCB3NPaCf59SwqClYzoj8O2ZFzMe8F/nUJtfU1NS65/OLlw== +"@react-stately/selection@^3.15.1", "@react-stately/selection@^3.16.1": + version "3.16.1" + resolved "https://registry.npmjs.org/@react-stately/selection/-/selection-3.16.1.tgz" + integrity sha512-qmnmYaXY7IhhzmIiInec1a/yPxlPSBHka6vrWddvt0S6zN7FU5cv6sm69ONUwYwLKSoaNHgOGvZhmsTzyV0O2A== dependencies: - "@react-stately/collections" "^3.10.7" - "@react-stately/utils" "^3.10.1" - "@react-types/shared" "^3.23.1" + "@react-stately/collections" "^3.10.9" + "@react-stately/utils" "^3.10.2" + "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/slider@3.5.4", "@react-stately/slider@^3.5.4": +"@react-stately/slider@^3.5.4", "@react-stately/slider@3.5.4": version "3.5.4" - resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.5.4.tgz#f8c1b5133769380348fa1e8a7a513ebbd88a8355" + resolved "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz" integrity sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw== dependencies: "@react-stately/utils" "^3.10.1" @@ -1791,9 +1847,9 @@ "@react-types/slider" "^3.7.3" "@swc/helpers" "^0.5.0" -"@react-stately/table@3.11.8", "@react-stately/table@^3.11.8": +"@react-stately/table@^3.11.8", "@react-stately/table@3.11.8": version "3.11.8" - resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.11.8.tgz#b5323b095be8937761b9c5598f38623089047cf8" + resolved "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz" integrity sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg== dependencies: "@react-stately/collections" "^3.10.7" @@ -1806,9 +1862,9 @@ "@react-types/table" "^3.9.5" "@swc/helpers" "^0.5.0" -"@react-stately/tabs@3.6.6", "@react-stately/tabs@^3.6.6": +"@react-stately/tabs@^3.6.6", "@react-stately/tabs@3.6.6": version "3.6.6" - resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.6.6.tgz#69f4a042406cbe284ffe4c56d3bc8d57cad693fe" + resolved "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz" integrity sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA== dependencies: "@react-stately/list" "^3.10.5" @@ -1816,27 +1872,36 @@ "@react-types/tabs" "^3.3.7" "@swc/helpers" "^0.5.0" -"@react-stately/toggle@3.7.4", "@react-stately/toggle@^3.7.4": +"@react-stately/toggle@^3.7.4", "@react-stately/toggle@3.7.4": version "3.7.4" - resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.7.4.tgz#3345b5c939db96305af7c22b73577db5536220ab" + resolved "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz" integrity sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA== dependencies: "@react-stately/utils" "^3.10.1" "@react-types/checkbox" "^3.8.1" "@swc/helpers" "^0.5.0" -"@react-stately/tooltip@3.4.9", "@react-stately/tooltip@^3.4.9": +"@react-stately/toggle@^3.7.6": + version "3.7.6" + resolved "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.6.tgz" + integrity sha512-xRZyrjNVu1VCd1xpg5RwmNYs9fXb+JHChoUaRcBmGCCjsPD0R5uR3iNuE17RXJtWS3/8o9IJVn90+/7NW7boOg== + dependencies: + "@react-stately/utils" "^3.10.2" + "@react-types/checkbox" "^3.8.3" + "@swc/helpers" "^0.5.0" + +"@react-stately/tooltip@^3.4.9", "@react-stately/tooltip@3.4.9": version "3.4.9" - resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.4.9.tgz#a6161db77bd5ad606caa1a302622f92bc381b4ac" + resolved "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz" integrity sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA== dependencies: "@react-stately/overlays" "^3.6.7" "@react-types/tooltip" "^3.4.9" "@swc/helpers" "^0.5.0" -"@react-stately/tree@3.8.1", "@react-stately/tree@^3.8.1": +"@react-stately/tree@^3.8.1", "@react-stately/tree@3.8.1": version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.8.1.tgz#a3ea36d503a0276a860842cc8bf7c759aa7fa75f" + resolved "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz" integrity sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw== dependencies: "@react-stately/collections" "^3.10.7" @@ -1845,16 +1910,23 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/utils@3.10.1", "@react-stately/utils@^3.10.1": +"@react-stately/utils@^3.10.1", "@react-stately/utils@3.10.1": version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.10.1.tgz#dc8685b4994bef0dc10c37b024074be8afbfba62" + resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz" integrity sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg== dependencies: "@swc/helpers" "^0.5.0" -"@react-stately/virtualizer@3.7.1", "@react-stately/virtualizer@^3.7.1": +"@react-stately/utils@^3.10.2": + version "3.10.2" + resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz" + integrity sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg== + dependencies: + "@swc/helpers" "^0.5.0" + +"@react-stately/virtualizer@^3.7.1", "@react-stately/virtualizer@3.7.1": version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz#eb962d2ce700c026ce1b1d901034601db9d370c0" + resolved "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz" integrity sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA== dependencies: "@react-aria/utils" "^3.24.1" @@ -1863,51 +1935,65 @@ "@react-types/accordion@3.0.0-alpha.21": version "3.0.0-alpha.21" - resolved "https://registry.yarnpkg.com/@react-types/accordion/-/accordion-3.0.0-alpha.21.tgz#5e8d94c9627a0b188a21adb0cf71d180173b08ea" + resolved "https://registry.npmjs.org/@react-types/accordion/-/accordion-3.0.0-alpha.21.tgz" integrity sha512-cbE06jH/ZoI+1898xd7ocQ/A/Rtkz8wTJAVOYgc8VRY1SYNQ/XZTGH5T6dD6aERAmiDwL/kjD7xhsE80DyaEKA== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/breadcrumbs@3.7.5", "@react-types/breadcrumbs@^3.7.5": +"@react-types/breadcrumbs@^3.7.5", "@react-types/breadcrumbs@3.7.5": version "3.7.5" - resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz#72bc6e8881446864d7bf786f4667a2fbdda279f8" + resolved "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz" integrity sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A== dependencies: "@react-types/link" "^3.5.5" "@react-types/shared" "^3.23.1" -"@react-types/button@3.9.4", "@react-types/button@^3.9.4": +"@react-types/button@^3.9.4", "@react-types/button@3.9.4": version "3.9.4" - resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.9.4.tgz#ec10452e870660d31db1994f6fe4abfe0c800814" + resolved "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz" integrity sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/calendar@3.4.6", "@react-types/calendar@^3.4.6": +"@react-types/button@^3.9.6": + version "3.9.6" + resolved "https://registry.npmjs.org/@react-types/button/-/button-3.9.6.tgz" + integrity sha512-8lA+D5JLbNyQikf8M/cPP2cji91aVTcqjrGpDqI7sQnaLFikM8eFR6l1ZWGtZS5MCcbfooko77ha35SYplSQvw== + dependencies: + "@react-types/shared" "^3.24.1" + +"@react-types/calendar@^3.4.6", "@react-types/calendar@3.4.6": version "3.4.6" - resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.4.6.tgz#66ddcefc3058492b3cce58a6e63b01558048b669" + resolved "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz" integrity sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew== dependencies: "@internationalized/date" "^3.5.4" "@react-types/shared" "^3.23.1" -"@react-types/checkbox@3.8.1", "@react-types/checkbox@^3.8.1": +"@react-types/checkbox@^3.8.1", "@react-types/checkbox@3.8.1": version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.8.1.tgz#de82c93542b2dd85c01df2e0c85c33a2e6349d14" + resolved "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz" integrity sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/combobox@3.11.1", "@react-types/combobox@^3.11.1": +"@react-types/checkbox@^3.8.3": + version "3.8.3" + resolved "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.3.tgz" + integrity sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA== + dependencies: + "@react-types/shared" "^3.24.1" + +"@react-types/combobox@^3.11.1", "@react-types/combobox@3.11.1": version "3.11.1" - resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.11.1.tgz#d5ab2f3c12d01083a3fc7c6ed90b9a2ae9049aa0" + resolved "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz" integrity sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/datepicker@3.7.4", "@react-types/datepicker@^3.7.4": +"@react-types/datepicker@^3.7.4", "@react-types/datepicker@3.7.4": version "3.7.4" - resolved "https://registry.yarnpkg.com/@react-types/datepicker/-/datepicker-3.7.4.tgz#8b21df1041d7e51198621984920ac290b2f09744" + resolved "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz" integrity sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A== dependencies: "@internationalized/date" "^3.5.4" @@ -1916,119 +2002,140 @@ "@react-types/shared" "^3.23.1" "@react-types/dialog@^3.5.10": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.10.tgz#c0fe93c432581eb032c28632733ea80ae242b2c3" - integrity sha512-S9ga+edOLNLZw7/zVOnZdT5T40etpzUYBXEKdFPbxyPYnERvRxJAsC1/ASuBU9fQAXMRgLZzADWV+wJoGS/X9g== + version "3.5.12" + resolved "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.12.tgz" + integrity sha512-JmpQbSpXltqEyYfEwoqDolABIiojeExkqolHNdQlayIsfFuSxZxNwXZPOpz58Ri/iwv21JP7K3QF0Gb2Ohxl9w== dependencies: - "@react-types/overlays" "^3.8.7" - "@react-types/shared" "^3.23.1" + "@react-types/overlays" "^3.8.9" + "@react-types/shared" "^3.24.1" -"@react-types/grid@3.2.6", "@react-types/grid@^3.2.6": +"@react-types/grid@^3.2.6", "@react-types/grid@3.2.6": version "3.2.6" - resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.2.6.tgz#c0aba4a748d1722bafe85acf87f8d9d5134653b3" + resolved "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz" integrity sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/link@3.5.5", "@react-types/link@^3.5.5": +"@react-types/grid@^3.2.8": + version "3.2.8" + resolved "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.8.tgz" + integrity sha512-6PJrpukwMqlv3IhJSDkJuVbhHM8Oe6hd2supWqd9adMXrlSP7QHt9a8SgFcFblCCTx8JzUaA0PvY5sTudcEtOQ== + dependencies: + "@react-types/shared" "^3.24.1" + +"@react-types/link@^3.5.5", "@react-types/link@3.5.5": version "3.5.5" - resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.5.5.tgz#5ed829aa32f226fe62efb0d906b1926c110daf02" + resolved "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz" integrity sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw== dependencies: "@react-types/shared" "^3.23.1" "@react-types/listbox@^3.4.9": - version "3.4.9" - resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.4.9.tgz#92e9990f480b48c1849ffd57ad8f95f5e278df66" - integrity sha512-S5G+WmNKUIOPZxZ4svWwWQupP3C6LmVfnf8QQmPDvwYXGzVc0WovkqUWyhhjJirFDswTXRCO9p0yaTHHIlkdwQ== + version "3.5.1" + resolved "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.5.1.tgz" + integrity sha512-n5bOgD9lgfK1qaLtag9WPnu151SwXBCNn/OgGY/Br9mWRl+nPUEYtFcPX+2VCld7uThf54kwrTmzlFnaraIlcw== dependencies: - "@react-types/shared" "^3.23.1" + "@react-types/shared" "^3.24.1" -"@react-types/menu@3.9.9", "@react-types/menu@^3.9.9": +"@react-types/menu@^3.9.9", "@react-types/menu@3.9.9": version "3.9.9" - resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.9.9.tgz#d7f81f6ecad7dd04fc730b4ad5c3ca39e3c0883d" + resolved "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz" integrity sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg== dependencies: "@react-types/overlays" "^3.8.7" "@react-types/shared" "^3.23.1" -"@react-types/overlays@3.8.7", "@react-types/overlays@^3.8.7": +"@react-types/overlays@^3.8.7", "@react-types/overlays@3.8.7": version "3.8.7" - resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.8.7.tgz#a43faf524cb3fce74acceee43898b265e8dfee05" + resolved "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz" integrity sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/progress@3.5.4", "@react-types/progress@^3.5.4": +"@react-types/overlays@^3.8.9": + version "3.8.9" + resolved "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.9.tgz" + integrity sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig== + dependencies: + "@react-types/shared" "^3.24.1" + +"@react-types/progress@^3.5.4", "@react-types/progress@3.5.4": version "3.5.4" - resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.5.4.tgz#22032aa0a64a3ff99fcd6e6e4f22cbc09c9725f3" + resolved "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz" integrity sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/radio@3.8.1", "@react-types/radio@^3.8.1": +"@react-types/radio@^3.8.1", "@react-types/radio@3.8.1": version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.8.1.tgz#f12ddd21d88fa278baa8ddc237b778c70b67669f" + resolved "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz" integrity sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/select@3.9.4", "@react-types/select@^3.9.4": +"@react-types/select@^3.9.6": + version "3.9.6" + resolved "https://registry.npmjs.org/@react-types/select/-/select-3.9.6.tgz" + integrity sha512-cVSFR0eJLup/ht1Uto+y8uyLmHO89J6wNh65SIHb3jeVz9oLBAedP3YNI2qB+F9qFMUcA8PBSLXIIuT6gXzLgQ== + dependencies: + "@react-types/shared" "^3.24.1" + +"@react-types/select@3.9.4": version "3.9.4" - resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.9.4.tgz#6283cdcb0583a87d23aa00fd118365f80fe68484" + resolved "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz" integrity sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/shared@3.22.1": - version "3.22.1" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.22.1.tgz#4e5de032fcb0b7bca50f6a9f8e133fd882821930" - integrity sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw== - -"@react-types/shared@3.23.1", "@react-types/shared@^3.23.1": +"@react-types/shared@^3.23.1", "@react-types/shared@3.23.1": version "3.23.1" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.23.1.tgz#2f23c81d819d0ef376df3cd4c944be4d6bce84c3" + resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz" integrity sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw== +"@react-types/shared@^3.24.1": + version "3.24.1" + resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz" + integrity sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw== + "@react-types/slider@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.7.3.tgz#d6de0626c6977dd10faea2dba656193106ffbdb8" - integrity sha512-F8qFQaD2mqug2D0XeWMmjGBikiwbdERFlhFzdvNGbypPLz3AZICBKp1ZLPWdl0DMuy03G/jy6Gl4mDobl7RT2g== + version "3.7.5" + resolved "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.5.tgz" + integrity sha512-bRitwQRQjQoOcKEdPMljnvm474dwrmsc6pdsVQDh/qynzr+KO9IHuYc3qPW53WVE2hMQJDohlqtCAWQXWQ5Vcg== dependencies: - "@react-types/shared" "^3.23.1" + "@react-types/shared" "^3.24.1" "@react-types/switch@^3.5.3": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.5.3.tgz#2a5faaf513e03972df3077e4ff5ef21738239d7c" - integrity sha512-Nb6+J5MrPaFa8ZNFKGMzAsen/NNzl5UG/BbC65SLGPy7O0VDa/sUpn7dcu8V2xRpRwwIN/Oso4v63bt2sgdkgA== + version "3.5.5" + resolved "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.5.tgz" + integrity sha512-SZx1Bd+COhAOs/RTifbZG+uq/llwba7VAKx7XBeX4LeIz1dtguy5bigOBgFTMQi4qsIVCpybSWEEl+daj4XFPw== dependencies: - "@react-types/shared" "^3.23.1" + "@react-types/shared" "^3.24.1" -"@react-types/table@3.9.5", "@react-types/table@^3.9.5": +"@react-types/table@^3.9.5", "@react-types/table@3.9.5": version "3.9.5" - resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.9.5.tgz#7910debd618405598583a10588a75f97c7b15eeb" + resolved "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz" integrity sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg== dependencies: "@react-types/grid" "^3.2.6" "@react-types/shared" "^3.23.1" -"@react-types/tabs@3.3.7", "@react-types/tabs@^3.3.7": +"@react-types/tabs@^3.3.7", "@react-types/tabs@3.3.7": version "3.3.7" - resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.3.7.tgz#8bb7a65998395bad75576f5ce32c8ce61329497f" + resolved "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz" integrity sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/textfield@3.9.3", "@react-types/textfield@^3.9.3": +"@react-types/textfield@^3.9.3", "@react-types/textfield@3.9.3": version "3.9.3" - resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.9.3.tgz#23db9d87ddadc4eddff3f85406af91e442f01dc9" + resolved "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz" integrity sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/tooltip@3.4.9", "@react-types/tooltip@^3.4.9": +"@react-types/tooltip@^3.4.9", "@react-types/tooltip@3.4.9": version "3.4.9" - resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.4.9.tgz#fb2291bd0b915f7c7f5024ce146412405843ec9b" + resolved "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz" integrity sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg== dependencies: "@react-types/overlays" "^3.8.7" @@ -2039,7 +2146,7 @@ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/helpers@0.5.5": +"@swc/helpers@^0.5.0", "@swc/helpers@0.5.5": version "0.5.5" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz" integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== @@ -2047,13 +2154,6 @@ "@swc/counter" "^0.1.3" tslib "^2.4.0" -"@swc/helpers@^0.5.0": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" - integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== - dependencies: - tslib "^2.4.0" - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" @@ -2061,24 +2161,24 @@ "@types/lodash.debounce@^4.0.7": version "4.0.9" - resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz#0f5f21c507bce7521b5e30e7a24440975ac860a5" + resolved "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz" integrity sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ== dependencies: "@types/lodash" "*" "@types/lodash@*": - version "4.17.6" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543" - integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA== + version "4.17.7" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz" + integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== "@types/webidl-conversions@*": version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" + resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz" integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== "@types/whatwg-url@^11.0.2": version "11.0.5" - resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.5.tgz#aaa2546e60f0c99209ca13360c32c78caf2c409f" + resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz" integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== dependencies: "@types/webidl-conversions" "*" @@ -2090,7 +2190,7 @@ abab@^2.0.5, abab@^2.0.6: abbrev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-globals@^6.0.0: @@ -2160,12 +2260,12 @@ anymatch@~3.1.2: "aproba@^1.0.3 || ^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" @@ -2183,7 +2283,7 @@ asynckit@^0.4.0: axios@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.3.tgz#a1125f2faf702bc8e8f2104ec3a76fab40257d85" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz" integrity sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw== dependencies: follow-redirects "^1.15.6" @@ -2202,7 +2302,7 @@ binary-extensions@^2.0.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -2229,7 +2329,7 @@ browser-process-hrtime@^1.0.0: bson@^6.7.0: version "6.8.0" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.8.0.tgz#5063c41ba2437c2b8ff851b50d9e36cb7aaa7525" + resolved "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz" integrity sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ== busboy@1.6.0: @@ -2249,16 +2349,16 @@ caniuse-lite@^1.0.30001579: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz" integrity sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA== -canvas@^2.8.0: +canvas@^2.5.0, canvas@^2.8.0: version "2.11.2" - resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.11.2.tgz#553d87b1e0228c7ac0fc72887c3adbac4abbd860" + resolved "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz" integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" nan "^2.17.0" simple-get "^3.0.3" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: +chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0": version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -2275,7 +2375,7 @@ canvas@^2.8.0: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== client-only@0.0.1: @@ -2285,12 +2385,17 @@ client-only@0.0.1: clsx@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== clsx@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +clsx@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== color-convert@^2.0.1: @@ -2307,7 +2412,7 @@ color-name@^1.0.0, color-name@~1.1.4: color-string@^1.9.0: version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" @@ -2315,22 +2420,22 @@ color-string@^1.9.0: color-support@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color2k@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.3.tgz#a771244f6b6285541c82aa65ff0a0c624046e533" - integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== - color@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz" integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== dependencies: color-convert "^2.0.1" color-string "^1.9.0" +color2k@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz" + integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" @@ -2345,22 +2450,22 @@ commander@^4.0.0: complex.js@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.1.1.tgz#0675dac8e464ec431fb2ab7d30f41d889fb25c31" + resolved "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz" integrity sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg== compute-scroll-into-view@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" + resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz" integrity sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== cross-spawn@^7.0.0: @@ -2417,14 +2522,14 @@ decimal.js@^10.3.1, decimal.js@^10.4.3: decompress-response@^4.2.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== dependencies: mimic-response "^2.0.0" deepmerge@4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== delayed-stream@~1.0.0: @@ -2434,17 +2539,17 @@ delayed-stream@~1.0.0: delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== detect-libc@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== detect-node-es@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== didyoumean@^1.2.2: @@ -2481,7 +2586,7 @@ emoji-regex@^9.2.2: escape-latex@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/escape-latex/-/escape-latex-1.2.0.tgz#07c03818cf7dac250cce517f4fda1b001ef2bca1" + resolved "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz" integrity sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw== escodegen@^2.0.0: @@ -2545,12 +2650,12 @@ fill-range@^7.1.1: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== follow-redirects@^1.15.6: version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== foreground-child@^3.1.0: @@ -2572,33 +2677,28 @@ form-data@^4.0.0: fraction.js@^4.3.7: version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -framer-motion@^11.2.13: - version "11.2.13" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.2.13.tgz#ab23fbc386233b1a1548757d840190054e5e1f1d" - integrity sha512-AyIeegfkXlkX1lWEudRYsJlC+0A59cE8oFK9IsN9bUQzxLwcvN3AEaYaznkELiWlHC7a0eD7pxsYQo7BC05S5A== +framer-motion@^11.2.13, framer-motion@>=10.17.0: + version "11.3.21" + resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.21.tgz" + integrity sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw== dependencies: tslib "^2.4.0" fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -2606,7 +2706,7 @@ function-bind@^1.1.2: gauge@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -2621,10 +2721,10 @@ gauge@^3.0.0: get-nonce@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2638,6 +2738,13 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob@^10.3.10: version "10.4.1" resolved "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz" @@ -2651,7 +2758,7 @@ glob@^10.3.10: glob@^7.1.3: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -2668,12 +2775,12 @@ graceful-fs@^4.2.11: hamt_plus@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/hamt_plus/-/hamt_plus-1.0.2.tgz#e21c252968c7e33b20f6a1b094cd85787a265601" + resolved "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz" integrity sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA== has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== hasown@^2.0.0: @@ -2716,25 +2823,25 @@ iconv-lite@0.6.3: immutable@^4.0.0: version "4.3.7" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz" integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3: +inherits@^2.0.3, inherits@2: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== intl-messageformat@^10.1.0: version "10.5.14" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.14.tgz#e5bb373f8a37b88fbe647d7b941f3ab2a37ed00a" + resolved "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz" integrity sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w== dependencies: "@formatjs/ecma402-abstract" "2.0.0" @@ -2744,14 +2851,14 @@ intl-messageformat@^10.1.0: invariant@^2.2.4: version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" is-arrayish@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-binary-path@~2.1.0: @@ -2811,7 +2918,7 @@ jackspeak@^3.1.2: javascript-natural-sort@^0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" + resolved "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz" integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== jiti@^1.21.0: @@ -2874,32 +2981,32 @@ lines-and-columns@^1.1.6: lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.foreach@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + resolved "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz" integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ== lodash.get@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.kebabcase@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== lodash.mapkeys@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapkeys/-/lodash.mapkeys-4.6.0.tgz#df2cfa231d7c57c7a8ad003abdad5d73d3ea5195" + resolved "https://registry.npmjs.org/lodash.mapkeys/-/lodash.mapkeys-4.6.0.tgz" integrity sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA== lodash.omit@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + resolved "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz" integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== loose-envify@^1.0.0, loose-envify@^1.1.0: @@ -2916,17 +3023,17 @@ lru-cache@^10.2.0: make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" mathjs@^13.0.2: - version "13.0.2" - resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-13.0.2.tgz#eb87e31a21d9ffc57e26ce98ddb14a4a07b13d91" - integrity sha512-8vK/+InU4FTphRTWsrnvRsgSjbyNupRQYDDIXLuEGDZtJsGdbA9dVV4HZ0amBQb+RXplRjVJNGZZfB0WoHWFWA== + version "13.0.3" + resolved "https://registry.npmjs.org/mathjs/-/mathjs-13.0.3.tgz" + integrity sha512-GpP9OW6swA5POZXvgpc/1FYkAr8lKgV04QHS1tIU60klFfplVCYaNzn6qy0vSp0hAQQN7shcx9CeB507dlLujA== dependencies: - "@babel/runtime" "^7.24.7" + "@babel/runtime" "^7.24.8" complex.js "^2.1.1" decimal.js "^10.4.3" escape-latex "^1.2.0" @@ -2938,7 +3045,7 @@ mathjs@^13.0.2: memory-pager@^1.0.2: version "1.5.0" - resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== merge2@^1.3.0: @@ -2968,12 +3075,12 @@ mime-types@^2.1.12: mimic-response@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== minimatch@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" @@ -2987,24 +3094,24 @@ minimatch@^9.0.4: minipass@^3.0.0: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -3012,12 +3119,12 @@ minizlib@^2.1.1: mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mongodb-connection-string-url@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz#c13e6ac284ae401752ebafdb8cd7f16c6723b141" + resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz" integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== dependencies: "@types/whatwg-url" "^11.0.2" @@ -3025,7 +3132,7 @@ mongodb-connection-string-url@^3.0.0: mongodb@^6.8.0: version "6.8.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.8.0.tgz#680450f113cdea6d2d9f7121fe57cd29111fd2ce" + resolved "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz" integrity sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw== dependencies: "@mongodb-js/saslprep" "^1.1.5" @@ -3048,7 +3155,7 @@ mz@^2.7.0: nan@^2.17.0: version "2.20.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + resolved "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz" integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== nanoid@^3.3.6, nanoid@^3.3.7: @@ -3081,14 +3188,14 @@ next@14.2.3: node-fetch@^2.6.7: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" nopt@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" @@ -3100,7 +3207,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: npmlog@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: are-we-there-yet "^2.0.0" @@ -3115,7 +3222,7 @@ nwsapi@^2.2.0: object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-hash@^3.0.0: @@ -3125,7 +3232,7 @@ object-hash@^3.0.0: once@^1.3.0, once@^1.3.1: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -3137,7 +3244,7 @@ parse5@6.0.1: path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.1.0: @@ -3222,6 +3329,15 @@ postcss-value-parser@^4.0.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@^8, postcss@^8.0.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@>=8.0.9: + version "8.4.38" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + postcss@8.4.31: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" @@ -3231,30 +3347,21 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8, postcss@^8.4.23: - version "8.4.38" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - prettier@^3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== -prisma@^5.17.0: +prisma@*, prisma@^5.17.0: version "5.17.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.17.0.tgz#267b43921ab94805b010537cffa5ccaf530fa066" + resolved "https://registry.npmjs.org/prisma/-/prisma-5.17.0.tgz" integrity sha512-m4UWkN5lBE6yevqeOxEvmepnL5cNPEjzMw2IqDB59AcEV6w7D8vGljDLd1gPFH+W6gUxw9x7/RmN5dCS/WTPxA== dependencies: "@prisma/engines" "5.17.0" proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== psl@^1.1.33: @@ -3277,7 +3384,7 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -react-dom@^18: +"react-dom@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", react-dom@^18, react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=18: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -3287,7 +3394,7 @@ react-dom@^18: react-remove-scroll-bar@^2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" + resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== dependencies: react-style-singleton "^2.2.1" @@ -3295,7 +3402,7 @@ react-remove-scroll-bar@^2.3.6: react-remove-scroll@^2.5.6: version "2.5.10" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz#5fae456a23962af6d3c38ca1978bcfe0806c4061" + resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz" integrity sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA== dependencies: react-remove-scroll-bar "^2.3.6" @@ -3306,7 +3413,7 @@ react-remove-scroll@^2.5.6: react-style-singleton@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== dependencies: get-nonce "^1.0.0" @@ -3315,14 +3422,21 @@ react-style-singleton@^2.2.1: react-textarea-autosize@^8.5.3: version "8.5.3" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz#d1e9fe760178413891484847d3378706052dd409" + resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz" integrity sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ== dependencies: "@babel/runtime" "^7.20.13" use-composed-ref "^1.3.0" use-latest "^1.2.1" -react@^18: +react-toastify@^10.0.5: + version "10.0.5" + resolved "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz" + integrity sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw== + dependencies: + clsx "^2.1.0" + +"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", react@^18, react@^18.0.0, react@^18.2.0, react@^18.3.1, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.13.1, react@>=18: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -3338,7 +3452,7 @@ read-cache@^1.0.0: readable-stream@^3.6.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -3354,14 +3468,14 @@ readdirp@~3.6.0: recoil@^0.7.7: version "0.7.7" - resolved "https://registry.yarnpkg.com/recoil/-/recoil-0.7.7.tgz#c5f2c843224384c9c09e4a62c060fb4c1454dc8e" + resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz" integrity sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ== dependencies: hamt_plus "1.0.2" regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== requires-port@^1.0.0: @@ -3385,7 +3499,7 @@ reusify@^1.0.4: rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -3399,7 +3513,7 @@ run-parallel@^1.1.9: safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3.0.0": @@ -3407,9 +3521,9 @@ safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.77.8: +sass@^1.3.0, sass@^1.77.8: version "1.77.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd" + resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz" integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -3432,29 +3546,29 @@ scheduler@^0.23.2: scroll-into-view-if-needed@3.0.10: version "3.0.10" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz#38fbfe770d490baff0fb2ba34ae3539f6ec44e13" + resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz" integrity sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg== dependencies: compute-scroll-into-view "^3.0.2" seedrandom@^3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + resolved "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz" integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== semver@^6.0.0: version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5: version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== shebang-command@^2.0.0: @@ -3471,7 +3585,7 @@ shebang-regex@^3.0.0: signal-exit@^3.0.0: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signal-exit@^4.0.1: @@ -3481,12 +3595,12 @@ signal-exit@^4.0.1: simple-concat@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^3.0.3: version "3.1.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== dependencies: decompress-response "^4.2.0" @@ -3495,12 +3609,12 @@ simple-get@^3.0.3: simple-swizzle@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: is-arrayish "^0.3.1" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: +source-map-js@^1.0.2, source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0": version "1.2.0" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -3512,7 +3626,7 @@ source-map@~0.6.1: sparse-bitfield@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== dependencies: memory-pager "^1.0.2" @@ -3522,6 +3636,13 @@ streamsearch@^1.1.0: resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -3531,9 +3652,27 @@ streamsearch@^1.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4": version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -3549,13 +3688,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -3609,17 +3741,17 @@ symbol-tree@^3.2.4: tailwind-merge@^1.14.0: version "1.14.0" - resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-1.14.0.tgz#e677f55d864edc6794562c63f5001f45093cdb8b" + resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.14.0.tgz" integrity sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ== tailwind-variants@^0.1.20: version "0.1.20" - resolved "https://registry.yarnpkg.com/tailwind-variants/-/tailwind-variants-0.1.20.tgz#8aaed9094be0379a438641a42d588943e44c5fcd" + resolved "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-0.1.20.tgz" integrity sha512-AMh7x313t/V+eTySKB0Dal08RHY7ggYK0MSn/ad8wKWOrDUIzyiWNayRUm2PIJ4VRkvRnfNuyRuKbLV3EN+ewQ== dependencies: tailwind-merge "^1.14.0" -tailwindcss@^3.4.1: +tailwindcss@*, tailwindcss@^3.4.1, tailwindcss@>=3.4.0: version "3.4.4" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz" integrity sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A== @@ -3649,7 +3781,7 @@ tailwindcss@^3.4.1: tar@^6.1.11: version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" @@ -3675,7 +3807,7 @@ thenify-all@^1.0.0: tiny-emitter@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== to-regex-range@^5.0.1: @@ -3704,14 +3836,14 @@ tr46@^3.0.0: tr46@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" + resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz" integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== dependencies: punycode "^2.3.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-interface-checker@^0.1.9: @@ -3726,7 +3858,7 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: typed-function@^4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-4.2.1.tgz#19aa51847aa2dea9ef5e7fb7641c060179a74426" + resolved "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz" integrity sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA== universalify@^0.2.0: @@ -3744,31 +3876,31 @@ url-parse@^1.5.3: use-callback-ref@^1.3.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz" integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== dependencies: tslib "^2.0.0" use-composed-ref@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== use-isomorphic-layout-effect@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: use-isomorphic-layout-effect "^1.1.1" use-sidecar@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== dependencies: detect-node-es "^1.1.0" @@ -3776,7 +3908,7 @@ use-sidecar@^1.1.2: util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^9.0.1: @@ -3800,7 +3932,7 @@ w3c-xmlserializer@^3.0.0: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^7.0.0: @@ -3838,7 +3970,7 @@ whatwg-url@^11.0.0: whatwg-url@^13.0.0: version "13.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-13.0.0.tgz#b7b536aca48306394a34e44bda8e99f332410f8f" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz" integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== dependencies: tr46 "^4.1.1" @@ -3846,7 +3978,7 @@ whatwg-url@^13.0.0: whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -3861,7 +3993,7 @@ which@^2.0.1: wide-align@^1.1.2: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" @@ -3886,7 +4018,7 @@ wrap-ansi@^8.1.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@^8.2.3: @@ -3906,7 +4038,7 @@ xmlchars@^2.2.0: yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^2.3.4: From aa0bfac88faa4da6bc817c8f5f349a68d81be11b Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Wed, 7 Aug 2024 17:27:30 +0900 Subject: [PATCH 40/61] =?UTF-8?q?=EA=B2=B9=EC=B3=90=EC=A7=80=EB=8A=94=20?= =?UTF-8?q?=EB=A7=88=EB=A3=A8=EB=A5=BC=20=ED=95=98=EB=82=98=EC=9D=98=20?= =?UTF-8?q?=EC=84=A0=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 58 +++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 0999660c..0e8029eb 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -1349,8 +1349,64 @@ const drawRoofRidge = (polygon) => { }) //중복 제거 polygon.ridges = polygon.ridges.filter((ridge, index, self) => index === self.findIndex((t) => t.x1 === ridge.x1 && t.y1 === ridge.y1)) - // console.log('polygon.ridges', polygon.ridges) + polygon.innerLines = polygon.innerLines.filter((line, index, self) => index === self.findIndex((t) => t.x1 === line.x1 && t.y1 === line.y1)) + //겹쳐지는 마루는 하나로 합침 + polygon.ridges.forEach((ridge, index) => { + polygon.ridges + .filter((ridge2) => !(ridge.x1 === ridge2.x1 && ridge.y1 === ridge2.y1 && ridge.x2 === ridge2.x2 && ridge.y2 === ridge2.y2)) + .forEach((ridge2) => { + let overlap = segmentsOverlap(ridge, ridge2) + if (overlap) { + let x1 = Math.min(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2) + let x2 = Math.max(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2) + let y1 = Math.min(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2) + let y2 = Math.max(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2) + const newRidge = new QLine([x1, y1, x2, y2], { + fontSize: polygon.fontSize, + stroke: 'blue', + strokeWidth: 1, + }) + polygon.canvas.remove(ridge) + polygon.canvas.remove(ridge2) + polygon.ridges = polygon.ridges.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2)) + polygon.ridges = polygon.ridges.filter((r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2)) + polygon.innerLines = polygon.innerLines.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2)) + polygon.innerLines = polygon.innerLines.filter( + (r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2), + ) + + polygon.canvas.add(newRidge) + polygon.ridges.push(newRidge) + polygon.innerLines.push(newRidge) + } + }) + }) } + +/** + * 두 선분이 겹치는지 확인 + * @param line1 + * @param line2 + * @returns {boolean} + */ +const segmentsOverlap = (line1, line2) => { + if (line1.y1 === line1.y2 && line2.y1 === line2.y2 && line1.y1 === line2.y1) { + // console.log('가로방향 겹침 확인 ') + if ((line1.x1 <= line2.x1 && line1.x2 >= line2.x1) || (line1.x1 <= line2.x2 && line1.x2 >= line2.x2)) { + // console.log('가로방향 겹침') + return true + } + } + if (line1.x1 === line1.x2 && line2.x1 === line2.x2 && line1.x1 === line2.x1) { + // console.log('세로방향 겹침 확인') + if ((line1.y1 <= line2.y1 && line1.y2 >= line2.y1) || (line1.y1 <= line2.y2 && line1.y2 >= line2.y2)) { + // console.log('세로방향 겹침') + return true + } + } + return false +} + const drawHips = (polygon) => { /* 마루에서 시작되는 hip을 먼저 그립니다. From 7162b3c4fb471357b77a592d2d31ca43518f46da Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Wed, 7 Aug 2024 17:28:34 +0900 Subject: [PATCH 41/61] =?UTF-8?q?=EC=A7=80=EB=B6=95=20=EB=B6=84=ED=95=A0?= =?UTF-8?q?=20=EC=9E=91=EC=97=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 69 ++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 4b2f5dda..585c01b1 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -963,8 +963,25 @@ export default function offsetPolygon(vertices, offset) { } export const splitPolygonWithLines = (polygon) => { - //todo: polygon의 모든 line들 모음 hip, ridge, connectRidge - const allLines = [...polygon.hips, ...polygon.ridges, ...polygon.connectRidges] + const roofs = [] + const allLines = [...polygon.innerLines] + + // allLines에 x1,y1,x2,y2를 비교해서 중복되는 값을 제거한다. + allLines.forEach((line, index) => { + const startPoint = line.startPoint + const endPoint = line.endPoint + + allLines.forEach((line2, index2) => { + if (index !== index2) { + if ( + (isSamePoint(startPoint, line2.startPoint) && isSamePoint(endPoint, line2.endPoint)) || + (isSamePoint(endPoint, line2.startPoint) && isSamePoint(startPoint, line2.endPoint)) + ) { + allLines.splice(index2, 1) + } + } + }) + }) polygon.points.forEach((point, index) => { allLines.forEach((line) => { @@ -979,10 +996,6 @@ export const splitPolygonWithLines = (polygon) => { polygon.points.forEach((point, index) => { const routes = [] - const polygonPoints = [...polygon.points].map((point, index) => { - return { ...point, index } - }) - // 시작점은 시작 hip라인의 출발점 const startPoint = point // 도착점은 마지막 hip라인의 끝나는 점 @@ -1004,12 +1017,12 @@ export const splitPolygonWithLines = (polygon) => { while (!isSamePoint(currentPoint, arrivalPoint)) { // startHip에서 만나는 출발선 두개. 두개의 선을 출발하여 arrivalPoint에 도착할 때 까지 count를 세고, 더 낮은 count를 가진 길을 선택한다. - let connectedLines = allLinesCopy.filter( - (line) => isSamePoint(line.startPoint, currentPoint) || (isSamePoint(line.endPoint, currentPoint) && line !== currentLine), - ) + let connectedLines = allLinesCopy.filter((line) => isSamePoint(line.startPoint, currentPoint) || isSamePoint(line.endPoint, currentPoint)) + + connectedLines = connectedLines.filter((line) => line !== currentLine) if (connectedLines.length === 0) { - throw new Error('connectedLines is empty') + return } let tempPoints = [] @@ -1040,7 +1053,22 @@ export const splitPolygonWithLines = (polygon) => { } routes.push(endLine.startPoint) - const roof = new QPolygon(routes, { + roofs.push(routes) + }) + + // 중복 제거 + roofs.forEach((roofPoint, index) => { + const samePointLengthRoofPoints = roofs.filter((roof) => roof.length === roofPoint.length && roof !== roofPoint) + + samePointLengthRoofPoints.forEach((samePointRoof) => { + if (arraysHaveSamePoints(samePointRoof, roofPoint)) { + roofs.splice(roofs.indexOf(samePointRoof), 1) + } + }) + }) + + roofs.forEach((roofPoint) => { + const roof = new QPolygon(roofPoint, { fontSize: polygon.fontSize, stroke: 'black', fill: 'transparent', @@ -2504,3 +2532,22 @@ const getLineDirection = (line) => { } } } + +function arePointsEqual(point1, point2) { + return point1.x === point2.x && point1.y === point2.y +} + +function arraysHaveSamePoints(array1, array2) { + if (array1.length !== array2.length) return false + + const sortedArray1 = array1.slice().sort((a, b) => a.x - b.x || a.y - b.y) + const sortedArray2 = array2.slice().sort((a, b) => a.x - b.x || a.y - b.y) + + for (let i = 0; i < sortedArray1.length; i++) { + if (!arePointsEqual(sortedArray1[i], sortedArray2[i])) { + return false + } + } + + return true +} From 85506c5a58afb1ebfbd26f4fc411e0f5fd3f0657 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Wed, 7 Aug 2024 17:46:59 +0900 Subject: [PATCH 42/61] =?UTF-8?q?=EB=AC=B4=ED=95=9C=EB=A3=A8=ED=94=84=20?= =?UTF-8?q?=EB=B0=A9=EC=96=B4=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 74ab4dce..639455c9 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -1008,6 +1008,7 @@ export const splitPolygonWithLines = (polygon) => { routes.push(startLine.startPoint) routes.push(startLine.endPoint) //hip끼리 만나는 경우는 아무것도 안해도됨 + let count = 0 if (!isSamePoint(startLine.endPoint, arrivalPoint)) { // polygon line까지 추가 const allLinesCopy = [...allLines, ...polygon.lines] @@ -1015,7 +1016,8 @@ export const splitPolygonWithLines = (polygon) => { let currentPoint = startLine.endPoint let currentLine = startLine - while (!isSamePoint(currentPoint, arrivalPoint)) { + while (!isSamePoint(currentPoint, arrivalPoint) && count <= polygon.points.length) { + count++ // startHip에서 만나는 출발선 두개. 두개의 선을 출발하여 arrivalPoint에 도착할 때 까지 count를 세고, 더 낮은 count를 가진 길을 선택한다. let connectedLines = allLinesCopy.filter((line) => isSamePoint(line.startPoint, currentPoint) || isSamePoint(line.endPoint, currentPoint)) @@ -1052,8 +1054,10 @@ export const splitPolygonWithLines = (polygon) => { } } - routes.push(endLine.startPoint) - roofs.push(routes) + if (count <= polygon.points.length - 1) { + routes.push(endLine.startPoint) + roofs.push(routes) + } }) // 중복 제거 From fcca20d14f02e9bf4a22615c61edb41d856e04af Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 7 Aug 2024 18:04:07 +0900 Subject: [PATCH 43/61] feat: Add prisma --- .env.development | 4 +- .env.production | 4 +- package.json | 1 + src/app/[locale]/login/page.jsx | 90 ++------------------------------- src/app/[locale]/page.js | 6 ++- src/components/Main.jsx | 16 +++++- src/components/auth/Login.jsx | 75 +++++++++++++++++++++++++++ src/lib/authActions.js | 61 ++++++++++++++++++++++ src/lib/session.js | 16 ++++++ src/lib/user.js | 6 +-- yarn.lock | 24 +++++++++ 11 files changed, 209 insertions(+), 94 deletions(-) create mode 100644 src/components/auth/Login.jsx create mode 100644 src/lib/authActions.js create mode 100644 src/lib/session.js diff --git a/.env.development b/.env.development index b676dfd3..2f67a8f6 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,6 @@ NEXT_PUBLIC_TEST="테스트변수입니다. development" NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" -DATABASE_URL="sqlserver://mssql.devgrr.kr:1433;database=qcast;user=sa;password=Qwertqaz!@#45;trustServerCertificate=true" \ No newline at end of file +DATABASE_URL="sqlserver://mssql.devgrr.kr:1433;database=qcast;user=qcast;password=Qwertqaz12345;trustServerCertificate=true" + +SESSION_SECRET="i3iHH1yp2/2SpQSIySQ4bpyc4g0D+zCF9FAn5xUG0+Y=" \ No newline at end of file diff --git a/.env.production b/.env.production index 97e47582..8970b77b 100644 --- a/.env.production +++ b/.env.production @@ -2,4 +2,6 @@ NEXT_PUBLIC_TEST="테스트변수입니다. production" NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" -DATABASE_URL="" \ No newline at end of file +DATABASE_URL="" + +SESSION_SECRET="i3iHH1yp2/2SpQSIySQ4bpyc4g0D+zCF9FAn5xUG0+Y=" \ No newline at end of file diff --git a/package.json b/package.json index 3cc13b60..c7185c3b 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "axios": "^1.7.3", "fabric": "^5.3.0", "framer-motion": "^11.2.13", + "iron-session": "^8.0.2", "mathjs": "^13.0.2", "mssql": "^11.0.1", "next": "14.2.3", diff --git a/src/app/[locale]/login/page.jsx b/src/app/[locale]/login/page.jsx index c5d063fd..0686da2e 100644 --- a/src/app/[locale]/login/page.jsx +++ b/src/app/[locale]/login/page.jsx @@ -1,91 +1,9 @@ -export default function page() { +import Login from '@/components/auth/Login' + +export default function LoginPage() { return ( <> -
-
-
- Your Company -

- Sign in to your account -

-
- -
-
-
- -
- -
-
- -
-
- - -
-
- -
-
- -
- -
-
- -

- Not a member?{' '} - - Start a 14 day free trial - -

-
-
-
+ ) } diff --git a/src/app/[locale]/page.js b/src/app/[locale]/page.js index ab223428..e2c11aed 100644 --- a/src/app/[locale]/page.js +++ b/src/app/[locale]/page.js @@ -1,11 +1,15 @@ import MainPage from '@/components/Main' +import { getSession } from '@/lib/authActions' import { getCurrentLocale } from '@/locales/server' -export default function page() { +export default async function page() { + const session = await getSession() + const currentLocale = getCurrentLocale() const mainPageProps = { currentLocale, + isLoggedIn: session?.isLoggedIn, } return ( diff --git a/src/components/Main.jsx b/src/components/Main.jsx index cd2b954b..9a029019 100644 --- a/src/components/Main.jsx +++ b/src/components/Main.jsx @@ -1,10 +1,11 @@ 'use client' +import { logout } from '@/lib/authActions' import { useChangeLocale, useI18n } from '@/locales/client' import { Button, Chip } from '@nextui-org/react' export default function MainPage(props) { - const { currentLocale } = props + const { currentLocale, isLoggedIn } = props const t = useI18n() const changeLocale = useChangeLocale() @@ -12,7 +13,11 @@ export default function MainPage(props) { currentLocale === 'ja' ? changeLocale('ko') : changeLocale('ja') } - console.log('MainPage', currentLocale) + // console.log('MainPage', currentLocale) + + const handleLogout = async () => { + await logout() + } return ( <> @@ -22,6 +27,13 @@ export default function MainPage(props) {
+ {isLoggedIn && ( +
+ +
+ )} ) } diff --git a/src/components/auth/Login.jsx b/src/components/auth/Login.jsx new file mode 100644 index 00000000..ce2055c3 --- /dev/null +++ b/src/components/auth/Login.jsx @@ -0,0 +1,75 @@ +'use client' + +import { login } from '@/lib/authActions' + +export default function Login() { + return ( +
+
+
+ Your Company +

Sign in to your account

+
+ +
+
+
+ +
+ +
+
+ +
+
+ + +
+
+ +
+
+ +
+ +
+
+ +

+ Not a member?{' '} + + Start a 14 day free trial + +

+
+
+
+ ) +} diff --git a/src/lib/authActions.js b/src/lib/authActions.js new file mode 100644 index 00000000..e1968efe --- /dev/null +++ b/src/lib/authActions.js @@ -0,0 +1,61 @@ +'use server' + +import { cookies } from 'next/headers' +import { redirect } from 'next/navigation' + +import { getIronSession } from 'iron-session' + +import { getUserByIdAndPassword } from './user' +import { defaultSession, sessionOptions } from './session' + +export async function logout() { + const session = await getSession() + session.destroy() + redirect('/login') +} + +export async function getSession() { + let session + session = await getIronSession(cookies(), sessionOptions) + + console.log('session:', session) + if (!session.isLoggedIn) { + session.isLoggedIn = defaultSession.isLoggedIn + } + + return session +} + +export async function login(formData) { + const session = await getSession() + + const userId = formData.get('id') + const password = formData.get('password') + + console.log('id:', userId) + console.log('password:', password) + + // const user = { + // id: 1, + // name: 'jinsoo Kim', + // email: 'jinsoo.kim@example.com', + // } + const loginUser = await getUserByIdAndPassword({ userId, password }) + console.log('loginUser:', loginUser) + + if (!loginUser) { + throw Error('Wrong Credentials!') + } + + // session.id = user.id + // session.email = user.email + session.userId = loginUser.USER_ID + session.saleStoreId = loginUser.SALE_STORE_ID + session.name = loginUser.NAME + session.mail = loginUser.MAIL + session.isLoggedIn = true + console.log('session:', session) + + await session.save() + redirect('/') +} diff --git a/src/lib/session.js b/src/lib/session.js new file mode 100644 index 00000000..95d51411 --- /dev/null +++ b/src/lib/session.js @@ -0,0 +1,16 @@ +export const defaultSession = { + userId: null, + saleStoreId: null, + name: null, + mail: null, + isLoggedIn: false, +} + +export const sessionOptions = { + password: process.env.SESSION_SECRET, + cookieName: 'lama-session', + cookieOptions: { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + }, +} diff --git a/src/lib/user.js b/src/lib/user.js index 5203053e..bdc619ee 100644 --- a/src/lib/user.js +++ b/src/lib/user.js @@ -4,9 +4,9 @@ const { PrismaClient } = require('@prisma/client') const prisma = new PrismaClient() -export async function createUser({ userId, password }) { - return prisma.m_USER.create({ - data: { +export async function getUserByIdAndPassword({ userId, password }) { + return prisma.m_USER.findFirst({ + where: { USER_ID: userId, PASSWORD: password, }, diff --git a/yarn.lock b/yarn.lock index 0f4aee9b..bafca2d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2645,6 +2645,11 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + cross-spawn@^7.0.0: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" @@ -3091,6 +3096,20 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +iron-session@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/iron-session/-/iron-session-8.0.2.tgz#9802e080206a8ba41911b53d29ff7de11161d036" + integrity sha512-p4Yf1moQr6gnCcXu5vCaxVKRKDmR9PZcQDfp7ZOgbsSHUsgaNti6OgDB2BdgxC2aS6V/6Hu4O0wYlj92sbdIJg== + dependencies: + cookie "0.6.0" + iron-webcrypto "1.2.1" + uncrypto "0.1.3" + +iron-webcrypto@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f" + integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== + is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" @@ -4288,6 +4307,11 @@ typed-function@^4.2.1: resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-4.2.1.tgz#19aa51847aa2dea9ef5e7fb7641c060179a74426" integrity sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA== +uncrypto@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + undici-types@~6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" From 91277eeca170f120701c8980c8bebe4958feea2d Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 7 Aug 2024 18:04:34 +0900 Subject: [PATCH 44/61] =?UTF-8?q?fix:=20Intro=20&=20QGrid=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=95=EB=A6=AC=20=EB=B0=8F=20=EA=B5=AC=EC=A1=B0?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/[locale]/LocaleProvider.js | 2 +- src/app/[locale]/intro/page.jsx | 3 --- src/app/[locale]/layout.js | 4 +++- src/components/Intro.jsx | 26 +++++++++++++++++++++++--- src/components/common/grid/QGrid.jsx | 20 +++++++++++++------- 5 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/app/[locale]/LocaleProvider.js b/src/app/[locale]/LocaleProvider.js index b4649135..cb4aa5d6 100644 --- a/src/app/[locale]/LocaleProvider.js +++ b/src/app/[locale]/LocaleProvider.js @@ -4,7 +4,7 @@ import { I18nProviderClient } from '@/locales/client' export function LocaleProvider({ locale, children }) { return ( - Loading...

}> + {children} ) diff --git a/src/app/[locale]/intro/page.jsx b/src/app/[locale]/intro/page.jsx index 64a7c6ab..3c96c165 100644 --- a/src/app/[locale]/intro/page.jsx +++ b/src/app/[locale]/intro/page.jsx @@ -1,6 +1,3 @@ -'use client' - -import Hero from '@/components/Hero' import Intro from '@/components/Intro' export default function IntroPage() { diff --git a/src/app/[locale]/layout.js b/src/app/[locale]/layout.js index 00f84991..9ae6b1b9 100644 --- a/src/app/[locale]/layout.js +++ b/src/app/[locale]/layout.js @@ -7,7 +7,9 @@ export default function LocaleLayout({ children }) { const locale = useCurrentLocale() return ( <> - {children} + + {children} + ) } diff --git a/src/components/Intro.jsx b/src/components/Intro.jsx index 7235e2eb..a14064c3 100644 --- a/src/components/Intro.jsx +++ b/src/components/Intro.jsx @@ -1,6 +1,8 @@ 'use client' -import { useState } from 'react' +import { useEffect, useMemo, useState } from 'react' + +import Link from 'next/link' import { Button } from '@nextui-org/react' @@ -25,9 +27,13 @@ export default function Intro() { setDateRange, } - const gridProps = { + // const gridProps = { + // isPageable: false, + // } + const [gridProps, setGridProps] = useState({ + gridData: [], isPageable: false, - } + }) const modelProps = { open, @@ -52,8 +58,22 @@ export default function Intro() { ) + useEffect(() => { + async function fetchData() { + const response = await fetch('https://www.ag-grid.com/example-assets/space-mission-data.json') + const data = await response.json() + setGridProps({ ...gridProps, gridData: data }) + } + fetchData() + }, []) + return ( <> +
+ + + +
Single Date Picker
diff --git a/src/components/common/grid/QGrid.jsx b/src/components/common/grid/QGrid.jsx index a0cd3ef1..2611f078 100644 --- a/src/components/common/grid/QGrid.jsx +++ b/src/components/common/grid/QGrid.jsx @@ -1,3 +1,5 @@ +'use client' + import { useCallback, useEffect, useMemo, useState } from 'react' import { AgGridReact } from 'ag-grid-react' @@ -5,13 +7,14 @@ import 'ag-grid-community/styles/ag-grid.css' import 'ag-grid-community/styles/ag-theme-quartz.css' export default function QGrid(props) { + console.log('QGrid props:', props) const { gridData, gridColumns, isPageable = true } = props const [count, setCount] = useState(0) const [clickedCount, setClickedCount] = useState(0) /** * 행 데이터를 설정할 때 useState을 사용하여 렌더링 전반에 걸쳐 일관된 배열 참조를 유지하는 것이 좋습니다 */ - const [rowData, setRowData] = useState([]) + const [rowData, setRowData] = useState(null) /** * Column Definitions를 설정할 때는 useMemo 또는 useState를 사용하여 렌더 간에 일관된 참조를 유지하십시오. @@ -57,12 +60,15 @@ export default function QGrid(props) { // Fetch data & update rowData state useEffect(() => { - gridData - ? setRowData(gridData) - : fetch('https://www.ag-grid.com/example-assets/space-mission-data.json') // Fetch data from server - .then((result) => result.json()) // Convert to JSON - .then((rowData) => setRowData(rowData)) // Update state of `rowData` - }, []) + // async function fetchData() { + // const response = await fetch('https://www.ag-grid.com/example-assets/space-mission-data.json') + // const data = await response.json() + // setRowData(data) + // } + + console.log('use effect') + gridData ? setRowData(gridData) : '' + }, [gridData]) return (
Date: Thu, 8 Aug 2024 09:39:54 +0900 Subject: [PATCH 45/61] =?UTF-8?q?=EB=AA=A8=EC=9E=84=EC=A7=80=EB=B6=95=20?= =?UTF-8?q?=EA=B7=B8=EB=A6=AC=EA=B8=B0=20=EC=B5=9C=EC=A2=85=EC=8B=9C=20?= =?UTF-8?q?=EB=96=A8=EC=96=B4=EC=A7=84=20=EB=A7=88=EB=A3=A8=20=ED=95=A9?= =?UTF-8?q?=EC=B9=98=EB=8A=94=20=EC=9E=91=EC=97=85=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 81 ++++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 16 deletions(-) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 639455c9..85ad4204 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -2386,18 +2386,6 @@ const connectLinePoint = (polygon) => { } }) - console.log('missedPoints : ', missedPoints) - console.log( - polygon.hips.filter((hip) => { - let count = 0 - count += polygon.ridges.filter((ridge) => (ridge.x1 === hip.x2 && ridge.y1 === hip.y2) || (ridge.x2 === hip.x2 && ridge.y2 === hip.y2)).length - - count += polygon.hips.filter((hip2) => (hip2.x1 === hip.x2 && hip2.y1 === hip.y2) || (hip2.x2 === hip.x2 && hip2.y2 === hip.y2)).length - if (count < 3) { - return hip - } - }), - ) //추녀마루 polygon.hips.forEach((hip) => { let count = 0 @@ -2457,7 +2445,7 @@ const connectLinePoint = (polygon) => { polygon.innerLines.push(line) }) - /*missedPoints = [] + missedPoints = [] missedLine = [] polygon.innerLines.forEach((line, index) => { @@ -2507,8 +2495,6 @@ const connectLinePoint = (polygon) => { //중복라인제거 missedLine = [...new Set(missedLine.map((line) => JSON.stringify(line)))].map((line) => JSON.parse(line)) - console.log(missedLine) - missedLine.forEach((p, index) => { const line = new QLine([p.x1, p.y1, p.x2, p.y2], { fontSize: polygon.fontSize, @@ -2517,7 +2503,70 @@ const connectLinePoint = (polygon) => { }) polygon.canvas.add(line) polygon.innerLines.push(line) - })*/ + }) + + //마지막으로 연결되지 않고 떨어져있는 마루를 확인한다. + let missedRidge = [] + polygon.ridges.forEach((ridge) => { + let lineCheck1 = polygon.innerLines.filter((line) => { + console.log(!(line.x1 !== ridge.x1 && line.y1 !== ridge.y1 && line.x2 !== ridge.x2 && line.y2 !== ridge.y2)) + if ( + !(line.x1 === ridge.x1 && line.y1 === ridge.y1 && line.x2 === ridge.x2 && line.y2 === ridge.y2) && + ((line.x1 === ridge.x1 && line.y1 === ridge.y1) || (line.x2 === ridge.x1 && line.y2 === ridge.y1)) + ) { + return line + } + }) + + let lineCheck2 = polygon.innerLines.filter((line) => { + if ( + !(line.x1 === ridge.x1 && line.y1 === ridge.y1 && line.x2 === ridge.x2 && line.y2 === ridge.y2) && + ((line.x1 === ridge.x2 && line.y1 === ridge.y2) || (line.x2 === ridge.x2 && line.y2 === ridge.y2)) + ) { + return line + } + }) + if (lineCheck1.length === 0 || lineCheck2.length === 0) { + missedRidge.push(ridge) + } + }) + + missedRidge.forEach((ridge) => { + let missedRidge2 = missedRidge.filter( + (ridge2) => !(ridge.x1 === ridge2.x1 && ridge.y1 === ridge2.y1 && ridge.x2 === ridge2.x2 && ridge.y2 === ridge2.y2), + ) + + missedRidge2.forEach((ridge2) => { + let overlap = false + if (ridge.x1 === ridge.x2 && ridge2.x1 === ridge2.x2 && ridge2.x1 === ridge.x1) { + overlap = true + } + if (ridge.y1 === ridge.y2 && ridge2.y1 === ridge2.y2 && ridge2.y1 === ridge.y1) { + overlap = true + } + if (overlap) { + let x1 = Math.min(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2) + let x2 = Math.max(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2) + let y1 = Math.min(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2) + let y2 = Math.max(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2) + const newRidge = new QLine([x1, y1, x2, y2], { + fontSize: polygon.fontSize, + stroke: 'blue', + strokeWidth: 1, + }) + polygon.canvas.remove(ridge) + polygon.canvas.remove(ridge2) + polygon.ridges = polygon.ridges.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2)) + polygon.ridges = polygon.ridges.filter((r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2)) + polygon.innerLines = polygon.innerLines.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2)) + polygon.innerLines = polygon.innerLines.filter((r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2)) + + polygon.canvas.add(newRidge) + polygon.ridges.push(newRidge) + polygon.innerLines.push(newRidge) + } + }) + }) } /* From f570d9eb6c3b3cb2cb63966c12480820633f7cb4 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 8 Aug 2024 10:19:03 +0900 Subject: [PATCH 46/61] =?UTF-8?q?refactor:=20toastContainer=20=EC=A0=84?= =?UTF-8?q?=EC=97=AD=20=EC=9C=84=EC=B9=98=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 컨테이너 전역 위치로 이동 - 토스트 커스텀 훅 추가 --- src/app/layout.js | 2 + src/app/test/page.js | 32 +++-- src/hooks/useToast.js | 34 ++++++ yarn.lock | 273 ++++++++++++++++++++++-------------------- 4 files changed, 200 insertions(+), 141 deletions(-) create mode 100644 src/hooks/useToast.js diff --git a/src/app/layout.js b/src/app/layout.js index d9dd77d0..76b9ad73 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -5,6 +5,7 @@ import Headers from '@/components/Headers' import RecoilRootWrapper from './RecoilWrapper' import UIProvider from './UIProvider' import { headers } from 'next/headers' +import { ToastContainer } from 'react-toastify' const inter = Inter({ subsets: ['latin'] }) @@ -25,6 +26,7 @@ export default function RootLayout({ children }) { {children} + ) diff --git a/src/app/test/page.js b/src/app/test/page.js index cb9a07b5..8d3ddb1f 100644 --- a/src/app/test/page.js +++ b/src/app/test/page.js @@ -16,35 +16,43 @@ export default function TestPage() { pauseOnHover: true, theme: 'light', limit: 2, - closeOnClick: true + closeOnClick: true, } const toastTest = () => { - QToast( { + QToast({ type: 'info', // type TypeOptions = 'info' | 'success' | 'warning' | 'error' | 'default'; message: getContent('Toast Test'), - option: toastOption - }); + option: toastOption, + }) } const getContent = (title) => { - return
-

{title}

- -
+ return ( +
+

{title}

+
ToastMessage
+ +
+ ) } const onToastButtonClick = () => { console.log('on toast button click') } + const handleToast = () => { + QToast({ + message: getContent('Toast Test'), + options: {}, + }) + } + return ( <> - +
- +
- ) } - diff --git a/src/hooks/useToast.js b/src/hooks/useToast.js new file mode 100644 index 00000000..596316f7 --- /dev/null +++ b/src/hooks/useToast.js @@ -0,0 +1,34 @@ +import { toast } from 'react-toastify' + +const toastDefaultOptions = { + position: 'top-right', + autoClose: 3000, + draggable: false, + hideProgressBar: true, + rtl: false, + pauseOnFocusLoss: true, + pauseOnHover: true, + theme: 'light', + limit: 2, + closeOnClick: true, +} + +const QToast = (props) => { + const { message, type = 'info', options } = props + const customOptions = { ...toastDefaultOptions, ...options } + + switch (type) { + case 'info': + return toast.info(message, customOptions) + case 'success': + return toast.success(message, customOptions) + case 'warning': + return toast.warn(message, customOptions) + case 'error': + return toast.error(message, customOptions) + default: + return toast(message, customOptions) + } +} + +export { QToast } diff --git a/yarn.lock b/yarn.lock index 6bd1ba53..072a5465 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,6 +153,46 @@ resolved "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz" integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== +"@next/swc-darwin-arm64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" + integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== + +"@next/swc-darwin-x64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" + integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== + +"@next/swc-linux-arm64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" + integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== + +"@next/swc-linux-arm64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" + integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== + +"@next/swc-linux-x64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" + integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== + +"@next/swc-linux-x64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" + integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== + +"@next/swc-win32-arm64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" + integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== + +"@next/swc-win32-ia32-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" + integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== + "@next/swc-win32-x64-msvc@14.2.3": version "14.2.3" resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz" @@ -812,7 +852,7 @@ "@react-types/shared" "3.23.1" clsx "^1.2.1" -"@nextui-org/system@>=2.0.0", "@nextui-org/system@>=2.1.0", "@nextui-org/system@2.2.5": +"@nextui-org/system@2.2.5": version "2.2.5" resolved "https://registry.npmjs.org/@nextui-org/system/-/system-2.2.5.tgz" integrity sha512-nrX6768aiyWtpxX3OTFBIVWR+v9nlMsC3KaBinNfek97sNm7gAfTHi7q5kylE3L5yIMpNG+DclAKpuxgDQEmvw== @@ -865,7 +905,7 @@ "@react-types/tabs" "3.3.7" scroll-into-view-if-needed "3.0.10" -"@nextui-org/theme@>=2.1.0", "@nextui-org/theme@>=2.2.0", "@nextui-org/theme@2.2.9": +"@nextui-org/theme@2.2.9": version "2.2.9" resolved "https://registry.npmjs.org/@nextui-org/theme/-/theme-2.2.9.tgz" integrity sha512-TN2I9sMriLaj00pXsIMlg19+UHeOdjzS2JV0u4gjL14mSbQl5BYNxgbvU3gbMqkZZQ6OpwT4RnT8RS+ks6TXCw== @@ -1086,7 +1126,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1260,7 +1300,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/focus@^3.17.1", "@react-aria/focus@3.17.1": +"@react-aria/focus@3.17.1", "@react-aria/focus@^3.17.1": version "3.17.1" resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz" integrity sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ== @@ -1282,7 +1322,7 @@ "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/form@^3.0.5", "@react-aria/form@3.0.5": +"@react-aria/form@3.0.5", "@react-aria/form@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz" integrity sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ== @@ -1312,7 +1352,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-aria/i18n@^3.11.1", "@react-aria/i18n@3.11.1": +"@react-aria/i18n@3.11.1", "@react-aria/i18n@^3.11.1": version "3.11.1" resolved "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz" integrity sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ== @@ -1340,7 +1380,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-aria/interactions@^3.21.3", "@react-aria/interactions@3.21.3": +"@react-aria/interactions@3.21.3", "@react-aria/interactions@^3.21.3": version "3.21.3" resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz" integrity sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA== @@ -1360,7 +1400,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-aria/label@^3.7.8", "@react-aria/label@3.7.8": +"@react-aria/label@3.7.8", "@react-aria/label@^3.7.8": version "3.7.8" resolved "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz" integrity sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg== @@ -1369,7 +1409,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/link@^3.7.1", "@react-aria/link@3.7.1": +"@react-aria/link@3.7.1", "@react-aria/link@^3.7.1": version "3.7.1" resolved "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz" integrity sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw== @@ -1381,7 +1421,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/listbox@^3.12.1", "@react-aria/listbox@3.12.1": +"@react-aria/listbox@3.12.1", "@react-aria/listbox@^3.12.1": version "3.12.1" resolved "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz" integrity sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA== @@ -1403,7 +1443,7 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-aria/menu@^3.14.1", "@react-aria/menu@3.14.1": +"@react-aria/menu@3.14.1", "@react-aria/menu@^3.14.1": version "3.14.1" resolved "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz" integrity sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA== @@ -1422,7 +1462,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/overlays@^3.22.1", "@react-aria/overlays@3.22.1": +"@react-aria/overlays@3.22.1", "@react-aria/overlays@^3.22.1": version "3.22.1" resolved "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz" integrity sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg== @@ -1467,7 +1507,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-aria/selection@^3.18.1", "@react-aria/selection@3.18.1": +"@react-aria/selection@3.18.1", "@react-aria/selection@^3.18.1": version "3.18.1" resolved "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz" integrity sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ== @@ -1520,7 +1560,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-aria/ssr@^3.9.4", "@react-aria/ssr@3.9.4": +"@react-aria/ssr@3.9.4", "@react-aria/ssr@^3.9.4": version "3.9.4" resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz" integrity sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ== @@ -1580,7 +1620,7 @@ "@react-types/tabs" "^3.3.7" "@swc/helpers" "^0.5.0" -"@react-aria/textfield@^3.14.5", "@react-aria/textfield@3.14.5": +"@react-aria/textfield@3.14.5", "@react-aria/textfield@^3.14.5": version "3.14.5" resolved "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz" integrity sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA== @@ -1621,7 +1661,7 @@ "@react-types/tooltip" "^3.4.9" "@swc/helpers" "^0.5.0" -"@react-aria/utils@^3.24.1", "@react-aria/utils@3.24.1": +"@react-aria/utils@3.24.1", "@react-aria/utils@^3.24.1": version "3.24.1" resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz" integrity sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q== @@ -1643,7 +1683,7 @@ "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/visually-hidden@^3.8.12", "@react-aria/visually-hidden@3.8.12": +"@react-aria/visually-hidden@3.8.12", "@react-aria/visually-hidden@^3.8.12": version "3.8.12" resolved "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz" integrity sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw== @@ -1653,7 +1693,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/calendar@^3.5.1", "@react-stately/calendar@3.5.1": +"@react-stately/calendar@3.5.1", "@react-stately/calendar@^3.5.1": version "3.5.1" resolved "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz" integrity sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA== @@ -1664,7 +1704,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/checkbox@^3.6.5", "@react-stately/checkbox@3.6.5": +"@react-stately/checkbox@3.6.5", "@react-stately/checkbox@^3.6.5": version "3.6.5" resolved "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz" integrity sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg== @@ -1675,7 +1715,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/collections@^3.10.7", "@react-stately/collections@3.10.7": +"@react-stately/collections@3.10.7", "@react-stately/collections@^3.10.7": version "3.10.7" resolved "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz" integrity sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA== @@ -1691,7 +1731,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/combobox@^3.8.4", "@react-stately/combobox@3.8.4": +"@react-stately/combobox@3.8.4", "@react-stately/combobox@^3.8.4": version "3.8.4" resolved "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz" integrity sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA== @@ -1706,7 +1746,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/datepicker@^3.9.4", "@react-stately/datepicker@3.9.4": +"@react-stately/datepicker@3.9.4", "@react-stately/datepicker@^3.9.4": version "3.9.4" resolved "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz" integrity sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA== @@ -1727,7 +1767,7 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-stately/form@^3.0.3", "@react-stately/form@3.0.3": +"@react-stately/form@3.0.3", "@react-stately/form@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz" integrity sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg== @@ -1754,7 +1794,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/list@^3.10.5", "@react-stately/list@3.10.5": +"@react-stately/list@3.10.5", "@react-stately/list@^3.10.5": version "3.10.5" resolved "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz" integrity sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA== @@ -1776,7 +1816,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/menu@^3.7.1", "@react-stately/menu@3.7.1": +"@react-stately/menu@3.7.1", "@react-stately/menu@^3.7.1": version "3.7.1" resolved "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz" integrity sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg== @@ -1786,7 +1826,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/overlays@^3.6.7", "@react-stately/overlays@3.6.7": +"@react-stately/overlays@3.6.7", "@react-stately/overlays@^3.6.7": version "3.6.7" resolved "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz" integrity sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw== @@ -1804,7 +1844,7 @@ "@react-types/overlays" "^3.8.9" "@swc/helpers" "^0.5.0" -"@react-stately/radio@^3.10.4", "@react-stately/radio@3.10.4": +"@react-stately/radio@3.10.4", "@react-stately/radio@^3.10.4": version "3.10.4" resolved "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz" integrity sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ== @@ -1837,7 +1877,7 @@ "@react-types/shared" "^3.24.1" "@swc/helpers" "^0.5.0" -"@react-stately/slider@^3.5.4", "@react-stately/slider@3.5.4": +"@react-stately/slider@3.5.4", "@react-stately/slider@^3.5.4": version "3.5.4" resolved "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz" integrity sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw== @@ -1847,7 +1887,7 @@ "@react-types/slider" "^3.7.3" "@swc/helpers" "^0.5.0" -"@react-stately/table@^3.11.8", "@react-stately/table@3.11.8": +"@react-stately/table@3.11.8", "@react-stately/table@^3.11.8": version "3.11.8" resolved "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz" integrity sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg== @@ -1862,7 +1902,7 @@ "@react-types/table" "^3.9.5" "@swc/helpers" "^0.5.0" -"@react-stately/tabs@^3.6.6", "@react-stately/tabs@3.6.6": +"@react-stately/tabs@3.6.6", "@react-stately/tabs@^3.6.6": version "3.6.6" resolved "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz" integrity sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA== @@ -1872,7 +1912,7 @@ "@react-types/tabs" "^3.3.7" "@swc/helpers" "^0.5.0" -"@react-stately/toggle@^3.7.4", "@react-stately/toggle@3.7.4": +"@react-stately/toggle@3.7.4", "@react-stately/toggle@^3.7.4": version "3.7.4" resolved "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz" integrity sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA== @@ -1890,7 +1930,7 @@ "@react-types/checkbox" "^3.8.3" "@swc/helpers" "^0.5.0" -"@react-stately/tooltip@^3.4.9", "@react-stately/tooltip@3.4.9": +"@react-stately/tooltip@3.4.9", "@react-stately/tooltip@^3.4.9": version "3.4.9" resolved "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz" integrity sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA== @@ -1899,7 +1939,7 @@ "@react-types/tooltip" "^3.4.9" "@swc/helpers" "^0.5.0" -"@react-stately/tree@^3.8.1", "@react-stately/tree@3.8.1": +"@react-stately/tree@3.8.1", "@react-stately/tree@^3.8.1": version "3.8.1" resolved "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz" integrity sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw== @@ -1910,7 +1950,7 @@ "@react-types/shared" "^3.23.1" "@swc/helpers" "^0.5.0" -"@react-stately/utils@^3.10.1", "@react-stately/utils@3.10.1": +"@react-stately/utils@3.10.1", "@react-stately/utils@^3.10.1": version "3.10.1" resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz" integrity sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg== @@ -1924,7 +1964,7 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-stately/virtualizer@^3.7.1", "@react-stately/virtualizer@3.7.1": +"@react-stately/virtualizer@3.7.1", "@react-stately/virtualizer@^3.7.1": version "3.7.1" resolved "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz" integrity sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA== @@ -1940,7 +1980,7 @@ dependencies: "@react-types/shared" "^3.23.1" -"@react-types/breadcrumbs@^3.7.5", "@react-types/breadcrumbs@3.7.5": +"@react-types/breadcrumbs@3.7.5", "@react-types/breadcrumbs@^3.7.5": version "3.7.5" resolved "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz" integrity sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A== @@ -1948,7 +1988,7 @@ "@react-types/link" "^3.5.5" "@react-types/shared" "^3.23.1" -"@react-types/button@^3.9.4", "@react-types/button@3.9.4": +"@react-types/button@3.9.4", "@react-types/button@^3.9.4": version "3.9.4" resolved "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz" integrity sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA== @@ -1962,7 +2002,7 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/calendar@^3.4.6", "@react-types/calendar@3.4.6": +"@react-types/calendar@3.4.6", "@react-types/calendar@^3.4.6": version "3.4.6" resolved "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz" integrity sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew== @@ -1970,7 +2010,7 @@ "@internationalized/date" "^3.5.4" "@react-types/shared" "^3.23.1" -"@react-types/checkbox@^3.8.1", "@react-types/checkbox@3.8.1": +"@react-types/checkbox@3.8.1", "@react-types/checkbox@^3.8.1": version "3.8.1" resolved "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz" integrity sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ== @@ -1984,14 +2024,14 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/combobox@^3.11.1", "@react-types/combobox@3.11.1": +"@react-types/combobox@3.11.1", "@react-types/combobox@^3.11.1": version "3.11.1" resolved "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz" integrity sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/datepicker@^3.7.4", "@react-types/datepicker@3.7.4": +"@react-types/datepicker@3.7.4", "@react-types/datepicker@^3.7.4": version "3.7.4" resolved "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz" integrity sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A== @@ -2009,7 +2049,7 @@ "@react-types/overlays" "^3.8.9" "@react-types/shared" "^3.24.1" -"@react-types/grid@^3.2.6", "@react-types/grid@3.2.6": +"@react-types/grid@3.2.6", "@react-types/grid@^3.2.6": version "3.2.6" resolved "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz" integrity sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw== @@ -2023,7 +2063,7 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/link@^3.5.5", "@react-types/link@3.5.5": +"@react-types/link@3.5.5", "@react-types/link@^3.5.5": version "3.5.5" resolved "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz" integrity sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw== @@ -2037,7 +2077,7 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/menu@^3.9.9", "@react-types/menu@3.9.9": +"@react-types/menu@3.9.9", "@react-types/menu@^3.9.9": version "3.9.9" resolved "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz" integrity sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg== @@ -2045,7 +2085,7 @@ "@react-types/overlays" "^3.8.7" "@react-types/shared" "^3.23.1" -"@react-types/overlays@^3.8.7", "@react-types/overlays@3.8.7": +"@react-types/overlays@3.8.7", "@react-types/overlays@^3.8.7": version "3.8.7" resolved "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz" integrity sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA== @@ -2059,20 +2099,27 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/progress@^3.5.4", "@react-types/progress@3.5.4": +"@react-types/progress@3.5.4", "@react-types/progress@^3.5.4": version "3.5.4" resolved "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz" integrity sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/radio@^3.8.1", "@react-types/radio@3.8.1": +"@react-types/radio@3.8.1", "@react-types/radio@^3.8.1": version "3.8.1" resolved "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz" integrity sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw== dependencies: "@react-types/shared" "^3.23.1" +"@react-types/select@3.9.4": + version "3.9.4" + resolved "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz" + integrity sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg== + dependencies: + "@react-types/shared" "^3.23.1" + "@react-types/select@^3.9.6": version "3.9.6" resolved "https://registry.npmjs.org/@react-types/select/-/select-3.9.6.tgz" @@ -2080,14 +2127,7 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/select@3.9.4": - version "3.9.4" - resolved "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz" - integrity sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg== - dependencies: - "@react-types/shared" "^3.23.1" - -"@react-types/shared@^3.23.1", "@react-types/shared@3.23.1": +"@react-types/shared@3.23.1", "@react-types/shared@^3.23.1": version "3.23.1" resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz" integrity sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw== @@ -2111,7 +2151,7 @@ dependencies: "@react-types/shared" "^3.24.1" -"@react-types/table@^3.9.5", "@react-types/table@3.9.5": +"@react-types/table@3.9.5", "@react-types/table@^3.9.5": version "3.9.5" resolved "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz" integrity sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg== @@ -2119,21 +2159,21 @@ "@react-types/grid" "^3.2.6" "@react-types/shared" "^3.23.1" -"@react-types/tabs@^3.3.7", "@react-types/tabs@3.3.7": +"@react-types/tabs@3.3.7", "@react-types/tabs@^3.3.7": version "3.3.7" resolved "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz" integrity sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/textfield@^3.9.3", "@react-types/textfield@3.9.3": +"@react-types/textfield@3.9.3", "@react-types/textfield@^3.9.3": version "3.9.3" resolved "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz" integrity sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw== dependencies: "@react-types/shared" "^3.23.1" -"@react-types/tooltip@^3.4.9", "@react-types/tooltip@3.4.9": +"@react-types/tooltip@3.4.9", "@react-types/tooltip@^3.4.9": version "3.4.9" resolved "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz" integrity sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg== @@ -2146,7 +2186,7 @@ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/helpers@^0.5.0", "@swc/helpers@0.5.5": +"@swc/helpers@0.5.5", "@swc/helpers@^0.5.0": version "0.5.5" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz" integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== @@ -2349,7 +2389,7 @@ caniuse-lite@^1.0.30001579: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz" integrity sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA== -canvas@^2.5.0, canvas@^2.8.0: +canvas@^2.8.0: version "2.11.2" resolved "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz" integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== @@ -2358,7 +2398,7 @@ canvas@^2.5.0, canvas@^2.8.0: nan "^2.17.0" simple-get "^3.0.3" -chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0": +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -2388,12 +2428,7 @@ clsx@^1.2.1: resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -clsx@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" - integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== - -clsx@^2.1.0: +clsx@^2.0.0, clsx@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -2423,6 +2458,11 @@ color-support@^1.1.2: resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color2k@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz" + integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== + color@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz" @@ -2431,11 +2471,6 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -color2k@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz" - integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" @@ -2680,7 +2715,7 @@ fraction.js@^4.3.7: resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -framer-motion@^11.2.13, framer-motion@>=10.17.0: +framer-motion@^11.2.13: version "11.3.21" resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.21.tgz" integrity sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw== @@ -2699,6 +2734,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -2724,7 +2764,7 @@ get-nonce@^1.0.0: resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2738,13 +2778,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob@^10.3.10: version "10.4.1" resolved "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz" @@ -2834,7 +2867,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@2: +inherits@2, inherits@^2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3099,16 +3132,16 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -3329,15 +3362,6 @@ postcss-value-parser@^4.0.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8, postcss@^8.0.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@>=8.0.9: - version "8.4.38" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - postcss@8.4.31: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" @@ -3347,12 +3371,21 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8, postcss@^8.4.23: + version "8.4.38" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + prettier@^3.3.3: version "3.3.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== -prisma@*, prisma@^5.17.0: +prisma@^5.17.0: version "5.17.0" resolved "https://registry.npmjs.org/prisma/-/prisma-5.17.0.tgz" integrity sha512-m4UWkN5lBE6yevqeOxEvmepnL5cNPEjzMw2IqDB59AcEV6w7D8vGljDLd1gPFH+W6gUxw9x7/RmN5dCS/WTPxA== @@ -3384,7 +3417,7 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -"react-dom@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", react-dom@^18, react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=18: +react-dom@^18: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -3436,7 +3469,7 @@ react-toastify@^10.0.5: dependencies: clsx "^2.1.0" -"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", react@^18, react@^18.0.0, react@^18.2.0, react@^18.3.1, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.13.1, react@>=18: +react@^18: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -3521,7 +3554,7 @@ safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.3.0, sass@^1.77.8: +sass@^1.77.8: version "1.77.8" resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz" integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== @@ -3614,7 +3647,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -source-map-js@^1.0.2, source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0": +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -3636,13 +3669,6 @@ streamsearch@^1.1.0: resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -3652,25 +3678,7 @@ string_decoder@^1.1.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -"string-width@^1.0.2 || 2 || 3 || 4": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3688,6 +3696,13 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -3751,7 +3766,7 @@ tailwind-variants@^0.1.20: dependencies: tailwind-merge "^1.14.0" -tailwindcss@*, tailwindcss@^3.4.1, tailwindcss@>=3.4.0: +tailwindcss@^3.4.1: version "3.4.4" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz" integrity sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A== From 20d29c7e337ad4efe545864d940752ce77cf6c12 Mon Sep 17 00:00:00 2001 From: minsik Date: Thu, 8 Aug 2024 11:22:47 +0900 Subject: [PATCH 47/61] =?UTF-8?q?-=20Test=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20-=20QToast=20type=20=EC=A2=85=EB=A5=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/test/page.js | 58 -------------------------------------- src/components/ui/Toast.js | 30 -------------------- src/hooks/useToast.js | 1 + 3 files changed, 1 insertion(+), 88 deletions(-) delete mode 100644 src/app/test/page.js delete mode 100644 src/components/ui/Toast.js diff --git a/src/app/test/page.js b/src/app/test/page.js deleted file mode 100644 index 8d3ddb1f..00000000 --- a/src/app/test/page.js +++ /dev/null @@ -1,58 +0,0 @@ -'use client' - -import Hero from '@/components/Hero' -import React from 'react' -import QToast from '@/components/ui/Toast' -import { ToastContainer } from 'react-toastify' - -export default function TestPage() { - const toastOption = { - position: 'top-right', - autoClose: 5000, - draggable: true, - hideProgressBar: true, - rtl: false, - pauseOnFocusLoss: true, - pauseOnHover: true, - theme: 'light', - limit: 2, - closeOnClick: true, - } - const toastTest = () => { - QToast({ - type: 'info', // type TypeOptions = 'info' | 'success' | 'warning' | 'error' | 'default'; - message: getContent('Toast Test'), - option: toastOption, - }) - } - - const getContent = (title) => { - return ( -
-

{title}

-
ToastMessage
- -
- ) - } - - const onToastButtonClick = () => { - console.log('on toast button click') - } - - const handleToast = () => { - QToast({ - message: getContent('Toast Test'), - options: {}, - }) - } - - return ( - <> - -
- -
- - ) -} diff --git a/src/components/ui/Toast.js b/src/components/ui/Toast.js deleted file mode 100644 index a292028f..00000000 --- a/src/components/ui/Toast.js +++ /dev/null @@ -1,30 +0,0 @@ -import { toast } from 'react-toastify' -/* -* toast option -* position: top-left | top-right(default) | top-center | bottom-left | bottom-right | bottom-center -* autoClose: n(Milliseconds); 자동 닫힘 시간 설정; default 3000 -* draggable: 드레그로 닫기; true | false(default) -* hideProgressBar: 진행 시간바 숨김 여부; true | false(default) -* rtl: Toast 좌우반전 여부; true | false(default) -* pauseOnFocusLoss: 창에서 벗어나 있으면 닫힘시간 정지; true(default) | false -* pauseOnHover: Mouse Hover 시 닫힘시간 정지; true(default) | false -* theme: light(default) | dark | colored -* limit: toast 개수 제한 -* closeOnClick: Toast 클릭시 닫기 -* */ -export default function QToast(props) { - const {message, type = '', option} = props; - - switch(type) { - case 'info': - return toast.info(message, option); - case 'success': - return toast.success(message, option); - case 'warning': - return toast.warn(message, option); - case 'error': - return toast.error(message, option); - default: - return toast(message, option); - } -} \ No newline at end of file diff --git a/src/hooks/useToast.js b/src/hooks/useToast.js index 596316f7..c3256261 100644 --- a/src/hooks/useToast.js +++ b/src/hooks/useToast.js @@ -14,6 +14,7 @@ const toastDefaultOptions = { } const QToast = (props) => { + // type TypeOptions = 'info' | 'success' | 'warning' | 'error' | 'default' const { message, type = 'info', options } = props const customOptions = { ...toastDefaultOptions, ...options } From 478822558205a59a8a7a68ad66101816ad1f9c35 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 8 Aug 2024 11:31:26 +0900 Subject: [PATCH 48/61] =?UTF-8?q?fix:=20toast=20=EC=83=98=ED=94=8C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Intro.jsx | 17 +++++ src/hooks/useToast.js | 2 +- yarn.lock | 146 +-------------------------------------- 3 files changed, 20 insertions(+), 145 deletions(-) diff --git a/src/components/Intro.jsx b/src/components/Intro.jsx index a14064c3..5a6ba492 100644 --- a/src/components/Intro.jsx +++ b/src/components/Intro.jsx @@ -10,6 +10,7 @@ import SingleDatePicker from './common/datepicker/SingleDatePicker' import RangeDatePicker from './common/datepicker/RangeDatePicker' import QGrid from './common/grid/QGrid' import QModal from './common/modal/QModal' +import { QToast } from '@/hooks/useToast' export default function Intro() { const [open, setOpen] = useState(false) @@ -101,6 +102,22 @@ export default function Intro() { {ipsum}
+
+
QToast
+
+ +
+
) } diff --git a/src/hooks/useToast.js b/src/hooks/useToast.js index c3256261..d9c0fdb3 100644 --- a/src/hooks/useToast.js +++ b/src/hooks/useToast.js @@ -4,7 +4,7 @@ const toastDefaultOptions = { position: 'top-right', autoClose: 3000, draggable: false, - hideProgressBar: true, + hideProgressBar: false, rtl: false, pauseOnFocusLoss: true, pauseOnHover: true, diff --git a/yarn.lock b/yarn.lock index d6c80321..921e2f27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -163,10 +163,6 @@ jsonwebtoken "^9.0.0" uuid "^8.3.0" -"@babel/runtime@^7.20.13": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" - integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== "@babel/runtime@^7.20.13", "@babel/runtime@^7.24.8": version "7.25.0" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz" @@ -174,13 +170,6 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.24.7": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" - integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== - dependencies: - regenerator-runtime "^0.14.0" - "@bedrock-layout/use-forwarded-ref@^1.3.1": version "1.6.1" resolved "https://registry.yarnpkg.com/@bedrock-layout/use-forwarded-ref/-/use-forwarded-ref-1.6.1.tgz#e0d25c35af41ccaa36df809a7de8d5ccd9c70d1e" @@ -361,13 +350,6 @@ semver "^7.3.5" tar "^6.1.11" -"@mongodb-js/saslprep@^1.1.5": - version "1.1.8" - resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz" - integrity sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ== - dependencies: - sparse-bitfield "^3.0.3" - "@next/env@14.2.3": version "14.2.3" resolved "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz" @@ -1368,66 +1350,6 @@ version "5.18.0" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.18.0.tgz#526e4281a448f214c0ff81d65c39243608c98294" integrity sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw== -"@prisma/client@^5.17.0": - version "5.17.0" - resolved "https://registry.npmjs.org/@prisma/client/-/client-5.17.0.tgz" - integrity sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw== - -"@prisma/debug@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.18.0.tgz#527799e044d2903a35945e61ac2d8916e4b61ead" - integrity sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw== -"@prisma/debug@5.17.0": - version "5.17.0" - resolved "https://registry.npmjs.org/@prisma/debug/-/debug-5.17.0.tgz" - integrity sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg== - -"@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169": - version "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169.tgz#203426ebf4ec4e1acce7da4a59ec8f0df92b29e7" - integrity sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg== -"@prisma/engines-version@5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053": - version "5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053" - resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053.tgz" - integrity sha512-tUuxZZysZDcrk5oaNOdrBnnkoTtmNQPkzINFDjz7eG6vcs9AVDmA/F6K5Plsb2aQc/l5M2EnFqn3htng9FA4hg== - -"@prisma/engines@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.18.0.tgz#26ea46e26498be622407cf95663d7fb4c39c895b" - integrity sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg== -"@prisma/engines@5.17.0": - version "5.17.0" - resolved "https://registry.npmjs.org/@prisma/engines/-/engines-5.17.0.tgz" - integrity sha512-+r+Nf+JP210Jur+/X8SIPLtz+uW9YA4QO5IXA+KcSOBe/shT47bCcRMTYCbOESw3FFYFTwe7vU6KTWHKPiwvtg== - dependencies: - "@prisma/debug" "5.18.0" - "@prisma/engines-version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" - "@prisma/fetch-engine" "5.18.0" - "@prisma/get-platform" "5.18.0" - -"@prisma/fetch-engine@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.18.0.tgz#5b343e2b36b27e2713901ddd032ddd6932b3d55f" - integrity sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg== -"@prisma/fetch-engine@5.17.0": - version "5.17.0" - resolved "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.17.0.tgz" - integrity sha512-ESxiOaHuC488ilLPnrv/tM2KrPhQB5TRris/IeIV4ZvUuKeaicCl4Xj/JCQeG9IlxqOgf1cCg5h5vAzlewN91Q== - dependencies: - "@prisma/debug" "5.18.0" - "@prisma/engines-version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" - "@prisma/get-platform" "5.18.0" - -"@prisma/get-platform@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.18.0.tgz#0dc4c82fe9a4971f4519a57cb2dd69d8e0df4b71" - integrity sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA== -"@prisma/get-platform@5.17.0": - version "5.17.0" - resolved "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.17.0.tgz" - integrity sha512-UlDgbRozCP1rfJ5Tlkf3Cnftb6srGrEQ4Nm3og+1Se2gWmCZ0hmPIi+tQikGDUVLlvOWx3Gyi9LzgRP+HTXV9w== - dependencies: - "@prisma/debug" "5.18.0" "@react-aria/breadcrumbs@3.5.13": version "3.5.13" @@ -2430,7 +2352,7 @@ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/helpers@0.5.5", "@swc/helpers@^0.5.0": +"@swc/helpers@0.5.5": version "0.5.5" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz" integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== @@ -2467,25 +2389,17 @@ resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz" integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== -"@types/node@*", "@types/node@>=18": +"@types/node@>=18": version "22.1.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== dependencies: undici-types "~6.13.0" -"@types/webidl-conversions@*": - version "7.0.3" - resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz" - integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== "@types/readable-stream@^4.0.0": version "4.0.15" resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-4.0.15.tgz#e6ec26fe5b02f578c60baf1fa9452e90957d2bfb" integrity sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw== -"@types/whatwg-url@^11.0.2": - version "11.0.5" - resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz" - integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== dependencies: "@types/node" "*" safe-buffer "~5.1.1" @@ -2692,10 +2606,6 @@ buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== -bson@^6.7.0: - version "6.8.0" - resolved "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz" - integrity sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ== buffer@^6.0.3: version "6.0.3" @@ -3600,11 +3510,6 @@ mathjs@^13.0.2: tiny-emitter "^2.1.0" typed-function "^4.2.1" -memory-pager@^1.0.2: - version "1.5.0" - resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" - integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== - merge2@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" @@ -3679,23 +3584,6 @@ mkdirp@^1.0.3: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mongodb-connection-string-url@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz" - integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== - dependencies: - "@types/whatwg-url" "^11.0.2" - whatwg-url "^13.0.0" - -mongodb@^6.8.0: - version "6.8.0" - resolved "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz" - integrity sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw== - dependencies: - "@mongodb-js/saslprep" "^1.1.5" - bson "^6.7.0" - mongodb-connection-string-url "^3.0.0" - ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" @@ -3953,10 +3841,6 @@ prisma@^5.18.0: version "5.18.0" resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.18.0.tgz#5ef69c802a075b7596231ea57003496873610b9e" integrity sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g== -prisma@^5.17.0: - version "5.17.0" - resolved "https://registry.npmjs.org/prisma/-/prisma-5.17.0.tgz" - integrity sha512-m4UWkN5lBE6yevqeOxEvmepnL5cNPEjzMw2IqDB59AcEV6w7D8vGljDLd1gPFH+W6gUxw9x7/RmN5dCS/WTPxA== dependencies: "@prisma/engines" "5.18.0" @@ -4177,11 +4061,6 @@ safe-buffer@^5.0.1, safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -4304,12 +4183,6 @@ sprintf-js@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== -sparse-bitfield@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" - integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== - dependencies: - memory-pager "^1.0.2" stoppable@^1.1.0: version "1.1.0" @@ -4527,13 +4400,6 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" -tr46@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz" - integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== - dependencies: - punycode "^2.3.0" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" @@ -4676,14 +4542,6 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" -whatwg-url@^13.0.0: - version "13.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz" - integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== - dependencies: - tr46 "^4.1.1" - webidl-conversions "^7.0.0" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" From a5f38502a2b7d88342ff5b575bf2766ca5fc5dcd Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 8 Aug 2024 13:38:11 +0900 Subject: [PATCH 49/61] =?UTF-8?q?refactor:=20axios=20=EC=98=B5=EC=85=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80,=20=EC=A0=81=EC=9A=A9=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - axios 옵션 추가 ( 내부, 외부) - 샘플 적용 코드 수정 --- src/app/[locale]/changelog/page.jsx | 15 +++++++-- src/components/Intro.jsx | 11 +++++-- src/const/axiosConst.js | 4 +++ src/hooks/useAxios.js | 50 +++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 src/const/axiosConst.js create mode 100644 src/hooks/useAxios.js diff --git a/src/app/[locale]/changelog/page.jsx b/src/app/[locale]/changelog/page.jsx index 85ca6310..f9a02a2b 100644 --- a/src/app/[locale]/changelog/page.jsx +++ b/src/app/[locale]/changelog/page.jsx @@ -1,15 +1,26 @@ 'use client' import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@nextui-org/react' + +import { AxiosType } from '@/const/axiosConst' +import { useAxios } from '@/hooks/useAxios' +// import { get } from '@/lib/Axios' + import QSelect from '@/components/ui/QSelect' + import styles from './changelog.module.css' -import { get } from '@/lib/Axios' export default function changelogPage() { + const { get } = useAxios() const testVar = process.env.NEXT_PUBLIC_TEST const handleUsers = async () => { - const users = await get('/api/user/find-all') + // const users = await get('/api/user/find-all') + const params = { + type: AxiosType.INTERNAL, + url: '/api/user/find-all', + } + const users = await get(params) console.log(users) } diff --git a/src/components/Intro.jsx b/src/components/Intro.jsx index 5a6ba492..db1e0920 100644 --- a/src/components/Intro.jsx +++ b/src/components/Intro.jsx @@ -4,6 +4,9 @@ import { useEffect, useMemo, useState } from 'react' import Link from 'next/link' +import { AxiosType } from '@/const/axiosConst' +import { useAxios } from '@/hooks/useAxios' + import { Button } from '@nextui-org/react' import SingleDatePicker from './common/datepicker/SingleDatePicker' @@ -13,6 +16,8 @@ import QModal from './common/modal/QModal' import { QToast } from '@/hooks/useToast' export default function Intro() { + const { get } = useAxios() + const [open, setOpen] = useState(false) const [startDate, setStartDate] = useState(new Date()) const singleDatePickerProps = { @@ -61,8 +66,10 @@ export default function Intro() { useEffect(() => { async function fetchData() { - const response = await fetch('https://www.ag-grid.com/example-assets/space-mission-data.json') - const data = await response.json() + // const response = await fetch('https://www.ag-grid.com/example-assets/space-mission-data.json') + // const data = await response.json() + const data = await get({ type: AxiosType.EXTERNAL, url: 'https://www.ag-grid.com/example-assets/space-mission-data.json' }) + console.log(data) setGridProps({ ...gridProps, gridData: data }) } fetchData() diff --git a/src/const/axiosConst.js b/src/const/axiosConst.js new file mode 100644 index 00000000..22f68647 --- /dev/null +++ b/src/const/axiosConst.js @@ -0,0 +1,4 @@ +export const AxiosType = { + INTERNAL: 'Internal', + EXTERNAL: 'External', +} diff --git a/src/hooks/useAxios.js b/src/hooks/useAxios.js new file mode 100644 index 00000000..fecce660 --- /dev/null +++ b/src/hooks/useAxios.js @@ -0,0 +1,50 @@ +import { AxiosType } from '@/const/axiosConst' +import axios from 'axios' + +export function useAxios() { + const getInstances = (type) => { + return axios.create({ + baseURL: type === AxiosType.INTERNAL ? process.env.NEXT_PUBLIC_API_SERVER_PATH : '', + headers: { + Accept: 'application/json', + }, + }) + } + + const get = async ({ type, url }) => { + return await getInstances(type) + .get(url) + .then((res) => res.data) + .catch(console.error) + } + + const post = async ({ type, url, data }) => { + return await getInstances(type) + .post(url, data) + .then((res) => res.data) + .catch(console.error) + } + + const put = async ({ type, url, data }) => { + return await getInstances(type) + .put(url, data) + .then((res) => res.data) + .catch(console.error) + } + + const patch = async ({ type, url, data }) => { + return await getInstances(type) + .patch(url, data) + .then((res) => res.data) + .catch(console.error) + } + + const del = async ({ type, url }) => { + return await getInstances(type) + .delete(url) + .then((res) => res.data) + .catch(console.error) + } + + return { get, post, put, patch, del } +} From cc7f71be6a38b3212803f233e49a1add81351ada Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 8 Aug 2024 13:49:44 +0900 Subject: [PATCH 50/61] =?UTF-8?q?refactor:=20=EC=95=88=EC=93=B0=EB=8A=94?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C,=20=EC=84=A4=EC=A0=95=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/[locale]/changelog/page.jsx | 5 ++--- src/components/Intro.jsx | 4 +--- src/const/axiosConst.js | 4 ---- src/hooks/useAxios.js | 19 ++++++++++++++++++- 4 files changed, 21 insertions(+), 11 deletions(-) delete mode 100644 src/const/axiosConst.js diff --git a/src/app/[locale]/changelog/page.jsx b/src/app/[locale]/changelog/page.jsx index f9a02a2b..dd7f623a 100644 --- a/src/app/[locale]/changelog/page.jsx +++ b/src/app/[locale]/changelog/page.jsx @@ -2,8 +2,7 @@ import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@nextui-org/react' -import { AxiosType } from '@/const/axiosConst' -import { useAxios } from '@/hooks/useAxios' +import { AxiosType, useAxios } from '@/hooks/useAxios' // import { get } from '@/lib/Axios' import QSelect from '@/components/ui/QSelect' @@ -21,7 +20,7 @@ export default function changelogPage() { url: '/api/user/find-all', } const users = await get(params) - console.log(users) + console.log('users', users) } const data = [ diff --git a/src/components/Intro.jsx b/src/components/Intro.jsx index db1e0920..ac8ef580 100644 --- a/src/components/Intro.jsx +++ b/src/components/Intro.jsx @@ -4,8 +4,7 @@ import { useEffect, useMemo, useState } from 'react' import Link from 'next/link' -import { AxiosType } from '@/const/axiosConst' -import { useAxios } from '@/hooks/useAxios' +import { AxiosType, useAxios } from '@/hooks/useAxios' import { Button } from '@nextui-org/react' @@ -69,7 +68,6 @@ export default function Intro() { // const response = await fetch('https://www.ag-grid.com/example-assets/space-mission-data.json') // const data = await response.json() const data = await get({ type: AxiosType.EXTERNAL, url: 'https://www.ag-grid.com/example-assets/space-mission-data.json' }) - console.log(data) setGridProps({ ...gridProps, gridData: data }) } fetchData() diff --git a/src/const/axiosConst.js b/src/const/axiosConst.js deleted file mode 100644 index 22f68647..00000000 --- a/src/const/axiosConst.js +++ /dev/null @@ -1,4 +0,0 @@ -export const AxiosType = { - INTERNAL: 'Internal', - EXTERNAL: 'External', -} diff --git a/src/hooks/useAxios.js b/src/hooks/useAxios.js index fecce660..9e188ba7 100644 --- a/src/hooks/useAxios.js +++ b/src/hooks/useAxios.js @@ -1,6 +1,10 @@ -import { AxiosType } from '@/const/axiosConst' import axios from 'axios' +export const AxiosType = { + INTERNAL: 'Internal', + EXTERNAL: 'External', +} + export function useAxios() { const getInstances = (type) => { return axios.create({ @@ -11,6 +15,19 @@ export function useAxios() { }) } + axios.interceptors.request.use((config) => { + // config['Authorization'] = localStorage.getItem('token') + //TODO: 인터셉터에서 추가 로직 구현 + return config + }) + + axios.interceptors.request.use(undefined, (error) => { + //TODO: 인터셉터에서 에러 처리 로직 구현 + // if (error.isAxiosError && e.response?.status === 401) { + // localStorage.removeItem('token') + // } + }) + const get = async ({ type, url }) => { return await getInstances(type) .get(url) From a7d725cff00bffd1cd9c24ac61485b91196594ab Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 8 Aug 2024 14:39:00 +0900 Subject: [PATCH 51/61] =?UTF-8?q?refactor:=20modal=20=EC=A0=84=EC=97=AD?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.js | 13 +++++++++---- src/components/Intro.jsx | 24 +++++++++++++++++++----- src/components/common/modal/QModal.jsx | 12 ++++++++++-- src/store/modalAtom.js | 15 +++++++++++++++ 4 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 src/store/modalAtom.js diff --git a/src/app/layout.js b/src/app/layout.js index 76b9ad73..72ac7bf3 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -1,11 +1,15 @@ import { Inter } from 'next/font/google' -import './globals.css' -import '../styles/style.scss' -import Headers from '@/components/Headers' + import RecoilRootWrapper from './RecoilWrapper' import UIProvider from './UIProvider' import { headers } from 'next/headers' +import Headers from '@/components/Headers' + import { ToastContainer } from 'react-toastify' +import QModal from '@/components/common/modal/QModal' + +import './globals.css' +import '../styles/style.scss' const inter = Inter({ subsets: ['latin'] }) @@ -25,8 +29,9 @@ export default function RootLayout({ children }) { {headerPathname !== '/login' && } {children} + + - ) diff --git a/src/components/Intro.jsx b/src/components/Intro.jsx index ac8ef580..35b5b872 100644 --- a/src/components/Intro.jsx +++ b/src/components/Intro.jsx @@ -4,6 +4,9 @@ import { useEffect, useMemo, useState } from 'react' import Link from 'next/link' +import { useRecoilState } from 'recoil' +import { modalContent, modalState } from '@/store/modalAtom' + import { AxiosType, useAxios } from '@/hooks/useAxios' import { Button } from '@nextui-org/react' @@ -11,13 +14,12 @@ import { Button } from '@nextui-org/react' import SingleDatePicker from './common/datepicker/SingleDatePicker' import RangeDatePicker from './common/datepicker/RangeDatePicker' import QGrid from './common/grid/QGrid' -import QModal from './common/modal/QModal' import { QToast } from '@/hooks/useToast' export default function Intro() { const { get } = useAxios() - const [open, setOpen] = useState(false) + // const [open, setOpen] = useState(false) const [startDate, setStartDate] = useState(new Date()) const singleDatePickerProps = { startDate, @@ -40,6 +42,9 @@ export default function Intro() { isPageable: false, }) + const [open, setOpen] = useRecoilState(modalState) + const [contents, setContent] = useRecoilState(modalContent) + const modelProps = { open, setOpen, @@ -101,10 +106,19 @@ export default function Intro() {
QModal
- + {ipsum} */} + - {ipsum}
@@ -119,7 +133,7 @@ export default function Intro() { }) }} > - Open Modal + Open Toast
diff --git a/src/components/common/modal/QModal.jsx b/src/components/common/modal/QModal.jsx index 60ce318c..1cf01915 100644 --- a/src/components/common/modal/QModal.jsx +++ b/src/components/common/modal/QModal.jsx @@ -1,8 +1,16 @@ +'use client' + +import { useRecoilState, useRecoilValue } from 'recoil' + import { Modal } from 'react-responsive-modal' + +import { modalContent, modalState } from '@/store/modalAtom' + import 'react-responsive-modal/styles.css' -export default function QModal(props) { - const { open, setOpen, children } = props +export default function QModal() { + const [open, setOpen] = useRecoilState(modalState) + const children = useRecoilValue(modalContent) return ( setOpen(false)} center> diff --git a/src/store/modalAtom.js b/src/store/modalAtom.js new file mode 100644 index 00000000..a9a708ac --- /dev/null +++ b/src/store/modalAtom.js @@ -0,0 +1,15 @@ +import { atom } from 'recoil' + +export const modalState = atom({ + key: 'modalState', + default: false, +}) + +export const modalContent = atom({ + key: 'modalContent', + default: ( + <> +
test
+ + ), +}) From 239bcef815e115b2d38313de83935ba5b764fbd2 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Thu, 8 Aug 2024 15:47:40 +0900 Subject: [PATCH 52/61] =?UTF-8?q?ab=ED=85=9C=ED=94=8C=EB=A6=BF=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EC=85=80=20=EC=9C=84=EC=B9=98=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 3 +- src/components/fabric/QPolygon.js | 277 +++++++++++++++++++++++++----- src/hooks/useMode.js | 118 +++++++++++-- yarn.lock | 43 ++++- 4 files changed, 377 insertions(+), 64 deletions(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index 922215a5..6c5f1914 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -542,9 +542,10 @@ export default function Roof2() { {/* + */} */} + 현재 줌 : {zoom}% + + + + diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 05c27007..3d48e63e 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -1,6 +1,6 @@ import { useEffect, useRef, useState } from 'react' import { findTopTwoIndexesByDistance, getCenterPoint, getDirection, getStartIndex, rearrangeArray } from '@/util/canvas-util' -import { useRecoilState } from 'recoil' +import { useRecoilState, useRecoilValue } from 'recoil' import { canvasSizeState, @@ -12,6 +12,7 @@ import { sortedPolygonArray, templateTypeState, wallState, + compassState, } from '@/store/canvasAtom' import { QLine } from '@/components/fabric/QLine' import { fabric } from 'fabric' @@ -60,6 +61,7 @@ export function useMode() { const [drewRoofCells, setDrewRoofCells] = useRecoilState(drewRoofCellsState) const [roofStyle, setRoofStyle] = useState(1) //기본 지붕 패턴 const [templateCenterLine, setTemplateCenterLine] = useState([]) + const compass = useRecoilValue(compassState) useEffect(() => { // 이벤트 리스너 추가 @@ -717,6 +719,8 @@ export function useMode() { points.current = [] historyPoints.current = [] historyLines.current = [] + + setSelectedCellRoofArray([]) //셀 그린거 삭제 } const zoomIn = () => { @@ -2545,7 +2549,7 @@ export function useMode() { const line = new QLine([start.x, start.y, end.x, end.y], { stroke: 'blue', - strokeWidth: 1, + strokeWidth: 2, property: 'normal', fontSize: 14, idx: i, @@ -2620,6 +2624,7 @@ export function useMode() { vertCenterLine = reSortQlineArray(vertCenterLine) lines = reSortQlineArray(lines) + setTemplateCenterLine(vertCenterLine) //해당라인에서 만나는점을 계산 vertCenterLine.forEach((vertLine) => { @@ -2777,7 +2782,6 @@ export function useMode() { } else { // 오목한 부분이 세로선일때 아래ㄷ, 위ㄷ //라인들을 좌측에서 -> 우측으로 그리는거처럼 데이터 보정 - lines.forEach((line, index) => { if (!(index % 2 === 0)) { line.line.set('stroke', 'skyblue') @@ -2824,6 +2828,7 @@ export function useMode() { vertCenterLine = reSortQlineArray(vertCenterLine) lines = reSortQlineArray(lines) + setTemplateCenterLine(vertCenterLine) //해당라인에서 만나는점을 계산 vertCenterLine.forEach((vertLine) => { @@ -2989,6 +2994,8 @@ export function useMode() { } else if (polygon.lines.length === 6) { console.log('6각형') handleTemplateB(params) + } else if (polygon.lines.length === 8) { + handleOuterLineTemplateB8Points(polygon) } setTemplateType(3) @@ -3434,6 +3441,578 @@ export function useMode() { canvas?.renderAll() } + const handleOuterLineTemplateB8Points = (polygon, offsetInputX = 20, offsetInputY = 50) => { + let offsetPoints = [] + + const originalMax = 71 + const transformedMax = 100 + + let lines = [] //내각라인 + let outLines = [] //아웃라인 + let halfLength = 0 //선길이 + let offsetX + let offsetY + + const dashedCenterLineOpt = { + stroke: 'black', + strokeWidth: 1, + property: 'centerLine', + strokeDashArray: [8, 4], + fontSize: 14, + } + + const centerLineOpt = { + stroke: 'blue', + strokeWidth: 2, + property: 'bigHoriCenter', + fontSize: 14, + } + + // 폴리곤의 각 변을 선으로 생성 + for (let i = 0; i < polygon.points.length; i++) { + const start = polygon.points[i] + const end = polygon.points[(i + 1) % polygon.points.length] // 다음 점, 마지막 점의 경우 첫 점으로 + + const line = new QLine([start.x, start.y, end.x, end.y], { + stroke: '#A0D468', + strokeWidth: 2, + property: 'normal', + fontSize: 14, + }) + + // 선을 배열에 추가 + lines.push(line) + canvas.add(line) + } + + offsetInputY = offsetInputY !== 0 ? offsetInputY : offsetInputX + + const sortedIndex = getStartIndex(polygon.lines) + let tmpArraySorted = rearrangeArray(polygon.lines, sortedIndex) + setSortedArray(tmpArraySorted) //recoil에 넣음 + + const points = tmpArraySorted.map((line) => ({ + x: line.x1, + y: line.y1, + })) + + //좌표 재정렬 + function reSortQlineArray(array) { + let tmpArray = [] + let minX, minY, maxX, maxY + let tmp + array.forEach((arr, index) => { + tmp = arr + if (arr.x2 < arr.x1 || arr.y2 < arr.y1) { + minX = arr.x2 + minY = arr.y2 + maxX = arr.x1 + maxY = arr.y1 + tmp['x1'] = minX + tmp['y1'] = minY + tmp['x2'] = maxX + tmp['y2'] = maxY + tmp.line['x1'] = minX + tmp.line['y1'] = minY + tmp.line['x2'] = maxX + tmp.line['y2'] = maxY + } + tmpArray.push(tmp) + }) + + return tmpArray + } + + // 오목한 부분 인덱스 찾기 + const concaveIndicesObj = findConcavePointIndices(points) //오목한 부분을 제외한 인덱스 + let concavePointIndices = concaveIndicesObj.concavePointIndices + + const concaveLine = { + index: concavePointIndices[0], + line: lines[concavePointIndices[0]], + } + + for (let i = 0; i < points.length; i++) { + let prev = points[(i - 1 + points.length) % points.length] + let current = points[i] + let next = points[(i + 1) % points.length] + + // 두 벡터 계산 (prev -> current, current -> next) + let vector1 = { x: current.x - prev.x, y: current.y - prev.y } + let vector2 = { x: next.x - current.x, y: next.y - current.y } + + // 벡터의 길이 계산 + let length1 = Math.sqrt(vector1.x * vector1.x + vector1.y * vector1.y) + let length2 = Math.sqrt(vector2.x * vector2.x + vector2.y * vector2.y) + + // 벡터를 단위 벡터로 정규화 + let unitVector1 = { x: vector1.x / length1, y: vector1.y / length1 } + let unitVector2 = { x: vector2.x / length2, y: vector2.y / length2 } + + // 법선 벡터 계산 (왼쪽 방향) + let normal1 = { x: -unitVector1.y, y: unitVector1.x } + let normal2 = { x: -unitVector2.y, y: unitVector2.x } + + // 법선 벡터 평균 계산 + let averageNormal = { + x: (normal1.x + normal2.x) / 2, + y: (normal1.y + normal2.y) / 2, + } + + // 평균 법선 벡터를 단위 벡터로 정규화 + let lengthNormal = Math.sqrt(averageNormal.x * averageNormal.x + averageNormal.y * averageNormal.y) + let unitNormal = { + x: averageNormal.x / lengthNormal, + y: averageNormal.y / lengthNormal, + } + + offsetX = (offsetInputX / transformedMax) * originalMax * 2 + offsetY = (offsetInputY / transformedMax) * originalMax * 2 + + // 오프셋 적용 + let offsetPoint = { + x1: current.x + unitNormal.x * offsetX, + y1: current.y + unitNormal.y * offsetY, + } + + offsetPoints.push(offsetPoint) + } + + const outlinePolygon = makePolygon(offsetPoints, false) + outlinePolygon.setViewLengthText(false) + + // 아웃라인 폴리곤의 각 변을 선으로 생성 + for (let i = 0; i < outlinePolygon.points.length; i++) { + const start = outlinePolygon.points[i] + const end = outlinePolygon.points[(i + 1) % outlinePolygon.points.length] // 다음 점, 마지막 점의 경우 첫 점으로 + + const line = new QLine([start.x, start.y, end.x, end.y], { + stroke: 'blue', + strokeWidth: 2, + property: 'normal', + fontSize: 14, + idx: i, + }) + + // 선을 배열에 추가 + outLines.push(line) + canvas.add(line) + } + + canvas?.remove(outlinePolygon) //임시 폴리곤을 삭제 + + let parallelLinesIdx = concavePointIndices[0] + 4 //들어간선에 무조건 평행하는 선 찾기 + if (parallelLinesIdx >= outLines.length) { + parallelLinesIdx = parallelLinesIdx - outLines.length + } + + let vertCenterLine = [] + let halfHoriCenterLinePoint = [] //카라바선의 2분할의 1번 배열 + let horiCenterLine = [] + let shorVertCenterLine = [] + + let edgeIndexArray = [] + + if (concavePointIndices[0] % 2 === 0) { + //concave가 짝수면 좌우로 그려진 ㄷ자 + //케라바 색을 바꾼다 + lines.forEach((line, index) => { + if (index % 2 === 0) { + line.line.set('stroke', 'skyblue') + if (concavePointIndices[0] !== index) { + edgeIndexArray.push(index) + } + } + }) + + outLines = reSortQlineArray(outLines) + edgeIndexArray.forEach((idx, index) => { + //가로라인이 케라바 라인임 + if (concavePointIndices[0] !== idx) { + //오목이가 아니면 반으로 갈라서 계산 + + //카라바 선의 2분할 치수를 그림 + let halfLength = outLines[idx].length / 2 + let centerLine1 = new QLine([outLines[idx].x1, outLines[idx].y1, outLines[idx].x1, outLines[idx].y1 + halfLength], centerLineOpt) + canvas.add(centerLine1) + + let centerLine2 = new QLine([outLines[idx].x1, centerLine1.y2, outLines[idx].x2, centerLine1.y2 + halfLength], centerLineOpt) + canvas.add(centerLine2) + canvas.remove(outLines[idx]) //기존 라인 삭제 + + halfHoriCenterLinePoint.push({ + index: idx, + x1: centerLine1.x1, + y1: centerLine1.y1, + x2: centerLine1.x2, + y2: centerLine1.y2, + }) //각 카라바 라인의 1번이 마지막점을 잡아서 센터선으로 설정 + } + }) + + // //각 센터 라인을 그림 + halfHoriCenterLinePoint.forEach((centerPoint) => { + let tmpX2 = parallelLinesIdx !== centerPoint.index ? concaveLine.line.x2 : outLines[concavePointIndices[0]].x1 //평행선에서 내려오는 선은 아웃라인에 닿아야한다 + + let line = new QLine([centerPoint.x2, centerPoint.y2, tmpX2, centerPoint.y2], centerLineOpt) + canvas.add(line) + + line['arrayIndex'] = centerPoint.index //커스텀으로 기존 index를 넣어줌 + vertCenterLine.push(line) + }) + + vertCenterLine = reSortQlineArray(vertCenterLine) + lines = reSortQlineArray(lines) + setTemplateCenterLine(vertCenterLine) + + //해당라인에서 만나는점을 계산 + vertCenterLine.forEach((vertLine) => { + if (parallelLinesIdx !== vertLine.arrayIndex) { + //평행선을 제외한 애들만 네모를 연결 + let nearLine + let nearOutline + if (vertLine.arrayIndex > concaveLine.index) { + //센터에 인덱스가 오목점 보다 크면 다음 작으면 앞에꺼 + nearLine = lines[concaveLine.index + 1] + nearOutline = outLines[concaveLine.index + 1] + } else { + nearLine = lines[concaveLine.index - 1] + nearOutline = outLines[concaveLine.index - 1] + } + + let nearLineY = nearLine.y1 + if (parallelLinesIdx < concaveLine.index) { + //오목점 위치가 평행선보다 크면 위쪽으로 오목 + nearLineY = nearLine.y2 + } + + //기존에 있는 라인에서 연장해서 새로 그림 + let centerExtendHoriLine = new QLine([vertLine.x1, nearOutline.line.y1, vertLine.x2, nearOutline.line.y2], centerLineOpt) + canvas.add(centerExtendHoriLine) + canvas.remove(nearOutline) + outLines.splice(nearOutline.idx, 1, centerExtendHoriLine) //아웃라인에 데이터를 다시 넣는다 + + //가로형에선 기본으로 ㄷ자 형태로 한다 + let centerExtendLine = new QLine([vertLine.line.x1, vertLine.line.y1, centerExtendHoriLine.x1, centerExtendHoriLine.y1], centerLineOpt) + + //오목이가 배열에 반보다 작으면 역 ㄷ자 여서 변경 + if (concavePointIndices[0] < outLines.length / 2) { + centerExtendLine = new QLine([vertLine.line.x2, vertLine.line.y2, centerExtendHoriLine.x2, centerExtendHoriLine.y2], centerLineOpt) + } + + canvas.add(centerExtendLine) //새로그리고 + + let betweenCenterLine = (vertLine.line.x1 + vertLine.line.x2) / 2 + let centerDashLine = new QLine([betweenCenterLine, centerExtendLine.y1, betweenCenterLine, centerExtendLine.y2], dashedCenterLineOpt) + + canvas.add(centerDashLine) + horiCenterLine.push(centerDashLine) + shorVertCenterLine.push(vertLine) //마지막에 가운데 선을 긋기 위해 담음 + } else { + let longDashLine = halfHoriCenterLinePoint.find((obj) => obj.index === parallelLinesIdx) //평행선 + + let dashCenterExtendLineLength = longDashLine.y2 - longDashLine.y1 //y반개 길이 + let betweenCenterLine = (vertLine.line.x1 + vertLine.line.x2) / 2 //y의 길이 + let totalLength = ((longDashLine.y2 - longDashLine.y1) * 2) / dashCenterExtendLineLength //2개로 나눔 + + //반 쪼개서 그린다 + for (let i = 0; i < totalLength; i++) { + //2번에 나눠서 + let startY = i === 0 ? longDashLine.y1 : longDashLine.y1 + dashCenterExtendLineLength //시작 하는 y의 좌표 + //x값은 고정이임 //TODO: 지붕 각도 계산법에 의해 재계산해야함 + let centerDashLine = new QLine([betweenCenterLine, startY, betweenCenterLine, startY + dashCenterExtendLineLength], dashedCenterLineOpt) + canvas.add(centerDashLine) + horiCenterLine.push(centerDashLine) + } + } + }) + + //마지막에 오목한 외곽선을 연장한다 + const tmpLastOutLine = outLines[concavePointIndices[0]] + const lastOutLine = new QLine([tmpLastOutLine.x1, shorVertCenterLine[0].y1, tmpLastOutLine.x1, shorVertCenterLine[1].y1], centerLineOpt) + canvas.add(lastOutLine) + canvas.remove(tmpLastOutLine) + + //폴리곤 패턴을 그리기 위해 작성 + let tmpVertCenterLine = outLines.filter((x, index) => index % 2 !== 0) //세로만 찾음 + tmpVertCenterLine = tmpVertCenterLine.concat(vertCenterLine) + tmpVertCenterLine.sort((a, b) => a.y1 - b.y1) + tmpVertCenterLine.push(lastOutLine) + + let roofPatternPolygonArray = [] + let tmpArray = [] + let tmpBigArray = [] + + const lastCenterLine = tmpVertCenterLine[tmpVertCenterLine.length - 1] //마지막 센터라인을 정의 + + for (let i = 0; i < tmpVertCenterLine.length - 1; i++) { + //-1인건 마지막은 오목한 선이라 돌 필요 없음 + //라인 하나에 두점씩 나온다 + let firstPointObj = {} + let secondPointObj = {} + + let x1 = tmpVertCenterLine[i].x1 + let y1 = tmpVertCenterLine[i].y1 + let x2 = tmpVertCenterLine[i].x2 + let y2 = tmpVertCenterLine[i].y2 + + if (i === 2 || i === 4) { + //작은 네모들 + tmpArray = [] + const prevLine = tmpVertCenterLine[i - 1] //뒤에서 앞라인을 찾는다 + const nextLine = tmpVertCenterLine[i + 1] + + //내 앞뒤 라인 + const tmpX1 = i === 2 ? prevLine.x1 : nextLine.x1 + const tmpY1 = i === 2 ? prevLine.y1 : nextLine.y1 + const tmpX2 = i === 2 ? prevLine.x2 : nextLine.x2 + const tmpY2 = i === 2 ? prevLine.y2 : nextLine.y2 + + firstPointObj = { x: tmpX1, y: tmpY1 } + secondPointObj = { x: tmpX2, y: tmpY2 } + tmpArray.push(firstPointObj) + tmpArray.push(secondPointObj) + + //현재 내 선 + firstPointObj = { x: x1, y: y1 } + secondPointObj = { x: x2, y: y2 } + tmpArray.push(firstPointObj) + tmpArray.push(secondPointObj) + roofPatternPolygonArray.push(tmpArray) + } else { + //큰 육각 + if (i === 1 || i === 5) { + // 큰 폴리곤은 가운데 선으로 되야됨 + if (outLines.length / 2 > concavePointIndices[0]) { + x2 = i === 1 ? lastCenterLine.x1 : lastCenterLine.x2 + y2 = i === 1 ? lastCenterLine.y1 : lastCenterLine.y2 + } else { + //오목이가 배열 전체보다 크면 오른쪽 오목이 + x1 = i === 1 ? lastCenterLine.x1 : lastCenterLine.x2 + y1 = i === 1 ? lastCenterLine.y2 : lastCenterLine.y1 + } + } + + if (i === 5) { + //5번일때는 앞에 3번에 선이 필요하다 + let prevX1 = tmpVertCenterLine[i - 2].x1 + let prevY1 = tmpVertCenterLine[i - 2].y1 + let prevX2 = tmpVertCenterLine[i - 2].x2 + let prevY2 = tmpVertCenterLine[i - 2].y2 + firstPointObj = { x: prevX1, y: prevY1 } + secondPointObj = { x: prevX2, y: prevY2 } + tmpBigArray.push(firstPointObj) + tmpBigArray.push(secondPointObj) + } + + firstPointObj = { x: x1, y: y1 } + secondPointObj = { x: x2, y: y2 } + tmpBigArray.push(firstPointObj) + tmpBigArray.push(secondPointObj) + + if (i === 3 || i === 6) { + roofPatternPolygonArray.push(tmpBigArray) + tmpBigArray = [] + } + } + } + + setRoofPolygonPattern({ roofPatternPolygonArray, lines }) + } else { + // 오목한 부분이 세로선일때 아래ㄷ, 위ㄷ + //라인들을 좌측에서 -> 우측으로 그리는거처럼 데이터 보정 + lines.forEach((line, index) => { + if (!(index % 2 === 0)) { + line.line.set('stroke', 'skyblue') + } + }) + outLines = reSortQlineArray(outLines) + outLines.forEach((outline, index) => { + if (!(index % 2 === 0)) { + //세로라인이 케라바 라인임 + + if (concavePointIndices[0] !== index) { + //오목이가 아니면 반으로 갈라서 계산 + + //카라바 선의 2분할 치수를 그림 + let halfLength = outline.length / 2 + let centerLine1 = new QLine([outline.x1, outline.y1, outline.x1 + halfLength, outline.y1], centerLineOpt) + canvas.add(centerLine1) + + let centerLine2 = new QLine([centerLine1.x2, outline.y1, centerLine1.x2 + halfLength, outline.y1], centerLineOpt) + canvas.add(centerLine2) + canvas.remove(outline) //기존 라인 삭제 + + halfHoriCenterLinePoint.push({ + index: index, + x1: centerLine1.x1, + y1: centerLine1.y1, + x2: centerLine1.x2, + y2: centerLine1.y2, + }) //각 카라바 라인의 1번이 마지막점을 잡아서 센터선으로 설정 + } + } + }) + + //각 센터 라인을 그림 + halfHoriCenterLinePoint.forEach((centerPoint) => { + let tmpY2 = parallelLinesIdx !== centerPoint.index ? concaveLine.line.y1 : outLines[concavePointIndices[0]].y2 //평행선에서 내려오는 선은 아웃라인에 닿아야한다 + + let line = new QLine([centerPoint.x2, centerPoint.y1, centerPoint.x2, tmpY2], centerLineOpt) + canvas.add(line) + + line['arrayIndex'] = centerPoint.index //커스텀으로 기존 index를 넣어줌 + vertCenterLine.push(line) + }) + + vertCenterLine = reSortQlineArray(vertCenterLine) + lines = reSortQlineArray(lines) + setTemplateCenterLine(vertCenterLine) + + //해당라인에서 만나는점을 계산 + vertCenterLine.forEach((vertLine) => { + if (parallelLinesIdx !== vertLine.arrayIndex) { + //평행선을 제외한 애들만 네모를 연결 + let nearLine + let nearOutline + if (vertLine.arrayIndex > concaveLine.index) { + //센터에 인덱스가 오목점 보다 크면 다음 작으면 앞에꺼 + nearLine = lines[concaveLine.index + 1] + nearOutline = outLines[concaveLine.index + 1] + } else { + nearLine = lines[concaveLine.index - 1] + nearOutline = outLines[concaveLine.index - 1] + } + + let nearLineY = nearLine.y1 + if (parallelLinesIdx < concaveLine.index) { + //오목점 위치가 평행선보다 크면 위쪽으로 오목 + nearLineY = nearLine.y2 + } + + let centerExtendLine = new QLine([vertLine.line.x1, nearLineY, nearOutline.x1, nearLineY], centerLineOpt) + canvas.add(centerExtendLine) //새로그리고 + + //기존에 있는 라인에서 연장해서 새로 그림 + let centerExtendHoriLine = new QLine([nearOutline.line.x1, vertLine.y1, nearOutline.line.x2, vertLine.line.y2], centerLineOpt) + canvas.add(centerExtendHoriLine) + canvas.remove(nearOutline) + outLines.splice(nearOutline.idx, 1, centerExtendHoriLine) //아웃라인에 데이터를 다시 넣는다 + + let betweenCenterLine = (vertLine.line.y1 + vertLine.line.y2) / 2 + let centerDashLine = new QLine([vertLine.line.x1, betweenCenterLine, nearOutline.x1, betweenCenterLine], dashedCenterLineOpt) + + canvas.add(centerDashLine) + horiCenterLine.push(centerDashLine) + shorVertCenterLine.push(vertLine) //마지막에 가운데 선을 긋기 위해 담음 + } else { + let longDashLine = halfHoriCenterLinePoint.find((obj) => obj.index === parallelLinesIdx) + + let dashCenterExtendLineLength = longDashLine.x2 - longDashLine.x1 + let betweenCenterLine = (vertLine.line.y1 + vertLine.line.y2) / 2 + let totalLength = ((longDashLine.x2 - longDashLine.x1) * 2) / dashCenterExtendLineLength + + //반 쪼개서 그린다 + for (let i = 0; i < totalLength; i++) { + let startX = i === 0 ? longDashLine.x1 : longDashLine.x1 + dashCenterExtendLineLength + let centerDashLine = new QLine([startX, betweenCenterLine, startX + dashCenterExtendLineLength, betweenCenterLine], dashedCenterLineOpt) + canvas.add(centerDashLine) + horiCenterLine.push(centerDashLine) + } + } + }) + + //마지막에 오목한 외곽선을 연장한다 + const tmpLastOutLine = outLines[concavePointIndices[0]] + const lastOutLine = new QLine([shorVertCenterLine[0].x1, tmpLastOutLine.y1, shorVertCenterLine[1].x1, tmpLastOutLine.y2], centerLineOpt) + canvas.add(lastOutLine) + canvas.remove(tmpLastOutLine) + + let tmpVertCenterLine = outLines.filter((x, index) => index % 2 === 0) //세로만 찾음 + tmpVertCenterLine = tmpVertCenterLine.concat(vertCenterLine) + tmpVertCenterLine.sort((a, b) => a.x1 - b.x1) + tmpVertCenterLine.push(lastOutLine) + + let roofPatternPolygonArray = [] + let tmpArray = [] + let tmpBigArray = [] + + const lastCenterLine = tmpVertCenterLine[tmpVertCenterLine.length - 1] //마지막 센터라인을 정의 + + for (let i = 0; i < tmpVertCenterLine.length - 1; i++) { + //-1인건 마지막은 오목한 선이라 돌 필요 없음 + //라인 하나에 두점씩 나온다 + let firstPointObj = {} + let secondPointObj = {} + + let x1 = tmpVertCenterLine[i].x1 + let y1 = tmpVertCenterLine[i].y1 + let x2 = tmpVertCenterLine[i].x2 + let y2 = tmpVertCenterLine[i].y2 + + if (i === 2 || i === 4) { + tmpArray = [] + const prevLine = tmpVertCenterLine[i - 1] //뒤에서 앞라인을 찾는다 + const nextLine = tmpVertCenterLine[i + 1] + + //내 앞뒤 라인 + const tmpX1 = i === 2 ? prevLine.x1 : nextLine.x1 + const tmpY1 = i === 2 ? prevLine.y1 : nextLine.y1 + const tmpX2 = i === 2 ? prevLine.x2 : nextLine.x2 + const tmpY2 = i === 2 ? prevLine.y2 : nextLine.y2 + + firstPointObj = { x: tmpX1, y: tmpY1 } + secondPointObj = { x: tmpX2, y: tmpY2 } + tmpArray.push(firstPointObj) + tmpArray.push(secondPointObj) + + //현재 내 선 + firstPointObj = { x: x1, y: y1 } + secondPointObj = { x: x2, y: y2 } + tmpArray.push(firstPointObj) + tmpArray.push(secondPointObj) + roofPatternPolygonArray.push(tmpArray) + } else { + if (i === 1 || i === 5) { + // 큰 폴리곤은 가운데 선으로 되야됨 + if (outLines.length / 2 < concavePointIndices[0]) { + //오목이가 배열 전체보다 크면 위쪽 방향 + x2 = i === 1 ? lastCenterLine.x2 : lastCenterLine.x1 + y2 = i === 1 ? lastCenterLine.y2 : lastCenterLine.y1 + } else { + x1 = i === 1 ? lastCenterLine.x1 : lastCenterLine.x2 + y1 = i === 1 ? lastCenterLine.y1 : lastCenterLine.y2 + } + } + + if (i === 5) { + //5번일때는 앞에 3번에 선이 필요하다 + let prevX1 = tmpVertCenterLine[i - 2].x1 + let prevY1 = tmpVertCenterLine[i - 2].y1 + let prevX2 = tmpVertCenterLine[i - 2].x2 + let prevY2 = tmpVertCenterLine[i - 2].y2 + firstPointObj = { x: prevX1, y: prevY1 } + secondPointObj = { x: prevX2, y: prevY2 } + tmpBigArray.push(firstPointObj) + tmpBigArray.push(secondPointObj) + } + + firstPointObj = { x: x1, y: y1 } + secondPointObj = { x: x2, y: y2 } + tmpBigArray.push(firstPointObj) + tmpBigArray.push(secondPointObj) + + if (i === 3 || i === 6) { + roofPatternPolygonArray.push(tmpBigArray) + tmpBigArray = [] + } + } + } + setRoofPolygonPattern({ roofPatternPolygonArray, lines }) + } + canvas?.renderAll() + } + /** * 세로 방샹 라인의 좌표 순서를 위에서 아래로 변경 * @param {array} arr @@ -3620,59 +4199,25 @@ export function useMode() { * 가대 생성 로직 */ const makeRoofTrestle = () => { + if (compass === undefined) { + alert('방위를 먼저 선택 해주세요.') + return + } + if (Object.keys(roofPolygonPattern).length === 0 && roofPolygonPattern.constructor === Object) { alert('객체가 비어있습니다.') return } const polygons = roofPolygonArray //리코일에 있는 패턴그린 폴리곤가져옴 - let selectedAreaArray = [] - - const defualtStrokeStyle = { - stroke: 'red', - strokeDashArray: [9, 5], - strokeWidth: 0.3, - } - - const selectedStrokeStyle = { - stroke: 'red', - strokeWidth: 3, - } /** * 지붕가대 생성 후 가대 선택 이벤트를 추가하는 로직 * @param polygon */ - function toggleSelection(polygon) { - if (polygon.strokeWidth === defualtStrokeStyle.strokeWidth) { - //기본 선택이랑 스트로크 굵기가 같으면 선택 안됨으로 봄 - polygon.set({ - stroke: selectedStrokeStyle.stroke, - strokeWidth: selectedStrokeStyle.strokeWidth, - strokeDashArray: [0], - }) - canvas.discardActiveObject() // 객체의 활성 상태 해제 - selectedAreaArray.push(polygon) - } else { - //선택후 재선택하면 선택안됨으로 변경 - polygon.set({ - stroke: defualtStrokeStyle.stroke, - strokeWidth: defualtStrokeStyle.strokeWidth, - strokeDashArray: defualtStrokeStyle.strokeDashArray, - }) - canvas.discardActiveObject() // 객체의 활성 상태 해제 - - //폴리곤에 커스텀 인덱스를 가지고 해당 배열 인덱스를 찾아 삭제함 - const removeIndex = polygon.idx - const removeArrayIndex = selectedAreaArray.findIndex((x) => x.idx === removeIndex) - selectedAreaArray.splice(removeArrayIndex, 1) - } - canvas?.renderAll() - } - const pattern = getRoofPattern(roofStyle, 'cell') //셀모드 배경색을 칠한다 - polygons.sort((a, b) => a.lines.length > b.lines.length) //무조건 잴 긴거 정렬 + polygons.sort((a, b) => b.points.length - a.points.length) //무조건 잴 긴거 정렬 // 외각선을 안쪽으로 그려 가대선을 그린다. polygons.forEach((polygon, index) => { @@ -3680,6 +4225,8 @@ export function useMode() { let referenceDirection = 'none' //상단 기준 값 let parallelPoint = -1 trestlePolygon.setViewLengthText(false) //얘는 set으로 안먹는다... + trestlePolygon.bringForward() + trestlePolygon.set({ stroke: 'red', strokeDashArray: [9, 5], @@ -3689,12 +4236,12 @@ export function useMode() { lockRotation: true, lockScalingX: true, lockScalingY: true, - bringToFront: true, idx: polygon.customIndex, //가대 폴리곤의 임시 인덱스를 넣어줌 name: 'trestlePolygon', }) if (polygon.points.length > 4) { + //6, 8각 //4각 이상일때만 한다 const concave = findConcavePointIndices(polygon.points) //오목한 부분기준으로 시작점을 찾으려 계산 parallelPoint = parseInt(concave.concavePointIndices[0] + 3) % polygon.points.length //시작점을 찾기 위해 적용 @@ -3757,11 +4304,107 @@ export function useMode() { toggleSelection(trestlePolygon) }) polygon.set({ fill: pattern }) + trestlePolygon.bringForward() }) + canvas?.renderAll() + setMode(Mode.DEFAULT) //default 모드로 변경 + } + + /** + * 가대 영역 선택 시 이벤트 + * @param {} polygon + */ + const toggleSelection = (polygon) => { + const selectedAreaArray = selectedCellRoofArray + + const defualtStrokeStyle = { + stroke: 'red', + strokeDashArray: [9, 5], + strokeWidth: 0.3, + } + + const wallDirection = polygon.wallDirection + + // //A템플릿 타입 + // if (templateType === 2) { + // if (compass === 90) { + // if (wallDirection === 'right') { + // alert('선택할 수 없는 방향입니다.') + // return + // } + // } else if (compass === 270) { + // if (wallDirection === 'left') { + // alert('선택할 수 없는 방향입니다.') + // return + // } + // } + // } else if (templateType === 3) { + // if (compass === 0) { + // if (wallDirection === 'top') { + // alert('선택할 수 없는 방향입니다.') + // return + // } + // } else if (compass === 180) { + // if (wallDirection === 'bottom') { + // alert('선택할 수 없는 방향입니다.') + // return + // } + // } + // } + + const invalidDirections = { + 2: { + 90: 'right', + 270: 'left', + }, + 3: { + 0: 'top', + 180: 'bottom', + }, + } + + if (invalidDirections[templateType] && invalidDirections[templateType][compass] === wallDirection) { + alert('선택할 수 없는 방향입니다.') + canvas.discardActiveObject() // 객체의 활성 상태 해제 + return + } + + const selectedStrokeStyle = { + stroke: 'red', + strokeWidth: 3, + } + if (polygon.strokeWidth === defualtStrokeStyle.strokeWidth) { + //기본 선택이랑 스트로크 굵기가 같으면 선택 안됨으로 봄 + polygon.set({ + stroke: selectedStrokeStyle.stroke, + strokeWidth: selectedStrokeStyle.strokeWidth, + strokeDashArray: [0], + }) + canvas.discardActiveObject() // 객체의 활성 상태 해제 + + //중복으로 들어가는걸 방지하기 위한 코드 + const isExist = selectedAreaArray.some((x) => x.idx === polygon.idx) + if (!isExist) { + selectedAreaArray.push(polygon) + } + } else { + //선택후 재선택하면 선택안됨으로 변경 + polygon.set({ + stroke: defualtStrokeStyle.stroke, + strokeWidth: defualtStrokeStyle.strokeWidth, + strokeDashArray: defualtStrokeStyle.strokeDashArray, + }) + canvas.discardActiveObject() // 객체의 활성 상태 해제 + + //폴리곤에 커스텀 인덱스를 가지고 해당 배열 인덱스를 찾아 삭제함 + const removeIndex = polygon.idx + const removeArrayIndex = selectedAreaArray.findIndex((x) => x.idx === removeIndex) + selectedAreaArray.splice(removeArrayIndex, 1) + } + setSelectedCellRoofArray(selectedAreaArray) canvas?.renderAll() - setMode(Mode.DEFAULT) //default 모드로 변경 } /** @@ -3769,8 +4412,9 @@ export function useMode() { */ const makeRoofFillCells = () => { const drawCellsArray = [] + const selectedCellRoofs = [...selectedCellRoofArray] - if (selectedCellRoofArray.length === 0) { + if (selectedCellRoofs.length === 0) { //배열에 선택된 가대 셀이 없으면 리턴 alert('선택된 영역이 없습니다.') setMode(Mode.DEFAULT) //default 모드로 변경 @@ -3797,9 +4441,7 @@ export function useMode() { ;[cellSize.width, cellSize.height] = [cellSize.height, cellSize.width] } - selectedCellRoofArray.forEach((polygon, index) => { - //오목한 부분의 반대 꼭지점 //없는 애들도 있어서 -1 - + selectedCellRoofs.forEach((polygon, index) => { const drawCells = polygon.fillCellABType({ width: cellSize.width, height: cellSize.height, @@ -3809,6 +4451,8 @@ export function useMode() { startIndex: polygon.startIndex, }) drawCellsArray.push({ roofIndex: polygon.customIndex, drawCells: drawCells }) + + // toggleSelection(polygon) //선택 후 셀그리면 지우려고 했는데 방위 땜에 삭제 }) setDrewRoofCells(drawCellsArray) diff --git a/src/store/canvasAtom.js b/src/store/canvasAtom.js index c607796c..fa4d2770 100644 --- a/src/store/canvasAtom.js +++ b/src/store/canvasAtom.js @@ -67,3 +67,9 @@ export const roofMaterialState = atom({ default: { width: 20, height: 10, rafter: 0, roofStyle: 2 }, dangerouslyAllowMutability: true, }) + +export const compassState = atom({ + key: 'compass', + default: undefined, + dangerouslyAllowMutability: true, +}) From 22b99534011209ce02d45eb59216e121ed0def59 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 9 Aug 2024 16:19:04 +0900 Subject: [PATCH 56/61] =?UTF-8?q?=EB=AA=A8=EC=9E=84=EC=A7=80=EB=B6=95=20?= =?UTF-8?q?=EB=8B=A8=EA=B3=84=20=EB=B6=84=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 9 ++++-- src/hooks/useCanvas.js | 6 ++-- src/hooks/useMode.js | 64 +++++++++++++++++++++++++++++----------- 3 files changed, 58 insertions(+), 21 deletions(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index 51c2e635..8080f389 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -2,7 +2,6 @@ import { useCanvas } from '@/hooks/useCanvas' import { useEffect, useState } from 'react' import { Mode, useMode } from '@/hooks/useMode' import { Button } from '@nextui-org/react' - import RangeSlider from './ui/RangeSlider' import { useRecoilState, useRecoilValue } from 'recoil' import { canvasSizeState, fontSizeState, roofMaterialState, sortedPolygonArray, templateTypeState, compassState } from '@/store/canvasAtom' @@ -10,6 +9,8 @@ import { QLine } from '@/components/fabric/QLine' import { getCanvasState, insertCanvasState } from '@/lib/canvas' import { calculateIntersection } from '@/util/canvas-util' import { QPolygon } from '@/components/fabric/QPolygon' +import * as turf from '@turf/turf' +import { toGeoJSON } from '@/util/qpolygon-utils' export default function Roof2() { const { canvas, handleRedo, handleUndo, setCanvasBackgroundWithDots, saveImage, addCanvas } = useCanvas('canvas') @@ -53,6 +54,7 @@ export default function Roof2() { makeRoofPatternPolygon, createRoofRack, drawRoofPolygon, + drawCellInTrestle, } = useMode() // const [canvasState, setCanvasState] = useRecoilState(canvasAtom) @@ -615,7 +617,10 @@ export default function Roof2() { 지붕타입 지붕재 + )} diff --git a/src/hooks/useCanvas.js b/src/hooks/useCanvas.js index f106ec5a..968f3676 100644 --- a/src/hooks/useCanvas.js +++ b/src/hooks/useCanvas.js @@ -89,8 +89,8 @@ export function useCanvas(id) { canvas?.off('object:modified') canvas?.off('object:removed') canvas?.off('object:added') - canvas?.off('mouse:move', drawMouseLines) - canvas?.off('mouse:down', handleMouseDown) + canvas?.off('mouse:move') + canvas?.off('mouse:down') } const addEventOnObject = (e) => { @@ -112,9 +112,11 @@ export function useCanvas(id) { target.on('mousedown', () => { if (target.get('selected')) { target.set({ strokeWidth: 1 }) + target.set({ strokeDashArray: [5, 5] }) target.set({ selected: false }) } else { target.set({ strokeWidth: 5 }) + target.set({ strokeDashArray: [0, 0] }) target.set({ selected: true }) } canvas?.renderAll() diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 3d48e63e..72f45c9e 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -537,6 +537,7 @@ export function useMode() { if (historyPoints.current.length >= 4) { const wall = drawWallPolygon() + setWall(wall) handleOuterlinesTest2(wall) setTemplateType(1) } @@ -4460,13 +4461,18 @@ export function useMode() { } const createRoofRack = () => { + const trestlePolygons = canvas?.getObjects().filter((obj) => obj.name === 'trestle') + // 이미 만들어진 가대가 있을 경우 return + if (trestlePolygons.length !== 0) { + return + } + + canvas?.off('mouse:move') + canvas?.off('mouse:out') + document.removeEventListener('keydown', handleKeyDown) const roofs = canvas?.getObjects().filter((obj) => obj.name === 'roof') let roofCells = [] // roof에 적재된 cell들 roofs.forEach((roof, index) => { - let maxLengthLine = roof.lines.reduce((acc, cur) => { - return acc.length > cur.length ? acc : cur - }) - const offsetPolygonPoint = offsetPolygon(roof.points, -20) const trestlePoly = new QPolygon(offsetPolygonPoint, { @@ -4487,24 +4493,47 @@ export function useMode() { }) canvas?.add(trestlePoly) - - let drawRoofCells - if (maxLengthLine.direction === 'right' || maxLengthLine.direction === 'left') { - drawRoofCells = trestlePoly.fillCell({ width: 100, height: 50, padding: 10 }) - trestlePoly.direction = 'south' - } else { - drawRoofCells = trestlePoly.fillCell({ width: 50, height: 100, padding: 10 }) - trestlePoly.direction = 'east' - } - - drawRoofCells.forEach((cell) => { - roofCells.push(cell) - }) }) setDrewRoofCells(roofCells) } + //배터리 셀 넣기 + const drawCellInTrestle = () => { + const trestlePolygons = canvas?.getObjects().filter((obj) => obj.name === 'trestle' && obj.selected) + const notSelectedTrestlePolygons = canvas?.getObjects().filter((obj) => obj.name === 'trestle' && !obj.selected) + if (trestlePolygons.length === 0) { + alert('가대가 없습니다.') + } + + if (notSelectedTrestlePolygons.length > 0) { + alert('기존 셀은 제거됩니다.') + } + + notSelectedTrestlePolygons.forEach((trestle) => { + trestle.cells.forEach((cell) => { + canvas?.remove(cell) + }) + }) + + const drawCellsArray = [] + trestlePolygons.forEach((trestle, index) => { + trestle.fire('mousedown') + let maxLengthLine = trestle.lines.reduce((acc, cur) => { + return acc.length > cur.length ? acc : cur + }) + + let drawRoofCells + if (maxLengthLine.direction === 'right' || maxLengthLine.direction === 'left') { + drawRoofCells = trestle.fillCell({ width: 50, height: 100, padding: 0 }) + trestle.direction = 'south' + } else { + drawRoofCells = trestle.fillCell({ width: 100, height: 50, padding: 0 }) + trestle.direction = 'east' + } + }) + } + // 외적을 계산하는 함수 const crossProduct = (p1, p2, p3) => { const dx1 = p2.x - p1.x @@ -4547,5 +4576,6 @@ export function useMode() { makeRoofTrestle, createRoofRack, drawRoofPolygon, + drawCellInTrestle, } } From a7ffc17eb9baf5aecbcf3e9a3fd5c282cc322231 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 9 Aug 2024 16:20:51 +0900 Subject: [PATCH 57/61] =?UTF-8?q?=EB=AA=A8=EC=9E=84=EC=A7=80=EB=B6=95=20?= =?UTF-8?q?=EB=8B=A8=EA=B3=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 72 +++++++++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 8 deletions(-) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 258f5d97..f6162e54 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -9,6 +9,7 @@ import { getRoofHypotenuse, } from '@/util/canvas-util' import { QPolygon } from '@/components/fabric/QPolygon' +import * as turf from '@turf/turf' const TWO_PI = Math.PI * 2 @@ -983,6 +984,43 @@ export const splitPolygonWithLines = (polygon) => { }) }) + /** + * 좌표 테스트용 + */ + allLines.forEach((line) => { + const text = new fabric.Text(`(${line.startPoint.x},${line.startPoint.y})`, { + left: line.startPoint.x, + top: line.startPoint.y, + fontSize: 15, + }) + + polygon.canvas.add(text) + polygon.canvas.renderAll() + + const text2 = new fabric.Text(`(${line.endPoint.x},${line.endPoint.y})`, { + left: line.endPoint.x, + top: line.endPoint.y, + fontSize: 15, + }) + + polygon.canvas.add(text2) + polygon.canvas.renderAll() + }) + + polygon.points.forEach((point, index) => { + const text = new fabric.Text(`(${point.x},${point.y})`, { + left: point.x, + top: point.y, + fontSize: 15, + }) + + polygon.canvas.add(text) + polygon.canvas.renderAll() + }) + /** + * 좌표 테스트용 끝 + */ + polygon.points.forEach((point, index) => { allLines.forEach((line) => { if (line.endPoint.x === point.x && line.endPoint.y === point.y) { @@ -1007,22 +1045,39 @@ export const splitPolygonWithLines = (polygon) => { const arrivalPoint = endLine.endPoint routes.push(startLine.startPoint) routes.push(startLine.endPoint) + //hip끼리 만나는 경우는 아무것도 안해도됨 - let count = 0 if (!isSamePoint(startLine.endPoint, arrivalPoint)) { // polygon line까지 추가 const allLinesCopy = [...allLines, ...polygon.lines] // hip이 만나지 않는 경우 갈 수 있는 길을 다 돌아야함 let currentPoint = startLine.endPoint let currentLine = startLine - - while (!isSamePoint(currentPoint, arrivalPoint) && count <= polygon.points.length) { - count++ + let movedLines = [] + let subMovedLines = [] + while (!isSamePoint(currentPoint, arrivalPoint)) { // startHip에서 만나는 출발선 두개. 두개의 선을 출발하여 arrivalPoint에 도착할 때 까지 count를 세고, 더 낮은 count를 가진 길을 선택한다. let connectedLines = allLinesCopy.filter((line) => isSamePoint(line.startPoint, currentPoint) || isSamePoint(line.endPoint, currentPoint)) connectedLines = connectedLines.filter((line) => line !== currentLine) + connectedLines = connectedLines.filter((line) => !subMovedLines.includes(line)) + + //마지막 선이 endLine의 startPoint와 같은경우 그 전까지 movedLine을 제거한다. + const endLineMeetLineCnt = connectedLines.filter((line) => { + return isSamePoint(line.endPoint, endLine.startPoint) || isSamePoint(line.startPoint, endLine.startPoint) + }).length + + if (endLineMeetLineCnt !== 0) { + movedLines.push(subMovedLines) + + console.log(movedLines, index) + } + + connectedLines = connectedLines.filter((line) => { + return !isSamePoint(line.endPoint, endLine.startPoint) && !isSamePoint(line.startPoint, endLine.startPoint) + }) + if (connectedLines.length === 0) { return } @@ -1050,14 +1105,15 @@ export const splitPolygonWithLines = (polygon) => { currentPoint = tempPoints[minIndex].point currentLine = tempPoints[minIndex].line + if (currentLine !== startLine) { + subMovedLines.push(currentLine) + } routes.push(currentPoint) } } - if (count <= polygon.points.length - 1) { - routes.push(endLine.startPoint) - roofs.push(routes) - } + routes.push(endLine.startPoint) + roofs.push(routes) }) // 중복 제거 From 6458b508947a8ea3d3376b4babf3122fe300b6d7 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 9 Aug 2024 16:50:32 +0900 Subject: [PATCH 58/61] =?UTF-8?q?=EB=AA=A8=EC=9E=84=EC=A7=80=EB=B6=95=20se?= =?UTF-8?q?lectable=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useMode.js | 8 ++++++-- src/util/qpolygon-utils.js | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 72f45c9e..c6c3552b 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -4480,7 +4480,7 @@ export function useMode() { stroke: 'red', strokeDashArray: [5, 5], strokeWidth: 1, - selectable: true, + selectable: false, fontSize: fontSize, name: 'trestle', lockMovementX: true, // X 축 이동 잠금 @@ -4504,9 +4504,10 @@ export function useMode() { const notSelectedTrestlePolygons = canvas?.getObjects().filter((obj) => obj.name === 'trestle' && !obj.selected) if (trestlePolygons.length === 0) { alert('가대가 없습니다.') + return } - if (notSelectedTrestlePolygons.length > 0) { + if (drewRoofCells.length > 0) { alert('기존 셀은 제거됩니다.') } @@ -4531,7 +4532,10 @@ export function useMode() { drawRoofCells = trestle.fillCell({ width: 100, height: 50, padding: 0 }) trestle.direction = 'east' } + drawCellsArray.push(drawRoofCells) }) + + setDrewRoofCells(drawCellsArray) } // 외적을 계산하는 함수 diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index f6162e54..5a216524 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -1134,6 +1134,7 @@ export const splitPolygonWithLines = (polygon) => { fill: 'transparent', strokeWidth: 3, name: 'roof', + selectable: false, }) polygon.canvas.add(roof) From 89b6289e4ddd011f24be3dd073fd66bcd69413fe Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 9 Aug 2024 17:21:47 +0900 Subject: [PATCH 59/61] =?UTF-8?q?=EA=B0=80=EB=8C=80=20=EC=85=80=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useMode.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index c6c3552b..e00d5e5c 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -4515,6 +4515,7 @@ export function useMode() { trestle.cells.forEach((cell) => { canvas?.remove(cell) }) + trestle.cells = [] }) const drawCellsArray = [] From ddb0d36e74bd702f4792348a43ebd8e28e3d7e53 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Fri, 9 Aug 2024 17:28:28 +0900 Subject: [PATCH 60/61] =?UTF-8?q?=ED=8C=8C=EC=9B=8C=EC=BD=98=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/fabric/QPolygon.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js index 6c4c7f5e..b2586724 100644 --- a/src/components/fabric/QPolygon.js +++ b/src/components/fabric/QPolygon.js @@ -501,10 +501,12 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { const allPointsInside = rectPoints.every((point) => this.inPolygonABType(point.x, point.y, points)) if (allPointsInside) { - const text = new fabric.Text(`col ${i}, row ${j}`, { + //먼저 그룹화를 시켜놓고 뒤에서 글씨를 넣어서 변경한다 + const text = new fabric.Text(``, { fontFamily: 'serif', - fontSize: 10, + fontSize: 30, fill: 'black', + type: 'cellText', }) const rect = new fabric.Rect({ @@ -523,6 +525,7 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, { opacity: 0.8, name: 'cell', idx: idx, + type: 'cellRect', }) var group = new fabric.Group([rect, text], { From 0fdd9426c6a7368b9efc0afd04d882b38bfedbff Mon Sep 17 00:00:00 2001 From: yjnoh Date: Fri, 9 Aug 2024 17:28:36 +0900 Subject: [PATCH 61/61] =?UTF-8?q?=ED=8C=8C=EC=9B=8C=EC=BD=98=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 3 +++ src/hooks/useMode.js | 44 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index 51c2e635..39f15c7a 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -545,6 +545,9 @@ export default function Roof2() { + diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js index 3d48e63e..05ecbfde 100644 --- a/src/hooks/useMode.js +++ b/src/hooks/useMode.js @@ -30,6 +30,7 @@ export const Mode = { ROOF_PATTERN: 'roofPattern', //지붕패턴 모드 ROOF_TRESTLE: 'roofTrestle', //지붕가대 모드 FILL_CELLS: 'fillCells', //태양광셀 모드 + CELL_POWERCON: 'cellPowercon', //파워콘 DEFAULT: 'default', } @@ -250,6 +251,9 @@ export function useMode() { case 'fillCells': makeRoofFillCells() break + case 'cellPowercon': + makeCellPowercon() + break case 'default': canvas?.off('mouse:down') break @@ -4450,7 +4454,7 @@ export function useMode() { referenceDirection: polygon.referenceDirection, startIndex: polygon.startIndex, }) - drawCellsArray.push({ roofIndex: polygon.customIndex, drawCells: drawCells }) + drawCellsArray.push({ roofIndex: polygon.idx, drawCells: drawCells }) // toggleSelection(polygon) //선택 후 셀그리면 지우려고 했는데 방위 땜에 삭제 }) @@ -4505,6 +4509,44 @@ export function useMode() { setDrewRoofCells(roofCells) } + const makeCellPowercon = () => { + setMode(Mode.DEFAULT) + let cellsGroupObj = [] + + drewRoofCells.forEach((obj) => { + cellsGroupObj = cellsGroupObj.concat(obj.drawCells) + }) + + const chunkSize = 1000 / 200 // 파워콘와트 나누기 셀와트 + const cellPowerconArray = [] + + //파워콘과 셀의 파워를 나눠서 나온 갯수만큼 배열을 재생성 + for (let i = 0; i < cellsGroupObj.length; i += chunkSize) { + cellPowerconArray.push(cellsGroupObj.slice(i, i + chunkSize)) + } + + for (let i = 0; i < cellPowerconArray.length; i++) { + const cellPowerconGroups = cellPowerconArray[i] + cellPowerconGroups.forEach((cellPowerconGroup, index) => { + const cellRectObj = cellPowerconGroup._objects[0] + const cellTextObj = cellPowerconGroup._objects[1] + + cellTextObj.set({ + text: `(${i + 1})`, + }) + cellPowerconGroup.addWithUpdate() + + //폰트 사이즈가 커진 후에 계산을 해야함 + cellTextObj.set({ + left: cellRectObj.left + cellRectObj.width / 2 - cellTextObj.width / 2, + top: cellRectObj.top + cellRectObj.height / 2 - cellTextObj.height / 2, + }) + cellPowerconGroup.addWithUpdate() + }) + } + canvas.renderAll() + } + // 외적을 계산하는 함수 const crossProduct = (p1, p2, p3) => { const dx1 = p2.x - p1.x