@colijnit/sharedcomponents 1.0.7 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-sharedcomponents.umd.js +746 -0
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -0
- package/colijnit-sharedcomponents.d.ts +6 -0
- package/colijnit-sharedcomponents.metadata.json +1 -0
- package/esm2015/colijnit-sharedcomponents.js +7 -0
- package/esm2015/lib/components/docsign/component/signature/signature.component.js +75 -0
- package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +44 -0
- package/esm2015/lib/components/docsign/docsign.component.js +225 -0
- package/esm2015/lib/components/docsign/docsign.module.js +23 -0
- package/esm2015/public-api.js +6 -0
- package/fesm2015/colijnit-sharedcomponents.js +372 -0
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -0
- package/lib/components/docsign/component/signature/signature.component.d.ts +16 -0
- package/{src/lib → lib}/components/docsign/component/signature/style/_layout.scss +0 -0
- package/{src/lib → lib}/components/docsign/component/signature/style/_material-definition.scss +0 -0
- package/{src/lib → lib}/components/docsign/component/signature/style/_theme.scss +0 -0
- package/{src/lib → lib}/components/docsign/component/signature/style/material.scss +0 -0
- package/lib/components/docsign/component/signatures/signatures.component.d.ts +12 -0
- package/{src/lib → lib}/components/docsign/component/signatures/style/_layout.scss +0 -0
- package/{src/lib → lib}/components/docsign/component/signatures/style/_material-definition.scss +0 -0
- package/{src/lib → lib}/components/docsign/component/signatures/style/_theme.scss +0 -0
- package/{src/lib → lib}/components/docsign/component/signatures/style/material.scss +0 -0
- package/lib/components/docsign/docsign.component.d.ts +92 -0
- package/lib/components/docsign/docsign.module.d.ts +2 -0
- package/{src/lib → lib}/components/docsign/style/_layout.scss +0 -0
- package/{src/lib → lib}/components/docsign/style/_material-definition.scss +0 -0
- package/{src/lib → lib}/components/docsign/style/_theme.scss +0 -0
- package/{src/lib → lib}/components/docsign/style/material.scss +0 -0
- package/{src/lib → lib}/style/_mixin.scss +0 -0
- package/{src/lib → lib}/style/_variables.scss +0 -0
- package/package.json +25 -15
- package/public-api.d.ts +2 -0
- package/.browserslistrc +0 -16
- package/colijnit-sharedcomponents-1.0.7.tgz +0 -0
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -17
- package/src/lib/components/docsign/component/signature/signature.component.ts +0 -82
- package/src/lib/components/docsign/component/signatures/signatures.component.ts +0 -50
- package/src/lib/components/docsign/docsign.component.ts +0 -252
- package/src/lib/components/docsign/docsign.module.ts +0 -22
- package/src/lib/components/send-method-dialog/enums/send-option.ts +0 -6
- package/src/lib/components/send-method-dialog/send-method-dialog.component.ts +0 -215
- package/src/lib/components/send-method-dialog/send-method-dialog.module.ts +0 -27
- package/src/lib/components/send-method-dialog/style/_layout.scss +0 -186
- package/src/lib/components/send-method-dialog/style/_material-definition.scss +0 -1
- package/src/lib/components/send-method-dialog/style/_theme.scss +0 -7
- package/src/lib/components/send-method-dialog/style/material.scss +0 -4
- package/src/lib/components/stock/stock-information/stock-information.component.ts +0 -59
- package/src/lib/components/stock/stock-information-grid/stock-information-grid.component.ts +0 -278
- package/src/lib/components/stock/stock-location/stock-location.component.ts +0 -82
- package/src/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.ts +0 -4
- package/src/lib/components/stock/stock-transfer/stock-transfer.component.ts +0 -111
- package/src/lib/components/stock/stock.component.ts +0 -78
- package/src/lib/components/stock/stock.module.ts +0 -47
- package/src/lib/components/stock/style/_layout.scss +0 -206
- package/src/lib/components/stock/style/_material-definition.scss +0 -20
- package/src/lib/components/stock/style/_theme.scss +0 -8
- package/src/lib/components/stock/style/material.scss +0 -4
- package/src/lib/enum/icon.enum.ts +0 -22
- package/src/lib/factory/business-object-factory.ts +0 -120
- package/src/lib/factory/decorators/boolean.decorator.ts +0 -113
- package/src/lib/factory/decorators/complex-array.decorator.ts +0 -61
- package/src/lib/factory/decorators/complex-field.decorator.ts +0 -63
- package/src/lib/factory/decorators/date-field.decorator.ts +0 -41
- package/src/lib/factory/decorators/string-number.decorator.ts +0 -48
- package/src/lib/model/business-object.ts +0 -85
- package/src/lib/model/icon-svg.ts +0 -22
- package/src/lib/service/icon-cache.service.ts +0 -51
- package/src/lib/service/ione-connector-adapter.service.ts +0 -113
- package/src/lib/service/stock.service.ts +0 -35
- package/src/lib/utils/array-utils.ts +0 -202
- package/src/lib/utils/is-nill.function.ts +0 -4
- package/src/public-api.ts +0 -10
- package/src/test.ts +0 -27
- package/tsconfig.lib.json +0 -18
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colijnit-sharedcomponents.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/sharedcomponents/src/lib/components/docsign/docsign.component.ts","../../../projects/sharedcomponents/src/lib/components/docsign/component/signature/signature.component.ts","../../../projects/sharedcomponents/src/lib/components/docsign/component/signatures/signatures.component.ts","../../../projects/sharedcomponents/src/lib/components/docsign/docsign.module.ts","../../../projects/sharedcomponents/src/public-api.ts","../../../projects/sharedcomponents/src/colijnit-sharedcomponents.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation} from \"@angular/core\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {PDFDocument} from \"pdf-lib\";\r\nimport * as PDFJS from \"pdfjs-dist/legacy/build/pdf\";\r\nimport pdfjsWorker from \"pdfjs-dist/build/pdf.worker.entry\";\r\nimport {TextItem} from \"pdfjs-dist/types/src/display/api\";\r\n\r\nexport interface TextDimension {\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n page: number\r\n}\r\n\r\n@Component({\r\n selector: \"ione-docsign\",\r\n template: `\r\n <iframe #iframe></iframe>\r\n <ione-signatures *ngIf=\"showSignatures\" @showHideSignature\r\n [showFirstSignature]=\"showSigBuyer\"\r\n [firstSignatureTitle]=\"firstSignatureLabel\"\r\n [showSecondSignature]=\"showSigSeller\"\r\n [secondSignatureTitle]=\"secondSignatureLabel\"\r\n [saveButtonLabel]=\"saveButtonLabel\"\r\n [clearButtonLabel]=\"clearButtonLabel\"\r\n (saveFirstSignature)=\"saveFirstSignature($event)\"\r\n (saveSecondSignature)=\"saveSecondSignature($event)\"\r\n ></ione-signatures>\r\n <input type=\"button\" *ngIf=\"(showSigBuyer || showSigSeller) && !showSignatures\" class=\"button button-sign-document\"\r\n [value]=\"signDocumentButtonLabel\"\r\n (click)=\"showSignatures = true\"\r\n />\r\n <input type=\"button\" class=\"button button-cancel\"\r\n [value]=\"cancelButtonLabel\"\r\n (click)=\"cancelClick.emit($event)\"\r\n />\r\n `,\r\n animations: [\r\n trigger(\"showHideSignature\", [\r\n state(\"void\", style({transform: \"translate(-50%, -50%) scale(0)\"})),\r\n state(\"*\", style({transform: \"translate(-50%, -50%) scale(1)\"})),\r\n transition(\"void <=> *\", animate(\"200ms ease-in-out\")),\r\n ])\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DocsignComponent {\r\n @ViewChild(\"iframe\", { read: ElementRef })\r\n public iframe: ElementRef;\r\n\r\n /**\r\n * Load an existing [[PDFDocument]]. The input data can be provided in\r\n * multiple formats:\r\n *\r\n * | Type | Contents |\r\n * | ------------- | ------------------------------------------------------ |\r\n * | `string` | A base64 encoded string (or data URI) containing a PDF |\r\n * | `Uint8Array` | The raw bytes of a PDF |\r\n * | `ArrayBuffer` | The raw bytes of a PDF |\r\n *\r\n * For example:\r\n * ```js\r\n * import { PDFDocument } from 'pdf-lib'\r\n *\r\n * // pdf=string\r\n * const base64 =\r\n * 'JVBERi0xLjcKJYGBgYEKCjUgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbm' +\r\n * 'd0aCAxMDQKPj4Kc3RyZWFtCniccwrhMlAAwaJ0Ln2P1Jyy1JLM5ERdc0MjCwUjE4WQNC4Q' +\r\n * '6cNlCFZkqGCqYGSqEJLLZWNuYGZiZmbkYuZsZmlmZGRgZmluDCQNzc3NTM2NzdzMXMxMjQ' +\r\n * 'ztFEKyuEK0uFxDuAAOERdVCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKPDwKL0ZpbHRl' +\r\n * 'ciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA0Ci9GaXJzdCAyMAovTGVuZ3RoID' +\r\n * 'IxNQo+PgpzdHJlYW0KeJxVj9GqwjAMhu/zFHkBzTo3nCCCiiKIHPEICuJF3cKoSCu2E8/b' +\r\n * '20wPIr1p8v9/8kVhgilmGfawX2CGaVrgcAi0/bsy0lrX7IGWpvJ4iJYEN3gEmrrGBlQwGs' +\r\n * 'HHO9VBX1wNrxAqMX87RBD5xpJuddqwd82tjAHxzV1U5LPgy52DKXWnr1Lheg+j/c/pzGVr' +\r\n * 'iqV0VlwZPXGPCJjElw/ybkwUmeoWgxesDXGhHJC/D/iikp1Av80ptKU0FdBEe25pPihAM1' +\r\n * 'u6ytgaaWfs2Hrz35CJT1+EWmAKZW5kc3RyZWFtCmVuZG9iagoKNyAwIG9iago8PAovU2l6' +\r\n * 'ZSA4Ci9Sb290IDIgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW' +\r\n * '5ndGggMzgKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOCBdCj4+CnN0cmVhbQp4nBXEwREA' +\r\n * 'EBAEsCwz3vrvRmOOyyOoGhZdutHN2MT55fIAVocD+AplbmRzdHJlYW0KZW5kb2JqCgpzdG' +\r\n * 'FydHhyZWYKNTEwCiUlRU9G'\r\n *\r\n * const dataUri = 'data:application/pdf;base64,' + base64\r\n *\r\n * const pdfDoc1 = await PDFDocument.load(base64)\r\n * const pdfDoc2 = await PDFDocument.load(dataUri)\r\n *\r\n * // pdf=Uint8Array\r\n * import fs from 'fs'\r\n * const uint8Array = fs.readFileSync('with_update_sections.pdf')\r\n * const pdfDoc3 = await PDFDocument.load(uint8Array)\r\n *\r\n * // pdf=ArrayBuffer\r\n * const url = 'https://pdf-lib.js.org/assets/with_update_sections.pdf'\r\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\r\n * const pdfDoc4 = await PDFDocument.load(arrayBuffer)\r\n *\r\n * ```\r\n *\r\n * @param pdf The input data containing a PDF document.\r\n * @param options The options to be used when loading the document.\r\n * @returns Resolves with a document loaded from the input.\r\n */\r\n @Input()\r\n public set pdf(value: any) {\r\n if (value) {\r\n this._pdf = value;\r\n this._openPDF();\r\n }\r\n }\r\n\r\n public get pdf(): any {\r\n return this._pdf;\r\n }\r\n\r\n @Input()\r\n public firstSignatureLabel: string;\r\n\r\n @Input()\r\n public firstSignatureField: string;\r\n\r\n @Input()\r\n public secondSignatureLabel: string;\r\n\r\n @Input()\r\n public secondSignatureField: string;\r\n\r\n @Input()\r\n public saveButtonLabel: string = 'SAVE';\r\n\r\n @Input()\r\n public clearButtonLabel: string = 'CLEAR';\r\n\r\n @Input()\r\n public signDocumentButtonLabel: string = 'SIGN_DOCUMENT';\r\n\r\n @Input()\r\n public cancelButtonLabel: string = 'CANCEL';\r\n\r\n @Output()\r\n public pdfSaved: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n public cancelClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\r\n\r\n @HostBinding('class.ione-docsign')\r\n public showClass() {\r\n return true;\r\n }\r\n\r\n public showSignaturePopup: boolean = false;\r\n public showSigBuyer: boolean = false;\r\n public sigBuyerPosition: TextDimension;\r\n public showSigSeller: boolean = false;\r\n public sigSellerPosition: TextDimension;\r\n public showSignatures: boolean = false;\r\n\r\n public pdfDoc: PDFDocument;\r\n\r\n private _pdf: any;\r\n\r\n public saveFirstSignature(sig: string): void {\r\n this._saveSignature(sig, this.sigBuyerPosition);\r\n this.showSigBuyer = false;\r\n this._savePdf();\r\n }\r\n\r\n public saveSecondSignature(sig: string): void {\r\n this._saveSignature(sig, this.sigSellerPosition);\r\n this.showSigSeller = false;\r\n this._savePdf();\r\n }\r\n\r\n private async _openPDF(): Promise<void> {\r\n // first create reader to check signatures\r\n this._checkSignatures();\r\n\r\n this.pdfDoc = await PDFDocument.load(this._pdf, {\r\n updateMetadata: false\r\n });\r\n const pdfDataUri = await this.pdfDoc.saveAsBase64({ dataUri: true });\r\n this.iframe.nativeElement.src = pdfDataUri;\r\n }\r\n\r\n private async _savePdf(): Promise<void> {\r\n if (!this.showSigBuyer && !this.showSigSeller) {\r\n // ready, save the pdf and emit result\r\n const result = await this.pdfDoc.saveAsBase64();\r\n this.pdfSaved.next(result);\r\n }\r\n }\r\n\r\n private async _checkSignatures(): Promise<void> {\r\n let pdfWorkerSrc;\r\n if (window.hasOwnProperty('pdfWorkerSrc') &&\r\n typeof (window as any).pdfWorkerSrc === 'string' &&\r\n (window as any).pdfWorkerSrc) {\r\n pdfWorkerSrc = (window as any).pdfWorkerSrc;\r\n }\r\n else {\r\n pdfWorkerSrc = pdfjsWorker;\r\n }\r\n PDFJS.GlobalWorkerOptions.workerSrc = pdfWorkerSrc;\r\n const pdfReader = await PDFJS.getDocument(this._pdf).promise;\r\n const numPages = pdfReader.numPages;\r\n for (let i = 0; i < numPages; i++) {\r\n const page = await pdfReader.getPage(i + 1);\r\n const text = await page.getTextContent();\r\n page.cleanup();\r\n if (this.firstSignatureField) {\r\n this.sigBuyerPosition = this._getPositionSignature(text, this.firstSignatureField);\r\n if (this.sigBuyerPosition.width > 0 && this.sigBuyerPosition.height > 0) {\r\n this.sigBuyerPosition.page = i;\r\n this.showSigBuyer = true;\r\n }\r\n }\r\n if (this.secondSignatureField) {\r\n this.sigSellerPosition = this._getPositionSignature(text, this.secondSignatureField);\r\n if (this.sigSellerPosition.width > 0 && this.sigSellerPosition.height > 0) {\r\n this.sigSellerPosition.page = i;\r\n this.showSigSeller = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _getPositionSignature(textItem: any, signatureField: string): TextDimension {\r\n const sigItem: TextItem = <TextItem>textItem.items.find((i: any) => i.str.toLowerCase() === signatureField.toLowerCase());\r\n if (sigItem) {\r\n textItem.items.slice(textItem.items.indexOf(sigItem), 1);\r\n return {\r\n x: sigItem.transform[4],\r\n y: sigItem.transform[5],\r\n width: sigItem.width,\r\n height: sigItem.height,\r\n page: 0\r\n };\r\n }\r\n return {x: 0, y: 0, width: 0, height: 0, page: 0}\r\n }\r\n\r\n private async _saveSignature(sig: string, dimensions: TextDimension): Promise<void> {\r\n const jpgImage = await this.pdfDoc.embedPng(sig);\r\n const page = await this.pdfDoc.getPage(dimensions.page);\r\n page.drawImage(jpgImage, {\r\n x: ((dimensions.x + (dimensions.width / 2)) - (200 / 2)),\r\n y: ((dimensions.y + (dimensions.height / 2)) - (100 / 2)),\r\n width: 200,\r\n height: 100\r\n });\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostBinding, Input, OnInit, Output, ViewChild, ViewEncapsulation} from \"@angular/core\";\r\nimport SignaturePad from \"signature_pad\";\r\n\r\n@Component({\r\n selector: \"ione-signature\",\r\n template: `\r\n <div class=\"signature-wrapper\">\r\n <div class=\"signature-header\">\r\n <span *ngIf=\"title\" class=\"title\" [textContent]=\"title\"></span>\r\n <div class=\"button-wrapper\">\r\n <input type=\"button\" (click)=\"handleSave($event)\" [value]=\"saveButtonLabel\"/>\r\n <input type=\"button\" (click)=\"handleClear($event)\" [value]=\"clearButtonLabel\">\r\n </div>\r\n </div>\r\n <div class=\"canvas\">\r\n <canvas #signature></canvas>\r\n </div>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SignatureComponent {\r\n @ViewChild(\"signature\", {read: ElementRef}) set content(content: ElementRef) {\r\n if (content) {\r\n this.signatureCanvas = content;\r\n this._initCanvas();\r\n }\r\n }\r\n\r\n @Input()\r\n public title: string;\r\n\r\n @Input()\r\n public saveButtonLabel: string = 'SAVE';\r\n\r\n @Input()\r\n public clearButtonLabel: string = 'CLEAR';\r\n\r\n @Output()\r\n public save: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @HostBinding(\"class.ione-signature\")\r\n public showClass() {\r\n return true;\r\n }\r\n\r\n public signature: SignaturePad;\r\n public signatureCanvas: ElementRef;\r\n\r\n public handleSave(event: MouseEvent): void {\r\n // save canvas as svg\r\n // const sig: string = this.signature.toDataURL(\"image/svg+xml\");\r\n const sig: string = this.signature.toDataURL(\"image/png\");\r\n // emit signature string\r\n this.save.next(sig);\r\n }\r\n\r\n public handleClear(event: MouseEvent): void {\r\n if (this.signature) {\r\n this.signature.clear();\r\n }\r\n }\r\n\r\n private _initCanvas(): void {\r\n if (this.signatureCanvas && this.signatureCanvas.nativeElement) {\r\n this.signature = new SignaturePad(this.signatureCanvas.nativeElement);\r\n setTimeout(() => {\r\n this._resizeSignatureCanvas(this.signature, this.signatureCanvas);\r\n });\r\n }\r\n }\r\n\r\n private _resizeSignatureCanvas(signature: SignaturePad, signatureCanvas: ElementRef): void {\r\n const imageBeforeResize: string = signature.toDataURL();\r\n const ratio: number = Math.max(window.devicePixelRatio || 1, 1);\r\n signatureCanvas.nativeElement.width = signatureCanvas.nativeElement.offsetWidth * ratio;\r\n signatureCanvas.nativeElement.height = signatureCanvas.nativeElement.offsetHeight * ratio;\r\n signatureCanvas.nativeElement.getContext(\"2d\").scale(ratio, ratio);\r\n signature.fromDataURL(imageBeforeResize);\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"ione-signatures\",\r\n template: `\r\n <ione-signature *ngIf=\"showFirstSignature\"\r\n [title]=\"firstSignatureTitle\"\r\n [saveButtonLabel]=\"saveButtonLabel\"\r\n [clearButtonLabel]=\"clearButtonLabel\"\r\n (save)=\"saveFirstSignature.emit($event)\"></ione-signature>\r\n <ione-signature *ngIf=\"showSecondSignature\"\r\n [title]=\"secondSignatureTitle\"\r\n [saveButtonLabel]=\"saveButtonLabel\"\r\n [clearButtonLabel]=\"clearButtonLabel\"\r\n (save)=\"saveSecondSignature.emit($event)\"></ione-signature>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SignaturesComponent {\r\n\r\n @Input()\r\n public showFirstSignature: boolean = false;\r\n\r\n @Input()\r\n public firstSignatureTitle: string;\r\n\r\n @Input()\r\n public showSecondSignature: boolean = false;\r\n\r\n @Input()\r\n public secondSignatureTitle: string;\r\n\r\n @Input()\r\n public saveButtonLabel: string = 'SAVE';\r\n\r\n @Input()\r\n public clearButtonLabel: string = 'CLEAR';\r\n\r\n @Output()\r\n public saveFirstSignature: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n public saveSecondSignature: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @HostBinding(\"class.ione-signatures\")\r\n public showClass() {\r\n return true;\r\n }\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {DocsignComponent} from \"./docsign.component\";\r\nimport {SignatureComponent} from \"./component/signature/signature.component\";\r\nimport {SignaturesComponent} from \"./component/signatures/signatures.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n DocsignComponent,\r\n SignatureComponent,\r\n SignaturesComponent\r\n ],\r\n exports: [\r\n DocsignComponent\r\n ]\r\n})\r\nexport class DocsignModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of sharedcomponents\r\n */\r\n\r\nexport * from './lib/components/docsign/docsign.component';\r\nexport * from './lib/components/docsign/docsign.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {SignatureComponent as ɵa} from './lib/components/docsign/component/signature/signature.component';\nexport {SignaturesComponent as ɵb} from './lib/components/docsign/component/signatures/signatures.component';"],"names":["EventEmitter","PDFDocument","pdfjsWorker","PDFJS","Component","trigger","state","style","transition","animate","ViewEncapsulation","ViewChild","ElementRef","Input","Output","HostBinding","SignaturePad","NgModule","CommonModule"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
export { SignatureComponent as ɵa } from './lib/components/docsign/component/signature/signature.component';
|
|
6
|
+
export { SignaturesComponent as ɵb } from './lib/components/docsign/component/signatures/signatures.component';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"TextDimension":{"__symbolic":"interface"},"DocsignComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"ione-docsign","template":"\n <iframe #iframe></iframe>\n <ione-signatures *ngIf=\"showSignatures\" @showHideSignature\n [showFirstSignature]=\"showSigBuyer\"\n [firstSignatureTitle]=\"firstSignatureLabel\"\n [showSecondSignature]=\"showSigSeller\"\n [secondSignatureTitle]=\"secondSignatureLabel\"\n [saveButtonLabel]=\"saveButtonLabel\"\n [clearButtonLabel]=\"clearButtonLabel\"\n (saveFirstSignature)=\"saveFirstSignature($event)\"\n (saveSecondSignature)=\"saveSecondSignature($event)\"\n ></ione-signatures>\n <input type=\"button\" *ngIf=\"(showSigBuyer || showSigSeller) && !showSignatures\" class=\"button button-sign-document\"\n [value]=\"signDocumentButtonLabel\"\n (click)=\"showSignatures = true\"\n />\n <input type=\"button\" class=\"button button-cancel\"\n [value]=\"cancelButtonLabel\"\n (click)=\"cancelClick.emit($event)\"\n />\n ","animations":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":39,"character":4},"arguments":["showHideSignature",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":40,"character":6},"arguments":["void",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":40,"character":20},"arguments":[{"transform":"translate(-50%, -50%) scale(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":41,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":41,"character":17},"arguments":[{"transform":"translate(-50%, -50%) scale(1)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":42,"character":6},"arguments":["void <=> *",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":42,"character":31},"arguments":["200ms ease-in-out"]}]}]]}],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":45,"character":17},"member":"None"}}]}],"members":{"iframe":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":48,"character":3},"arguments":["iframe",{"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":31}}]}]}],"pdf":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"firstSignatureLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":115,"character":3}}]}],"firstSignatureField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":118,"character":3}}]}],"secondSignatureLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"secondSignatureField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3}}]}],"saveButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":127,"character":3}}]}],"clearButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3}}]}],"signDocumentButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3}}]}],"cancelButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"pdfSaved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":139,"character":3}}]}],"cancelClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":142,"character":3}}]}],"showClass":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":145,"character":3},"arguments":["class.ione-docsign"]}]}],"saveFirstSignature":[{"__symbolic":"method"}],"saveSecondSignature":[{"__symbolic":"method"}],"_openPDF":[{"__symbolic":"method"}],"_savePdf":[{"__symbolic":"method"}],"_checkSignatures":[{"__symbolic":"method"}],"_getPositionSignature":[{"__symbolic":"method"}],"_saveSignature":[{"__symbolic":"method"}]}},"DocsignModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4}],"declarations":[{"__symbolic":"reference","name":"DocsignComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"DocsignComponent"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"ione-signature","template":"\n <div class=\"signature-wrapper\">\n <div class=\"signature-header\">\n <span *ngIf=\"title\" class=\"title\" [textContent]=\"title\"></span>\n <div class=\"button-wrapper\">\n <input type=\"button\" (click)=\"handleSave($event)\" [value]=\"saveButtonLabel\"/>\n <input type=\"button\" (click)=\"handleClear($event)\" [value]=\"clearButtonLabel\">\n </div>\n </div>\n <div class=\"canvas\">\n <canvas #signature></canvas>\n </div>\n </div>\n ","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":19,"character":17},"member":"None"}}]}],"members":{"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":22,"character":3},"arguments":["signature",{"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":22,"character":33}}]}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"saveButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"clearButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"save":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":38,"character":3}}]}],"showClass":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":41,"character":3},"arguments":["class.ione-signature"]}]}],"handleSave":[{"__symbolic":"method"}],"handleClear":[{"__symbolic":"method"}],"_initCanvas":[{"__symbolic":"method"}],"_resizeSignatureCanvas":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"ione-signatures","template":"\n <ione-signature *ngIf=\"showFirstSignature\"\n [title]=\"firstSignatureTitle\"\n [saveButtonLabel]=\"saveButtonLabel\"\n [clearButtonLabel]=\"clearButtonLabel\"\n (save)=\"saveFirstSignature.emit($event)\"></ione-signature>\n <ione-signature *ngIf=\"showSecondSignature\"\n [title]=\"secondSignatureTitle\"\n [saveButtonLabel]=\"saveButtonLabel\"\n [clearButtonLabel]=\"clearButtonLabel\"\n (save)=\"saveSecondSignature.emit($event)\"></ione-signature>\n ","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":16,"character":17},"member":"None"}}]}],"members":{"showFirstSignature":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"firstSignatureTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"showSecondSignature":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"secondSignatureTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"saveButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"clearButtonLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"saveFirstSignature":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":38,"character":3}}]}],"saveSecondSignature":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":41,"character":3}}]}],"showClass":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":44,"character":3},"arguments":["class.ione-signatures"]}]}]}}},"origins":{"TextDimension":"./lib/components/docsign/docsign.component","DocsignComponent":"./lib/components/docsign/docsign.component","DocsignModule":"./lib/components/docsign/docsign.module","ɵa":"./lib/components/docsign/component/signature/signature.component","ɵb":"./lib/components/docsign/component/signatures/signatures.component"},"importAs":"@colijnit/sharedcomponents"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
export { SignatureComponent as ɵa } from './lib/components/docsign/component/signature/signature.component';
|
|
6
|
+
export { SignaturesComponent as ɵb } from './lib/components/docsign/component/signatures/signatures.component';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saWpuaXQtc2hhcmVkY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2NvbGlqbml0LXNoYXJlZGNvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLG9FQUFvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge1NpZ25hdHVyZUNvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jc2lnbi9jb21wb25lbnQvc2lnbmF0dXJlL3NpZ25hdHVyZS5jb21wb25lbnQnO1xuZXhwb3J0IHtTaWduYXR1cmVzQ29tcG9uZW50IGFzIMm1Yn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2NzaWduL2NvbXBvbmVudC9zaWduYXR1cmVzL3NpZ25hdHVyZXMuY29tcG9uZW50JzsiXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
import SignaturePad from "signature_pad";
|
|
3
|
+
export class SignatureComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.saveButtonLabel = 'SAVE';
|
|
6
|
+
this.clearButtonLabel = 'CLEAR';
|
|
7
|
+
this.save = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
set content(content) {
|
|
10
|
+
if (content) {
|
|
11
|
+
this.signatureCanvas = content;
|
|
12
|
+
this._initCanvas();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
showClass() {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
handleSave(event) {
|
|
19
|
+
// save canvas as svg
|
|
20
|
+
// const sig: string = this.signature.toDataURL("image/svg+xml");
|
|
21
|
+
const sig = this.signature.toDataURL("image/png");
|
|
22
|
+
// emit signature string
|
|
23
|
+
this.save.next(sig);
|
|
24
|
+
}
|
|
25
|
+
handleClear(event) {
|
|
26
|
+
if (this.signature) {
|
|
27
|
+
this.signature.clear();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
_initCanvas() {
|
|
31
|
+
if (this.signatureCanvas && this.signatureCanvas.nativeElement) {
|
|
32
|
+
this.signature = new SignaturePad(this.signatureCanvas.nativeElement);
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
this._resizeSignatureCanvas(this.signature, this.signatureCanvas);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
_resizeSignatureCanvas(signature, signatureCanvas) {
|
|
39
|
+
const imageBeforeResize = signature.toDataURL();
|
|
40
|
+
const ratio = Math.max(window.devicePixelRatio || 1, 1);
|
|
41
|
+
signatureCanvas.nativeElement.width = signatureCanvas.nativeElement.offsetWidth * ratio;
|
|
42
|
+
signatureCanvas.nativeElement.height = signatureCanvas.nativeElement.offsetHeight * ratio;
|
|
43
|
+
signatureCanvas.nativeElement.getContext("2d").scale(ratio, ratio);
|
|
44
|
+
signature.fromDataURL(imageBeforeResize);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
SignatureComponent.decorators = [
|
|
48
|
+
{ type: Component, args: [{
|
|
49
|
+
selector: "ione-signature",
|
|
50
|
+
template: `
|
|
51
|
+
<div class="signature-wrapper">
|
|
52
|
+
<div class="signature-header">
|
|
53
|
+
<span *ngIf="title" class="title" [textContent]="title"></span>
|
|
54
|
+
<div class="button-wrapper">
|
|
55
|
+
<input type="button" (click)="handleSave($event)" [value]="saveButtonLabel"/>
|
|
56
|
+
<input type="button" (click)="handleClear($event)" [value]="clearButtonLabel">
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="canvas">
|
|
60
|
+
<canvas #signature></canvas>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
`,
|
|
64
|
+
encapsulation: ViewEncapsulation.None
|
|
65
|
+
},] }
|
|
66
|
+
];
|
|
67
|
+
SignatureComponent.propDecorators = {
|
|
68
|
+
content: [{ type: ViewChild, args: ["signature", { read: ElementRef },] }],
|
|
69
|
+
title: [{ type: Input }],
|
|
70
|
+
saveButtonLabel: [{ type: Input }],
|
|
71
|
+
clearButtonLabel: [{ type: Input }],
|
|
72
|
+
save: [{ type: Output }],
|
|
73
|
+
showClass: [{ type: HostBinding, args: ["class.ione-signature",] }]
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RvY3NpZ24vY29tcG9uZW50L3NpZ25hdHVyZS9zaWduYXR1cmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBb0J6QyxNQUFNLE9BQU8sa0JBQWtCO0lBbEIvQjtRQThCUyxvQkFBZSxHQUFXLE1BQU0sQ0FBQztRQUdqQyxxQkFBZ0IsR0FBVyxPQUFPLENBQUM7UUFHbkMsU0FBSSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0lBMENqRSxDQUFDO0lBM0RDLElBQWdELE9BQU8sQ0FBQyxPQUFtQjtRQUN6RSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFlTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00sVUFBVSxDQUFDLEtBQWlCO1FBQ2pDLHFCQUFxQjtRQUNyQixpRUFBaUU7UUFDakUsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBaUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3RFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsU0FBdUIsRUFBRSxlQUEyQjtRQUNqRixNQUFNLGlCQUFpQixHQUFXLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hGLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxRixlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25FLFNBQVMsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7WUE1RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7c0JBRUUsU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7b0JBT3pDLEtBQUs7OEJBR0wsS0FBSzsrQkFHTCxLQUFLO21CQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBTaWduYXR1cmVQYWQgZnJvbSBcInNpZ25hdHVyZV9wYWRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlvbmUtc2lnbmF0dXJlXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzaWduYXR1cmUtd3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2lnbmF0dXJlLWhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cInRpdGxlXCIgW3RleHRDb250ZW50XT1cInRpdGxlXCI+PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlclwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaGFuZGxlU2F2ZSgkZXZlbnQpXCIgW3ZhbHVlXT1cInNhdmVCdXR0b25MYWJlbFwiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZUNsZWFyKCRldmVudClcIiBbdmFsdWVdPVwiY2xlYXJCdXR0b25MYWJlbFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhbnZhc1wiPlxyXG4gICAgICAgIDxjYW52YXMgI3NpZ25hdHVyZT48L2NhbnZhcz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ25hdHVyZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZChcInNpZ25hdHVyZVwiLCB7cmVhZDogRWxlbWVudFJlZn0pIHNldCBjb250ZW50KGNvbnRlbnQ6IEVsZW1lbnRSZWYpIHtcclxuICAgIGlmIChjb250ZW50KSB7XHJcbiAgICAgIHRoaXMuc2lnbmF0dXJlQ2FudmFzID0gY29udGVudDtcclxuICAgICAgdGhpcy5faW5pdENhbnZhcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2F2ZUJ1dHRvbkxhYmVsOiBzdHJpbmcgPSAnU0FWRSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNsZWFyQnV0dG9uTGFiZWw6IHN0cmluZyA9ICdDTEVBUic7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzYXZlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pb25lLXNpZ25hdHVyZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaWduYXR1cmU6IFNpZ25hdHVyZVBhZDtcclxuICBwdWJsaWMgc2lnbmF0dXJlQ2FudmFzOiBFbGVtZW50UmVmO1xyXG5cclxuICBwdWJsaWMgaGFuZGxlU2F2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gc2F2ZSBjYW52YXMgYXMgc3ZnXHJcbiAgICAvLyBjb25zdCBzaWc6IHN0cmluZyA9IHRoaXMuc2lnbmF0dXJlLnRvRGF0YVVSTChcImltYWdlL3N2Zyt4bWxcIik7XHJcbiAgICBjb25zdCBzaWc6IHN0cmluZyA9IHRoaXMuc2lnbmF0dXJlLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcclxuICAgIC8vIGVtaXQgc2lnbmF0dXJlIHN0cmluZ1xyXG4gICAgdGhpcy5zYXZlLm5leHQoc2lnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2lnbmF0dXJlKSB7XHJcbiAgICAgIHRoaXMuc2lnbmF0dXJlLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q2FudmFzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2lnbmF0dXJlQ2FudmFzICYmIHRoaXMuc2lnbmF0dXJlQ2FudmFzLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5zaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlUGFkKHRoaXMuc2lnbmF0dXJlQ2FudmFzLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLl9yZXNpemVTaWduYXR1cmVDYW52YXModGhpcy5zaWduYXR1cmUsIHRoaXMuc2lnbmF0dXJlQ2FudmFzKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNpemVTaWduYXR1cmVDYW52YXMoc2lnbmF0dXJlOiBTaWduYXR1cmVQYWQsIHNpZ25hdHVyZUNhbnZhczogRWxlbWVudFJlZik6IHZvaWQge1xyXG4gICAgY29uc3QgaW1hZ2VCZWZvcmVSZXNpemU6IHN0cmluZyA9IHNpZ25hdHVyZS50b0RhdGFVUkwoKTtcclxuICAgIGNvbnN0IHJhdGlvOiBudW1iZXIgPSBNYXRoLm1heCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxLCAxKTtcclxuICAgIHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoID0gc2lnbmF0dXJlQ2FudmFzLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiByYXRpbztcclxuICAgIHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodCA9IHNpZ25hdHVyZUNhbnZhcy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAqIHJhdGlvO1xyXG4gICAgc2lnbmF0dXJlQ2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dChcIjJkXCIpLnNjYWxlKHJhdGlvLCByYXRpbyk7XHJcbiAgICBzaWduYXR1cmUuZnJvbURhdGFVUkwoaW1hZ2VCZWZvcmVSZXNpemUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
export class SignaturesComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.showFirstSignature = false;
|
|
5
|
+
this.showSecondSignature = false;
|
|
6
|
+
this.saveButtonLabel = 'SAVE';
|
|
7
|
+
this.clearButtonLabel = 'CLEAR';
|
|
8
|
+
this.saveFirstSignature = new EventEmitter();
|
|
9
|
+
this.saveSecondSignature = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
showClass() {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
SignaturesComponent.decorators = [
|
|
16
|
+
{ type: Component, args: [{
|
|
17
|
+
selector: "ione-signatures",
|
|
18
|
+
template: `
|
|
19
|
+
<ione-signature *ngIf="showFirstSignature"
|
|
20
|
+
[title]="firstSignatureTitle"
|
|
21
|
+
[saveButtonLabel]="saveButtonLabel"
|
|
22
|
+
[clearButtonLabel]="clearButtonLabel"
|
|
23
|
+
(save)="saveFirstSignature.emit($event)"></ione-signature>
|
|
24
|
+
<ione-signature *ngIf="showSecondSignature"
|
|
25
|
+
[title]="secondSignatureTitle"
|
|
26
|
+
[saveButtonLabel]="saveButtonLabel"
|
|
27
|
+
[clearButtonLabel]="clearButtonLabel"
|
|
28
|
+
(save)="saveSecondSignature.emit($event)"></ione-signature>
|
|
29
|
+
`,
|
|
30
|
+
encapsulation: ViewEncapsulation.None
|
|
31
|
+
},] }
|
|
32
|
+
];
|
|
33
|
+
SignaturesComponent.propDecorators = {
|
|
34
|
+
showFirstSignature: [{ type: Input }],
|
|
35
|
+
firstSignatureTitle: [{ type: Input }],
|
|
36
|
+
showSecondSignature: [{ type: Input }],
|
|
37
|
+
secondSignatureTitle: [{ type: Input }],
|
|
38
|
+
saveButtonLabel: [{ type: Input }],
|
|
39
|
+
clearButtonLabel: [{ type: Input }],
|
|
40
|
+
saveFirstSignature: [{ type: Output }],
|
|
41
|
+
saveSecondSignature: [{ type: Output }],
|
|
42
|
+
showClass: [{ type: HostBinding, args: ["class.ione-signatures",] }]
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kb2NzaWduL2NvbXBvbmVudC9zaWduYXR1cmVzL3NpZ25hdHVyZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBa0JyRyxNQUFNLE9BQU8sbUJBQW1CO0lBaEJoQztRQW1CUyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFNcEMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBTXJDLG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBR2pDLHFCQUFnQixHQUFXLE9BQU8sQ0FBQztRQUduQyx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd0RSx3QkFBbUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQU9oRixDQUFDO0lBSlEsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBN0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztpQ0FHRSxLQUFLO2tDQUdMLEtBQUs7a0NBR0wsS0FBSzttQ0FHTCxLQUFLOzhCQUdMLEtBQUs7K0JBR0wsS0FBSztpQ0FHTCxNQUFNO2tDQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlvbmUtc2lnbmF0dXJlc1wiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aW9uZS1zaWduYXR1cmUgKm5nSWY9XCJzaG93Rmlyc3RTaWduYXR1cmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaXJzdFNpZ25hdHVyZVRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2F2ZUJ1dHRvbkxhYmVsXT1cInNhdmVCdXR0b25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uTGFiZWxdPVwiY2xlYXJCdXR0b25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNhdmUpPVwic2F2ZUZpcnN0U2lnbmF0dXJlLmVtaXQoJGV2ZW50KVwiPjwvaW9uZS1zaWduYXR1cmU+XHJcbiAgICA8aW9uZS1zaWduYXR1cmUgKm5nSWY9XCJzaG93U2Vjb25kU2lnbmF0dXJlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwic2Vjb25kU2lnbmF0dXJlVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzYXZlQnV0dG9uTGFiZWxdPVwic2F2ZUJ1dHRvbkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25MYWJlbF09XCJjbGVhckJ1dHRvbkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAoc2F2ZSk9XCJzYXZlU2Vjb25kU2lnbmF0dXJlLmVtaXQoJGV2ZW50KVwiPjwvaW9uZS1zaWduYXR1cmU+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWduYXR1cmVzQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0ZpcnN0U2lnbmF0dXJlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpcnN0U2lnbmF0dXJlVGl0bGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1NlY29uZFNpZ25hdHVyZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWNvbmRTaWduYXR1cmVUaXRsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzYXZlQnV0dG9uTGFiZWw6IHN0cmluZyA9ICdTQVZFJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2xlYXJCdXR0b25MYWJlbDogc3RyaW5nID0gJ0NMRUFSJztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVGaXJzdFNpZ25hdHVyZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVTZWNvbmRTaWduYXR1cmU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmlvbmUtc2lnbmF0dXJlc1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
import { animate, state, style, transition, trigger } from "@angular/animations";
|
|
4
|
+
import { PDFDocument } from "pdf-lib";
|
|
5
|
+
import * as PDFJS from "pdfjs-dist/legacy/build/pdf";
|
|
6
|
+
import pdfjsWorker from "pdfjs-dist/build/pdf.worker.entry";
|
|
7
|
+
export class DocsignComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.saveButtonLabel = 'SAVE';
|
|
10
|
+
this.clearButtonLabel = 'CLEAR';
|
|
11
|
+
this.signDocumentButtonLabel = 'SIGN_DOCUMENT';
|
|
12
|
+
this.cancelButtonLabel = 'CANCEL';
|
|
13
|
+
this.pdfSaved = new EventEmitter();
|
|
14
|
+
this.cancelClick = new EventEmitter();
|
|
15
|
+
this.showSignaturePopup = false;
|
|
16
|
+
this.showSigBuyer = false;
|
|
17
|
+
this.showSigSeller = false;
|
|
18
|
+
this.showSignatures = false;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load an existing [[PDFDocument]]. The input data can be provided in
|
|
22
|
+
* multiple formats:
|
|
23
|
+
*
|
|
24
|
+
* | Type | Contents |
|
|
25
|
+
* | ------------- | ------------------------------------------------------ |
|
|
26
|
+
* | `string` | A base64 encoded string (or data URI) containing a PDF |
|
|
27
|
+
* | `Uint8Array` | The raw bytes of a PDF |
|
|
28
|
+
* | `ArrayBuffer` | The raw bytes of a PDF |
|
|
29
|
+
*
|
|
30
|
+
* For example:
|
|
31
|
+
* ```js
|
|
32
|
+
* import { PDFDocument } from 'pdf-lib'
|
|
33
|
+
*
|
|
34
|
+
* // pdf=string
|
|
35
|
+
* const base64 =
|
|
36
|
+
* 'JVBERi0xLjcKJYGBgYEKCjUgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbm' +
|
|
37
|
+
* 'd0aCAxMDQKPj4Kc3RyZWFtCniccwrhMlAAwaJ0Ln2P1Jyy1JLM5ERdc0MjCwUjE4WQNC4Q' +
|
|
38
|
+
* '6cNlCFZkqGCqYGSqEJLLZWNuYGZiZmbkYuZsZmlmZGRgZmluDCQNzc3NTM2NzdzMXMxMjQ' +
|
|
39
|
+
* 'ztFEKyuEK0uFxDuAAOERdVCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKPDwKL0ZpbHRl' +
|
|
40
|
+
* 'ciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA0Ci9GaXJzdCAyMAovTGVuZ3RoID' +
|
|
41
|
+
* 'IxNQo+PgpzdHJlYW0KeJxVj9GqwjAMhu/zFHkBzTo3nCCCiiKIHPEICuJF3cKoSCu2E8/b' +
|
|
42
|
+
* '20wPIr1p8v9/8kVhgilmGfawX2CGaVrgcAi0/bsy0lrX7IGWpvJ4iJYEN3gEmrrGBlQwGs' +
|
|
43
|
+
* 'HHO9VBX1wNrxAqMX87RBD5xpJuddqwd82tjAHxzV1U5LPgy52DKXWnr1Lheg+j/c/pzGVr' +
|
|
44
|
+
* 'iqV0VlwZPXGPCJjElw/ybkwUmeoWgxesDXGhHJC/D/iikp1Av80ptKU0FdBEe25pPihAM1' +
|
|
45
|
+
* 'u6ytgaaWfs2Hrz35CJT1+EWmAKZW5kc3RyZWFtCmVuZG9iagoKNyAwIG9iago8PAovU2l6' +
|
|
46
|
+
* 'ZSA4Ci9Sb290IDIgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW' +
|
|
47
|
+
* '5ndGggMzgKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOCBdCj4+CnN0cmVhbQp4nBXEwREA' +
|
|
48
|
+
* 'EBAEsCwz3vrvRmOOyyOoGhZdutHN2MT55fIAVocD+AplbmRzdHJlYW0KZW5kb2JqCgpzdG' +
|
|
49
|
+
* 'FydHhyZWYKNTEwCiUlRU9G'
|
|
50
|
+
*
|
|
51
|
+
* const dataUri = 'data:application/pdf;base64,' + base64
|
|
52
|
+
*
|
|
53
|
+
* const pdfDoc1 = await PDFDocument.load(base64)
|
|
54
|
+
* const pdfDoc2 = await PDFDocument.load(dataUri)
|
|
55
|
+
*
|
|
56
|
+
* // pdf=Uint8Array
|
|
57
|
+
* import fs from 'fs'
|
|
58
|
+
* const uint8Array = fs.readFileSync('with_update_sections.pdf')
|
|
59
|
+
* const pdfDoc3 = await PDFDocument.load(uint8Array)
|
|
60
|
+
*
|
|
61
|
+
* // pdf=ArrayBuffer
|
|
62
|
+
* const url = 'https://pdf-lib.js.org/assets/with_update_sections.pdf'
|
|
63
|
+
* const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())
|
|
64
|
+
* const pdfDoc4 = await PDFDocument.load(arrayBuffer)
|
|
65
|
+
*
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @param pdf The input data containing a PDF document.
|
|
69
|
+
* @param options The options to be used when loading the document.
|
|
70
|
+
* @returns Resolves with a document loaded from the input.
|
|
71
|
+
*/
|
|
72
|
+
set pdf(value) {
|
|
73
|
+
if (value) {
|
|
74
|
+
this._pdf = value;
|
|
75
|
+
this._openPDF();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
get pdf() {
|
|
79
|
+
return this._pdf;
|
|
80
|
+
}
|
|
81
|
+
showClass() {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
saveFirstSignature(sig) {
|
|
85
|
+
this._saveSignature(sig, this.sigBuyerPosition);
|
|
86
|
+
this.showSigBuyer = false;
|
|
87
|
+
this._savePdf();
|
|
88
|
+
}
|
|
89
|
+
saveSecondSignature(sig) {
|
|
90
|
+
this._saveSignature(sig, this.sigSellerPosition);
|
|
91
|
+
this.showSigSeller = false;
|
|
92
|
+
this._savePdf();
|
|
93
|
+
}
|
|
94
|
+
_openPDF() {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
// first create reader to check signatures
|
|
97
|
+
this._checkSignatures();
|
|
98
|
+
this.pdfDoc = yield PDFDocument.load(this._pdf, {
|
|
99
|
+
updateMetadata: false
|
|
100
|
+
});
|
|
101
|
+
const pdfDataUri = yield this.pdfDoc.saveAsBase64({ dataUri: true });
|
|
102
|
+
this.iframe.nativeElement.src = pdfDataUri;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
_savePdf() {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
if (!this.showSigBuyer && !this.showSigSeller) {
|
|
108
|
+
// ready, save the pdf and emit result
|
|
109
|
+
const result = yield this.pdfDoc.saveAsBase64();
|
|
110
|
+
this.pdfSaved.next(result);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
_checkSignatures() {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
let pdfWorkerSrc;
|
|
117
|
+
if (window.hasOwnProperty('pdfWorkerSrc') &&
|
|
118
|
+
typeof window.pdfWorkerSrc === 'string' &&
|
|
119
|
+
window.pdfWorkerSrc) {
|
|
120
|
+
pdfWorkerSrc = window.pdfWorkerSrc;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
pdfWorkerSrc = pdfjsWorker;
|
|
124
|
+
}
|
|
125
|
+
PDFJS.GlobalWorkerOptions.workerSrc = pdfWorkerSrc;
|
|
126
|
+
const pdfReader = yield PDFJS.getDocument(this._pdf).promise;
|
|
127
|
+
const numPages = pdfReader.numPages;
|
|
128
|
+
for (let i = 0; i < numPages; i++) {
|
|
129
|
+
const page = yield pdfReader.getPage(i + 1);
|
|
130
|
+
const text = yield page.getTextContent();
|
|
131
|
+
page.cleanup();
|
|
132
|
+
if (this.firstSignatureField) {
|
|
133
|
+
this.sigBuyerPosition = this._getPositionSignature(text, this.firstSignatureField);
|
|
134
|
+
if (this.sigBuyerPosition.width > 0 && this.sigBuyerPosition.height > 0) {
|
|
135
|
+
this.sigBuyerPosition.page = i;
|
|
136
|
+
this.showSigBuyer = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (this.secondSignatureField) {
|
|
140
|
+
this.sigSellerPosition = this._getPositionSignature(text, this.secondSignatureField);
|
|
141
|
+
if (this.sigSellerPosition.width > 0 && this.sigSellerPosition.height > 0) {
|
|
142
|
+
this.sigSellerPosition.page = i;
|
|
143
|
+
this.showSigSeller = true;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
_getPositionSignature(textItem, signatureField) {
|
|
150
|
+
const sigItem = textItem.items.find((i) => i.str.toLowerCase() === signatureField.toLowerCase());
|
|
151
|
+
if (sigItem) {
|
|
152
|
+
textItem.items.slice(textItem.items.indexOf(sigItem), 1);
|
|
153
|
+
return {
|
|
154
|
+
x: sigItem.transform[4],
|
|
155
|
+
y: sigItem.transform[5],
|
|
156
|
+
width: sigItem.width,
|
|
157
|
+
height: sigItem.height,
|
|
158
|
+
page: 0
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return { x: 0, y: 0, width: 0, height: 0, page: 0 };
|
|
162
|
+
}
|
|
163
|
+
_saveSignature(sig, dimensions) {
|
|
164
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
165
|
+
const jpgImage = yield this.pdfDoc.embedPng(sig);
|
|
166
|
+
const page = yield this.pdfDoc.getPage(dimensions.page);
|
|
167
|
+
page.drawImage(jpgImage, {
|
|
168
|
+
x: ((dimensions.x + (dimensions.width / 2)) - (200 / 2)),
|
|
169
|
+
y: ((dimensions.y + (dimensions.height / 2)) - (100 / 2)),
|
|
170
|
+
width: 200,
|
|
171
|
+
height: 100
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
DocsignComponent.decorators = [
|
|
177
|
+
{ type: Component, args: [{
|
|
178
|
+
selector: "ione-docsign",
|
|
179
|
+
template: `
|
|
180
|
+
<iframe #iframe></iframe>
|
|
181
|
+
<ione-signatures *ngIf="showSignatures" @showHideSignature
|
|
182
|
+
[showFirstSignature]="showSigBuyer"
|
|
183
|
+
[firstSignatureTitle]="firstSignatureLabel"
|
|
184
|
+
[showSecondSignature]="showSigSeller"
|
|
185
|
+
[secondSignatureTitle]="secondSignatureLabel"
|
|
186
|
+
[saveButtonLabel]="saveButtonLabel"
|
|
187
|
+
[clearButtonLabel]="clearButtonLabel"
|
|
188
|
+
(saveFirstSignature)="saveFirstSignature($event)"
|
|
189
|
+
(saveSecondSignature)="saveSecondSignature($event)"
|
|
190
|
+
></ione-signatures>
|
|
191
|
+
<input type="button" *ngIf="(showSigBuyer || showSigSeller) && !showSignatures" class="button button-sign-document"
|
|
192
|
+
[value]="signDocumentButtonLabel"
|
|
193
|
+
(click)="showSignatures = true"
|
|
194
|
+
/>
|
|
195
|
+
<input type="button" class="button button-cancel"
|
|
196
|
+
[value]="cancelButtonLabel"
|
|
197
|
+
(click)="cancelClick.emit($event)"
|
|
198
|
+
/>
|
|
199
|
+
`,
|
|
200
|
+
animations: [
|
|
201
|
+
trigger("showHideSignature", [
|
|
202
|
+
state("void", style({ transform: "translate(-50%, -50%) scale(0)" })),
|
|
203
|
+
state("*", style({ transform: "translate(-50%, -50%) scale(1)" })),
|
|
204
|
+
transition("void <=> *", animate("200ms ease-in-out")),
|
|
205
|
+
])
|
|
206
|
+
],
|
|
207
|
+
encapsulation: ViewEncapsulation.None
|
|
208
|
+
},] }
|
|
209
|
+
];
|
|
210
|
+
DocsignComponent.propDecorators = {
|
|
211
|
+
iframe: [{ type: ViewChild, args: ["iframe", { read: ElementRef },] }],
|
|
212
|
+
pdf: [{ type: Input }],
|
|
213
|
+
firstSignatureLabel: [{ type: Input }],
|
|
214
|
+
firstSignatureField: [{ type: Input }],
|
|
215
|
+
secondSignatureLabel: [{ type: Input }],
|
|
216
|
+
secondSignatureField: [{ type: Input }],
|
|
217
|
+
saveButtonLabel: [{ type: Input }],
|
|
218
|
+
clearButtonLabel: [{ type: Input }],
|
|
219
|
+
signDocumentButtonLabel: [{ type: Input }],
|
|
220
|
+
cancelButtonLabel: [{ type: Input }],
|
|
221
|
+
pdfSaved: [{ type: Output }],
|
|
222
|
+
cancelClick: [{ type: Output }],
|
|
223
|
+
showClass: [{ type: HostBinding, args: ['class.ione-docsign',] }]
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jc2lnbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kb2NzaWduL2RvY3NpZ24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNwQyxPQUFPLEtBQUssS0FBSyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sV0FBVyxNQUFNLG1DQUFtQyxDQUFDO0FBMkM1RCxNQUFNLE9BQU8sZ0JBQWdCO0lBaEM3QjtRQWlIUyxvQkFBZSxHQUFXLE1BQU0sQ0FBQztRQUdqQyxxQkFBZ0IsR0FBVyxPQUFPLENBQUM7UUFHbkMsNEJBQXVCLEdBQVcsZUFBZSxDQUFDO1FBR2xELHNCQUFpQixHQUFXLFFBQVEsQ0FBQztRQUdyQyxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHNUQsZ0JBQVcsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQU92RSx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7SUFnR3pDLENBQUM7SUF4TUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1ERztJQUNI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Ozs7R0FvQlQ7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTt3QkFDM0IsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0NBQWdDLEVBQUMsQ0FBQyxDQUFDO3dCQUNuRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxnQ0FBZ0MsRUFBQyxDQUFDLENBQUM7d0JBQ2hFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7cUJBQ3ZELENBQUM7aUJBQ0g7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztxQkFFRSxTQUFTLFNBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtrQkF1RHhDLEtBQUs7a0NBWUwsS0FBSztrQ0FHTCxLQUFLO21DQUdMLEtBQUs7bUNBR0wsS0FBSzs4QkFHTCxLQUFLOytCQUdMLEtBQUs7c0NBR0wsS0FBSztnQ0FHTCxLQUFLO3VCQUdMLE1BQU07MEJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQge1BERkRvY3VtZW50fSBmcm9tIFwicGRmLWxpYlwiO1xyXG5pbXBvcnQgKiBhcyBQREZKUyBmcm9tIFwicGRmanMtZGlzdC9sZWdhY3kvYnVpbGQvcGRmXCI7XHJcbmltcG9ydCBwZGZqc1dvcmtlciBmcm9tIFwicGRmanMtZGlzdC9idWlsZC9wZGYud29ya2VyLmVudHJ5XCI7XHJcbmltcG9ydCB7VGV4dEl0ZW19IGZyb20gXCJwZGZqcy1kaXN0L3R5cGVzL3NyYy9kaXNwbGF5L2FwaVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXh0RGltZW5zaW9uIHtcclxuICB4OiBudW1iZXIsXHJcbiAgeTogbnVtYmVyLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXIsXHJcbiAgcGFnZTogbnVtYmVyXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlvbmUtZG9jc2lnblwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aWZyYW1lICNpZnJhbWU+PC9pZnJhbWU+XHJcbiAgICA8aW9uZS1zaWduYXR1cmVzICpuZ0lmPVwic2hvd1NpZ25hdHVyZXNcIiBAc2hvd0hpZGVTaWduYXR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dGaXJzdFNpZ25hdHVyZV09XCJzaG93U2lnQnV5ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZmlyc3RTaWduYXR1cmVUaXRsZV09XCJmaXJzdFNpZ25hdHVyZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWNvbmRTaWduYXR1cmVdPVwic2hvd1NpZ1NlbGxlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzZWNvbmRTaWduYXR1cmVUaXRsZV09XCJzZWNvbmRTaWduYXR1cmVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzYXZlQnV0dG9uTGFiZWxdPVwic2F2ZUJ1dHRvbkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uTGFiZWxdPVwiY2xlYXJCdXR0b25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChzYXZlRmlyc3RTaWduYXR1cmUpPVwic2F2ZUZpcnN0U2lnbmF0dXJlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoc2F2ZVNlY29uZFNpZ25hdHVyZSk9XCJzYXZlU2Vjb25kU2lnbmF0dXJlKCRldmVudClcIlxyXG4gICAgPjwvaW9uZS1zaWduYXR1cmVzPlxyXG4gICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIihzaG93U2lnQnV5ZXIgfHwgc2hvd1NpZ1NlbGxlcikgJiYgIXNob3dTaWduYXR1cmVzXCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNpZ24tZG9jdW1lbnRcIlxyXG4gICAgICAgICAgIFt2YWx1ZV09XCJzaWduRG9jdW1lbnRCdXR0b25MYWJlbFwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cInNob3dTaWduYXR1cmVzID0gdHJ1ZVwiXHJcbiAgICAvPlxyXG4gICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tY2FuY2VsXCJcclxuICAgICAgICAgICBbdmFsdWVdPVwiY2FuY2VsQnV0dG9uTGFiZWxcIlxyXG4gICAgICAgICAgIChjbGljayk9XCJjYW5jZWxDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgLz5cclxuICBgLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoXCJzaG93SGlkZVNpZ25hdHVyZVwiLCBbXHJcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7dHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgwKVwifSkpLFxyXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMSlcIn0pKSxcclxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPD0+ICpcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKSxcclxuICAgIF0pXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb2NzaWduQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKFwiaWZyYW1lXCIsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG4gIHB1YmxpYyBpZnJhbWU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgYW4gZXhpc3RpbmcgW1tQREZEb2N1bWVudF1dLiBUaGUgaW5wdXQgZGF0YSBjYW4gYmUgcHJvdmlkZWQgaW5cclxuICAgKiBtdWx0aXBsZSBmb3JtYXRzOlxyXG4gICAqXHJcbiAgICogfCBUeXBlICAgICAgICAgIHwgQ29udGVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxyXG4gICAqIHwgYHN0cmluZ2AgICAgICB8IEEgYmFzZTY0IGVuY29kZWQgc3RyaW5nIChvciBkYXRhIFVSSSkgY29udGFpbmluZyBhIFBERiB8XHJcbiAgICogfCBgVWludDhBcnJheWAgIHwgVGhlIHJhdyBieXRlcyBvZiBhIFBERiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgKiB8IGBBcnJheUJ1ZmZlcmAgfCBUaGUgcmF3IGJ5dGVzIG9mIGEgUERGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gICAqXHJcbiAgICogRm9yIGV4YW1wbGU6XHJcbiAgICogYGBganNcclxuICAgKiBpbXBvcnQgeyBQREZEb2N1bWVudCB9IGZyb20gJ3BkZi1saWInXHJcbiAgICpcclxuICAgKiAvLyBwZGY9c3RyaW5nXHJcbiAgICogY29uc3QgYmFzZTY0ID1cclxuICAgKiAgJ0pWQkVSaTB4TGpjS0pZR0JnWUVLQ2pVZ01DQnZZbW9LUER3S0wwWnBiSFJsY2lBdlJteGhkR1ZFWldOdlpHVUtMMHhsYm0nICtcclxuICAgKiAgJ2QwYUNBeE1EUUtQajRLYzNSeVpXRnRDbmljY3dyaE1sQUF3YUowTG4yUDFKeXkxSkxNNUVSZGMwTWpDd1VqRTRXUU5DNFEnICtcclxuICAgKiAgJzZjTmxDRlprcUdDcVlHU3FFSkxMWldOdVlHWmlabWJrWXVac1ptbG1aR1JnWm1sdURDUU56YzNOVE0yTnpkek1YTXhNalEnICtcclxuICAgKiAgJ3p0RkVLeXVFSzB1RnhEdUFBT0VSZFZDbVZ1WkhOMGNtVmhiUXBsYm1Sdlltb0tDallnTUNCdlltb0tQRHdLTDBacGJIUmwnICtcclxuICAgKiAgJ2NpQXZSbXhoZEdWRVpXTnZaR1VLTDFSNWNHVWdMMDlpYWxOMGJRb3ZUaUEwQ2k5R2FYSnpkQ0F5TUFvdlRHVnVaM1JvSUQnICtcclxuICAgKiAgJ0l4TlFvK1BncHpkSEpsWVcwS2VKeFZqOUdxd2pBTWh1L3pGSGtCelRvM25DQ0NpaUtJSFBFSUN1SkYzY0tvU0N1MkU4L2InICtcclxuICAgKiAgJzIwd1BJcjFwOHY5LzhrVmhnaWxtR2Zhd1gyQ0dhVnJnY0FpMC9ic3kwbHJYN0lHV3B2SjRpSllFTjNnRW1yckdCbFF3R3MnICtcclxuICAgKiAgJ0hITzlWQlgxd05yeEFxTVg4N1JCRDV4cEp1ZGRxd2Q4MnRqQUh4elYxVTVMUGd5NTJES1hXbnIxTGhlZytqL2MvcHpHVnInICtcclxuICAgKiAgJ2lxVjBWbHdaUFhHUENKakVsdy95Ymt3VW1lb1dneGVzRFhHaEhKQy9EL2lpa3AxQXY4MHB0S1UwRmRCRWUyNXBQaWhBTTEnICtcclxuICAgKiAgJ3U2eXRnYWFXZnMySHJ6MzVDSlQxK0VXbUFLWlc1a2MzUnlaV0Z0Q21WdVpHOWlhZ29LTnlBd0lHOWlhZ284UEFvdlUybDYnICtcclxuICAgKiAgJ1pTQTRDaTlTYjI5MElESWdNQ0JTQ2k5R2FXeDBaWElnTDBac1lYUmxSR1ZqYjJSbENpOVVlWEJsSUM5WVVtVm1DaTlNWlcnICtcclxuICAgKiAgJzVuZEdnZ016Z0tMMWNnV3lBeElESWdNaUJkQ2k5SmJtUmxlQ0JiSURBZ09DQmRDajQrQ25OMGNtVmhiUXA0bkJYRXdSRUEnICtcclxuICAgKiAgJ0VCQUVzQ3d6M3ZydlJtT095eU9vR2haZHV0SE4yTVQ1NWZJQVZvY0QrQXBsYm1SemRISmxZVzBLWlc1a2IySnFDZ3B6ZEcnICtcclxuICAgKiAgJ0Z5ZEhoeVpXWUtOVEV3Q2lVbFJVOUcnXHJcbiAgICpcclxuICAgKiBjb25zdCBkYXRhVXJpID0gJ2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnICsgYmFzZTY0XHJcbiAgICpcclxuICAgKiBjb25zdCBwZGZEb2MxID0gYXdhaXQgUERGRG9jdW1lbnQubG9hZChiYXNlNjQpXHJcbiAgICogY29uc3QgcGRmRG9jMiA9IGF3YWl0IFBERkRvY3VtZW50LmxvYWQoZGF0YVVyaSlcclxuICAgKlxyXG4gICAqIC8vIHBkZj1VaW50OEFycmF5XHJcbiAgICogaW1wb3J0IGZzIGZyb20gJ2ZzJ1xyXG4gICAqIGNvbnN0IHVpbnQ4QXJyYXkgPSBmcy5yZWFkRmlsZVN5bmMoJ3dpdGhfdXBkYXRlX3NlY3Rpb25zLnBkZicpXHJcbiAgICogY29uc3QgcGRmRG9jMyA9IGF3YWl0IFBERkRvY3VtZW50LmxvYWQodWludDhBcnJheSlcclxuICAgKlxyXG4gICAqIC8vIHBkZj1BcnJheUJ1ZmZlclxyXG4gICAqIGNvbnN0IHVybCA9ICdodHRwczovL3BkZi1saWIuanMub3JnL2Fzc2V0cy93aXRoX3VwZGF0ZV9zZWN0aW9ucy5wZGYnXHJcbiAgICogY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBmZXRjaCh1cmwpLnRoZW4ocmVzID0+IHJlcy5hcnJheUJ1ZmZlcigpKVxyXG4gICAqIGNvbnN0IHBkZkRvYzQgPSBhd2FpdCBQREZEb2N1bWVudC5sb2FkKGFycmF5QnVmZmVyKVxyXG4gICAqXHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGRmIFRoZSBpbnB1dCBkYXRhIGNvbnRhaW5pbmcgYSBQREYgZG9jdW1lbnQuXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuIGxvYWRpbmcgdGhlIGRvY3VtZW50LlxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggYSBkb2N1bWVudCBsb2FkZWQgZnJvbSB0aGUgaW5wdXQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBkZih2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fcGRmID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuX29wZW5QREYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGRmKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGRmO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmlyc3RTaWduYXR1cmVMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmaXJzdFNpZ25hdHVyZUZpZWxkOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlY29uZFNpZ25hdHVyZUxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlY29uZFNpZ25hdHVyZUZpZWxkOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNhdmVCdXR0b25MYWJlbDogc3RyaW5nID0gJ1NBVkUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjbGVhckJ1dHRvbkxhYmVsOiBzdHJpbmcgPSAnQ0xFQVInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaWduRG9jdW1lbnRCdXR0b25MYWJlbDogc3RyaW5nID0gJ1NJR05fRE9DVU1FTlQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5jZWxCdXR0b25MYWJlbDogc3RyaW5nID0gJ0NBTkNFTCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBwZGZTYXZlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNhbmNlbENsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW9uZS1kb2NzaWduJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1NpZ25hdHVyZVBvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTaWdCdXllcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaWdCdXllclBvc2l0aW9uOiBUZXh0RGltZW5zaW9uO1xyXG4gIHB1YmxpYyBzaG93U2lnU2VsbGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNpZ1NlbGxlclBvc2l0aW9uOiBUZXh0RGltZW5zaW9uO1xyXG4gIHB1YmxpYyBzaG93U2lnbmF0dXJlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgcGRmRG9jOiBQREZEb2N1bWVudDtcclxuXHJcbiAgcHJpdmF0ZSBfcGRmOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBzYXZlRmlyc3RTaWduYXR1cmUoc2lnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NhdmVTaWduYXR1cmUoc2lnLCB0aGlzLnNpZ0J1eWVyUG9zaXRpb24pO1xyXG4gICAgdGhpcy5zaG93U2lnQnV5ZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuX3NhdmVQZGYoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlU2Vjb25kU2lnbmF0dXJlKHNpZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zYXZlU2lnbmF0dXJlKHNpZywgdGhpcy5zaWdTZWxsZXJQb3NpdGlvbik7XHJcbiAgICB0aGlzLnNob3dTaWdTZWxsZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuX3NhdmVQZGYoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX29wZW5QREYoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBmaXJzdCBjcmVhdGUgcmVhZGVyIHRvIGNoZWNrIHNpZ25hdHVyZXNcclxuICAgIHRoaXMuX2NoZWNrU2lnbmF0dXJlcygpO1xyXG5cclxuICAgIHRoaXMucGRmRG9jID0gYXdhaXQgUERGRG9jdW1lbnQubG9hZCh0aGlzLl9wZGYsIHtcclxuICAgICAgdXBkYXRlTWV0YWRhdGE6IGZhbHNlXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHBkZkRhdGFVcmkgPSBhd2FpdCB0aGlzLnBkZkRvYy5zYXZlQXNCYXNlNjQoeyBkYXRhVXJpOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudC5zcmMgPSBwZGZEYXRhVXJpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2F2ZVBkZigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5zaG93U2lnQnV5ZXIgJiYgIXRoaXMuc2hvd1NpZ1NlbGxlcikge1xyXG4gICAgICAvLyByZWFkeSwgc2F2ZSB0aGUgcGRmIGFuZCBlbWl0IHJlc3VsdFxyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBkZkRvYy5zYXZlQXNCYXNlNjQoKTtcclxuICAgICAgdGhpcy5wZGZTYXZlZC5uZXh0KHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9jaGVja1NpZ25hdHVyZXMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcGRmV29ya2VyU3JjO1xyXG4gICAgaWYgKHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgncGRmV29ya2VyU3JjJykgJiZcclxuICAgICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS5wZGZXb3JrZXJTcmMgPT09ICdzdHJpbmcnICYmXHJcbiAgICAgICh3aW5kb3cgYXMgYW55KS5wZGZXb3JrZXJTcmMpIHtcclxuICAgICAgcGRmV29ya2VyU3JjID0gKHdpbmRvdyBhcyBhbnkpLnBkZldvcmtlclNyYztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBwZGZXb3JrZXJTcmMgPSBwZGZqc1dvcmtlcjtcclxuICAgIH1cclxuICAgIFBERkpTLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gcGRmV29ya2VyU3JjO1xyXG4gICAgY29uc3QgcGRmUmVhZGVyID0gYXdhaXQgUERGSlMuZ2V0RG9jdW1lbnQodGhpcy5fcGRmKS5wcm9taXNlO1xyXG4gICAgY29uc3QgbnVtUGFnZXMgPSBwZGZSZWFkZXIubnVtUGFnZXM7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVBhZ2VzOyBpKyspIHtcclxuICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHBkZlJlYWRlci5nZXRQYWdlKGkgKyAxKTtcclxuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHBhZ2UuZ2V0VGV4dENvbnRlbnQoKTtcclxuICAgICAgcGFnZS5jbGVhbnVwKCk7XHJcbiAgICAgIGlmICh0aGlzLmZpcnN0U2lnbmF0dXJlRmllbGQpIHtcclxuICAgICAgICB0aGlzLnNpZ0J1eWVyUG9zaXRpb24gPSB0aGlzLl9nZXRQb3NpdGlvblNpZ25hdHVyZSh0ZXh0LCB0aGlzLmZpcnN0U2lnbmF0dXJlRmllbGQpO1xyXG4gICAgICAgIGlmICh0aGlzLnNpZ0J1eWVyUG9zaXRpb24ud2lkdGggPiAwICYmIHRoaXMuc2lnQnV5ZXJQb3NpdGlvbi5oZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNpZ0J1eWVyUG9zaXRpb24ucGFnZSA9IGk7XHJcbiAgICAgICAgICB0aGlzLnNob3dTaWdCdXllciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNlY29uZFNpZ25hdHVyZUZpZWxkKSB7XHJcbiAgICAgICAgdGhpcy5zaWdTZWxsZXJQb3NpdGlvbiA9IHRoaXMuX2dldFBvc2l0aW9uU2lnbmF0dXJlKHRleHQsIHRoaXMuc2Vjb25kU2lnbmF0dXJlRmllbGQpO1xyXG4gICAgICAgIGlmICh0aGlzLnNpZ1NlbGxlclBvc2l0aW9uLndpZHRoID4gMCAmJiB0aGlzLnNpZ1NlbGxlclBvc2l0aW9uLmhlaWdodCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2lnU2VsbGVyUG9zaXRpb24ucGFnZSA9IGk7XHJcbiAgICAgICAgICB0aGlzLnNob3dTaWdTZWxsZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UG9zaXRpb25TaWduYXR1cmUodGV4dEl0ZW06IGFueSwgc2lnbmF0dXJlRmllbGQ6IHN0cmluZyk6IFRleHREaW1lbnNpb24ge1xyXG4gICAgY29uc3Qgc2lnSXRlbTogVGV4dEl0ZW0gPSA8VGV4dEl0ZW0+dGV4dEl0ZW0uaXRlbXMuZmluZCgoaTogYW55KSA9PiBpLnN0ci50b0xvd2VyQ2FzZSgpID09PSBzaWduYXR1cmVGaWVsZC50b0xvd2VyQ2FzZSgpKTtcclxuICAgIGlmIChzaWdJdGVtKSB7XHJcbiAgICAgIHRleHRJdGVtLml0ZW1zLnNsaWNlKHRleHRJdGVtLml0ZW1zLmluZGV4T2Yoc2lnSXRlbSksIDEpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHg6IHNpZ0l0ZW0udHJhbnNmb3JtWzRdLFxyXG4gICAgICAgIHk6IHNpZ0l0ZW0udHJhbnNmb3JtWzVdLFxyXG4gICAgICAgIHdpZHRoOiBzaWdJdGVtLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogc2lnSXRlbS5oZWlnaHQsXHJcbiAgICAgICAgcGFnZTogMFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwLCBwYWdlOiAwfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2F2ZVNpZ25hdHVyZShzaWc6IHN0cmluZywgZGltZW5zaW9uczogVGV4dERpbWVuc2lvbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QganBnSW1hZ2UgPSBhd2FpdCB0aGlzLnBkZkRvYy5lbWJlZFBuZyhzaWcpO1xyXG4gICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMucGRmRG9jLmdldFBhZ2UoZGltZW5zaW9ucy5wYWdlKTtcclxuICAgIHBhZ2UuZHJhd0ltYWdlKGpwZ0ltYWdlLCB7XHJcbiAgICAgIHg6ICgoZGltZW5zaW9ucy54ICsgKGRpbWVuc2lvbnMud2lkdGggLyAyKSkgLSAoMjAwIC8gMikpLFxyXG4gICAgICB5OiAoKGRpbWVuc2lvbnMueSArIChkaW1lbnNpb25zLmhlaWdodCAvIDIpKSAtICgxMDAgLyAyKSksXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICAgIGhlaWdodDogMTAwXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|