Changeset 3388250
- Timestamp:
- 11/02/2025 05:49:02 AM (5 months ago)
- Location:
- videomail-for-ninja-forms
- Files:
-
- 10 edited
- 1 copied
-
tags/9.0.1 (copied) (copied from videomail-for-ninja-forms/trunk)
-
tags/9.0.1/readme.txt (modified) (2 diffs)
-
tags/9.0.1/target/js/main-min.js (modified) (1 diff)
-
tags/9.0.1/target/js/videomail-client/index-min.js (modified) (30 diffs)
-
tags/9.0.1/target/php/videomail.php (modified) (1 diff)
-
tags/9.0.1/videomail-for-ninja-forms.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/target/js/main-min.js (modified) (1 diff)
-
trunk/target/js/videomail-client/index-min.js (modified) (30 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/9.0.1/readme.txt
r3381582 r3388250 1 1 === Videomail for Ninja Forms === 2 3 2 Contributors: michael.heuberger, kbjohnson90 4 3 Tags: video, email, recorder, sign language 5 6 4 Requires at least: 6.0 7 5 Tested up to: 6.8.2 8 Stable tag: 9.0. 06 Stable tag: 9.0.1 9 7 Requires PHP: 8.1.0 10 8 Donate link: https://videomail.io/faq 11 9 License: CC0-1.0 12 10 13 Record videos inNinja Forms!11 Record videos with audio or in Sign Language with Ninja Forms! 14 12 15 13 == Description == 14 16 15 With this add-on recording and sending videos in WordPress *finally* comes true. No further coding required. Just install + configure a bit (like duration, width or enable audio etc) and that’s all. Wicked. 17 16 … … 71 70 72 71 == Changelog == 72 73 = 9.0.1 (2 Nov 2025) = 74 **Improvement** 75 * More user friendlier error messages for missing inputs 76 77 **Change:** 78 * Include recording location which will assist investigating technical issues 79 80 **Fix** 81 * Rename wrong option name from ninjaFormPlugin to videomailNinjaFormPlugin 82 83 **Chore** 84 * Upgrade VC dependency 85 73 86 = 9.0.0 (21 Oct 2025) = 74 87 **Change:** -
videomail-for-ninja-forms/tags/9.0.1/target/js/main-min.js
r3381582 r3388250 1 let PLUGIN_VERSION="9.0. 0",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{ninjaFormPlugin:PLUGIN_VERSION}}),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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4 wXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgbmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwibmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSx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 let PLUGIN_VERSION="9.0.1",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{videomailNinjaFormPlugin:PLUGIN_VERSION}}),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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4xXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgdmlkZW9tYWlsTmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwidmlkZW9tYWlsTmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSxJQUFNQSxlQUFpQixRQUduQkMsTUFBUSxDQUFBLEVBS05DLHlCQUEyQkMsV0FBV0MsT0FBT0MsT0FBTyxDQUN4REMsZ0JBQWlCLEtBRWpCQyxXQUFZLEtBRVpDLFFBQVNDLFNBQVNDLE1BQU1GLFFBQVEsV0FBVyxFQUUzQ0csV0FBWSxXQUNWRixTQUFTQyxNQUFNVCxNQUFRQSxNQUV2QlcsS0FBS0MsYUFBYUQsS0FBS0osUUFBUyxhQUFjSSxLQUFLRSxzQkFBc0IsRUFDekVGLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsY0FBZUksS0FBS0csbUJBQW1CLEVBR3ZFSCxLQUFLSSxTQUFTSixLQUFLSixRQUFTLE1BQU8sU0FBVVMsR0FDM0NoQixPQUFTaUIsUUFBUUMsSUFBSSxxQ0FBc0NGLENBQVMsRUFJcEVMLEtBQUtJLFNBQVNJLFFBQVFaLFFBQVEsTUFBTSxFQUFHLGNBQWUsU0FBVWEsR0FDOURwQixPQUFTaUIsUUFBUUMsSUFBSSxnQ0FBaUMsYUFBYSxFQUU3REcsRUFDSkQsRUFBT0UsZ0JBQWdCQyxZQUFZQyxpQkFBaUJDLFFBQVUsR0FFaEUsSUFBTUMsRUFBYWYsS0FBS0wsV0FBV3FCLElBRWROLEVBQWNPLEtBQUssU0FBVUMsR0FDaEQsT0FBT0EsRUFBTUYsTUFBUUQsQ0FDdkIsQ0FBQyxFQUdDZixLQUFLRyxvQkFBb0IsRUFFekJILEtBQUtOLGdCQUFnQnlCLE9BQU8sQ0FFaEMsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVBQyxVQUFXLFdBQ1QsT0FBT3BCLEtBQUtMLFdBQVcwQixJQUFJLFFBQVEsQ0FDckMsRUFFQW5CLHVCQUF3QixTQUFVUCxHQUNoQ0ssS0FBS0ws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 -
videomail-for-ninja-forms/tags/9.0.1/target/js/videomail-client/index-min.js
r3381582 r3388250 6 6 })(globalThis, ()=>(()=>{ 7 7 var __webpack_modules__ = { 8 "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1 2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {8 "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) { 9 9 "use strict"; 10 10 __webpack_require__.d(__webpack_exports__, { … … 10671 10671 var client_default = /*#__PURE__*/ __webpack_require__.n(client); 10672 10672 var package_namespaceObject = { 10673 rE: "13. 0.0"10673 rE: "13.2.0" 10674 10674 }; 10675 10675 var defined = __webpack_require__("./node_modules/defined/index.js"); … … 13948 13948 } 13949 13949 const util_pretty = pretty; 13950 class HTTPVideomailError _HTTPVideomailErrorextends Error {13950 class HTTPVideomailError extends Error { 13951 13951 code; 13952 13952 status; 13953 13953 explanation; 13954 13954 } 13955 const HTTPVideomailError = HTTPVideomailError_HTTPVideomailError;13956 class VideomailError extends HTTPVideomailError {13955 const error_HTTPVideomailError = HTTPVideomailError; 13956 class VideomailError extends error_HTTPVideomailError { 13957 13957 title = "Error from videomail-client npm package"; 13958 13958 location = window.location.href; … … 14317 14317 } 14318 14318 const util_Despot = Despot; 14319 function getValidity(element) { 14320 const validity = "validity" in element ? element.validity : void 0; 14321 return validity; 14322 } 14323 const util_getValidity = getValidity; 14319 14324 function hideElement(element) { 14320 14325 if (!element) return; … … 14406 14411 const name = formControl.getAttribute("name"); 14407 14412 if (name) { 14408 const value = videomail[name];14413 let value = videomail[name]; 14409 14414 const tagName = formControl.tagName; 14415 if (this.options.callbacks.adjustFormValueBeforePopulating) value = this.options.callbacks.adjustFormValueBeforePopulating(name, value, videomail); 14410 14416 switch(tagName){ 14411 14417 case "INPUT": … … 14573 14579 const elements = this.getRegisteredFormElements(); 14574 14580 for (const element of elements){ 14575 const validity = "validity" in element ? element.validity : void 0;14581 const validity = util_getValidity(element); 14576 14582 if (!validity?.valid) return element; 14577 14583 } … … 14596 14602 const message = body.error.message; 14597 14603 const cause = body.error.cause; 14598 const error = new HTTPVideomailError(message, {14604 const error = new error_HTTPVideomailError(message, { 14599 14605 cause 14600 14606 }); … … 14705 14711 const newVideomail = this.applyDefaultValues(videomail); 14706 14712 newVideomail[constants.VERSION_LABEL] = package_namespaceObject.rE; 14713 newVideomail.recordLocation = window.location.href; 14707 14714 try { 14708 14715 let res; … … 14859 14866 loadUserMediaOnRecord: false, 14860 14867 callbacks: { 14861 adjustFormDataBeforePosting: void 0 14868 adjustFormDataBeforePosting: void 0, 14869 adjustFormValueBeforePopulating: void 0 14862 14870 }, 14863 14871 defaults: { … … 14924 14932 } 14925 14933 const util_isTest = isTest; 14926 function mergeWithDefaultOptions _mergeWithDefaultOptions(options = {}) {14934 function mergeWithDefaultOptions(options = {}) { 14927 14935 const newOptions = cjs_default()(src_options, options, { 14928 14936 arrayMerge (_destination, source) { … … 14935 14943 return newOptions; 14936 14944 } 14937 const mergeWithDefaultOptions = mergeWithDefaultOptions_mergeWithDefaultOptions;14945 const options_mergeWithDefaultOptions = mergeWithDefaultOptions; 14938 14946 var injectStylesIntoStyleTag = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/injectStylesIntoStyleTag.js"); 14939 14947 var injectStylesIntoStyleTag_default = /*#__PURE__*/ __webpack_require__.n(injectStylesIntoStyleTag); … … 14948 14956 var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js"); 14949 14957 var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform); 14950 var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1 2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl");14958 var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl"); 14951 14959 var main_options = {}; 14952 14960 main_options.styleTagTransform = styleTagTransform_default(); … … 14969 14977 } 14970 14978 const dimensions_limitHeight = limitHeight; 14971 function getOuterWidth _getOuterWidth(element) {14979 function getOuterWidth(element) { 14972 14980 let rect = element.getBoundingClientRect(); 14973 14981 let outerWidth = rect.right - rect.left; … … 14978 14986 return outerWidth; 14979 14987 } 14980 const getOuterWidth = getOuterWidth_getOuterWidth;14988 const dimensions_getOuterWidth = getOuterWidth; 14981 14989 function limitWidth(element, options, width) { 14982 14990 let limitedWidth; 14983 const outerWidth = getOuterWidth(element);14991 const outerWidth = dimensions_getOuterWidth(element); 14984 14992 limitedWidth = width && "number" == typeof width ? outerWidth > 0 && outerWidth < width ? outerWidth : width : outerWidth; 14985 14993 if (Number.isInteger(limitedWidth) && limitedWidth < 1) throw error_createError({ … … 15414 15422 } 15415 15423 const buttons = Buttons; 15416 function isHidden _isHidden(element) {15424 function isHidden(element) { 15417 15425 if (!element) return true; 15418 15426 const display = element.style.getPropertyValue("display"); 15419 15427 return display.includes("none"); 15420 15428 } 15421 const isHidden = isHidden_isHidden;15429 const html_isHidden = isHidden; 15422 15430 class Countdown { 15423 15431 visuals; … … 16019 16027 isVisible() { 16020 16028 if (!this.built) return false; 16021 return this.notifyElement && ! isHidden(this.notifyElement);16029 return this.notifyElement && !html_isHidden(this.notifyElement); 16022 16030 } 16023 16031 isBuilt() { … … 16136 16144 } 16137 16145 const dimensions_figureMinHeight = figureMinHeight; 16138 function getRatio _getRatio(options, videoHeight, videoWidth) {16146 function getRatio(options, videoHeight, videoWidth) { 16139 16147 let ratio = 1; 16140 16148 const hasVideoDimensions = videoHeight && videoWidth; … … 16146 16154 return ratio; 16147 16155 } 16148 const getRatio = getRatio_getRatio;16156 const dimensions_getRatio = getRatio; 16149 16157 function calculateHeight(responsive, videoWidth, options, target, ratio, element) { 16150 16158 let width = videoWidth; … … 16154 16162 }); 16155 16163 if (responsive && element) width = dimensions_limitWidth(element, options, width); 16156 const chosenRatio = ratio ?? getRatio(options, void 0, videoWidth);16164 const chosenRatio = ratio ?? dimensions_getRatio(options, void 0, videoWidth); 16157 16165 const height = Math.round(width * chosenRatio); 16158 16166 if (Number.isInteger(height) && height < 1) throw error_createError({ … … 16170 16178 options 16171 16179 }); 16172 const chosenRatio = ratio ?? getRatio(options, videoHeight);16180 const chosenRatio = ratio ?? dimensions_getRatio(options, videoHeight); 16173 16181 const calculatedWidth = Math.round(height / chosenRatio); 16174 16182 if (calculatedWidth < 1) throw error_createError({ … … 16196 16204 return window.AudioContext; 16197 16205 } 16198 class AudioRecorder _AudioRecorder{16206 class AudioRecorder { 16199 16207 scriptProcessor; 16200 16208 audioInput; … … 16276 16284 } 16277 16285 } 16278 const AudioRecorder = AudioRecorder_AudioRecorder;16286 const media_AudioRecorder = AudioRecorder; 16279 16287 function getFirstVideoTrack(localMediaStream) { 16280 16288 const videoTracks = localMediaStream.getVideoTracks(); … … 16376 16384 this.onLoadedMetaDataReached = false; 16377 16385 this.playingPromiseReached = false; 16378 if (isAudioEnabled(this.options)) this.audioRecorder ??= new AudioRecorder(this, this.options);16386 if (isAudioEnabled(this.options)) this.audioRecorder ??= new media_AudioRecorder(this, this.options); 16379 16387 const unloadAllEventListeners = ()=>{ 16380 16388 this.options.logger.debug("UserMedia: unloadAllEventListeners()"); … … 17080 17088 } 17081 17089 isHidden() { 17082 return !this.recorderElement || isHidden(this.recorderElement);17090 return !this.recorderElement || html_isHidden(this.recorderElement); 17083 17091 } 17084 17092 writeCommand(command, args, cb) { … … 17496 17504 if (!userMediaVideoWidth || userMediaVideoWidth < 1) ratio = this.visuals.getRatio(); 17497 17505 else if (userMediaVideoHeight) ratio = userMediaVideoHeight / userMediaVideoWidth; 17498 } else ratio = getRatio(this.options);17506 } else ratio = dimensions_getRatio(this.options); 17499 17507 return ratio; 17500 17508 } … … 17771 17779 isShown() { 17772 17780 if (!this.replayElement) return false; 17773 return ! isHidden(this.replayElement) && !this.visuals.isHidden();17781 return !html_isHidden(this.replayElement) && !this.visuals.isHidden(); 17774 17782 } 17775 17783 getVisuals() { … … 17982 17990 isHidden() { 17983 17991 if (!this.built) return true; 17984 return isHidden(this.visualsElement);17992 return html_isHidden(this.visualsElement); 17985 17993 } 17986 17994 showVisuals() { … … 18122 18130 getFormElement() { 18123 18131 let formElement; 18124 if (this.containerElement && "FORM" === this.containerElement.tagName) formElement = this.containerElement;18132 if (this.containerElement?.tagName === "FORM") formElement = this.containerElement; 18125 18133 else if (this.options.selectors.formId) { 18126 18134 formElement = document.querySelector(`#${this.options.selectors.formId}`); … … 18375 18383 if (invalidInput) { 18376 18384 const name = invalidInput.getAttribute("name"); 18385 const validity = util_getValidity(invalidInput); 18377 18386 valid = false; 18378 if (name) { 18387 if (name) if (validity?.valueMissing) whyInvalid = `Please fill out field "${name}" ⚠️`; 18388 else { 18379 18389 whyInvalid = `Input "${name}" seems wrong 🤔`; 18380 18390 invalidData = { … … 18547 18557 static ENC_TYPE_FORM = constants["public"].ENC_TYPE_FORM; 18548 18558 constructor(options = {}){ 18549 super("VideomailClient", mergeWithDefaultOptions(options));18559 super("VideomailClient", options_mergeWithDefaultOptions(options)); 18550 18560 this.validateOptions(); 18551 18561 util_Despot.removeAllListeners(); -
videomail-for-ninja-forms/tags/9.0.1/target/php/videomail.php
r3381582 r3388250 3 3 4 4 const NAME = 'Videomail'; 5 const VERSION = '9.0. 0';5 const VERSION = '9.0.1'; 6 6 const AUTHOR = 'Michael Heuberger + Kyle B. Johnson'; 7 7 const SLUG = 'videomail'; -
videomail-for-ninja-forms/tags/9.0.1/videomail-for-ninja-forms.php
r3381582 r3388250 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: 9.0. 06 Version: 9.0.1 7 7 Author: Michael Heuberger + Kyle B. Johnson 8 8 Author URI: https://videomail.io -
videomail-for-ninja-forms/trunk/readme.txt
r3381582 r3388250 1 1 === Videomail for Ninja Forms === 2 3 2 Contributors: michael.heuberger, kbjohnson90 4 3 Tags: video, email, recorder, sign language 5 6 4 Requires at least: 6.0 7 5 Tested up to: 6.8.2 8 Stable tag: 9.0. 06 Stable tag: 9.0.1 9 7 Requires PHP: 8.1.0 10 8 Donate link: https://videomail.io/faq 11 9 License: CC0-1.0 12 10 13 Record videos inNinja Forms!11 Record videos with audio or in Sign Language with Ninja Forms! 14 12 15 13 == Description == 14 16 15 With this add-on recording and sending videos in WordPress *finally* comes true. No further coding required. Just install + configure a bit (like duration, width or enable audio etc) and that’s all. Wicked. 17 16 … … 71 70 72 71 == Changelog == 72 73 = 9.0.1 (2 Nov 2025) = 74 **Improvement** 75 * More user friendlier error messages for missing inputs 76 77 **Change:** 78 * Include recording location which will assist investigating technical issues 79 80 **Fix** 81 * Rename wrong option name from ninjaFormPlugin to videomailNinjaFormPlugin 82 83 **Chore** 84 * Upgrade VC dependency 85 73 86 = 9.0.0 (21 Oct 2025) = 74 87 **Change:** -
videomail-for-ninja-forms/trunk/target/js/main-min.js
r3381582 r3388250 1 let PLUGIN_VERSION="9.0. 0",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{ninjaFormPlugin:PLUGIN_VERSION}}),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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4 wXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgbmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwibmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSx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 let PLUGIN_VERSION="9.0.1",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{videomailNinjaFormPlugin:PLUGIN_VERSION}}),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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4xXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgdmlkZW9tYWlsTmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwidmlkZW9tYWlsTmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSxJQUFNQSxlQUFpQixRQUduQkMsTUFBUSxDQUFBLEVBS05DLHlCQUEyQkMsV0FBV0MsT0FBT0MsT0FBTyxDQUN4REMsZ0JBQWlCLEtBRWpCQyxXQUFZLEtBRVpDLFFBQVNDLFNBQVNDLE1BQU1GLFFBQVEsV0FBVyxFQUUzQ0csV0FBWSxXQUNWRixTQUFTQyxNQUFNVCxNQUFRQSxNQUV2QlcsS0FBS0MsYUFBYUQsS0FBS0osUUFBUyxhQUFjSSxLQUFLRSxzQkFBc0IsRUFDekVGLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsY0FBZUksS0FBS0csbUJBQW1CLEVBR3ZFSCxLQUFLSSxTQUFTSixLQUFLSixRQUFTLE1BQU8sU0FBVVMsR0FDM0NoQixPQUFTaUIsUUFBUUMsSUFBSSxxQ0FBc0NGLENBQVMsRUFJcEVMLEtBQUtJLFNBQVNJLFFBQVFaLFFBQVEsTUFBTSxFQUFHLGNBQWUsU0FBVWEsR0FDOURwQixPQUFTaUIsUUFBUUMsSUFBSSxnQ0FBaUMsYUFBYSxFQUU3REcsRUFDSkQsRUFBT0UsZ0JBQWdCQyxZQUFZQyxpQkFBaUJDLFFBQVUsR0FFaEUsSUFBTUMsRUFBYWYsS0FBS0wsV0FBV3FCLElBRWROLEVBQWNPLEtBQUssU0FBVUMsR0FDaEQsT0FBT0EsRUFBTUYsTUFBUUQsQ0FDdkIsQ0FBQyxFQUdDZixLQUFLRyxvQkFBb0IsRUFFekJILEtBQUtOLGdCQUFnQnlCLE9BQU8sQ0FFaEMsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVBQyxVQUFXLFdBQ1QsT0FBT3BCLEtBQUtMLFdBQVcwQixJQUFJLFFBQVEsQ0FDckMsRUFFQW5CLHVCQUF3QixTQUFVUCxHQUNoQ0ssS0FBS0ws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 -
videomail-for-ninja-forms/trunk/target/js/videomail-client/index-min.js
r3381582 r3388250 6 6 })(globalThis, ()=>(()=>{ 7 7 var __webpack_modules__ = { 8 "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1 2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {8 "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) { 9 9 "use strict"; 10 10 __webpack_require__.d(__webpack_exports__, { … … 10671 10671 var client_default = /*#__PURE__*/ __webpack_require__.n(client); 10672 10672 var package_namespaceObject = { 10673 rE: "13. 0.0"10673 rE: "13.2.0" 10674 10674 }; 10675 10675 var defined = __webpack_require__("./node_modules/defined/index.js"); … … 13948 13948 } 13949 13949 const util_pretty = pretty; 13950 class HTTPVideomailError _HTTPVideomailErrorextends Error {13950 class HTTPVideomailError extends Error { 13951 13951 code; 13952 13952 status; 13953 13953 explanation; 13954 13954 } 13955 const HTTPVideomailError = HTTPVideomailError_HTTPVideomailError;13956 class VideomailError extends HTTPVideomailError {13955 const error_HTTPVideomailError = HTTPVideomailError; 13956 class VideomailError extends error_HTTPVideomailError { 13957 13957 title = "Error from videomail-client npm package"; 13958 13958 location = window.location.href; … … 14317 14317 } 14318 14318 const util_Despot = Despot; 14319 function getValidity(element) { 14320 const validity = "validity" in element ? element.validity : void 0; 14321 return validity; 14322 } 14323 const util_getValidity = getValidity; 14319 14324 function hideElement(element) { 14320 14325 if (!element) return; … … 14406 14411 const name = formControl.getAttribute("name"); 14407 14412 if (name) { 14408 const value = videomail[name];14413 let value = videomail[name]; 14409 14414 const tagName = formControl.tagName; 14415 if (this.options.callbacks.adjustFormValueBeforePopulating) value = this.options.callbacks.adjustFormValueBeforePopulating(name, value, videomail); 14410 14416 switch(tagName){ 14411 14417 case "INPUT": … … 14573 14579 const elements = this.getRegisteredFormElements(); 14574 14580 for (const element of elements){ 14575 const validity = "validity" in element ? element.validity : void 0;14581 const validity = util_getValidity(element); 14576 14582 if (!validity?.valid) return element; 14577 14583 } … … 14596 14602 const message = body.error.message; 14597 14603 const cause = body.error.cause; 14598 const error = new HTTPVideomailError(message, {14604 const error = new error_HTTPVideomailError(message, { 14599 14605 cause 14600 14606 }); … … 14705 14711 const newVideomail = this.applyDefaultValues(videomail); 14706 14712 newVideomail[constants.VERSION_LABEL] = package_namespaceObject.rE; 14713 newVideomail.recordLocation = window.location.href; 14707 14714 try { 14708 14715 let res; … … 14859 14866 loadUserMediaOnRecord: false, 14860 14867 callbacks: { 14861 adjustFormDataBeforePosting: void 0 14868 adjustFormDataBeforePosting: void 0, 14869 adjustFormValueBeforePopulating: void 0 14862 14870 }, 14863 14871 defaults: { … … 14924 14932 } 14925 14933 const util_isTest = isTest; 14926 function mergeWithDefaultOptions _mergeWithDefaultOptions(options = {}) {14934 function mergeWithDefaultOptions(options = {}) { 14927 14935 const newOptions = cjs_default()(src_options, options, { 14928 14936 arrayMerge (_destination, source) { … … 14935 14943 return newOptions; 14936 14944 } 14937 const mergeWithDefaultOptions = mergeWithDefaultOptions_mergeWithDefaultOptions;14945 const options_mergeWithDefaultOptions = mergeWithDefaultOptions; 14938 14946 var injectStylesIntoStyleTag = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/injectStylesIntoStyleTag.js"); 14939 14947 var injectStylesIntoStyleTag_default = /*#__PURE__*/ __webpack_require__.n(injectStylesIntoStyleTag); … … 14948 14956 var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js"); 14949 14957 var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform); 14950 var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1 2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl");14958 var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl"); 14951 14959 var main_options = {}; 14952 14960 main_options.styleTagTransform = styleTagTransform_default(); … … 14969 14977 } 14970 14978 const dimensions_limitHeight = limitHeight; 14971 function getOuterWidth _getOuterWidth(element) {14979 function getOuterWidth(element) { 14972 14980 let rect = element.getBoundingClientRect(); 14973 14981 let outerWidth = rect.right - rect.left; … … 14978 14986 return outerWidth; 14979 14987 } 14980 const getOuterWidth = getOuterWidth_getOuterWidth;14988 const dimensions_getOuterWidth = getOuterWidth; 14981 14989 function limitWidth(element, options, width) { 14982 14990 let limitedWidth; 14983 const outerWidth = getOuterWidth(element);14991 const outerWidth = dimensions_getOuterWidth(element); 14984 14992 limitedWidth = width && "number" == typeof width ? outerWidth > 0 && outerWidth < width ? outerWidth : width : outerWidth; 14985 14993 if (Number.isInteger(limitedWidth) && limitedWidth < 1) throw error_createError({ … … 15414 15422 } 15415 15423 const buttons = Buttons; 15416 function isHidden _isHidden(element) {15424 function isHidden(element) { 15417 15425 if (!element) return true; 15418 15426 const display = element.style.getPropertyValue("display"); 15419 15427 return display.includes("none"); 15420 15428 } 15421 const isHidden = isHidden_isHidden;15429 const html_isHidden = isHidden; 15422 15430 class Countdown { 15423 15431 visuals; … … 16019 16027 isVisible() { 16020 16028 if (!this.built) return false; 16021 return this.notifyElement && ! isHidden(this.notifyElement);16029 return this.notifyElement && !html_isHidden(this.notifyElement); 16022 16030 } 16023 16031 isBuilt() { … … 16136 16144 } 16137 16145 const dimensions_figureMinHeight = figureMinHeight; 16138 function getRatio _getRatio(options, videoHeight, videoWidth) {16146 function getRatio(options, videoHeight, videoWidth) { 16139 16147 let ratio = 1; 16140 16148 const hasVideoDimensions = videoHeight && videoWidth; … … 16146 16154 return ratio; 16147 16155 } 16148 const getRatio = getRatio_getRatio;16156 const dimensions_getRatio = getRatio; 16149 16157 function calculateHeight(responsive, videoWidth, options, target, ratio, element) { 16150 16158 let width = videoWidth; … … 16154 16162 }); 16155 16163 if (responsive && element) width = dimensions_limitWidth(element, options, width); 16156 const chosenRatio = ratio ?? getRatio(options, void 0, videoWidth);16164 const chosenRatio = ratio ?? dimensions_getRatio(options, void 0, videoWidth); 16157 16165 const height = Math.round(width * chosenRatio); 16158 16166 if (Number.isInteger(height) && height < 1) throw error_createError({ … … 16170 16178 options 16171 16179 }); 16172 const chosenRatio = ratio ?? getRatio(options, videoHeight);16180 const chosenRatio = ratio ?? dimensions_getRatio(options, videoHeight); 16173 16181 const calculatedWidth = Math.round(height / chosenRatio); 16174 16182 if (calculatedWidth < 1) throw error_createError({ … … 16196 16204 return window.AudioContext; 16197 16205 } 16198 class AudioRecorder _AudioRecorder{16206 class AudioRecorder { 16199 16207 scriptProcessor; 16200 16208 audioInput; … … 16276 16284 } 16277 16285 } 16278 const AudioRecorder = AudioRecorder_AudioRecorder;16286 const media_AudioRecorder = AudioRecorder; 16279 16287 function getFirstVideoTrack(localMediaStream) { 16280 16288 const videoTracks = localMediaStream.getVideoTracks(); … … 16376 16384 this.onLoadedMetaDataReached = false; 16377 16385 this.playingPromiseReached = false; 16378 if (isAudioEnabled(this.options)) this.audioRecorder ??= new AudioRecorder(this, this.options);16386 if (isAudioEnabled(this.options)) this.audioRecorder ??= new media_AudioRecorder(this, this.options); 16379 16387 const unloadAllEventListeners = ()=>{ 16380 16388 this.options.logger.debug("UserMedia: unloadAllEventListeners()"); … … 17080 17088 } 17081 17089 isHidden() { 17082 return !this.recorderElement || isHidden(this.recorderElement);17090 return !this.recorderElement || html_isHidden(this.recorderElement); 17083 17091 } 17084 17092 writeCommand(command, args, cb) { … … 17496 17504 if (!userMediaVideoWidth || userMediaVideoWidth < 1) ratio = this.visuals.getRatio(); 17497 17505 else if (userMediaVideoHeight) ratio = userMediaVideoHeight / userMediaVideoWidth; 17498 } else ratio = getRatio(this.options);17506 } else ratio = dimensions_getRatio(this.options); 17499 17507 return ratio; 17500 17508 } … … 17771 17779 isShown() { 17772 17780 if (!this.replayElement) return false; 17773 return ! isHidden(this.replayElement) && !this.visuals.isHidden();17781 return !html_isHidden(this.replayElement) && !this.visuals.isHidden(); 17774 17782 } 17775 17783 getVisuals() { … … 17982 17990 isHidden() { 17983 17991 if (!this.built) return true; 17984 return isHidden(this.visualsElement);17992 return html_isHidden(this.visualsElement); 17985 17993 } 17986 17994 showVisuals() { … … 18122 18130 getFormElement() { 18123 18131 let formElement; 18124 if (this.containerElement && "FORM" === this.containerElement.tagName) formElement = this.containerElement;18132 if (this.containerElement?.tagName === "FORM") formElement = this.containerElement; 18125 18133 else if (this.options.selectors.formId) { 18126 18134 formElement = document.querySelector(`#${this.options.selectors.formId}`); … … 18375 18383 if (invalidInput) { 18376 18384 const name = invalidInput.getAttribute("name"); 18385 const validity = util_getValidity(invalidInput); 18377 18386 valid = false; 18378 if (name) { 18387 if (name) if (validity?.valueMissing) whyInvalid = `Please fill out field "${name}" ⚠️`; 18388 else { 18379 18389 whyInvalid = `Input "${name}" seems wrong 🤔`; 18380 18390 invalidData = { … … 18547 18557 static ENC_TYPE_FORM = constants["public"].ENC_TYPE_FORM; 18548 18558 constructor(options = {}){ 18549 super("VideomailClient", mergeWithDefaultOptions(options));18559 super("VideomailClient", options_mergeWithDefaultOptions(options)); 18550 18560 this.validateOptions(); 18551 18561 util_Despot.removeAllListeners(); -
videomail-for-ninja-forms/trunk/target/php/videomail.php
r3381582 r3388250 3 3 4 4 const NAME = 'Videomail'; 5 const VERSION = '9.0. 0';5 const VERSION = '9.0.1'; 6 6 const AUTHOR = 'Michael Heuberger + Kyle B. Johnson'; 7 7 const SLUG = 'videomail'; -
videomail-for-ninja-forms/trunk/videomail-for-ninja-forms.php
r3381582 r3388250 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: 9.0. 06 Version: 9.0.1 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.