Changeset 3211412
- Timestamp:
- 12/21/2024 08:22:44 AM (16 months ago)
- Location:
- videomail-for-ninja-forms
- Files:
-
- 2 added
- 2 deleted
- 14 edited
- 1 copied
-
tags/7.0.0 (copied) (copied from videomail-for-ninja-forms/trunk)
-
tags/7.0.0/readme.txt (modified) (2 diffs)
-
tags/7.0.0/target/css/main.min.css (modified) (1 diff)
-
tags/7.0.0/target/js/main.min.js (modified) (1 diff)
-
tags/7.0.0/target/js/videomail-client/index.js (added)
-
tags/7.0.0/target/js/videomail-client/videomail-client.js (deleted)
-
tags/7.0.0/target/php/fields/videomail.php (modified) (1 diff)
-
tags/7.0.0/target/php/templates/fields-videomail.html (modified) (2 diffs)
-
tags/7.0.0/target/php/videomail.php (modified) (1 diff)
-
tags/7.0.0/videomail-for-ninja-forms.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/target/css/main.min.css (modified) (1 diff)
-
trunk/target/js/main.min.js (modified) (1 diff)
-
trunk/target/js/videomail-client/index.js (added)
-
trunk/target/js/videomail-client/videomail-client.js (deleted)
-
trunk/target/php/fields/videomail.php (modified) (1 diff)
-
trunk/target/php/templates/fields-videomail.html (modified) (2 diffs)
-
trunk/target/php/videomail.php (modified) (1 diff)
-
trunk/videomail-for-ninja-forms.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
videomail-for-ninja-forms/tags/7.0.0/readme.txt
r3151101 r3211412 1 1 === Videomail for Ninja Forms === 2 2 3 Contributors: michael.heuberger, kbjohnson90 3 4 Tags: video, email, recorder, sign language 4 5 5 6 Requires at least: 6.0 6 Tested up to: 6.6.27 Stable tag: 5.3.08 Requires PHP: 7.4.07 Tested up to: 7.0.0 8 Stable tag: 7.0.0 9 Requires PHP: 8.1.0 9 10 Donate link: https://videomail.io/faq 10 11 License: CC0-1.0 … … 70 71 71 72 == Changelog == 73 = 7.0.0 (21 Dec 2024) = 74 *Change:* 75 * After video processing, pick the correct API response (intelligence) 76 *Fix:* 77 * Revert invalid imports (ESM back to UMD) 78 *Improvement:* 79 * Better error messages (more human friendly) 80 81 = 6.0.0 (29 Nov 2024) = 82 *Change:* 83 * Upgrade Videomail-Client to v10 (15% faster) 84 72 85 = 5.3.0 (13 Sep 2024) = 73 86 *Improvement:* -
videomail-for-ninja-forms/tags/7.0.0/target/css/main.min.css
r3110104 r3211412 1 .nf-form-content .videomail-container .nf-error .nf-field-element:after,.nf-form-content .videomail-container .nf-pass .nf-field-element:after{display:none}.nf-form-content .videomail-container .nf-error .nf-field-element .ninja-forms-field.videomail,.nf-form-content .videomail-container .nf-pass .nf-field-element .ninja-forms-field.videomail{border:none}.nf-form-content .videomail-container .ninja-forms-field.videomail{padding:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier{padding:1em;background:rgba(30,30,30,.1)}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier h2{font-size:125%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier p{margin-bottom:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .pausedHeader{font-size:240%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordNote,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordTimer,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals video{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons{white-space:nowrap}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]{margin-top:5px;margin-right:.5em }.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button:focus,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]:focus{outline:0}1 .nf-form-content .videomail-container .nf-error .nf-field-element:after,.nf-form-content .videomail-container .nf-pass .nf-field-element:after{display:none}.nf-form-content .videomail-container .nf-error .nf-field-element .ninja-forms-field.videomail,.nf-form-content .videomail-container .nf-pass .nf-field-element .ninja-forms-field.videomail{border:none}.nf-form-content .videomail-container .ninja-forms-field.videomail{padding:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier{padding:1em;background:rgba(30,30,30,.1)}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier h2{font-size:125%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier p{margin-bottom:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .pausedHeader{font-size:240%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordNote,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordTimer,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals video{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons{white-space:nowrap}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]{margin-top:5px;margin-right:.5em;padding:.6em;cursor:pointer}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button:focus,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]:focus{outline:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button:disabled,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]:disabled{cursor:not-allowed;transition:none;opacity:.5} -
videomail-for-ninja-forms/tags/7.0.0/target/js/main.min.js
r3151101 r3211412 1 let DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient. default({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i}),this.videomailClient.on(this.videomailClient.events.PREVIEW,this.onPreview.bind(this)),this.videomailClient.on(this.videomailClient.events.SUBMITTED,this.onSubmitted.bind(this)),this.videomailClient.on(this.videomailClient.events.GOING_BACK,this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId());return i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{})},adjustFormDataBeforePostingToVideomailServer:function(e,i){var t=this.getFormValues();e.from=this.getMergeTagValue("email_from",t),e.to=this.getMergeTagValue("email_to",t),e.subject=this.getMergeTagValue("email_subject",t),e.body=this.getMergeTagValue("email_body",t),i(null,e)},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController});2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gbWFudWFsIHN3aXRjaCB0byBoYXZlIG1vcmUgc3R1ZmYgcHJpbnRlZCB0byBjb25zb2xlXG5sZXQgREVCVUcgPSBmYWxzZTtcblxuLy8gZ29vZCBkb2N1bWVudGF0aW9uIG9uIGJhY2tib25lIGV2ZW50IGhhbmRsaW5nXG4vLyBodHRwOi8vYmFja2JvbmVqcy5vcmcvI0V2ZW50c1xuXG5jb25zdCBWaWRlb21haWxGaWVsZENvbnRyb2xsZXIgPSBNYXJpb25ldHRlLk9iamVjdC5leHRlbmQoe1xuICB2aWRlb21haWxDbGllbnQ6IG51bGwsXG5cbiAgZmllbGRNb2RlbDogbnVsbCxcblxuICBjaGFubmVsOiBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwidmlkZW9tYWlsXCIpLFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IERFQlVHO1xuXG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImluaXQ6bW9kZWxcIiwgdGhpcy5yZWdpc3RlclZpZGVvbWFpbEZpZWxkKTtcbiAgICB0aGlzLmxpc3RlblRvT25jZSh0aGlzLmNoYW5uZWwsIFwiYXR0YWNoOnZpZXdcIiwgdGhpcy5sb2FkVmlkZW9tYWlsQ2xpZW50KTtcblxuICAgIC8vIHVnbHkgd29ya2Fyb3VuZCB0byBtYWtlIGl0IHdvcmsgd2l0aCB0aGUgY29uZGl0aW9uYWwgcGx1Z2luXG4gICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmNoYW5uZWwsIFwiYWxsXCIsIGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKFwiVmlkZW9tYWlsIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBldmVudE5hbWUpO1xuXG4gICAgICAvLyBtdXN0IGJlIGNvbWluZyBiYWNrIGZyb20gYSBtdWx0aS1zdGVwIHdoZXJlXG4gICAgICAvLyB2aWRlb21haWwgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4gc28ganVzdCByZXN1bWUgaXQuXG4gICAgICB0aGlzLmxpc3RlblRvKG5mUmFkaW8uY2hhbm5lbChcIm5mTVBcIiksIFwiY2hhbmdlOnBhcnRcIiwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIm5mTVAgY2hhbm5lbCBldmVudCB0cmlnZ2VyZWQ6XCIsIFwiY2hhbmdlOnBhcnRcIik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVscyA9XG4gICAgICAgICAgcGFyYW1zLmN1cnJlbnRFbGVtZW50Py5hdHRyaWJ1dGVzPy5mb3JtQ29udGVudERhdGE/Lm1vZGVscyB8fCBbXTtcblxuICAgICAgICBjb25zdCBjdXJyZW50Q2lkID0gdGhpcy5maWVsZE1vZGVsLmNpZDtcblxuICAgICAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBjdXJyZW50TW9kZWxzLmZpbmQoZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZGVsLmNpZCA9PT0gY3VycmVudENpZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRNb2RlbCkge1xuICAgICAgICAgIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnVubG9hZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBnZXRGb3JtSWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZE1vZGVsLmdldChcImZvcm1JRFwiKTtcbiAgfSxcblxuICByZWdpc3RlclZpZGVvbWFpbEZpZWxkOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIHRoaXMuZmllbGRNb2RlbCA9IGZpZWxkTW9kZWw7XG5cbiAgICAvLyBjdXN0b20gZmllbGQgdmFsaWRhdGlvbiwgc2luY2Ugd2UgYXJlbid0IHVzaW5nIGEgc3RhbmRhcmQgYHZhbHVlYFxuICAgIC8vIGZvciB0aGUgdmlkZW9tYWlsIGlucHV0XG4gICAgdGhpcy5jaGFubmVsLnJlcGx5KFwidmFsaWRhdGU6cmVxdWlyZWRcIiwgdGhpcy52YWxpZGF0ZVJlcXVpcmVkLCB0aGlzKTtcblxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOm1vZGVsRGF0YVwiLCB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsLCB0aGlzKTtcblxuICAgIC8vIGNvbnRyb2wgc3VibWlzc2lvbiBwcm9ncmVzcyxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBQT1NUIHRvIHRoZSBWaWRlb21haWwgc2VydmVyIGZpcnN0XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXBseShcbiAgICAgIFwibWF5YmU6c3VibWl0XCIsXG4gICAgICB0aGlzLm1heWJlU3VibWl0LFxuICAgICAgdGhpcyxcbiAgICAgIGZpZWxkTW9kZWwsXG4gICAgKTtcbiAgfSxcblxuICBsb2FkVmlkZW9tYWlsQ2xpZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiaW1hZ2VfcXVhbGl0eVwiKSB8fCA0MDtcblxuICAgIGlmIChpbWFnZVF1YWxpdHlQZXJjZW50YWdlID4gMTAwKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTAwO1xuICAgIH0gZWxzZSBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA8IDEpIHtcbiAgICAgIGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmJvc2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwidmVyYm9zZVwiKSB8fCBERUJVRztcblxuICAgIC8vIGxhdGUgb3ZlcnJpZGVzXG4gICAgREVCVUcgPSBERUJVRyB8fCB2ZXJib3NlO1xuICAgIEJhY2tib25lLlJhZGlvLkRFQlVHID0gQmFja2JvbmUuUmFkaW8uREVCVUcgfHwgdmVyYm9zZTtcblxuICAgI C8vIFRPRE8gRml4IGxhdGVyIG9uY2UgZnVsbHkgcG9ydGVkIHRvIEVTTmV4dFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQgPSBuZXcgVmlkZW9tYWlsQ2xpZW50LmRlZmF1bHQoe1xuICAgICAgc2l0ZU5hbWU6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJzaXRlX25hbWVcIiksXG4gICAgICB2aWRlbzoge1xuICAgICAgICBsaW1pdFNlY29uZHM6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJsaW1pdF9zZWNvbmRzXCIpIHx8IDkwLFxuICAgICAgICB3aWR0aDogdGhpcy5maWVsZE1vZGVsLmdldChcIndpZHRoXCIpIHx8IDMyMCxcbiAgICAgICAgLy8gVE9ETyBJbXBsZW1lbnQgb24gVkMgc2lkZVxuICAgICAgICBzdHJldGNoOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic3RyZXRjaFwiKSB8fCBmYWxzZSxcbiAgICAgICAgY291bnRkb3duOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiY291bnRkb3duXCIpIHx8IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGF1ZGlvOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJhdWRpb19lbmFibGVkXCIpLFxuICAgICAgfSxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIHF1YWxpdHk6IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgLyAxMDAsIC8vIG11c3QgYmUgYSBmbG9hdFxuICAgICAgfSxcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIixcbiAgICAgIH0sXG4gICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgLy8gdWdseSBuYW1lIGVoP1xuICAgICAgICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3Rpbmc6XG4gICAgICAgICAgdGhpcy5hZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlci5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICAgIC8vIHdoZW4gdHJ1ZSwgdXNlciBtZWRpYSBpcyBsb2FkZWQgb25seSB3aGVuIHJlY29yZCBidXR0b24gaXMgcHJlc3NlZFxuICAgICAgbG9hZFVzZXJNZWRpYU9uUmVjb3JkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibG9hZF91c2VyX21lZGlhX29uX3JlY29yZFwiKSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byB2YWxpZGF0ZSB0aGUgaW5wdXRzXG4gICAgICBlbmFibGVBdXRvVmFsaWRhdGlvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gZGVhbCB3aXRoIGZvcm0gc3VibWlzc2lvbnNcbiAgICAgIGVuYWJsZUF1dG9TdWJtaXNzaW9uOiBmYWxzZSxcblxuICAgICAgLy8gbG9nIGFjdGlvbnMvZXZlbnRzIHRvIGNvbnNvbGVcbiAgICAgIHZlcmJvc2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcbiAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LmV2ZW50cy5QUkVWSUVXLFxuICAgICAgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSxcbiAgICApO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5ldmVudHMuU1VCTUlUVEVELFxuICAgICAgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpLFxuICAgICk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcbiAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LmV2ZW50cy5HT0lOR19CQUNLLFxuICAgICAgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpLFxuICAgICk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIHRvZG8gaXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICB2aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvdXIgc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuICB9LFxuXG4gIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyOiBmdW5jdGlvbiAodmlkZW9tYWlsLCBjYikge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgY2IobnVsbCwgdmlkZW9tYWlsKTtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJsZXQiLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50IiwiZGVmYXVsdCIsInNpdGVOYW1lIiwidmlkZW8iLCJsaW1pdFNlY29uZHMiLCJ3aWR0aCIsInN0cmV0Y2giLCJjb3VudGRvd24iLCJhdWRpbyIsImVuYWJsZWQiLCJpbWFnZSIsInF1YWxpdHkiLCJzZWxlY3RvcnMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJvbiIsImV2ZW50cyIsIlBSRVZJRVciLCJvblByZXZpZXciLCJTVUJNSVRURUQiLCJvblN1Ym1pdHRlZCIsIkdPSU5HX0JBQ0siLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwidmlkZW9tYWlsIiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImNiIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiL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 let DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i}),this.videomailClient.on("PREVIEW",this.onPreview.bind(this)),this.videomailClient.on("SUBMITTED",this.onSubmitted.bind(this)),this.videomailClient.on("GOING_BACK",this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e.videomail),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId()),i=(i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{}));return i},adjustFormDataBeforePostingToVideomailServer:function(e){var i=this.getFormValues();return e.from=this.getMergeTagValue("email_from",i),e.to=this.getMergeTagValue("email_to",i),e.subject=this.getMergeTagValue("email_subject",i),e.body=this.getMergeTagValue("email_body",i),e},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController}); 2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gbWFudWFsIHN3aXRjaCB0byBoYXZlIG1vcmUgc3R1ZmYgcHJpbnRlZCB0byBjb25zb2xlXG5sZXQgREVCVUcgPSBmYWxzZTtcblxuLy8gZ29vZCBkb2N1bWVudGF0aW9uIG9uIGJhY2tib25lIGV2ZW50IGhhbmRsaW5nXG4vLyBodHRwOi8vYmFja2JvbmVqcy5vcmcvI0V2ZW50c1xuXG5jb25zdCBWaWRlb21haWxGaWVsZENvbnRyb2xsZXIgPSBNYXJpb25ldHRlLk9iamVjdC5leHRlbmQoe1xuICB2aWRlb21haWxDbGllbnQ6IG51bGwsXG5cbiAgZmllbGRNb2RlbDogbnVsbCxcblxuICBjaGFubmVsOiBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwidmlkZW9tYWlsXCIpLFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IERFQlVHO1xuXG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImluaXQ6bW9kZWxcIiwgdGhpcy5yZWdpc3RlclZpZGVvbWFpbEZpZWxkKTtcbiAgICB0aGlzLmxpc3RlblRvT25jZSh0aGlzLmNoYW5uZWwsIFwiYXR0YWNoOnZpZXdcIiwgdGhpcy5sb2FkVmlkZW9tYWlsQ2xpZW50KTtcblxuICAgIC8vIHVnbHkgd29ya2Fyb3VuZCB0byBtYWtlIGl0IHdvcmsgd2l0aCB0aGUgY29uZGl0aW9uYWwgcGx1Z2luXG4gICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmNoYW5uZWwsIFwiYWxsXCIsIGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKFwiVmlkZW9tYWlsIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBldmVudE5hbWUpO1xuXG4gICAgICAvLyBtdXN0IGJlIGNvbWluZyBiYWNrIGZyb20gYSBtdWx0aS1zdGVwIHdoZXJlXG4gICAgICAvLyB2aWRlb21haWwgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4gc28ganVzdCByZXN1bWUgaXQuXG4gICAgICB0aGlzLmxpc3RlblRvKG5mUmFkaW8uY2hhbm5lbChcIm5mTVBcIiksIFwiY2hhbmdlOnBhcnRcIiwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIm5mTVAgY2hhbm5lbCBldmVudCB0cmlnZ2VyZWQ6XCIsIFwiY2hhbmdlOnBhcnRcIik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVscyA9XG4gICAgICAgICAgcGFyYW1zLmN1cnJlbnRFbGVtZW50Py5hdHRyaWJ1dGVzPy5mb3JtQ29udGVudERhdGE/Lm1vZGVscyB8fCBbXTtcblxuICAgICAgICBjb25zdCBjdXJyZW50Q2lkID0gdGhpcy5maWVsZE1vZGVsLmNpZDtcblxuICAgICAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBjdXJyZW50TW9kZWxzLmZpbmQoZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZGVsLmNpZCA9PT0gY3VycmVudENpZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRNb2RlbCkge1xuICAgICAgICAgIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnVubG9hZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBnZXRGb3JtSWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZE1vZGVsLmdldChcImZvcm1JRFwiKTtcbiAgfSxcblxuICByZWdpc3RlclZpZGVvbWFpbEZpZWxkOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIHRoaXMuZmllbGRNb2RlbCA9IGZpZWxkTW9kZWw7XG5cbiAgICAvLyBjdXN0b20gZmllbGQgdmFsaWRhdGlvbiwgc2luY2Ugd2UgYXJlbid0IHVzaW5nIGEgc3RhbmRhcmQgYHZhbHVlYFxuICAgIC8vIGZvciB0aGUgdmlkZW9tYWlsIGlucHV0XG4gICAgdGhpcy5jaGFubmVsLnJlcGx5KFwidmFsaWRhdGU6cmVxdWlyZWRcIiwgdGhpcy52YWxpZGF0ZVJlcXVpcmVkLCB0aGlzKTtcblxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOm1vZGVsRGF0YVwiLCB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsLCB0aGlzKTtcblxuICAgIC8vIGNvbnRyb2wgc3VibWlzc2lvbiBwcm9ncmVzcyxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBQT1NUIHRvIHRoZSBWaWRlb21haWwgc2VydmVyIGZpcnN0XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXBseShcbiAgICAgIFwibWF5YmU6c3VibWl0XCIsXG4gICAgICB0aGlzLm1heWJlU3VibWl0LFxuICAgICAgdGhpcyxcbiAgICAgIGZpZWxkTW9kZWwsXG4gICAgKTtcbiAgfSxcblxuICBsb2FkVmlkZW9tYWlsQ2xpZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiaW1hZ2VfcXVhbGl0eVwiKSB8fCA0MDtcblxuICAgIGlmIChpbWFnZVF1YWxpdHlQZXJjZW50YWdlID4gMTAwKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTAwO1xuICAgIH0gZWxzZSBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA8IDEpIHtcbiAgICAgIGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmJvc2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwidmVyYm9zZVwiKSB8fCBERUJVRztcblxuICAgIC8vIGxhdGUgb3ZlcnJpZGVzXG4gICAgREVCVUcgPSBERUJVRyB8fCB2ZXJib3NlO1xuICAgIEJhY2tib25lLlJhZGlvLkRFQlVHID0gQmFja2JvbmUuUmFkaW8uREVCVUcgfHwgdmVyYm9zZTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50ID0gbmV3IFZpZGVvbWFpbENsaWVudC5WaWRlb21haWxDbGllbnQoe1xuICAgICAgc2l0ZU5hbWU6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJzaXRlX25hbWVcIiksXG4gICAgICB2aWRlbzoge1xuICAgICAgICBsaW1pdFNlY29uZHM6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJsaW1pdF9zZWNvbmRzXCIpIHx8IDkwLFxuICAgICAgICB3aWR0aDogdGhpcy5maWVsZE1vZGVsLmdldChcIndpZHRoXCIpIHx8IDMyMCxcbiAgICAgICAgLy8gVE9ETyBJbXBsZW1lbnQgb24gVkMgc2lkZVxuICAgICAgICBzdHJldGNoOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic3RyZXRjaFwiKSB8fCBmYWxzZSxcbiAgICAgICAgY291bnRkb3duOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiY291bnRkb3duXCIpIHx8IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGF1ZGlvOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJhdWRpb19lbmFibGVkXCIpLFxuICAgICAgfSxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIHF1YWxpdHk6IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgLyAxMDAsIC8vIG11c3QgYmUgYSBmbG9hdFxuICAgICAgfSxcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBjb250YWluZXJJZDogXCJ2aWRlb21haWxcIixcbiAgICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IFwiLnN1Ym1pdC13cmFwIGlucHV0XCIsXG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIHRvZG8gaXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsibGV0IiwiREVCVUciLCJWaWRlb21haWxGaWVsZENvbnRyb2xsZXIiLCJNYXJpb25ldHRlIiwiT2JqZWN0IiwiZXh0ZW5kIiwidmlkZW9tYWlsQ2xpZW50IiwiZmllbGRNb2RlbCIsImNoYW5uZWwiLCJCYWNrYm9uZSIsIlJhZGlvIiwiaW5pdGlhbGl6ZSIsInRoaXMiLCJsaXN0ZW5Ub09uY2UiLCJyZWdpc3RlclZpZGVvbWFpbEZpZWxkIiwibG9hZFZpZGVvbWFpbENsaWVudCIsImxpc3RlblRvIiwiZXZlbnROYW1lIiwiY29uc29sZSIsImxvZyIsIm5mUmFkaW8iLCJwYXJhbXMiLCJjdXJyZW50TW9kZWxzIiwiY3VycmVudEVsZW1lbnQiLCJhdHRyaWJ1dGVzIiwiZm9ybUNvbnRlbnREYXRhIiwibW9kZWxzIiwiY3VycmVudENpZCIsImNpZCIsImZpbmQiLCJtb2RlbCIsInVubG9hZCIsImdldEZvcm1JZCIsImdldCIsInJlcGx5IiwidmFsaWRhdGVSZXF1aXJlZCIsInZhbGlkYXRlVmlkZW9tYWlsIiwibWF5YmVTdWJtaXQiLCJpbWFnZVF1YWxpdHlQZXJjZW50YWdlIiwidmVyYm9zZSIsIlZpZGVvbWFpbENsaWVudCIsInNpdGVOYW1lIiwidmlkZW8iLCJsaW1pdFNlY29uZHMiLCJ3aWR0aCIsInN0cmV0Y2giLCJjb3VudGRvd24iLCJhdWRpbyIsImVuYWJsZWQiLCJpbWFnZSIsInF1YWxpdHkiLCJzZWxlY3RvcnMiLCJjb250YWluZXJJZCIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2FsbGJhY2tzIiwiYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nIiwiYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIiLCJiaW5kIiwibG9hZFVzZXJNZWRpYU9uUmVjb3JkIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3QiLCJib2R5Iiwib25CZWZvcmVEZXN0cm95IiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSJdLCJtYXBwaW5ncyI6IkFBQ0FBLElBQUlDLE1BQVEsQ0FBQSxFQUtOQyx5QkFBMkJDLFdBQVdDLE9BQU9DLE9BQU8sQ0FDeERDLGdCQUFpQixLQUVqQkMsV0FBWSxLQUVaQyxRQUFTQyxT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 -
videomail-for-ninja-forms/tags/7.0.0/target/php/fields/videomail.php
r2938652 r3211412 161 161 wp_enqueue_script( 162 162 'nf-videomail-client', 163 NF_Videomail::$jsUrl . 'videomail-client/ videomail-client.js',163 NF_Videomail::$jsUrl . 'videomail-client/index.js', 164 164 array(), 165 165 NF_Videomail::VERSION -
videomail-for-ninja-forms/tags/7.0.0/target/php/templates/fields-videomail.html
r2590089 r3211412 1 1 <script id="tmpl-nf-field-videomail" type="text/template"> 2 2 <div id='nf-field-{{{ data.id }}}' name='nf-field-{{{ data.id }}}' class='{{{ data.classes }}} nf-element videomail'> 3 < formid='videomail'>4 < divclass='buttons' style='display:none'>3 <div id='videomail'> 4 <section class='buttons' style='display:none'> 5 5 <input class='record' disabled='' type='button' title='Record video' value='Record' /> 6 6 <input class='pause' disabled='' type='button' title='Pause recording' value='Pause' /> … … 8 8 <input class='preview' disabled='' type='button' title='Stop recording and check video' value='Stop' /> 9 9 <input class='recordAgain' disabled='' type='button' title='Record video again' value='Record again' /> 10 </ div>11 </ form>10 </section> 11 </div> 12 12 <div id='viewVideo' style='display:none'> 13 13 <video class='replay' /> -
videomail-for-ninja-forms/tags/7.0.0/target/php/videomail.php
r3151101 r3211412 3 3 4 4 const NAME = 'Videomail'; 5 const VERSION = ' 5.3.0';5 const VERSION = '7.0.0'; 6 6 const AUTHOR = 'Michael Heuberger + Kyle B. Johnson'; 7 7 const SLUG = 'videomail'; -
videomail-for-ninja-forms/tags/7.0.0/videomail-for-ninja-forms.php
r3151101 r3211412 4 4 Plugin URI: https://github.com/binarykitchen/videomail-for-ninja-forms 5 5 Description: Express yourself in more than just words. Record and send a short video from your webcam. 6 Version: 5.3.06 Version: 7.0.0 7 7 Author: Michael Heuberger + Kyle B. Johnson 8 8 Author URI: https://videomail.io -
videomail-for-ninja-forms/trunk/readme.txt
r3151101 r3211412 1 1 === Videomail for Ninja Forms === 2 2 3 Contributors: michael.heuberger, kbjohnson90 3 4 Tags: video, email, recorder, sign language 4 5 5 6 Requires at least: 6.0 6 Tested up to: 6.6.27 Stable tag: 5.3.08 Requires PHP: 7.4.07 Tested up to: 7.0.0 8 Stable tag: 7.0.0 9 Requires PHP: 8.1.0 9 10 Donate link: https://videomail.io/faq 10 11 License: CC0-1.0 … … 70 71 71 72 == Changelog == 73 = 7.0.0 (21 Dec 2024) = 74 *Change:* 75 * After video processing, pick the correct API response (intelligence) 76 *Fix:* 77 * Revert invalid imports (ESM back to UMD) 78 *Improvement:* 79 * Better error messages (more human friendly) 80 81 = 6.0.0 (29 Nov 2024) = 82 *Change:* 83 * Upgrade Videomail-Client to v10 (15% faster) 84 72 85 = 5.3.0 (13 Sep 2024) = 73 86 *Improvement:* -
videomail-for-ninja-forms/trunk/target/css/main.min.css
r3110104 r3211412 1 .nf-form-content .videomail-container .nf-error .nf-field-element:after,.nf-form-content .videomail-container .nf-pass .nf-field-element:after{display:none}.nf-form-content .videomail-container .nf-error .nf-field-element .ninja-forms-field.videomail,.nf-form-content .videomail-container .nf-pass .nf-field-element .ninja-forms-field.videomail{border:none}.nf-form-content .videomail-container .ninja-forms-field.videomail{padding:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier{padding:1em;background:rgba(30,30,30,.1)}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier h2{font-size:125%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier p{margin-bottom:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .pausedHeader{font-size:240%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordNote,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordTimer,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals video{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons{white-space:nowrap}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]{margin-top:5px;margin-right:.5em }.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button:focus,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]:focus{outline:0}1 .nf-form-content .videomail-container .nf-error .nf-field-element:after,.nf-form-content .videomail-container .nf-pass .nf-field-element:after{display:none}.nf-form-content .videomail-container .nf-error .nf-field-element .ninja-forms-field.videomail,.nf-form-content .videomail-container .nf-pass .nf-field-element .ninja-forms-field.videomail{border:none}.nf-form-content .videomail-container .ninja-forms-field.videomail{padding:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier{padding:1em;background:rgba(30,30,30,.1)}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier h2{font-size:125%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier p{margin-bottom:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .pausedHeader{font-size:240%}.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .notifier,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordNote,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals .recordTimer,.nf-form-content .videomail-container .ninja-forms-field.videomail .visuals video{border-radius:2px}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons{white-space:nowrap}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]{margin-top:5px;margin-right:.5em;padding:.6em;cursor:pointer}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button:focus,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]:focus{outline:0}.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons button:disabled,.nf-form-content .videomail-container .ninja-forms-field.videomail .buttons input[type=button]:disabled{cursor:not-allowed;transition:none;opacity:.5} -
videomail-for-ninja-forms/trunk/target/js/main.min.js
r3151101 r3211412 1 let DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient. default({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i}),this.videomailClient.on(this.videomailClient.events.PREVIEW,this.onPreview.bind(this)),this.videomailClient.on(this.videomailClient.events.SUBMITTED,this.onSubmitted.bind(this)),this.videomailClient.on(this.videomailClient.events.GOING_BACK,this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId());return i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{})},adjustFormDataBeforePostingToVideomailServer:function(e,i){var t=this.getFormValues();e.from=this.getMergeTagValue("email_from",t),e.to=this.getMergeTagValue("email_to",t),e.subject=this.getMergeTagValue("email_subject",t),e.body=this.getMergeTagValue("email_body",t),i(null,e)},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController});2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gbWFudWFsIHN3aXRjaCB0byBoYXZlIG1vcmUgc3R1ZmYgcHJpbnRlZCB0byBjb25zb2xlXG5sZXQgREVCVUcgPSBmYWxzZTtcblxuLy8gZ29vZCBkb2N1bWVudGF0aW9uIG9uIGJhY2tib25lIGV2ZW50IGhhbmRsaW5nXG4vLyBodHRwOi8vYmFja2JvbmVqcy5vcmcvI0V2ZW50c1xuXG5jb25zdCBWaWRlb21haWxGaWVsZENvbnRyb2xsZXIgPSBNYXJpb25ldHRlLk9iamVjdC5leHRlbmQoe1xuICB2aWRlb21haWxDbGllbnQ6IG51bGwsXG5cbiAgZmllbGRNb2RlbDogbnVsbCxcblxuICBjaGFubmVsOiBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwidmlkZW9tYWlsXCIpLFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IERFQlVHO1xuXG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImluaXQ6bW9kZWxcIiwgdGhpcy5yZWdpc3RlclZpZGVvbWFpbEZpZWxkKTtcbiAgICB0aGlzLmxpc3RlblRvT25jZSh0aGlzLmNoYW5uZWwsIFwiYXR0YWNoOnZpZXdcIiwgdGhpcy5sb2FkVmlkZW9tYWlsQ2xpZW50KTtcblxuICAgIC8vIHVnbHkgd29ya2Fyb3VuZCB0byBtYWtlIGl0IHdvcmsgd2l0aCB0aGUgY29uZGl0aW9uYWwgcGx1Z2luXG4gICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmNoYW5uZWwsIFwiYWxsXCIsIGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKFwiVmlkZW9tYWlsIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBldmVudE5hbWUpO1xuXG4gICAgICAvLyBtdXN0IGJlIGNvbWluZyBiYWNrIGZyb20gYSBtdWx0aS1zdGVwIHdoZXJlXG4gICAgICAvLyB2aWRlb21haWwgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4gc28ganVzdCByZXN1bWUgaXQuXG4gICAgICB0aGlzLmxpc3RlblRvKG5mUmFkaW8uY2hhbm5lbChcIm5mTVBcIiksIFwiY2hhbmdlOnBhcnRcIiwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIm5mTVAgY2hhbm5lbCBldmVudCB0cmlnZ2VyZWQ6XCIsIFwiY2hhbmdlOnBhcnRcIik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVscyA9XG4gICAgICAgICAgcGFyYW1zLmN1cnJlbnRFbGVtZW50Py5hdHRyaWJ1dGVzPy5mb3JtQ29udGVudERhdGE/Lm1vZGVscyB8fCBbXTtcblxuICAgICAgICBjb25zdCBjdXJyZW50Q2lkID0gdGhpcy5maWVsZE1vZGVsLmNpZDtcblxuICAgICAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBjdXJyZW50TW9kZWxzLmZpbmQoZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZGVsLmNpZCA9PT0gY3VycmVudENpZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRNb2RlbCkge1xuICAgICAgICAgIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnVubG9hZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBnZXRGb3JtSWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZE1vZGVsLmdldChcImZvcm1JRFwiKTtcbiAgfSxcblxuICByZWdpc3RlclZpZGVvbWFpbEZpZWxkOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIHRoaXMuZmllbGRNb2RlbCA9IGZpZWxkTW9kZWw7XG5cbiAgICAvLyBjdXN0b20gZmllbGQgdmFsaWRhdGlvbiwgc2luY2Ugd2UgYXJlbid0IHVzaW5nIGEgc3RhbmRhcmQgYHZhbHVlYFxuICAgIC8vIGZvciB0aGUgdmlkZW9tYWlsIGlucHV0XG4gICAgdGhpcy5jaGFubmVsLnJlcGx5KFwidmFsaWRhdGU6cmVxdWlyZWRcIiwgdGhpcy52YWxpZGF0ZVJlcXVpcmVkLCB0aGlzKTtcblxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOm1vZGVsRGF0YVwiLCB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsLCB0aGlzKTtcblxuICAgIC8vIGNvbnRyb2wgc3VibWlzc2lvbiBwcm9ncmVzcyxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBQT1NUIHRvIHRoZSBWaWRlb21haWwgc2VydmVyIGZpcnN0XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXBseShcbiAgICAgIFwibWF5YmU6c3VibWl0XCIsXG4gICAgICB0aGlzLm1heWJlU3VibWl0LFxuICAgICAgdGhpcyxcbiAgICAgIGZpZWxkTW9kZWwsXG4gICAgKTtcbiAgfSxcblxuICBsb2FkVmlkZW9tYWlsQ2xpZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiaW1hZ2VfcXVhbGl0eVwiKSB8fCA0MDtcblxuICAgIGlmIChpbWFnZVF1YWxpdHlQZXJjZW50YWdlID4gMTAwKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTAwO1xuICAgIH0gZWxzZSBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA8IDEpIHtcbiAgICAgIGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmJvc2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwidmVyYm9zZVwiKSB8fCBERUJVRztcblxuICAgIC8vIGxhdGUgb3ZlcnJpZGVzXG4gICAgREVCVUcgPSBERUJVRyB8fCB2ZXJib3NlO1xuICAgIEJhY2tib25lLlJhZGlvLkRFQlVHID0gQmFja2JvbmUuUmFkaW8uREVCVUcgfHwgdmVyYm9zZTtcblxuICAgI C8vIFRPRE8gRml4IGxhdGVyIG9uY2UgZnVsbHkgcG9ydGVkIHRvIEVTTmV4dFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQgPSBuZXcgVmlkZW9tYWlsQ2xpZW50LmRlZmF1bHQoe1xuICAgICAgc2l0ZU5hbWU6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJzaXRlX25hbWVcIiksXG4gICAgICB2aWRlbzoge1xuICAgICAgICBsaW1pdFNlY29uZHM6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJsaW1pdF9zZWNvbmRzXCIpIHx8IDkwLFxuICAgICAgICB3aWR0aDogdGhpcy5maWVsZE1vZGVsLmdldChcIndpZHRoXCIpIHx8IDMyMCxcbiAgICAgICAgLy8gVE9ETyBJbXBsZW1lbnQgb24gVkMgc2lkZVxuICAgICAgICBzdHJldGNoOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic3RyZXRjaFwiKSB8fCBmYWxzZSxcbiAgICAgICAgY291bnRkb3duOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiY291bnRkb3duXCIpIHx8IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGF1ZGlvOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJhdWRpb19lbmFibGVkXCIpLFxuICAgICAgfSxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIHF1YWxpdHk6IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgLyAxMDAsIC8vIG11c3QgYmUgYSBmbG9hdFxuICAgICAgfSxcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIixcbiAgICAgIH0sXG4gICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgLy8gdWdseSBuYW1lIGVoP1xuICAgICAgICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3Rpbmc6XG4gICAgICAgICAgdGhpcy5hZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlci5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICAgIC8vIHdoZW4gdHJ1ZSwgdXNlciBtZWRpYSBpcyBsb2FkZWQgb25seSB3aGVuIHJlY29yZCBidXR0b24gaXMgcHJlc3NlZFxuICAgICAgbG9hZFVzZXJNZWRpYU9uUmVjb3JkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibG9hZF91c2VyX21lZGlhX29uX3JlY29yZFwiKSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byB2YWxpZGF0ZSB0aGUgaW5wdXRzXG4gICAgICBlbmFibGVBdXRvVmFsaWRhdGlvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gZGVhbCB3aXRoIGZvcm0gc3VibWlzc2lvbnNcbiAgICAgIGVuYWJsZUF1dG9TdWJtaXNzaW9uOiBmYWxzZSxcblxuICAgICAgLy8gbG9nIGFjdGlvbnMvZXZlbnRzIHRvIGNvbnNvbGVcbiAgICAgIHZlcmJvc2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcbiAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LmV2ZW50cy5QUkVWSUVXLFxuICAgICAgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSxcbiAgICApO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5ldmVudHMuU1VCTUlUVEVELFxuICAgICAgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpLFxuICAgICk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcbiAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LmV2ZW50cy5HT0lOR19CQUNLLFxuICAgICAgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpLFxuICAgICk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIHRvZG8gaXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICB2aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvdXIgc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuICB9LFxuXG4gIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyOiBmdW5jdGlvbiAodmlkZW9tYWlsLCBjYikge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgY2IobnVsbCwgdmlkZW9tYWlsKTtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJsZXQiLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50IiwiZGVmYXVsdCIsInNpdGVOYW1lIiwidmlkZW8iLCJsaW1pdFNlY29uZHMiLCJ3aWR0aCIsInN0cmV0Y2giLCJjb3VudGRvd24iLCJhdWRpbyIsImVuYWJsZWQiLCJpbWFnZSIsInF1YWxpdHkiLCJzZWxlY3RvcnMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJvbiIsImV2ZW50cyIsIlBSRVZJRVciLCJvblByZXZpZXciLCJTVUJNSVRURUQiLCJvblN1Ym1pdHRlZCIsIkdPSU5HX0JBQ0siLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwidmlkZW9tYWlsIiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImNiIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiL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 let DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i}),this.videomailClient.on("PREVIEW",this.onPreview.bind(this)),this.videomailClient.on("SUBMITTED",this.onSubmitted.bind(this)),this.videomailClient.on("GOING_BACK",this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e.videomail),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId()),i=(i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{}));return i},adjustFormDataBeforePostingToVideomailServer:function(e){var i=this.getFormValues();return e.from=this.getMergeTagValue("email_from",i),e.to=this.getMergeTagValue("email_to",i),e.subject=this.getMergeTagValue("email_subject",i),e.body=this.getMergeTagValue("email_body",i),e},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController}); 2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gbWFudWFsIHN3aXRjaCB0byBoYXZlIG1vcmUgc3R1ZmYgcHJpbnRlZCB0byBjb25zb2xlXG5sZXQgREVCVUcgPSBmYWxzZTtcblxuLy8gZ29vZCBkb2N1bWVudGF0aW9uIG9uIGJhY2tib25lIGV2ZW50IGhhbmRsaW5nXG4vLyBodHRwOi8vYmFja2JvbmVqcy5vcmcvI0V2ZW50c1xuXG5jb25zdCBWaWRlb21haWxGaWVsZENvbnRyb2xsZXIgPSBNYXJpb25ldHRlLk9iamVjdC5leHRlbmQoe1xuICB2aWRlb21haWxDbGllbnQ6IG51bGwsXG5cbiAgZmllbGRNb2RlbDogbnVsbCxcblxuICBjaGFubmVsOiBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwidmlkZW9tYWlsXCIpLFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IERFQlVHO1xuXG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImluaXQ6bW9kZWxcIiwgdGhpcy5yZWdpc3RlclZpZGVvbWFpbEZpZWxkKTtcbiAgICB0aGlzLmxpc3RlblRvT25jZSh0aGlzLmNoYW5uZWwsIFwiYXR0YWNoOnZpZXdcIiwgdGhpcy5sb2FkVmlkZW9tYWlsQ2xpZW50KTtcblxuICAgIC8vIHVnbHkgd29ya2Fyb3VuZCB0byBtYWtlIGl0IHdvcmsgd2l0aCB0aGUgY29uZGl0aW9uYWwgcGx1Z2luXG4gICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmNoYW5uZWwsIFwiYWxsXCIsIGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKFwiVmlkZW9tYWlsIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBldmVudE5hbWUpO1xuXG4gICAgICAvLyBtdXN0IGJlIGNvbWluZyBiYWNrIGZyb20gYSBtdWx0aS1zdGVwIHdoZXJlXG4gICAgICAvLyB2aWRlb21haWwgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZC4gc28ganVzdCByZXN1bWUgaXQuXG4gICAgICB0aGlzLmxpc3RlblRvKG5mUmFkaW8uY2hhbm5lbChcIm5mTVBcIiksIFwiY2hhbmdlOnBhcnRcIiwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIm5mTVAgY2hhbm5lbCBldmVudCB0cmlnZ2VyZWQ6XCIsIFwiY2hhbmdlOnBhcnRcIik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVscyA9XG4gICAgICAgICAgcGFyYW1zLmN1cnJlbnRFbGVtZW50Py5hdHRyaWJ1dGVzPy5mb3JtQ29udGVudERhdGE/Lm1vZGVscyB8fCBbXTtcblxuICAgICAgICBjb25zdCBjdXJyZW50Q2lkID0gdGhpcy5maWVsZE1vZGVsLmNpZDtcblxuICAgICAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBjdXJyZW50TW9kZWxzLmZpbmQoZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZGVsLmNpZCA9PT0gY3VycmVudENpZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRNb2RlbCkge1xuICAgICAgICAgIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnVubG9hZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBnZXRGb3JtSWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZE1vZGVsLmdldChcImZvcm1JRFwiKTtcbiAgfSxcblxuICByZWdpc3RlclZpZGVvbWFpbEZpZWxkOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIHRoaXMuZmllbGRNb2RlbCA9IGZpZWxkTW9kZWw7XG5cbiAgICAvLyBjdXN0b20gZmllbGQgdmFsaWRhdGlvbiwgc2luY2Ugd2UgYXJlbid0IHVzaW5nIGEgc3RhbmRhcmQgYHZhbHVlYFxuICAgIC8vIGZvciB0aGUgdmlkZW9tYWlsIGlucHV0XG4gICAgdGhpcy5jaGFubmVsLnJlcGx5KFwidmFsaWRhdGU6cmVxdWlyZWRcIiwgdGhpcy52YWxpZGF0ZVJlcXVpcmVkLCB0aGlzKTtcblxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOm1vZGVsRGF0YVwiLCB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsLCB0aGlzKTtcblxuICAgIC8vIGNvbnRyb2wgc3VibWlzc2lvbiBwcm9ncmVzcyxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBQT1NUIHRvIHRoZSBWaWRlb21haWwgc2VydmVyIGZpcnN0XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXBseShcbiAgICAgIFwibWF5YmU6c3VibWl0XCIsXG4gICAgICB0aGlzLm1heWJlU3VibWl0LFxuICAgICAgdGhpcyxcbiAgICAgIGZpZWxkTW9kZWwsXG4gICAgKTtcbiAgfSxcblxuICBsb2FkVmlkZW9tYWlsQ2xpZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiaW1hZ2VfcXVhbGl0eVwiKSB8fCA0MDtcblxuICAgIGlmIChpbWFnZVF1YWxpdHlQZXJjZW50YWdlID4gMTAwKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTAwO1xuICAgIH0gZWxzZSBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA8IDEpIHtcbiAgICAgIGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmJvc2UgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwidmVyYm9zZVwiKSB8fCBERUJVRztcblxuICAgIC8vIGxhdGUgb3ZlcnJpZGVzXG4gICAgREVCVUcgPSBERUJVRyB8fCB2ZXJib3NlO1xuICAgIEJhY2tib25lLlJhZGlvLkRFQlVHID0gQmFja2JvbmUuUmFkaW8uREVCVUcgfHwgdmVyYm9zZTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50ID0gbmV3IFZpZGVvbWFpbENsaWVudC5WaWRlb21haWxDbGllbnQoe1xuICAgICAgc2l0ZU5hbWU6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJzaXRlX25hbWVcIiksXG4gICAgICB2aWRlbzoge1xuICAgICAgICBsaW1pdFNlY29uZHM6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJsaW1pdF9zZWNvbmRzXCIpIHx8IDkwLFxuICAgICAgICB3aWR0aDogdGhpcy5maWVsZE1vZGVsLmdldChcIndpZHRoXCIpIHx8IDMyMCxcbiAgICAgICAgLy8gVE9ETyBJbXBsZW1lbnQgb24gVkMgc2lkZVxuICAgICAgICBzdHJldGNoOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic3RyZXRjaFwiKSB8fCBmYWxzZSxcbiAgICAgICAgY291bnRkb3duOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiY291bnRkb3duXCIpIHx8IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGF1ZGlvOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJhdWRpb19lbmFibGVkXCIpLFxuICAgICAgfSxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIHF1YWxpdHk6IGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgLyAxMDAsIC8vIG11c3QgYmUgYSBmbG9hdFxuICAgICAgfSxcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBjb250YWluZXJJZDogXCJ2aWRlb21haWxcIixcbiAgICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IFwiLnN1Ym1pdC13cmFwIGlucHV0XCIsXG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIHRvZG8gaXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsibGV0IiwiREVCVUciLCJWaWRlb21haWxGaWVsZENvbnRyb2xsZXIiLCJNYXJpb25ldHRlIiwiT2JqZWN0IiwiZXh0ZW5kIiwidmlkZW9tYWlsQ2xpZW50IiwiZmllbGRNb2RlbCIsImNoYW5uZWwiLCJCYWNrYm9uZSIsIlJhZGlvIiwiaW5pdGlhbGl6ZSIsInRoaXMiLCJsaXN0ZW5Ub09uY2UiLCJyZWdpc3RlclZpZGVvbWFpbEZpZWxkIiwibG9hZFZpZGVvbWFpbENsaWVudCIsImxpc3RlblRvIiwiZXZlbnROYW1lIiwiY29uc29sZSIsImxvZyIsIm5mUmFkaW8iLCJwYXJhbXMiLCJjdXJyZW50TW9kZWxzIiwiY3VycmVudEVsZW1lbnQiLCJhdHRyaWJ1dGVzIiwiZm9ybUNvbnRlbnREYXRhIiwibW9kZWxzIiwiY3VycmVudENpZCIsImNpZCIsImZpbmQiLCJtb2RlbCIsInVubG9hZCIsImdldEZvcm1JZCIsImdldCIsInJlcGx5IiwidmFsaWRhdGVSZXF1aXJlZCIsInZhbGlkYXRlVmlkZW9tYWlsIiwibWF5YmVTdWJtaXQiLCJpbWFnZVF1YWxpdHlQZXJjZW50YWdlIiwidmVyYm9zZSIsIlZpZGVvbWFpbENsaWVudCIsInNpdGVOYW1lIiwidmlkZW8iLCJsaW1pdFNlY29uZHMiLCJ3aWR0aCIsInN0cmV0Y2giLCJjb3VudGRvd24iLCJhdWRpbyIsImVuYWJsZWQiLCJpbWFnZSIsInF1YWxpdHkiLCJzZWxlY3RvcnMiLCJjb250YWluZXJJZCIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2FsbGJhY2tzIiwiYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nIiwiYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIiLCJiaW5kIiwibG9hZFVzZXJNZWRpYU9uUmVjb3JkIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3QiLCJib2R5Iiwib25CZWZvcmVEZXN0cm95IiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSJdLCJtYXBwaW5ncyI6IkFBQ0FBLElBQUlDLE1BQVEsQ0FBQSxFQUtOQyx5QkFBMkJDLFdBQVdDLE9BQU9DLE9BQU8sQ0FDeERDLGdCQUFpQixLQUVqQkMsV0FBWSxLQUVaQyxRQUFTQyxT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 -
videomail-for-ninja-forms/trunk/target/php/fields/videomail.php
r2938652 r3211412 161 161 wp_enqueue_script( 162 162 'nf-videomail-client', 163 NF_Videomail::$jsUrl . 'videomail-client/ videomail-client.js',163 NF_Videomail::$jsUrl . 'videomail-client/index.js', 164 164 array(), 165 165 NF_Videomail::VERSION -
videomail-for-ninja-forms/trunk/target/php/templates/fields-videomail.html
r2590089 r3211412 1 1 <script id="tmpl-nf-field-videomail" type="text/template"> 2 2 <div id='nf-field-{{{ data.id }}}' name='nf-field-{{{ data.id }}}' class='{{{ data.classes }}} nf-element videomail'> 3 < formid='videomail'>4 < divclass='buttons' style='display:none'>3 <div id='videomail'> 4 <section class='buttons' style='display:none'> 5 5 <input class='record' disabled='' type='button' title='Record video' value='Record' /> 6 6 <input class='pause' disabled='' type='button' title='Pause recording' value='Pause' /> … … 8 8 <input class='preview' disabled='' type='button' title='Stop recording and check video' value='Stop' /> 9 9 <input class='recordAgain' disabled='' type='button' title='Record video again' value='Record again' /> 10 </ div>11 </ form>10 </section> 11 </div> 12 12 <div id='viewVideo' style='display:none'> 13 13 <video class='replay' /> -
videomail-for-ninja-forms/trunk/target/php/videomail.php
r3151101 r3211412 3 3 4 4 const NAME = 'Videomail'; 5 const VERSION = ' 5.3.0';5 const VERSION = '7.0.0'; 6 6 const AUTHOR = 'Michael Heuberger + Kyle B. Johnson'; 7 7 const SLUG = 'videomail'; -
videomail-for-ninja-forms/trunk/videomail-for-ninja-forms.php
r3151101 r3211412 4 4 Plugin URI: https://github.com/binarykitchen/videomail-for-ninja-forms 5 5 Description: Express yourself in more than just words. Record and send a short video from your webcam. 6 Version: 5.3.06 Version: 7.0.0 7 7 Author: Michael Heuberger + Kyle B. Johnson 8 8 Author URI: https://videomail.io
Note: See TracChangeset
for help on using the changeset viewer.