{"version":3,"file":"kendo.signature.min.js","sources":["kendo.signature.js"],"sourcesContent":["(function(f, define){\n define('signature/signature-pad',[\n \"kendo.core\",\n \"kendo.drawing\"\n ], f);\n})(function(){\n\n(function () {\n\nthis.kendo = this.kendo || {};\nthis.kendo.inputs = this.kendo.inputs || {};\n(function (exports, kendoDrawing) {\n\n var _a = kendoDrawing.util, elementOffset = _a.elementOffset, limitValue = _a.limitValue;\n\n var Point = kendo.geometry.Point, Rect = kendo.geometry.Rect, transform = kendo.geometry.transform;\n var noop = function () { };\n var DECIMAL_DIGITS = 3;\n var DEFAULT_COLOR = '#000';\n var DEFAULT_BACKGROUND_COLOR = '#fff';\n var DEFAULT_PRECISION = 1;\n var DEFAULT_SAMPLING_RATE = 200; // Updates per second\n var DEFAULT_STROKE_WIDTH = 1;\n var DEFAULT_WIDTH = 750;\n var DEFAULT_HEIGHT = 250;\n var DEFAULT_SCALE = 1;\n // Export images at maximized scale (3x) and 2x pixel density to cover HiDPI screens.\n var DEFAULT_EXPORT_SCALE = 6;\n var SignaturePad = /** @class */ (function () {\n function SignaturePad(element, options) {\n if (options === void 0) { options = {}; }\n this.element = element;\n this.lastMoveTime = 0;\n this.options = Object.assign({\n scale: DEFAULT_SCALE,\n precision: DEFAULT_PRECISION,\n samplingRate: DEFAULT_SAMPLING_RATE,\n smooth: options.smooth !== false,\n color: options.color || DEFAULT_COLOR,\n backgroundColor: options.backgroundColor || DEFAULT_BACKGROUND_COLOR,\n strokeWidth: DEFAULT_STROKE_WIDTH,\n onChange: noop,\n onDraw: noop,\n onDrawEnd: noop\n }, options);\n this.pathOptions = {\n stroke: {\n color: this.options.color,\n width: this.options.strokeWidth,\n lineCap: 'round',\n lineJoin: 'round'\n }\n };\n this.initSurface();\n this.attachEvents();\n }\n SignaturePad.prototype.destroy = function () {\n this.detachEvents();\n };\n SignaturePad.prototype.clear = function () {\n this.rootGroup.clear();\n this.path = null;\n };\n Object.defineProperty(SignaturePad.prototype, \"isDrawing\", {\n get: function () {\n return Boolean(this.points);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SignaturePad.prototype, \"pathData\", {\n get: function () {\n var _a;\n return (_a = this.path) === null || _a === void 0 ? void 0 : _a.toString(DECIMAL_DIGITS);\n },\n set: function (value) {\n this.clear();\n this.path = kendoDrawing.MultiPath.parse(value, this.pathOptions);\n this.rootGroup.append(this.path);\n },\n enumerable: false,\n configurable: true\n });\n SignaturePad.prototype.loadImage = function (data, size) {\n if (size === void 0) { size = []; }\n if (!data) {\n this.clear();\n return;\n }\n var _a = this.size, width = _a[0], height = _a[1];\n var contentWidth = width / this.options.scale;\n var contentHeight = height / this.options.scale;\n var importWidth = size[0] || contentWidth * DEFAULT_EXPORT_SCALE;\n var importHeight = size[1] || contentHeight * DEFAULT_EXPORT_SCALE;\n var scaleX = contentWidth / importWidth;\n var scaleY = contentHeight / importHeight;\n var scale = Math.min(scaleX, scaleY);\n var img = new kendoDrawing.Image(data, new kendo.geometry.Rect([0, 0], [importWidth, importHeight]));\n img.transform(transform().scale(scale, scale));\n this.clear();\n this.rootGroup.append(img);\n };\n SignaturePad.prototype.exportImage = function (options) {\n var _a;\n var _b = this.size, width = _b[0], height = _b[1];\n var contentWidth = width / this.options.scale;\n var contentHeight = height / this.options.scale;\n var exportWidth = (options === null || options === void 0 ? void 0 : options.width) || contentWidth * DEFAULT_EXPORT_SCALE;\n var exportHeight = (options === null || options === void 0 ? void 0 : options.height) || contentHeight * DEFAULT_EXPORT_SCALE;\n var scaleX = exportWidth / contentWidth;\n var scaleY = exportHeight / contentHeight;\n var scale = Math.min(scaleX, scaleY);\n var exportRect = new Rect([0, 0], [exportWidth, exportHeight]);\n var exportGroup = new kendoDrawing.Group({\n clip: kendoDrawing.Path.fromRect(exportRect)\n });\n var contentGroup = new kendoDrawing.Group({\n transform: transform().scale(scale, scale)\n });\n var frame = kendoDrawing.Path.fromRect(exportRect, {\n fill: {\n color: this.options.backgroundColor\n }\n });\n exportGroup.append(frame);\n exportGroup.append(contentGroup);\n (_a = contentGroup.children).push.apply(_a, this.rootGroup.children);\n return kendoDrawing.exportImage(exportGroup, Object.assign({\n width: exportWidth,\n height: exportHeight\n }, options));\n };\n SignaturePad.prototype.resize = function () {\n this.surface.resize(true);\n };\n SignaturePad.prototype.setOptions = function (options) {\n Object.assign(this.options, options);\n this.pathOptions.stroke.color = this.options.color;\n this.pathOptions.stroke.width = this.options.strokeWidth;\n if (this.path) {\n this.path.options.set('stroke.color', this.options.color);\n this.path.options.set('stroke.width', this.options.strokeWidth);\n }\n this.background.options.set('fill.color', this.options.backgroundColor);\n };\n SignaturePad.prototype.initSurface = function () {\n this.surface = kendoDrawing.Surface.create(this.element, { type: 'canvas' });\n this.element.style.touchAction = 'none';\n var scale = this.options.scale;\n this.rootGroup = new kendoDrawing.Group({\n transform: transform().scale(scale, scale)\n });\n // The signature is not resizable, store initial dimensions.\n var width = this.element.offsetWidth || DEFAULT_WIDTH;\n var height = this.element.offsetHeight || DEFAULT_HEIGHT;\n this.size = [width, height];\n this.background = kendoDrawing.Path.fromRect(new Rect([0, 0], this.size), {\n fill: {\n color: this.options.backgroundColor\n }\n });\n this.surface.draw(this.background);\n this.surface.draw(this.rootGroup);\n };\n SignaturePad.prototype.attachEvents = function () {\n this.onPointerDown = this.onPointerDown.bind(this);\n this.onPointerMove = this.onPointerMove.bind(this);\n this.onPointerUp = this.onPointerUp.bind(this);\n this.element.addEventListener('pointerdown', this.onPointerDown);\n this.element.addEventListener('pointermove', this.onPointerMove);\n this.element.addEventListener('pointerup', this.onPointerUp);\n };\n SignaturePad.prototype.detachEvents = function () {\n this.element.removeEventListener('pointerdown', this.onPointerDown);\n this.element.removeEventListener('pointermove', this.onPointerMove);\n this.element.removeEventListener('pointerup', this.onPointerUp);\n };\n SignaturePad.prototype.touchPoint = function (e) {\n var offset = elementOffset(this.element);\n var pageX = e.pageX;\n var pageY = e.pageY;\n var scale = 1 / this.options.scale;\n return new Point(pageX - offset.left, pageY - offset.top).scale(scale, scale);\n };\n SignaturePad.prototype.onPointerDown = function (e) {\n if (this.options.readonly || !e.isPrimary || !isMainButton(e)) {\n return;\n }\n if (!this.path) {\n this.path = new kendoDrawing.MultiPath(this.pathOptions);\n this.rootGroup.append(this.path);\n }\n this.options.onDraw();\n this.element.setPointerCapture(e.pointerId);\n var point = this.touchPoint(e);\n this.points = [point];\n this.path.moveTo(point);\n };\n SignaturePad.prototype.onPointerMove = function (e) {\n if (!this.points || !e.isPrimary) {\n return;\n }\n var now = (new Date()).getTime();\n var elapsed = now - this.lastMoveTime;\n var minTimeDelta = 1000 / limitValue(this.options.samplingRate, 1, 10000);\n if (elapsed < minTimeDelta) {\n return;\n }\n else {\n this.lastMoveTime = now;\n }\n var point = this.touchPoint(e);\n var lastPoint = this.points[this.points.length - 1];\n var minDelta = 1 / limitValue(this.options.precision, 0.01, 100);\n if (point.distanceTo(lastPoint) < minDelta) {\n return;\n }\n this.points.push(point);\n this.path.lineTo(point);\n };\n SignaturePad.prototype.onPointerUp = function (e) {\n if (!e.isPrimary || !this.path || !this.points || this.options.readonly) {\n return;\n }\n if (this.options.smooth) {\n var segments = kendoDrawing.Path.curveFromPoints(this.points);\n this.path.paths.splice(this.path.paths.length - 1, 1, segments);\n }\n this.points = null;\n this.options.onDrawEnd();\n this.options.onChange(this.pathData);\n };\n return SignaturePad;\n }());\n function isMainButton(e) {\n return typeof (e.button) !== 'number' || e.button === 0;\n }\n\n exports.SignaturePad = SignaturePad;\n\n})(this.kendo.inputs.common = this.kendo.inputs.common || {}, kendo.drawing);\n\n\n})();\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3){ (a3 || a2)(); });\n(function(f, define) {\n define('kendo.signature',[ \"kendo.core\", \"kendo.drawing\", \"./signature/signature-pad\", \"kendo.dialog\", \"kendo.html.button\"], f);\n})(function() {\n\nvar __meta__ = {\n id: \"signature\",\n name: \"Signature\",\n category: \"web\",\n description: \"The Signature component ...\",\n depends: [ \"core\", \"dialog\", \"html.button\" ]\n};\n\n(function($, undefined) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n Dialog = kendo.ui.Dialog,\n html = kendo.html,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n Pad = kendo.inputs.common.SignaturePad,\n ns = \".kendoSignature\",\n CHANGE = \"change\",\n OPEN = \"open\",\n CLOSE = \"close\",\n CLICK = \"click\";\n\n var Signature = Widget.extend({\n init: function(element, options) {\n var that = this;\n var padOptions;\n\n options = options || {};\n\n Widget.fn.init.call(that, element, options);\n\n that._createElements(that.element, that.options.maximizable ? \"maxi\" : \"\", false, 1);\n that._createInput();\n that.wrapper = that.element;\n\n padOptions = $.extend(true, {}, that.options, {\n onChange: function() {\n var width = outerWidth(that.element, false);\n var height = outerHeight(that.element, false);\n that._pad.exportImage({\n width: width * that.options.exportScale,\n height: height * that.options.exportScale\n }).then(function(val) {\n that._value = val;\n that._input.val(val);\n that.trigger(CHANGE);\n });\n\n that._pad.exportImage({\n width: width * that.options.exportScale * that.options.popupScale,\n height: height * that.options.exportScale * that.options.popupScale\n }).then(function(val) {\n that._dialogPad.loadImage(val);\n });\n },\n onDraw: function() {\n that.element.find(\".k-button\").hide();\n },\n onDrawEnd: function() {\n that.element.find(\".k-button\").show();\n }\n });\n\n that._pad = new Pad(that.element.find(\".k-signature-canvas\")[0], padOptions);\n\n that._createDialogPad();\n that._attachHandlers();\n if (that.options.value) {\n that._pad.loadImage(that.options.value);\n that._dialogPad.loadImage(that.options.value);\n }\n\n if (that.options.readonly) {\n that.readonly();\n }\n\n if (!that.options.enable) {\n that.enable(false);\n }\n },\n\n options: {\n name: \"Signature\",\n color: \"#000000\",\n enable: true,\n fillMode: \"solid\",\n hideLine: false,\n maximizable: true,\n popupScale: 3,\n readonly: false,\n rounded: \"medium\",\n size: \"medium\",\n smooth: false,\n strokeWidth: 1,\n exportScale: 2,\n value: \"\"\n },\n\n events: [ CHANGE, OPEN, CLOSE],\n\n setOptions: function(options) {\n var currentOptions = this.options;\n this._clearCssClasses(currentOptions);\n this.element.removeClass(kendo.getValidCssClass(\"k-signature-\", \"size\", currentOptions.size));\n kendo.deepExtend(currentOptions, options);\n this.options = currentOptions;\n if (currentOptions.value) {\n this._pad.loadImage(currentOptions.value);\n this._dialogPad.loadImage(currentOptions.value);\n }\n this._pad.setOptions(currentOptions);\n this._dialogPad.setOptions(currentOptions);\n this.enable(currentOptions.enable);\n this.readonly(currentOptions.readonly);\n this.element.width(currentOptions.width);\n this.element.height(currentOptions.height);\n this._dialogPadEl.width(currentOptions.width * currentOptions.popupScale);\n this._dialogPadEl.height(currentOptions.height * currentOptions.popupScale);\n this._hideLine(this.element);\n this._hideLine(this._dialogPadEl);\n this._applyCssClasses(this.element);\n this.element.find(\".k-signature-maximize\").toggle(currentOptions.maximizable);\n this.element.removeClass(kendo.getValidCssClass(\"k-input-\", \"size\", this.options.size));\n this.element.addClass(kendo.getValidCssClass(\"k-signature-\", \"size\", this.options.size));\n },\n\n close: function() {\n if (!this._dialog) {\n return;\n }\n this._dialog.close();\n },\n\n open: function() {\n if (!this.options.maximizable || !this._dialog) {\n return;\n }\n this._dialog.open();\n },\n\n destroy: function() {\n var that = this;\n if (that._pad) {\n that._pad.destroy();\n that._pad = null;\n }\n\n if (that._dialogPad) {\n that._dialogPad.destroy();\n that._dialogPad = null;\n that._dialogEl.off(ns);\n that._dialog.destroy();\n that._dialog = null;\n }\n\n that.element.off(ns);\n Widget.fn.destroy.call(that);\n },\n\n enable: function(enable) {\n var enable = enable !== false;\n if (!enable) {\n this._dialog.close();\n }\n\n this.element.find(\".k-button\").toggle(enable);\n this.element.toggleClass(\"k-disabled\", !enable);\n this._pad.options.readonly = !enable;\n this._dialogPad.options.readonly = !enable;\n },\n\n readonly: function(toggle) {\n var that = this;\n var toggle = toggle !== false;\n\n that._pad.options.readonly = toggle;\n that._dialogPad.options.readonly = toggle;\n\n var clearButton = that.element.find(\".k-signature-clear\");\n\n if (!clearButton.length && !toggle) {\n $(html.renderButton('', {\n icon: \"close\",\n size: this.options.size,\n fillMode: \"flat\"\n })).insertAfter(that.element.find(\".k-signature-actions-bottom\"));\n\n $(html.renderButton('', {\n icon: \"close\",\n size: this.options.size,\n fillMode: \"flat\"\n })).insertAfter(that._dialogEl.find(\".k-signature-actions-bottom\"));\n }\n\n that.element.find(\".k-signature-clear\").toggle(!toggle);\n that._dialogEl.find(\".k-signature-clear\").toggle(!toggle);\n },\n\n value: function(value) {\n if (value !== undefined) {\n this._value = value;\n this._input.val(value);\n this._pad.loadImage(value);\n }\n\n return this._value;\n },\n\n reset: function() {\n this._dialogPad.clear();\n this._pad.clear();\n this._value = \"\";\n },\n\n _attachHandlers: function() {\n var that = this;\n that.element\n .on(CLICK + ns, \".k-signature-clear\", function() {\n that._pad.clear();\n that._dialogPad.clear();\n })\n .on(CLICK + ns, \".k-signature-maximize\", function() {\n that._dialog.open();\n });\n },\n\n _createInput: function() {\n var that = this;\n var name = that.element.attr(\"name\");\n var bind = that.element.attr(kendo.attr(\"bind\"));\n var labelBy = that.element.attr(\"aria-labelledby\");\n var autocomplete = that.element.attr(\"autocomplete\");\n var required = that.element.attr(\"required\");\n\n that._input = $(\"\").appendTo(that.element);\n\n if (name) {\n that._input.attr(\"name\", name);\n that.element.removeAttr(\"name\");\n }\n\n if (labelBy) {\n that._input.attr(\"aria-labelledby\", labelBy);\n that.element.removeAttr(\"aria-labelledby\");\n }\n\n if (autocomplete) {\n that._input.attr(\"autocomplete\", autocomplete);\n that.element.removeAttr(\"autocomplete\");\n }\n\n if (required) {\n that._input.attr(\"required\", required);\n that.element.removeAttr(\"required\");\n }\n },\n\n _hideLine: function(wrapper) {\n var line = wrapper.find(\".k-signature-line\");\n if (!this.options.hideLine && !line.length) {\n $(\"
\").appendTo(wrapper);\n }\n\n if (this.options.hideLine) {\n line.remove();\n }\n },\n\n _createElements: function(wrapper, button, maximize, scale) {\n $(\"
\").appendTo(wrapper);\n\n if (button == \"mini\") {\n $(html.renderButton('', {\n icon: \"window-minimize\",\n size: this.options.size,\n fillMode: \"flat\"\n })).appendTo(wrapper.find(\".k-signature-actions-top\"));\n }\n\n if (button == \"maxi\") {\n $(html.renderButton('', {\n icon: \"hyperlink-open\",\n size: this.options.size,\n fillMode: \"flat\"\n })).appendTo(wrapper.find(\".k-signature-actions-top\"));\n }\n\n $(\"
\").appendTo(wrapper);\n\n this._hideLine(wrapper);\n\n $(\"
\").appendTo(wrapper);\n\n if (!this.options.readonly) {\n $(html.renderButton('', {\n icon: \"close\",\n size: this.options.size,\n fillMode: \"flat\"\n })).appendTo(wrapper.find(\".k-signature-actions-bottom\"));\n }\n\n wrapper.addClass(\"k-input k-signature\");\n\n wrapper.width(this.options.width * scale);\n wrapper.height(this.options.height * scale);\n\n if (maximize) {\n wrapper.addClass(\"k-signature-maximized\");\n }\n\n this._applyCssClasses(wrapper);\n //workaround as the sizings are added to -signature- but roundings to -input-\n wrapper.removeClass(kendo.getValidCssClass(\"k-input-\", \"size\", this.options.size));\n wrapper.addClass(kendo.getValidCssClass(\"k-signature-\", \"size\", this.options.size));\n },\n\n _createDialogPad: function() {\n var that = this;\n var canvas = null;\n\n that._dialogEl = $(\"
\").appendTo(that.element);\n that._dialog = new Dialog(that._dialogEl, {\n title: false,\n closable: false,\n open: function() {\n that.trigger(OPEN);\n },\n close: function() {\n that.trigger(CLOSE);\n }\n });\n\n that._dialogPadEl = $(\"
\").appendTo(that._dialog.element);\n that._createElements(that._dialogPadEl, \"mini\", true, this.options.popupScale);\n canvas = that._dialogPadEl.find(\".k-signature-canvas\")[0];\n\n that._dialogPad = new Pad(canvas, $.extend(true, {}, that.options, {\n scale: that.options.popupScale,\n onChange: function() {\n var width = outerWidth(that.element, false);\n var height = outerHeight(that.element, false);\n that._dialogPad.exportImage({\n width: width * that.options.exportScale,\n height: height * that.options.exportScale\n }).then(function(val) {\n that._pad.loadImage(val);\n that._value = val;\n that._input.val(val);\n that.trigger(CHANGE);\n });\n },\n onDraw: function() {\n that._dialogEl.find(\".k-button\").hide();\n },\n onDrawEnd: function() {\n that._dialogEl.find(\".k-button\").show();\n }\n }));\n\n // Dialog should be opened at first for drawing to work\n that._dialog.close();\n that._dialogEl\n .on(CLICK + ns, \".k-signature-clear\", function() {\n that._dialogPad.clear();\n that._pad.clear();\n })\n .on(CLICK + ns, \".k-signature-minimize\", function() {\n that._dialog.close();\n });\n }\n });\n\n kendo.cssProperties.registerPrefix(\"Signature\", \"k-input-\");\n\n kendo.ui.plugin(Signature);\n\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n"],"names":["define","this","kendo","inputs","exports","kendoDrawing","_a","util","elementOffset","limitValue","Point","geometry","Rect","transform","noop","DECIMAL_DIGITS","DEFAULT_COLOR","DEFAULT_BACKGROUND_COLOR","DEFAULT_PRECISION","DEFAULT_SAMPLING_RATE","DEFAULT_STROKE_WIDTH","DEFAULT_WIDTH","DEFAULT_HEIGHT","DEFAULT_SCALE","DEFAULT_EXPORT_SCALE","SignaturePad","element","options","lastMoveTime","Object","assign","scale","precision","samplingRate","smooth","color","backgroundColor","strokeWidth","onChange","onDraw","onDrawEnd","pathOptions","stroke","width","lineCap","lineJoin","initSurface","attachEvents","prototype","destroy","detachEvents","clear","rootGroup","path","defineProperty","get","Boolean","points","enumerable","configurable","toString","set","value","MultiPath","parse","append","loadImage","data","size","height","contentWidth","contentHeight","importWidth","importHeight","scaleX","scaleY","Math","min","img","Image","exportImage","_b","exportWidth","exportHeight","exportRect","exportGroup","Group","clip","Path","fromRect","contentGroup","frame","fill","children","push","apply","resize","surface","setOptions","background","Surface","create","type","style","touchAction","offsetWidth","offsetHeight","draw","onPointerDown","bind","onPointerMove","onPointerUp","addEventListener","removeEventListener","touchPoint","e","offset","pageX","pageY","left","top","readonly","isPrimary","isMainButton","setPointerCapture","pointerId","point","moveTo","now","Date","getTime","elapsed","minTimeDelta","lastPoint","length","minDelta","distanceTo","lineTo","segments","curveFromPoints","paths","splice","pathData","button","common","drawing","amd","a1","a2","a3","__meta__","id","name","category","description","depends","$","window","jQuery","undefined","Widget","ui","Dialog","html","outerWidth","_outerWidth","outerHeight","_outerHeight","Pad","ns","CHANGE","OPEN","CLOSE","CLICK","Signature","extend","init","that","padOptions","fn","call","_createElements","maximizable","_createInput","wrapper","_pad","exportScale","then","val","_value","_input","trigger","popupScale","_dialogPad","find","hide","show","_createDialogPad","_attachHandlers","enable","fillMode","hideLine","rounded","events","currentOptions","_clearCssClasses","removeClass","getValidCssClass","deepExtend","_dialogPadEl","_hideLine","_applyCssClasses","toggle","addClass","close","_dialog","open","_dialogEl","off","toggleClass","clearButton","renderButton","icon","insertAfter","reset","on","attr","labelBy","autocomplete","required","appendTo","removeAttr","line","remove","maximize","canvas","title","closable","cssProperties","registerPrefix","plugin"],"mappings":"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"}