{"version":3,"file":"signature_pad-DeBR_Uis.js","sources":["../../../../../shared/node_modules/signature_pad/dist/signature_pad.js"],"sourcesContent":["/*!\n * Signature Pad v5.0.4 | https://github.com/szimek/signature_pad\n * (c) 2024 Szymon Nowak | Released under the MIT license\n */\n\nclass Point {\n constructor(x, y, pressure, time) {\n if (isNaN(x) || isNaN(y)) {\n throw new Error(`Point is invalid: (${x}, ${y})`);\n }\n this.x = +x;\n this.y = +y;\n this.pressure = pressure || 0;\n this.time = time || Date.now();\n }\n distanceTo(start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n }\n equals(other) {\n return (this.x === other.x &&\n this.y === other.y &&\n this.pressure === other.pressure &&\n this.time === other.time);\n }\n velocityFrom(start) {\n return this.time !== start.time\n ? this.distanceTo(start) / (this.time - start.time)\n : 0;\n }\n}\n\nclass Bezier {\n static fromPoints(points, widths) {\n const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n }\n static calculateControlPoints(s1, s2, s3) {\n const dx1 = s1.x - s2.x;\n const dy1 = s1.y - s2.y;\n const dx2 = s2.x - s3.x;\n const dy2 = s2.y - s3.y;\n const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n const dxm = m1.x - m2.x;\n const dym = m1.y - m2.y;\n const k = l1 + l2 == 0 ? 0 : l2 / (l1 + l2);\n const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n const tx = s2.x - cm.x;\n const ty = s2.y - cm.y;\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty),\n };\n }\n constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {\n this.startPoint = startPoint;\n this.control2 = control2;\n this.control1 = control1;\n this.endPoint = endPoint;\n this.startWidth = startWidth;\n this.endWidth = endWidth;\n }\n length() {\n const steps = 10;\n let length = 0;\n let px;\n let py;\n for (let i = 0; i <= steps; i += 1) {\n const t = i / steps;\n const cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n const cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n const xdiff = cx - px;\n const ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n return length;\n }\n point(t, start, c1, c2, end) {\n return (start * (1.0 - t) * (1.0 - t) * (1.0 - t))\n + (3.0 * c1 * (1.0 - t) * (1.0 - t) * t)\n + (3.0 * c2 * (1.0 - t) * t * t)\n + (end * t * t * t);\n }\n}\n\nclass SignatureEventTarget {\n constructor() {\n try {\n this._et = new EventTarget();\n }\n catch (_a) {\n this._et = document;\n }\n }\n addEventListener(type, listener, options) {\n this._et.addEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n return this._et.dispatchEvent(event);\n }\n removeEventListener(type, callback, options) {\n this._et.removeEventListener(type, callback, options);\n }\n}\n\nfunction throttle(fn, wait = 250) {\n let previous = 0;\n let timeout = null;\n let result;\n let storedContext;\n let storedArgs;\n const later = () => {\n previous = Date.now();\n timeout = null;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n };\n return function wrapper(...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n storedContext = this;\n storedArgs = args;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n }\n else if (!timeout) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nclass SignaturePad extends SignatureEventTarget {\n constructor(canvas, options = {}) {\n var _a, _b, _c;\n super();\n this.canvas = canvas;\n this._drawingStroke = false;\n this._isEmpty = true;\n this._lastPoints = [];\n this._data = [];\n this._lastVelocity = 0;\n this._lastWidth = 0;\n this._handleMouseDown = (event) => {\n if (!this._isLeftButtonPressed(event, true) || this._drawingStroke) {\n return;\n }\n this._strokeBegin(this._pointerEventToSignatureEvent(event));\n };\n this._handleMouseMove = (event) => {\n if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {\n this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n return;\n }\n this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));\n };\n this._handleMouseUp = (event) => {\n if (this._isLeftButtonPressed(event)) {\n return;\n }\n this._strokeEnd(this._pointerEventToSignatureEvent(event));\n };\n this._handleTouchStart = (event) => {\n if (event.targetTouches.length !== 1 || this._drawingStroke) {\n return;\n }\n if (event.cancelable) {\n event.preventDefault();\n }\n this._strokeBegin(this._touchEventToSignatureEvent(event));\n };\n this._handleTouchMove = (event) => {\n if (event.targetTouches.length !== 1) {\n return;\n }\n if (event.cancelable) {\n event.preventDefault();\n }\n if (!this._drawingStroke) {\n this._strokeEnd(this._touchEventToSignatureEvent(event), false);\n return;\n }\n this._strokeMoveUpdate(this._touchEventToSignatureEvent(event));\n };\n this._handleTouchEnd = (event) => {\n if (event.targetTouches.length !== 0) {\n return;\n }\n if (event.cancelable) {\n event.preventDefault();\n }\n this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n this._strokeEnd(this._touchEventToSignatureEvent(event));\n };\n this._handlePointerDown = (event) => {\n if (!event.isPrimary || !this._isLeftButtonPressed(event) || this._drawingStroke) {\n return;\n }\n event.preventDefault();\n this._strokeBegin(this._pointerEventToSignatureEvent(event));\n };\n this._handlePointerMove = (event) => {\n if (!event.isPrimary) {\n return;\n }\n if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {\n this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n return;\n }\n event.preventDefault();\n this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));\n };\n this._handlePointerUp = (event) => {\n if (!event.isPrimary || this._isLeftButtonPressed(event)) {\n return;\n }\n event.preventDefault();\n this._strokeEnd(this._pointerEventToSignatureEvent(event));\n };\n this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n this.minWidth = options.minWidth || 0.5;\n this.maxWidth = options.maxWidth || 2.5;\n this.throttle = (_a = options.throttle) !== null && _a !== void 0 ? _a : 16;\n this.minDistance = (_b = options.minDistance) !== null && _b !== void 0 ? _b : 5;\n this.dotSize = options.dotSize || 0;\n this.penColor = options.penColor || 'black';\n this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n this.compositeOperation = options.compositeOperation || 'source-over';\n this.canvasContextOptions = (_c = options.canvasContextOptions) !== null && _c !== void 0 ? _c : {};\n this._strokeMoveUpdate = this.throttle\n ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)\n : SignaturePad.prototype._strokeUpdate;\n this._ctx = canvas.getContext('2d', this.canvasContextOptions);\n this.clear();\n this.on();\n }\n clear() {\n const { _ctx: ctx, canvas } = this;\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n this._data = [];\n this._reset(this._getPointGroupOptions());\n this._isEmpty = true;\n }\n fromDataURL(dataUrl, options = {}) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n const ratio = options.ratio || window.devicePixelRatio || 1;\n const width = options.width || this.canvas.width / ratio;\n const height = options.height || this.canvas.height / ratio;\n const xOffset = options.xOffset || 0;\n const yOffset = options.yOffset || 0;\n this._reset(this._getPointGroupOptions());\n image.onload = () => {\n this._ctx.drawImage(image, xOffset, yOffset, width, height);\n resolve();\n };\n image.onerror = (error) => {\n reject(error);\n };\n image.crossOrigin = 'anonymous';\n image.src = dataUrl;\n this._isEmpty = false;\n });\n }\n toDataURL(type = 'image/png', encoderOptions) {\n switch (type) {\n case 'image/svg+xml':\n if (typeof encoderOptions !== 'object') {\n encoderOptions = undefined;\n }\n return `data:image/svg+xml;base64,${btoa(this.toSVG(encoderOptions))}`;\n default:\n if (typeof encoderOptions !== 'number') {\n encoderOptions = undefined;\n }\n return this.canvas.toDataURL(type, encoderOptions);\n }\n }\n on() {\n this.canvas.style.touchAction = 'none';\n this.canvas.style.msTouchAction = 'none';\n this.canvas.style.userSelect = 'none';\n const isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n if (window.PointerEvent && !isIOS) {\n this._handlePointerEvents();\n }\n else {\n this._handleMouseEvents();\n if ('ontouchstart' in window) {\n this._handleTouchEvents();\n }\n }\n }\n off() {\n this.canvas.style.touchAction = 'auto';\n this.canvas.style.msTouchAction = 'auto';\n this.canvas.style.userSelect = 'auto';\n this.canvas.removeEventListener('pointerdown', this._handlePointerDown);\n this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n this._removeMoveUpEventListeners();\n }\n _getListenerFunctions() {\n var _a;\n const canvasWindow = window.document === this.canvas.ownerDocument\n ? window\n : (_a = this.canvas.ownerDocument.defaultView) !== null && _a !== void 0 ? _a : this.canvas.ownerDocument;\n return {\n addEventListener: canvasWindow.addEventListener.bind(canvasWindow),\n removeEventListener: canvasWindow.removeEventListener.bind(canvasWindow),\n };\n }\n _removeMoveUpEventListeners() {\n const { removeEventListener } = this._getListenerFunctions();\n removeEventListener('pointermove', this._handlePointerMove);\n removeEventListener('pointerup', this._handlePointerUp);\n removeEventListener('mousemove', this._handleMouseMove);\n removeEventListener('mouseup', this._handleMouseUp);\n removeEventListener('touchmove', this._handleTouchMove);\n removeEventListener('touchend', this._handleTouchEnd);\n }\n isEmpty() {\n return this._isEmpty;\n }\n fromData(pointGroups, { clear = true } = {}) {\n if (clear) {\n this.clear();\n }\n this._fromData(pointGroups, this._drawCurve.bind(this), this._drawDot.bind(this));\n this._data = this._data.concat(pointGroups);\n }\n toData() {\n return this._data;\n }\n _isLeftButtonPressed(event, only) {\n if (only) {\n return event.buttons === 1;\n }\n return (event.buttons & 1) === 1;\n }\n _pointerEventToSignatureEvent(event) {\n return {\n event: event,\n type: event.type,\n x: event.clientX,\n y: event.clientY,\n pressure: 'pressure' in event ? event.pressure : 0,\n };\n }\n _touchEventToSignatureEvent(event) {\n const touch = event.changedTouches[0];\n return {\n event: event,\n type: event.type,\n x: touch.clientX,\n y: touch.clientY,\n pressure: touch.force,\n };\n }\n _getPointGroupOptions(group) {\n return {\n penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n velocityFilterWeight: group && 'velocityFilterWeight' in group\n ? group.velocityFilterWeight\n : this.velocityFilterWeight,\n compositeOperation: group && 'compositeOperation' in group\n ? group.compositeOperation\n : this.compositeOperation,\n };\n }\n _strokeBegin(event) {\n const cancelled = !this.dispatchEvent(new CustomEvent('beginStroke', { detail: event, cancelable: true }));\n if (cancelled) {\n return;\n }\n const { addEventListener } = this._getListenerFunctions();\n switch (event.event.type) {\n case 'mousedown':\n addEventListener('mousemove', this._handleMouseMove);\n addEventListener('mouseup', this._handleMouseUp);\n break;\n case 'touchstart':\n addEventListener('touchmove', this._handleTouchMove);\n addEventListener('touchend', this._handleTouchEnd);\n break;\n case 'pointerdown':\n addEventListener('pointermove', this._handlePointerMove);\n addEventListener('pointerup', this._handlePointerUp);\n break;\n }\n this._drawingStroke = true;\n const pointGroupOptions = this._getPointGroupOptions();\n const newPointGroup = Object.assign(Object.assign({}, pointGroupOptions), { points: [] });\n this._data.push(newPointGroup);\n this._reset(pointGroupOptions);\n this._strokeUpdate(event);\n }\n _strokeUpdate(event) {\n if (!this._drawingStroke) {\n return;\n }\n if (this._data.length === 0) {\n this._strokeBegin(event);\n return;\n }\n this.dispatchEvent(new CustomEvent('beforeUpdateStroke', { detail: event }));\n const point = this._createPoint(event.x, event.y, event.pressure);\n const lastPointGroup = this._data[this._data.length - 1];\n const lastPoints = lastPointGroup.points;\n const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n const isLastPointTooClose = lastPoint\n ? point.distanceTo(lastPoint) <= this.minDistance\n : false;\n const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n const curve = this._addPoint(point, pointGroupOptions);\n if (!lastPoint) {\n this._drawDot(point, pointGroupOptions);\n }\n else if (curve) {\n this._drawCurve(curve, pointGroupOptions);\n }\n lastPoints.push({\n time: point.time,\n x: point.x,\n y: point.y,\n pressure: point.pressure,\n });\n }\n this.dispatchEvent(new CustomEvent('afterUpdateStroke', { detail: event }));\n }\n _strokeEnd(event, shouldUpdate = true) {\n this._removeMoveUpEventListeners();\n if (!this._drawingStroke) {\n return;\n }\n if (shouldUpdate) {\n this._strokeUpdate(event);\n }\n this._drawingStroke = false;\n this.dispatchEvent(new CustomEvent('endStroke', { detail: event }));\n }\n _handlePointerEvents() {\n this._drawingStroke = false;\n this.canvas.addEventListener('pointerdown', this._handlePointerDown);\n }\n _handleMouseEvents() {\n this._drawingStroke = false;\n this.canvas.addEventListener('mousedown', this._handleMouseDown);\n }\n _handleTouchEvents() {\n this.canvas.addEventListener('touchstart', this._handleTouchStart);\n }\n _reset(options) {\n this._lastPoints = [];\n this._lastVelocity = 0;\n this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n this._ctx.fillStyle = options.penColor;\n this._ctx.globalCompositeOperation = options.compositeOperation;\n }\n _createPoint(x, y, pressure) {\n const rect = this.canvas.getBoundingClientRect();\n return new Point(x - rect.left, y - rect.top, pressure, new Date().getTime());\n }\n _addPoint(point, options) {\n const { _lastPoints } = this;\n _lastPoints.push(point);\n if (_lastPoints.length > 2) {\n if (_lastPoints.length === 3) {\n _lastPoints.unshift(_lastPoints[0]);\n }\n const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);\n const curve = Bezier.fromPoints(_lastPoints, widths);\n _lastPoints.shift();\n return curve;\n }\n return null;\n }\n _calculateCurveWidths(startPoint, endPoint, options) {\n const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n (1 - options.velocityFilterWeight) * this._lastVelocity;\n const newWidth = this._strokeWidth(velocity, options);\n const widths = {\n end: newWidth,\n start: this._lastWidth,\n };\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n return widths;\n }\n _strokeWidth(velocity, options) {\n return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n }\n _drawCurveSegment(x, y, width) {\n const ctx = this._ctx;\n ctx.moveTo(x, y);\n ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n }\n _drawCurve(curve, options) {\n const ctx = this._ctx;\n const widthDelta = curve.endWidth - curve.startWidth;\n const drawSteps = Math.ceil(curve.length()) * 2;\n ctx.beginPath();\n ctx.fillStyle = options.penColor;\n for (let i = 0; i < drawSteps; i += 1) {\n const t = i / drawSteps;\n const tt = t * t;\n const ttt = tt * t;\n const u = 1 - t;\n const uu = u * u;\n const uuu = uu * u;\n let x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n let y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n const width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);\n this._drawCurveSegment(x, y, width);\n }\n ctx.closePath();\n ctx.fill();\n }\n _drawDot(point, options) {\n const ctx = this._ctx;\n const width = options.dotSize > 0\n ? options.dotSize\n : (options.minWidth + options.maxWidth) / 2;\n ctx.beginPath();\n this._drawCurveSegment(point.x, point.y, width);\n ctx.closePath();\n ctx.fillStyle = options.penColor;\n ctx.fill();\n }\n _fromData(pointGroups, drawCurve, drawDot) {\n for (const group of pointGroups) {\n const { points } = group;\n const pointGroupOptions = this._getPointGroupOptions(group);\n if (points.length > 1) {\n for (let j = 0; j < points.length; j += 1) {\n const basicPoint = points[j];\n const point = new Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);\n if (j === 0) {\n this._reset(pointGroupOptions);\n }\n const curve = this._addPoint(point, pointGroupOptions);\n if (curve) {\n drawCurve(curve, pointGroupOptions);\n }\n }\n }\n else {\n this._reset(pointGroupOptions);\n drawDot(points[0], pointGroupOptions);\n }\n }\n }\n toSVG({ includeBackgroundColor = false } = {}) {\n const pointGroups = this._data;\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\n const minX = 0;\n const minY = 0;\n const maxX = this.canvas.width / ratio;\n const maxY = this.canvas.height / ratio;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n svg.setAttribute('viewBox', `${minX} ${minY} ${maxX} ${maxY}`);\n svg.setAttribute('width', maxX.toString());\n svg.setAttribute('height', maxY.toString());\n if (includeBackgroundColor && this.backgroundColor) {\n const rect = document.createElement('rect');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n rect.setAttribute('fill', this.backgroundColor);\n svg.appendChild(rect);\n }\n this._fromData(pointGroups, (curve, { penColor }) => {\n const path = document.createElement('path');\n if (!isNaN(curve.control1.x) &&\n !isNaN(curve.control1.y) &&\n !isNaN(curve.control2.x) &&\n !isNaN(curve.control2.y)) {\n const attr = `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(3)} ` +\n `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +\n `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +\n `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n path.setAttribute('stroke', penColor);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n svg.appendChild(path);\n }\n }, (point, { penColor, dotSize, minWidth, maxWidth }) => {\n const circle = document.createElement('circle');\n const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n circle.setAttribute('r', size.toString());\n circle.setAttribute('cx', point.x.toString());\n circle.setAttribute('cy', point.y.toString());\n circle.setAttribute('fill', penColor);\n svg.appendChild(circle);\n });\n return svg.outerHTML;\n }\n}\n\nexport { SignaturePad as default };\n//# sourceMappingURL=signature_pad.js.map\n"],"names":["Point","x","y","pressure","time","start","other","Bezier","points","widths","c2","c3","s1","s2","s3","dx1","dy1","dx2","dy2","m1","m2","l1","l2","dxm","dym","k","cm","tx","ty","startPoint","control2","control1","endPoint","startWidth","endWidth","length","px","py","i","t","cx","cy","xdiff","ydiff","c1","end","SignatureEventTarget","type","listener","options","event","callback","throttle","fn","wait","previous","timeout","result","storedContext","storedArgs","later","args","now","remaining","SignaturePad","canvas","_a","_b","_c","ctx","dataUrl","resolve","reject","image","ratio","width","height","xOffset","yOffset","error","encoderOptions","isIOS","canvasWindow","removeEventListener","pointGroups","clear","only","touch","group","addEventListener","pointGroupOptions","newPointGroup","point","lastPointGroup","lastPoints","lastPoint","isLastPointTooClose","curve","shouldUpdate","rect","_lastPoints","velocity","newWidth","widthDelta","drawSteps","tt","ttt","u","uu","uuu","drawCurve","drawDot","j","basicPoint","includeBackgroundColor","minX","minY","maxX","maxY","svg","penColor","path","attr","dotSize","minWidth","maxWidth","circle","size"],"mappings":"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","x_google_ignoreList":[0]}