Changeset 3269283
- Timestamp:
- 04/09/2025 03:00:01 AM (12 months ago)
- Location:
- videomail-for-ninja-forms
- Files:
-
- 10 edited
- 1 copied
-
tags/7.0.8 (copied) (copied from videomail-for-ninja-forms/trunk)
-
tags/7.0.8/readme.txt (modified) (2 diffs)
-
tags/7.0.8/target/js/main.min.js (modified) (1 diff)
-
tags/7.0.8/target/js/videomail-client/index.js (modified) (59 diffs)
-
tags/7.0.8/target/php/videomail.php (modified) (1 diff)
-
tags/7.0.8/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.js (modified) (59 diffs)
-
trunk/target/php/videomail.php (modified) (1 diff)
-
trunk/videomail-for-ninja-forms.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
videomail-for-ninja-forms/tags/7.0.8/readme.txt
r3257516 r3269283 5 5 6 6 Requires at least: 6.0 7 Tested up to: 7.0.78 Stable tag: 7.0. 77 Tested up to: 6.7.2 8 Stable tag: 7.0.8 9 9 Requires PHP: 8.1.0 10 10 Donate link: https://videomail.io/faq … … 71 71 72 72 == Changelog == 73 = 7.0.8 (9 Apr 2025) = 74 *Improvement:* 75 * Serialize all error variables for improved error reporting 76 *Chore:* 77 * Upgrade Videomail-Client 78 *Fix:* 79 * Corrects invalid version for the "Tested up to" field 80 73 81 = 7.0.7 (18 March 2025) = 74 82 *Improvement:* -
videomail-for-ninja-forms/tags/7.0.8/target/js/main.min.js
r3257516 r3269283 1 let PLUGIN_VERSION="7.0. 7",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC4 3XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3QiLCJib2R5Iiwib25CZWZvcmVEZXN0cm95IiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSJdLCJtYXBwaW5ncyI6IkFBQ0EsSUFBTUEsZUFBaUIsUUFHbkJDLE1BQVEsQ0FBQSxFQUtOQyx5QkFBMkJDLFdBQVdDLE9BQU9DLE9BQU8sQ0FDeERDLGdCQUFpQixLQUVqQkMsV0FBWSxLQUVaQyxRQUF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1 let PLUGIN_VERSION="7.0.8",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC44XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3Qi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 -
videomail-for-ninja-forms/tags/7.0.8/target/js/videomail-client/index.js
r3257516 r3269283 480 480 for(i = 0; i < list.length; ++i){ 481 481 var buf = list[i]; 482 if (isInstance(buf, Uint8Array)) { 483 if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos); 484 else Uint8Array.prototype.set.call(buffer, buf, pos); 485 } else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos); 482 if (isInstance(buf, Uint8Array)) if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos); 483 else Uint8Array.prototype.set.call(buffer, buf, pos); 484 else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos); 486 485 else throw new TypeError('"list" argument must be an Array of Buffers'); 487 486 pos += buf.length; … … 647 646 if (numberIsNaN(byteOffset)) byteOffset = dir ? 0 : buffer.length - 1; 648 647 if (byteOffset < 0) byteOffset = buffer.length + byteOffset; 649 if (byteOffset >= buffer.length) { 650 if (dir) return -1; 651 byteOffset = buffer.length - 1; 652 } else if (byteOffset < 0) { 653 if (!dir) return -1; 654 byteOffset = 0; 655 } 648 if (byteOffset >= buffer.length) if (dir) return -1; 649 else byteOffset = buffer.length - 1; 650 else if (byteOffset < 0) if (!dir) return -1; 651 else byteOffset = 0; 656 652 if ('string' == typeof val) val = Buffer.from(val, encoding); 657 653 if (Buffer.isBuffer(val)) { … … 661 657 if ('number' == typeof val) { 662 658 val &= 0xFF; 663 if ('function' == typeof Uint8Array.prototype.indexOf) { 664 if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); 665 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); 666 } 659 if ('function' == typeof Uint8Array.prototype.indexOf) if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); 660 else return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); 667 661 return arrayIndexOf(buffer, [ 668 662 val … … 2021 2015 function prependListener(emitter, event, fn) { 2022 2016 if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn); 2023 if (emitter._events && emitter._events[event]) { 2024 if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 2025 else emitter._events[event] = [ 2026 fn, 2027 emitter._events[event] 2028 ]; 2029 } else emitter.on(event, fn); 2017 if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 2018 else emitter._events[event] = [ 2019 fn, 2020 emitter._events[event] 2021 ]; 2022 else emitter.on(event, fn); 2030 2023 } 2031 2024 function ReadableState(options, stream) { … … 2122 2115 else if (state.objectMode || chunk && chunk.length > 0) { 2123 2116 if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk); 2124 if (addToFront) { 2125 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 2126 else addChunk(stream, state, chunk, true); 2127 } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 2117 if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 2118 else addChunk(stream, state, chunk, true); 2119 else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 2128 2120 else { 2129 2121 state.reading = false; … … 2184 2176 if (n <= 0 || 0 === state.length && state.ended) return 0; 2185 2177 if (state.objectMode) return 1; 2186 if (n !== n) { 2187 if (state.flowing && state.length) return state.buffer.head.data.length; 2188 return state.length; 2189 } 2178 if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length; 2179 else return state.length; 2190 2180 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); 2191 2181 if (n <= state.length) return n; … … 3070 3060 } 3071 3061 function prefinish(stream, state) { 3072 if (!state.prefinished && !state.finalCalled) { 3073 if ('function' == typeof stream._final) { 3074 state.pendingcb++; 3075 state.finalCalled = true; 3076 pna.nextTick(callFinal, stream, state); 3077 } else { 3078 state.prefinished = true; 3079 stream.emit('prefinish'); 3080 } 3062 if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) { 3063 state.pendingcb++; 3064 state.finalCalled = true; 3065 pna.nextTick(callFinal, stream, state); 3066 } else { 3067 state.prefinished = true; 3068 stream.emit('prefinish'); 3081 3069 } 3082 3070 } … … 3095 3083 state.ending = true; 3096 3084 finishMaybe(stream, state); 3097 if (cb) { 3098 if (state.finished) pna.nextTick(cb); 3099 else stream.once('finish', cb); 3100 } 3085 if (cb) if (state.finished) pna.nextTick(cb); 3086 else stream.once('finish', cb); 3101 3087 state.ended = true; 3102 3088 stream.writable = false; … … 3215 3201 if (readableDestroyed || writableDestroyed) { 3216 3202 if (cb) cb(err); 3217 else if (err) { 3218 if (this._writableState) { 3219 if (!this._writableState.errorEmitted) { 3220 this._writableState.errorEmitted = true; 3221 pna.nextTick(emitErrorNT, this, err); 3222 } 3223 } else pna.nextTick(emitErrorNT, this, err); 3224 } 3203 else if (err) if (this._writableState) { 3204 if (!this._writableState.errorEmitted) { 3205 this._writableState.errorEmitted = true; 3206 pna.nextTick(emitErrorNT, this, err); 3207 } 3208 } else pna.nextTick(emitErrorNT, this, err); 3225 3209 return this; 3226 3210 } … … 3228 3212 if (this._writableState) this._writableState.destroyed = true; 3229 3213 this._destroy(err || null, function(err) { 3230 if (!cb && err) { 3231 if (_this._writableState) { 3232 if (!_this._writableState.errorEmitted) { 3233 _this._writableState.errorEmitted = true; 3234 pna.nextTick(emitErrorNT, _this, err); 3235 } 3236 } else pna.nextTick(emitErrorNT, _this, err); 3237 } else if (cb) cb(err); 3214 if (!cb && err) if (_this._writableState) { 3215 if (!_this._writableState.errorEmitted) { 3216 _this._writableState.errorEmitted = true; 3217 pna.nextTick(emitErrorNT, _this, err); 3218 } 3219 } else pna.nextTick(emitErrorNT, _this, err); 3220 else if (cb) cb(err); 3238 3221 }); 3239 3222 return this; … … 3298 3281 if ('number' != typeof size) throw new TypeError('Argument must be a number'); 3299 3282 var buf = Buffer(size); 3300 if (void 0 !== fill) { 3301 if ('string' == typeof encoding) buf.fill(fill, encoding); 3302 else buf.fill(fill); 3303 } else buf.fill(0); 3283 if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding); 3284 else buf.fill(fill); 3285 else buf.fill(0); 3304 3286 return buf; 3305 3287 }; … … 3440 3422 nb = utf8CheckByte(buf[j]); 3441 3423 if (nb >= 0) { 3442 if (nb > 0) { 3443 if (2 === nb) nb = 0; 3444 else self1.lastNeed = nb - 3; 3445 } 3424 if (nb > 0) if (2 === nb) nb = 0; 3425 else self1.lastNeed = nb - 3; 3446 3426 return nb; 3447 3427 } … … 3833 3813 list = events[type]; 3834 3814 if (void 0 === list) return this; 3835 if (list === listener || list.listener === listener) { 3836 if (0 === --this._eventsCount) this._events = Object.create(null); 3837 else { 3838 delete events[type]; 3839 if (events.removeListener) this.emit('removeListener', type, list.listener || listener); 3840 } 3841 } else if ('function' != typeof list) { 3815 if (list === listener || list.listener === listener) if (0 === --this._eventsCount) this._events = Object.create(null); 3816 else { 3817 delete events[type]; 3818 if (events.removeListener) this.emit('removeListener', type, list.listener || listener); 3819 } 3820 else if ('function' != typeof list) { 3842 3821 position = -1; 3843 3822 for(i = list.length - 1; i >= 0; i--)if (list[i] === listener || list[i].listener === listener) { … … 3863 3842 this._events = Object.create(null); 3864 3843 this._eventsCount = 0; 3865 } else if (void 0 !== events[type]) { 3866 if (0 === --this._eventsCount) this._events = Object.create(null); 3867 else delete events[type]; 3868 } 3844 } else if (void 0 !== events[type]) if (0 === --this._eventsCount) this._events = Object.create(null); 3845 else delete events[type]; 3869 3846 return this; 3870 3847 } … … 3957 3934 } 3958 3935 function eventTargetAgnosticAddListener(emitter, name, listener, flags) { 3959 if ('function' == typeof emitter.on) { 3960 if (flags.once) emitter.once(name, listener); 3961 else emitter.on(name, listener); 3962 } else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) { 3936 if ('function' == typeof emitter.on) if (flags.once) emitter.once(name, listener); 3937 else emitter.on(name, listener); 3938 else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) { 3963 3939 if (flags.once) emitter.removeEventListener(name, wrapListener); 3964 3940 listener(arg); … … 4001 3977 function setReplace(replace, val, k, parent) { 4002 3978 var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k); 4003 if (void 0 !== propertyDescriptor.get) { 4004 if (propertyDescriptor.configurable) { 4005 Object.defineProperty(parent, k, { 4006 value: replace 4007 }); 4008 arr.push([ 4009 parent, 4010 k, 4011 val, 4012 propertyDescriptor 4013 ]); 4014 } else replacerStack.push([ 3979 if (void 0 !== propertyDescriptor.get) if (propertyDescriptor.configurable) { 3980 Object.defineProperty(parent, k, { 3981 value: replace 3982 }); 3983 arr.push([ 3984 parent, 3985 k, 4015 3986 val, 4016 k, 4017 replace 3987 propertyDescriptor 4018 3988 ]); 4019 } else { 3989 } else replacerStack.push([ 3990 val, 3991 k, 3992 replace 3993 ]); 3994 else { 4020 3995 parent[k] = replace; 4021 3996 arr.push([ … … 4141 4116 var hasOwnProperty = Object.prototype.hasOwnProperty; 4142 4117 var forEachArray = function(array, iterator, receiver) { 4143 for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) { 4144 if (null == receiver) iterator(array[i], i, array); 4145 else iterator.call(receiver, array[i], i, array); 4146 } 4118 for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) if (null == receiver) iterator(array[i], i, array); 4119 else iterator.call(receiver, array[i], i, array); 4147 4120 }; 4148 4121 var forEachString = function(string, iterator, receiver) { … … 4151 4124 }; 4152 4125 var forEachObject = function(object, iterator, receiver) { 4153 for(var k in object)if (hasOwnProperty.call(object, k)) { 4154 if (null == receiver) iterator(object[k], k, object); 4155 else iterator.call(receiver, object[k], k, object); 4156 } 4126 for(var k in object)if (hasOwnProperty.call(object, k)) if (null == receiver) iterator(object[k], k, object); 4127 else iterator.call(receiver, object[k], k, object); 4157 4128 }; 4158 4129 var forEach = function(list, iterator, thisArg) { … … 5182 5153 depth: maxDepth - depth 5183 5154 }); 5184 if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect();5155 else if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect(); 5185 5156 } 5186 5157 if (isMap(obj)) { … … 5419 5390 for(var k = 0; k < syms.length; k++)symMap['$' + syms[k]] = syms[k]; 5420 5391 } 5421 for(var key in obj){ 5422 if (!!has(obj, key)) { 5423 if (!isArr || String(Number(key)) !== key || !(key < obj.length)) { 5424 if (!(hasShammedSymbols && symMap['$' + key] instanceof Symbol)) { 5425 if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); 5426 else xs.push(key + ': ' + inspect(obj[key], obj)); 5427 } 5428 } 5429 } 5392 for(var key in obj)if (has(obj, key)) { 5393 if (!isArr || String(Number(key)) !== key || !(key < obj.length)) if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) continue; 5394 else if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); 5395 else xs.push(key + ': ' + inspect(obj[key], obj)); 5430 5396 } 5431 5397 if ('function' == typeof gOPS) { … … 5960 5926 var pos = tmpSc.get(object); 5961 5927 step += 1; 5962 if (void 0 !== pos) { 5963 if (pos === step) throw new RangeError('Cyclic object value'); 5964 findFlag = true; 5965 } 5928 if (void 0 !== pos) if (pos === step) throw new RangeError('Cyclic object value'); 5929 else findFlag = true; 5966 5930 if (void 0 === tmpSc.get(sentinel)) step = 0; 5967 5931 } … … 6085 6049 var joined = keys.join(options.delimiter); 6086 6050 var prefix = true === options.addQueryPrefix ? '?' : ''; 6087 if (options.charsetSentinel) { 6088 if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&'; 6089 else prefix += 'utf8=%E2%9C%93&'; 6090 } 6051 if (options.charsetSentinel) if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&'; 6052 else prefix += 'utf8=%E2%9C%93&'; 6091 6053 return joined.length > 0 ? prefix + joined : ''; 6092 6054 }; … … 7582 7544 exports1.debuglog = function(set) { 7583 7545 set = set.toUpperCase(); 7584 if (!debugs[set]) { 7585 if (debugEnvRegex.test(set)) { 7586 var pid = process.pid; 7587 debugs[set] = function() { 7588 var msg = exports1.format.apply(exports1, arguments); 7589 console.error('%s %d: %s', set, pid, msg); 7590 }; 7591 } else debugs[set] = function() {}; 7592 } 7546 if (!debugs[set]) if (debugEnvRegex.test(set)) { 7547 var pid = process.pid; 7548 debugs[set] = function() { 7549 var msg = exports1.format.apply(exports1, arguments); 7550 console.error('%s %d: %s', set, pid, msg); 7551 }; 7552 } else debugs[set] = function() {}; 7593 7553 return debugs[set]; 7594 7554 }; … … 7729 7689 if (isError(value)) base = ' ' + formatError(value); 7730 7690 if (0 === keys.length && (!array || 0 == value.length)) return braces[0] + base + braces[1]; 7731 if (recurseTimes < 0) { 7732 if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); 7733 return ctx.stylize('[Object]', 'special'); 7734 } 7691 if (recurseTimes < 0) if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); 7692 else return ctx.stylize('[Object]', 'special'); 7735 7693 ctx.seen.push(value); 7736 7694 var output; … … 7771 7729 else if (desc.set) str = ctx.stylize('[Setter]', 'special'); 7772 7730 if (!hasOwnProperty(visibleKeys, key)) name = '[' + key + ']'; 7773 if (!str) { 7774 if (ctx.seen.indexOf(desc.value) < 0) { 7775 str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1); 7776 if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) { 7777 return ' ' + line; 7778 }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) { 7779 return ' ' + line; 7780 }).join('\n'); 7781 } else str = ctx.stylize('[Circular]', 'special'); 7782 } 7731 if (!str) if (ctx.seen.indexOf(desc.value) < 0) { 7732 str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1); 7733 if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) { 7734 return ' ' + line; 7735 }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) { 7736 return ' ' + line; 7737 }).join('\n'); 7738 } else str = ctx.stylize('[Circular]', 'special'); 7783 7739 if (isUndefined(name)) { 7784 7740 if (array && key.match(/^\d+$/)) return str; … … 8099 8055 function prependListener(emitter, event, fn) { 8100 8056 if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn); 8101 if (emitter._events && emitter._events[event]) { 8102 if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 8103 else emitter._events[event] = [ 8104 fn, 8105 emitter._events[event] 8106 ]; 8107 } else emitter.on(event, fn); 8057 if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 8058 else emitter._events[event] = [ 8059 fn, 8060 emitter._events[event] 8061 ]; 8062 else emitter.on(event, fn); 8108 8063 } 8109 8064 function ReadableState(options, stream) { … … 8200 8155 else if (state.objectMode || chunk && chunk.length > 0) { 8201 8156 if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk); 8202 if (addToFront) { 8203 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 8204 else addChunk(stream, state, chunk, true); 8205 } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 8157 if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 8158 else addChunk(stream, state, chunk, true); 8159 else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 8206 8160 else { 8207 8161 state.reading = false; … … 8262 8216 if (n <= 0 || 0 === state.length && state.ended) return 0; 8263 8217 if (state.objectMode) return 1; 8264 if (n !== n) { 8265 if (state.flowing && state.length) return state.buffer.head.data.length; 8266 return state.length; 8267 } 8218 if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length; 8219 else return state.length; 8268 8220 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); 8269 8221 if (n <= state.length) return n; … … 9148 9100 } 9149 9101 function prefinish(stream, state) { 9150 if (!state.prefinished && !state.finalCalled) { 9151 if ('function' == typeof stream._final) { 9152 state.pendingcb++; 9153 state.finalCalled = true; 9154 pna.nextTick(callFinal, stream, state); 9155 } else { 9156 state.prefinished = true; 9157 stream.emit('prefinish'); 9158 } 9102 if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) { 9103 state.pendingcb++; 9104 state.finalCalled = true; 9105 pna.nextTick(callFinal, stream, state); 9106 } else { 9107 state.prefinished = true; 9108 stream.emit('prefinish'); 9159 9109 } 9160 9110 } … … 9173 9123 state.ending = true; 9174 9124 finishMaybe(stream, state); 9175 if (cb) { 9176 if (state.finished) pna.nextTick(cb); 9177 else stream.once('finish', cb); 9178 } 9125 if (cb) if (state.finished) pna.nextTick(cb); 9126 else stream.once('finish', cb); 9179 9127 state.ended = true; 9180 9128 stream.writable = false; … … 9293 9241 if (readableDestroyed || writableDestroyed) { 9294 9242 if (cb) cb(err); 9295 else if (err) { 9296 if (this._writableState) { 9297 if (!this._writableState.errorEmitted) { 9298 this._writableState.errorEmitted = true; 9299 pna.nextTick(emitErrorNT, this, err); 9300 } 9301 } else pna.nextTick(emitErrorNT, this, err); 9302 } 9243 else if (err) if (this._writableState) { 9244 if (!this._writableState.errorEmitted) { 9245 this._writableState.errorEmitted = true; 9246 pna.nextTick(emitErrorNT, this, err); 9247 } 9248 } else pna.nextTick(emitErrorNT, this, err); 9303 9249 return this; 9304 9250 } … … 9306 9252 if (this._writableState) this._writableState.destroyed = true; 9307 9253 this._destroy(err || null, function(err) { 9308 if (!cb && err) { 9309 if (_this._writableState) { 9310 if (!_this._writableState.errorEmitted) { 9311 _this._writableState.errorEmitted = true; 9312 pna.nextTick(emitErrorNT, _this, err); 9313 } 9314 } else pna.nextTick(emitErrorNT, _this, err); 9315 } else if (cb) cb(err); 9254 if (!cb && err) if (_this._writableState) { 9255 if (!_this._writableState.errorEmitted) { 9256 _this._writableState.errorEmitted = true; 9257 pna.nextTick(emitErrorNT, _this, err); 9258 } 9259 } else pna.nextTick(emitErrorNT, _this, err); 9260 else if (cb) cb(err); 9316 9261 }); 9317 9262 return this; … … 9376 9321 if ('number' != typeof size) throw new TypeError('Argument must be a number'); 9377 9322 var buf = Buffer(size); 9378 if (void 0 !== fill) { 9379 if ('string' == typeof encoding) buf.fill(fill, encoding); 9380 else buf.fill(fill); 9381 } else buf.fill(0); 9323 if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding); 9324 else buf.fill(fill); 9325 else buf.fill(0); 9382 9326 return buf; 9383 9327 }; … … 9518 9462 nb = utf8CheckByte(buf[j]); 9519 9463 if (nb >= 0) { 9520 if (nb > 0) { 9521 if (2 === nb) nb = 0; 9522 else self1.lastNeed = nb - 3; 9523 } 9464 if (nb > 0) if (2 === nb) nb = 0; 9465 else self1.lastNeed = nb - 3; 9524 9466 return nb; 9525 9467 } … … 9826 9768 } 9827 9769 }, 9828 "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[ 9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {9770 "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) { 9829 9771 "use strict"; 9830 9772 __webpack_require__.d(__webpack_exports__, { … … 9838 9780 ___CSS_LOADER_EXPORT___.push([ 9839 9781 module1.id, 9840 '@keyframes blink{0%{opacity:.9}35%{opacity:.9}50%{opacity:.1}85%{opacity:.1}to{opacity:.9}}.videomail .visuals{position:relative}.videomail .visuals video.replay{width:100%;height:100%}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint{height:auto;margin:0}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .paused,.videomail .facingMode,.videomail noscript{z-index:100;position:absolute}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint,.videomail noscript{font-weight:700}.videomail .countdown,.videomail .paused,.videomail noscript{width:100%;top:50%;transform:translateY(-50%)}.videomail .pausedHeader,.videomail .pausedHint,.videomail .countdown{text-align:center;letter-spacing:4px;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.videomail .pausedHeader,.videomail .countdown{opacity:.9;font-size:460%}.videomail .pausedHint{font-size:150%}.videomail .facingMode{color:#f5f5f5e6;z-index:10;background:#1e1e1e80;border:none;outline:none;padding:.1em .3em;font-family:monospace;font-size:1.2em;transition:all .2s;bottom:.6em;right:.7em}.videomail .facingMode:hover{cursor:pointer;background:#323232b3}.videomail .recordTimer,.videomail .recordNote{color:#00d814;opacity:.9;background:#0a0a0acc;padding:.3em .4em;font-family:monospace;transition:all 1s;right:.7em}.videomail .recordTimer.near,.videomail .recordNote.near{color:#eb9369}.videomail .recordTimer.nigh,.videomail .recordNote.nigh{color:#ea4b2a}.videomail .recordTimer{top:.7em}.videomail .recordNote{top:3.6em}.videomail .recordNote:before{content:"REC";animation:1s infinite blink}.videomail .notifier{box-sizing:border-box;overflow:hidden}.videomail .radioGroup{display:block}.videomail .radioGroup label{cursor:pointer}.videomail video{margin-bottom:0}.videomail video.userMedia{background-color:#3232321a}', 9782 `@keyframes blink { 9783 0% { 9784 opacity: .9; 9785 } 9786 9787 35% { 9788 opacity: .9; 9789 } 9790 9791 50% { 9792 opacity: .1; 9793 } 9794 9795 85% { 9796 opacity: .1; 9797 } 9798 9799 100% { 9800 opacity: .9; 9801 } 9802 } 9803 9804 .videomail .visuals { 9805 position: relative; 9806 } 9807 9808 .videomail .visuals video.replay { 9809 width: 100%; 9810 height: 100%; 9811 } 9812 9813 .videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint { 9814 height: auto; 9815 margin: 0; 9816 } 9817 9818 .videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .paused, .videomail .facingMode, .videomail noscript { 9819 z-index: 100; 9820 position: absolute; 9821 } 9822 9823 .videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint, .videomail noscript { 9824 font-weight: bold; 9825 } 9826 9827 .videomail .countdown, .videomail .paused, .videomail noscript { 9828 width: 100%; 9829 top: 50%; 9830 transform: translateY(-50%); 9831 } 9832 9833 .videomail .pausedHeader, .videomail .pausedHint, .videomail .countdown { 9834 text-align: center; 9835 letter-spacing: 4px; 9836 text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; 9837 } 9838 9839 .videomail .pausedHeader, .videomail .countdown { 9840 opacity: .9; 9841 font-size: 460%; 9842 } 9843 9844 .videomail .pausedHint { 9845 font-size: 150%; 9846 } 9847 9848 .videomail .facingMode { 9849 color: #f5f5f5e6; 9850 z-index: 10; 9851 background: #1e1e1e80; 9852 border: none; 9853 outline: none; 9854 padding: .1em .3em; 9855 font-family: monospace; 9856 font-size: 1.2em; 9857 transition: all .2s; 9858 bottom: .6em; 9859 right: .7em; 9860 } 9861 9862 .videomail .facingMode:hover { 9863 cursor: pointer; 9864 background: #323232b3; 9865 } 9866 9867 .videomail .recordTimer, .videomail .recordNote { 9868 color: #00d814; 9869 opacity: .9; 9870 background: #0a0a0acc; 9871 padding: .3em .4em; 9872 font-family: monospace; 9873 transition: all 1s; 9874 right: .7em; 9875 } 9876 9877 .videomail .recordTimer.near, .videomail .recordNote.near { 9878 color: #eb9369; 9879 } 9880 9881 .videomail .recordTimer.nigh, .videomail .recordNote.nigh { 9882 color: #ea4b2a; 9883 } 9884 9885 .videomail .recordTimer { 9886 top: .7em; 9887 } 9888 9889 .videomail .recordNote { 9890 top: 3.6em; 9891 } 9892 9893 .videomail .recordNote:before { 9894 content: "REC"; 9895 animation: 1s infinite blink; 9896 } 9897 9898 .videomail .notifier { 9899 box-sizing: border-box; 9900 overflow: hidden; 9901 } 9902 9903 .videomail .radioGroup { 9904 display: block; 9905 } 9906 9907 .videomail .radioGroup label { 9908 cursor: pointer; 9909 } 9910 9911 .videomail video { 9912 margin-bottom: 0; 9913 } 9914 9915 .videomail video.userMedia { 9916 background-color: #3232321a; 9917 } 9918 `, 9841 9919 "" 9842 9920 ]); … … 9883 9961 var item = [].concat(modules[_k]); 9884 9962 if (!dedupe || !alreadyImportedModules[item[0]]) { 9885 if (void 0 !== layer) { 9886 if (void 0 === item[5]) item[5] = layer; 9887 else { 9888 item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); 9889 item[5] = layer; 9890 } 9963 if (void 0 !== layer) if (void 0 === item[5]) item[5] = layer; 9964 else { 9965 item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); 9966 item[5] = layer; 9891 9967 } 9892 if (media) { 9893 if (item[2]) { 9894 item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); 9895 item[2] = media; 9896 } else item[2] = media; 9897 } 9898 if (supports) { 9899 if (item[4]) { 9900 item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); 9901 item[4] = supports; 9902 } else item[4] = "".concat(supports); 9903 } 9968 if (media) if (item[2]) { 9969 item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); 9970 item[2] = media; 9971 } else item[2] = media; 9972 if (supports) if (item[4]) { 9973 item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); 9974 item[4] = supports; 9975 } else item[4] = "".concat(supports); 9904 9976 list.push(item); 9905 9977 } … … 10165 10237 var client = __webpack_require__("./node_modules/superagent/lib/client.js"); 10166 10238 var client_default = /*#__PURE__*/ __webpack_require__.n(client); 10239 const list = [ 10240 Error, 10241 EvalError, 10242 RangeError, 10243 ReferenceError, 10244 SyntaxError, 10245 TypeError, 10246 URIError, 10247 AggregateError, 10248 globalThis.DOMException, 10249 globalThis.AssertionError, 10250 globalThis.SystemError 10251 ].filter(Boolean).map((constructor)=>[ 10252 constructor.name, 10253 constructor 10254 ]); 10255 const errorConstructors = new Map(list); 10256 const errorProperties = [ 10257 { 10258 property: 'name', 10259 enumerable: false 10260 }, 10261 { 10262 property: 'message', 10263 enumerable: false 10264 }, 10265 { 10266 property: 'stack', 10267 enumerable: false 10268 }, 10269 { 10270 property: 'code', 10271 enumerable: true 10272 }, 10273 { 10274 property: 'cause', 10275 enumerable: false 10276 }, 10277 { 10278 property: 'errors', 10279 enumerable: false 10280 } 10281 ]; 10282 const toJsonWasCalled = new WeakSet(); 10283 const toJSON = (from)=>{ 10284 toJsonWasCalled.add(from); 10285 const json = from.toJSON(); 10286 toJsonWasCalled.delete(from); 10287 return json; 10288 }; 10289 const newError = (name)=>{ 10290 const ErrorConstructor = errorConstructors.get(name) ?? Error; 10291 return ErrorConstructor === AggregateError ? new ErrorConstructor([]) : new ErrorConstructor(); 10292 }; 10293 const destroyCircular = ({ from, seen, to, forceEnumerable, maxDepth, depth, useToJSON, serialize })=>{ 10294 if (!to) to = Array.isArray(from) ? [] : !serialize && isErrorLike(from) ? newError(from.name) : {}; 10295 seen.push(from); 10296 if (depth >= maxDepth) return to; 10297 if (useToJSON && 'function' == typeof from.toJSON && !toJsonWasCalled.has(from)) return toJSON(from); 10298 const continueDestroyCircular = (value)=>destroyCircular({ 10299 from: value, 10300 seen: [ 10301 ...seen 10302 ], 10303 forceEnumerable, 10304 maxDepth, 10305 depth, 10306 useToJSON, 10307 serialize 10308 }); 10309 for (const [key, value] of Object.entries(from)){ 10310 if (value && value instanceof Uint8Array && 'Buffer' === value.constructor.name) { 10311 to[key] = '[object Buffer]'; 10312 continue; 10313 } 10314 if (null !== value && 'object' == typeof value && 'function' == typeof value.pipe) { 10315 to[key] = '[object Stream]'; 10316 continue; 10317 } 10318 if ('function' != typeof value) { 10319 if (!value || 'object' != typeof value) { 10320 try { 10321 to[key] = value; 10322 } catch {} 10323 continue; 10324 } 10325 if (!seen.includes(from[key])) { 10326 depth++; 10327 to[key] = continueDestroyCircular(from[key]); 10328 continue; 10329 } 10330 to[key] = '[Circular]'; 10331 } 10332 } 10333 if (serialize || to instanceof Error) { 10334 for (const { property, enumerable } of errorProperties)if (void 0 !== from[property] && null !== from[property]) Object.defineProperty(to, property, { 10335 value: isErrorLike(from[property]) || Array.isArray(from[property]) ? continueDestroyCircular(from[property]) : from[property], 10336 enumerable: forceEnumerable ? true : enumerable, 10337 configurable: true, 10338 writable: true 10339 }); 10340 } 10341 return to; 10342 }; 10343 function serializeError(value, options = {}) { 10344 const { maxDepth = Number.POSITIVE_INFINITY, useToJSON = true } = options; 10345 if ('object' == typeof value && null !== value) return destroyCircular({ 10346 from: value, 10347 seen: [], 10348 forceEnumerable: true, 10349 maxDepth, 10350 depth: 0, 10351 useToJSON, 10352 serialize: true 10353 }); 10354 if ('function' == typeof value) return `[Function: ${value.name || 'anonymous'}]`; 10355 return value; 10356 } 10357 function isErrorLike(value) { 10358 return Boolean(value) && 'object' == typeof value && 'string' == typeof value.name && 'string' == typeof value.message && 'string' == typeof value.stack; 10359 } 10167 10360 var util = __webpack_require__("./node_modules/util/util.js"); 10168 10361 var util_default = /*#__PURE__*/ __webpack_require__.n(util); … … 10277 10470 q = props[p]; 10278 10471 if (typeof q === OBJ_TYPE && q.length > 0) { 10279 if (2 === q.length) { 10280 if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match); 10281 else this[q[0]] = q[1]; 10282 } else if (3 === q.length) { 10283 if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0; 10284 else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0; 10285 } else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0; 10472 if (2 === q.length) if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match); 10473 else this[q[0]] = q[1]; 10474 else if (3 === q.length) if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0; 10475 else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0; 10476 else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0; 10286 10477 } else this[q] = match ? match : void 0; 10287 10478 } … … 13524 13715 for(var i = 0, l = form.elements.length; i < l; i++){ 13525 13716 var element = form.elements[i]; 13526 if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || !!options.includeDisabled)) {13717 if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || options.includeDisabled)) { 13527 13718 elementName = element.name || element.id; 13528 13719 if (elementName && !elementNameLookup[elementName]) { … … 13551 13742 var data = []; 13552 13743 var allRadios = true; 13553 for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || !!options.includeDisabled) {13744 for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || options.includeDisabled) { 13554 13745 if (allRadios && 'radio' !== element[i].type) allRadios = false; 13555 13746 var value = getFormElementValue(element[i], options.trim); … … 13753 13944 } 13754 13945 setDisabled(disabled, buttonsToo) { 13755 for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) { 13756 if (disabled) formControl.setAttribute("disabled", "disabled"); 13757 else formControl.removeAttribute("disabled"); 13758 } 13946 for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) if (disabled) formControl.setAttribute("disabled", "disabled"); 13947 else formControl.removeAttribute("disabled"); 13759 13948 } 13760 13949 hideAll() { … … 13910 14099 const wrappers_form = Form; 13911 14100 var package_namespaceObject = { 13912 i8: "10.2. 13"14101 i8: "10.2.22" 13913 14102 }; 13914 14103 function findOriginalExc(exc) { … … 14002 14191 device: err.device, 14003 14192 engine: err.engine, 14004 err: err.err,14193 err: serializeError(err.err), 14005 14194 explanation: err.explanation, 14006 14195 location: err.location, … … 14018 14207 versions: { 14019 14208 videomailClient: package_namespaceObject.i8, 14020 ninjaFormPlugin: this.options.versions?.ninjaFormPlugin14209 videomailNinjaFormPlugin: this.options.versions?.videomailNinjaFormPlugin 14021 14210 } 14022 14211 }; … … 15046 15235 this.messageElement = document.createElement("h2"); 15047 15236 this.messageElement.id = NOTIFIER_MESSAGE_ID; 15048 if (this.notifyElement) { 15049 if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement); 15050 else this.notifyElement.appendChild(this.messageElement); 15051 } else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`); 15052 } 15053 if (message.length > 0) { 15054 if (this.messageElement) { 15055 const problem = messageOptions?.problem; 15056 this.messageElement.innerHTML = (problem ? "☹ " : "") + message; 15057 } else this.options.logger.warn("There is no message element for displaying a message"); 15058 } else this.options.logger.warn("Not going to update notifierMessage element because message is empty"); 15237 if (this.notifyElement) if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement); 15238 else this.notifyElement.appendChild(this.messageElement); 15239 else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`); 15240 } 15241 if (message.length > 0) if (this.messageElement) { 15242 const problem = messageOptions?.problem; 15243 this.messageElement.innerHTML = (problem ? "☹ " : "") + message; 15244 } else this.options.logger.warn("There is no message element for displaying a message"); 15245 else this.options.logger.warn("Not going to update notifierMessage element because message is empty"); 15059 15246 hidden_default()(this.messageElement, false); 15060 15247 } … … 15344 15531 fakeUaString: void 0, 15345 15532 versions: { 15346 ninjaFormPlugin: void 015533 videomailNinjaFormPlugin: void 0 15347 15534 } 15348 15535 }; … … 15624 15811 try { 15625 15812 const videoTrack = media_getFirstVideoTrack(localMediaStream); 15626 if (videoTrack) { 15627 if (videoTrack.enabled) { 15628 let description = ""; 15629 if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label); 15630 description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`); 15631 this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`); 15632 } else throw error_createError({ 15633 message: "Webcam is disabled", 15634 explanation: "The video track seems to be disabled. Enable it in your system.", 15635 options: this.options 15636 }); 15637 } else this.options.logger.debug("UserMedia: detected (but no video tracks exist"); 15813 if (videoTrack) if (videoTrack.enabled) { 15814 let description = ""; 15815 if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label); 15816 description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`); 15817 this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`); 15818 } else throw error_createError({ 15819 message: "Webcam is disabled", 15820 explanation: "The video track seems to be disabled. Enable it in your system.", 15821 options: this.options 15822 }); 15823 else this.options.logger.debug("UserMedia: detected (but no video tracks exist"); 15638 15824 this.rawVisualUserMedia?.addEventListener("loadedmetadata", onLoadedMetaData); 15639 15825 this.rawVisualUserMedia?.addEventListener("play", onPlay); … … 15881 16067 } 15882 16068 writeStream(buffer, opts) { 15883 if (this.stream) { 15884 if (this.stream.destroyed) { 15885 this.stopPings(); 16069 if (this.stream) if (this.stream.destroyed) { 16070 this.stopPings(); 16071 const err = error_createError({ 16072 message: "Already disconnected", 16073 explanation: "Sorry, connection to the server has been destroyed. Please reload.", 16074 options: this.options 16075 }); 16076 this.emit("ERROR", { 16077 err 16078 }); 16079 } else { 16080 const onFlushedCallback = opts?.onFlushedCallback; 16081 try { 16082 this.stream.write(buffer, ()=>{ 16083 if (!onFlushedCallback) return; 16084 try { 16085 onFlushedCallback(opts); 16086 } catch (exc) { 16087 const err = error_createError({ 16088 message: "Failed to write stream buffer", 16089 explanation: `stream.write() failed because of ${pretty(exc)}`, 16090 options: this.options, 16091 exc 16092 }); 16093 this.emit("ERROR", { 16094 err 16095 }); 16096 } 16097 }); 16098 } catch (exc) { 15886 16099 const err = error_createError({ 15887 message: "Already disconnected", 15888 explanation: "Sorry, connection to the server has been destroyed. Please reload.", 15889 options: this.options 16100 message: "Failed writing to server", 16101 explanation: `stream.write() failed because of ${pretty(exc)}`, 16102 options: this.options, 16103 exc 15890 16104 }); 15891 16105 this.emit("ERROR", { 15892 16106 err 15893 16107 }); 15894 } else {15895 const onFlushedCallback = opts?.onFlushedCallback;15896 try {15897 this.stream.write(buffer, ()=>{15898 if (!onFlushedCallback) return;15899 try {15900 onFlushedCallback(opts);15901 } catch (exc) {15902 const err = error_createError({15903 message: "Failed to write stream buffer",15904 explanation: `stream.write() failed because of ${pretty(exc)}`,15905 options: this.options,15906 exc15907 });15908 this.emit("ERROR", {15909 err15910 });15911 }15912 });15913 } catch (exc) {15914 const err = error_createError({15915 message: "Failed writing to server",15916 explanation: `stream.write() failed because of ${pretty(exc)}`,15917 options: this.options,15918 exc15919 });15920 this.emit("ERROR", {15921 err15922 });15923 }15924 16108 } 15925 16109 } … … 16250 16434 case "ready": 16251 16435 this.emit("SERVER_READY"); 16252 if (!this.userMediaTimeout) { 16253 if (this.options.loadUserMediaOnRecord) this.show(); 16254 else this.loadUserMedia(); 16255 } 16436 if (!this.userMediaTimeout) if (this.options.loadUserMediaOnRecord) this.show(); 16437 else this.loadUserMedia(); 16256 16438 break; 16257 16439 case "preview": … … 16918 17100 const tracks = this.replayElement.getElementsByTagName("track"); 16919 17101 const firstTrack = tracks[0]; 16920 if (firstTrack) { 16921 if (src) firstTrack.setAttribute("src", src); 16922 else this.replayElement.removeChild(firstTrack); 16923 } else { 17102 if (firstTrack) if (src) firstTrack.setAttribute("src", src); 17103 else this.replayElement.removeChild(firstTrack); 17104 else { 16924 17105 const track = document.createElement("track"); 16925 17106 track.setAttribute("src", src); … … 16936 17117 let url = src; 16937 17118 if (url && bustCache) url += `?${Date.now()}`; 16938 if (source) { 16939 if (src) source.setAttribute("src", src); 16940 else this.replayElement.removeChild(source); 16941 } else if (src) { 17119 if (source) if (src) source.setAttribute("src", src); 17120 else this.replayElement.removeChild(source); 17121 else if (src) { 16942 17122 const { fps } = this.options.video; 16943 17123 const t = 1 / fps * 2; … … 17082 17262 if (parentElement) this.visualsElement = parentElement.querySelector(`.${this.options.selectors.visualsClass}`); 17083 17263 else this.visualsElement = this.container.querySelector(`.${this.options.selectors.visualsClass}`); 17084 if (!this.visualsElement) { 17085 if (playerOnly && parentElement) this.visualsElement = parentElement; 17086 else { 17087 this.visualsElement = document.createElement("div"); 17088 this.visualsElement.classList.add(this.options.selectors.visualsClass); 17089 const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`); 17090 if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement); 17091 else this.container.appendChild(this.visualsElement); 17092 } 17264 if (!this.visualsElement) if (playerOnly && parentElement) this.visualsElement = parentElement; 17265 else { 17266 this.visualsElement = document.createElement("div"); 17267 this.visualsElement.classList.add(this.options.selectors.visualsClass); 17268 const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`); 17269 if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement); 17270 else this.container.appendChild(this.visualsElement); 17093 17271 } 17094 17272 this.visualsElement.classList.add("visuals"); … … 17204 17382 } 17205 17383 show(params) { 17206 if (!params?.playerOnly) { 17207 if (this.isReplayShown()) { 17208 if (params?.goBack) this.recorder.show(); 17209 } else this.recorder.build(); 17210 } 17384 if (!params?.playerOnly) if (this.isReplayShown()) { 17385 if (params?.goBack) this.recorder.show(); 17386 } else this.recorder.build(); 17211 17387 this.showVisuals(); 17212 17388 } … … 17289 17465 var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js"); 17290 17466 var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform); 17291 var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[ 9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl");17467 var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl"); 17292 17468 var main_options = {}; 17293 17469 main_options.styleTagTransform = styleTagTransform_default(); … … 17381 17557 if (params.err?.stack) this.options.logger.error(params.err.stack); 17382 17558 else if (params.err?.message) this.options.logger.error(params.err.message); 17383 else if (params.exc) { 17384 if (params.exc instanceof Error) { 17385 if (params.exc.stack) this.options.logger.error(params.exc.stack); 17386 else if (params.exc.message) this.options.logger.error(params.exc.message); 17387 } else this.options.logger.error(params.exc); 17388 } 17559 else if (params.exc) if (params.exc instanceof Error) { 17560 if (params.exc.stack) this.options.logger.error(params.exc.stack); 17561 else if (params.exc.message) this.options.logger.error(params.exc.message); 17562 } else this.options.logger.error(params.exc); 17389 17563 if (this.options.displayErrors && params.err) this.visuals.error(params.err); 17390 17564 else this.visuals.reset(); … … 17400 17574 }); 17401 17575 if (!playerOnly) this.visibility.onChange((visible)=>{ 17402 if (this.built) { 17403 if (visible) { 17404 if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume(); 17405 this.emit("VISIBLE"); 17406 } else { 17407 if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause(); 17408 this.emit("INVISIBLE"); 17409 } 17576 if (this.built) if (visible) { 17577 if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume(); 17578 this.emit("VISIBLE"); 17579 } else { 17580 if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause(); 17581 this.emit("INVISIBLE"); 17410 17582 } 17411 17583 }); … … 17640 17812 const hasBcc = recipients.bcc && recipients.bcc.length > 0; 17641 17813 if (toIsConfigured) { 17642 if (!hasTo) { 17643 if (ccIsConfigured && bccIsConfigured) { 17644 if (!hasCc && !hasBcc) valid = false; 17645 } else if (ccIsConfigured) { 17646 if (!hasCc) valid = false; 17647 } else if (bccIsConfigured) { 17648 if (!hasBcc) valid = false; 17649 } else valid = false; 17650 } 17814 if (!hasTo) if (ccIsConfigured && bccIsConfigured) { 17815 if (!hasCc && !hasBcc) valid = false; 17816 } else if (ccIsConfigured) { 17817 if (!hasCc) valid = false; 17818 } else if (bccIsConfigured) { 17819 if (!hasBcc) valid = false; 17820 } else valid = false; 17651 17821 } else if (ccIsConfigured) { 17652 17822 if (!hasCc) { … … 17802 17972 debug(...args) { 17803 17973 const output = this.lifo("debug", args); 17804 if (this.options.verbose) { 17805 if (this.browser.isFirefox()) this.logger.debug(output); 17806 else if (this.logger.groupCollapsed) { 17807 this.logger.groupCollapsed(output); 17808 this.logger.trace("Trace"); 17809 this.logger.groupEnd(); 17810 } else if (this.logger.debug) this.logger.debug(output); 17811 else console.log(output); 17812 } 17974 if (this.options.verbose) if (this.browser.isFirefox()) this.logger.debug(output); 17975 else if (this.logger.groupCollapsed) { 17976 this.logger.groupCollapsed(output); 17977 this.logger.trace("Trace"); 17978 this.logger.groupEnd(); 17979 } else if (this.logger.debug) this.logger.debug(output); 17980 else console.log(output); 17813 17981 } 17814 17982 error(...args) { -
videomail-for-ninja-forms/tags/7.0.8/target/php/videomail.php
r3257516 r3269283 3 3 4 4 const NAME = 'Videomail'; 5 const VERSION = '7.0. 7';5 const VERSION = '7.0.8'; 6 6 const AUTHOR = 'Michael Heuberger + Kyle B. Johnson'; 7 7 const SLUG = 'videomail'; -
videomail-for-ninja-forms/tags/7.0.8/videomail-for-ninja-forms.php
r3257516 r3269283 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: 7.0. 76 Version: 7.0.8 7 7 Author: Michael Heuberger + Kyle B. Johnson 8 8 Author URI: https://videomail.io -
videomail-for-ninja-forms/trunk/readme.txt
r3257516 r3269283 5 5 6 6 Requires at least: 6.0 7 Tested up to: 7.0.78 Stable tag: 7.0. 77 Tested up to: 6.7.2 8 Stable tag: 7.0.8 9 9 Requires PHP: 8.1.0 10 10 Donate link: https://videomail.io/faq … … 71 71 72 72 == Changelog == 73 = 7.0.8 (9 Apr 2025) = 74 *Improvement:* 75 * Serialize all error variables for improved error reporting 76 *Chore:* 77 * Upgrade Videomail-Client 78 *Fix:* 79 * Corrects invalid version for the "Tested up to" field 80 73 81 = 7.0.7 (18 March 2025) = 74 82 *Improvement:* -
videomail-for-ninja-forms/trunk/target/js/main.min.js
r3257516 r3269283 1 let PLUGIN_VERSION="7.0. 7",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC4 3XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3QiLCJib2R5Iiwib25CZWZvcmVEZXN0cm95IiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSJdLCJtYXBwaW5ncyI6IkFBQ0EsSUFBTUEsZUFBaUIsUUFHbkJDLE1BQVEsQ0FBQSxFQUtOQyx5QkFBMkJDLFdBQVdDLE9BQU9DLE9BQU8sQ0FDeERDLGdCQUFpQixLQUVqQkMsV0FBWSxLQUVaQyxRQUF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1 let PLUGIN_VERSION="7.0.8",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC44XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3Qi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 -
videomail-for-ninja-forms/trunk/target/js/videomail-client/index.js
r3257516 r3269283 480 480 for(i = 0; i < list.length; ++i){ 481 481 var buf = list[i]; 482 if (isInstance(buf, Uint8Array)) { 483 if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos); 484 else Uint8Array.prototype.set.call(buffer, buf, pos); 485 } else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos); 482 if (isInstance(buf, Uint8Array)) if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos); 483 else Uint8Array.prototype.set.call(buffer, buf, pos); 484 else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos); 486 485 else throw new TypeError('"list" argument must be an Array of Buffers'); 487 486 pos += buf.length; … … 647 646 if (numberIsNaN(byteOffset)) byteOffset = dir ? 0 : buffer.length - 1; 648 647 if (byteOffset < 0) byteOffset = buffer.length + byteOffset; 649 if (byteOffset >= buffer.length) { 650 if (dir) return -1; 651 byteOffset = buffer.length - 1; 652 } else if (byteOffset < 0) { 653 if (!dir) return -1; 654 byteOffset = 0; 655 } 648 if (byteOffset >= buffer.length) if (dir) return -1; 649 else byteOffset = buffer.length - 1; 650 else if (byteOffset < 0) if (!dir) return -1; 651 else byteOffset = 0; 656 652 if ('string' == typeof val) val = Buffer.from(val, encoding); 657 653 if (Buffer.isBuffer(val)) { … … 661 657 if ('number' == typeof val) { 662 658 val &= 0xFF; 663 if ('function' == typeof Uint8Array.prototype.indexOf) { 664 if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); 665 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); 666 } 659 if ('function' == typeof Uint8Array.prototype.indexOf) if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); 660 else return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); 667 661 return arrayIndexOf(buffer, [ 668 662 val … … 2021 2015 function prependListener(emitter, event, fn) { 2022 2016 if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn); 2023 if (emitter._events && emitter._events[event]) { 2024 if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 2025 else emitter._events[event] = [ 2026 fn, 2027 emitter._events[event] 2028 ]; 2029 } else emitter.on(event, fn); 2017 if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 2018 else emitter._events[event] = [ 2019 fn, 2020 emitter._events[event] 2021 ]; 2022 else emitter.on(event, fn); 2030 2023 } 2031 2024 function ReadableState(options, stream) { … … 2122 2115 else if (state.objectMode || chunk && chunk.length > 0) { 2123 2116 if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk); 2124 if (addToFront) { 2125 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 2126 else addChunk(stream, state, chunk, true); 2127 } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 2117 if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 2118 else addChunk(stream, state, chunk, true); 2119 else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 2128 2120 else { 2129 2121 state.reading = false; … … 2184 2176 if (n <= 0 || 0 === state.length && state.ended) return 0; 2185 2177 if (state.objectMode) return 1; 2186 if (n !== n) { 2187 if (state.flowing && state.length) return state.buffer.head.data.length; 2188 return state.length; 2189 } 2178 if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length; 2179 else return state.length; 2190 2180 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); 2191 2181 if (n <= state.length) return n; … … 3070 3060 } 3071 3061 function prefinish(stream, state) { 3072 if (!state.prefinished && !state.finalCalled) { 3073 if ('function' == typeof stream._final) { 3074 state.pendingcb++; 3075 state.finalCalled = true; 3076 pna.nextTick(callFinal, stream, state); 3077 } else { 3078 state.prefinished = true; 3079 stream.emit('prefinish'); 3080 } 3062 if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) { 3063 state.pendingcb++; 3064 state.finalCalled = true; 3065 pna.nextTick(callFinal, stream, state); 3066 } else { 3067 state.prefinished = true; 3068 stream.emit('prefinish'); 3081 3069 } 3082 3070 } … … 3095 3083 state.ending = true; 3096 3084 finishMaybe(stream, state); 3097 if (cb) { 3098 if (state.finished) pna.nextTick(cb); 3099 else stream.once('finish', cb); 3100 } 3085 if (cb) if (state.finished) pna.nextTick(cb); 3086 else stream.once('finish', cb); 3101 3087 state.ended = true; 3102 3088 stream.writable = false; … … 3215 3201 if (readableDestroyed || writableDestroyed) { 3216 3202 if (cb) cb(err); 3217 else if (err) { 3218 if (this._writableState) { 3219 if (!this._writableState.errorEmitted) { 3220 this._writableState.errorEmitted = true; 3221 pna.nextTick(emitErrorNT, this, err); 3222 } 3223 } else pna.nextTick(emitErrorNT, this, err); 3224 } 3203 else if (err) if (this._writableState) { 3204 if (!this._writableState.errorEmitted) { 3205 this._writableState.errorEmitted = true; 3206 pna.nextTick(emitErrorNT, this, err); 3207 } 3208 } else pna.nextTick(emitErrorNT, this, err); 3225 3209 return this; 3226 3210 } … … 3228 3212 if (this._writableState) this._writableState.destroyed = true; 3229 3213 this._destroy(err || null, function(err) { 3230 if (!cb && err) { 3231 if (_this._writableState) { 3232 if (!_this._writableState.errorEmitted) { 3233 _this._writableState.errorEmitted = true; 3234 pna.nextTick(emitErrorNT, _this, err); 3235 } 3236 } else pna.nextTick(emitErrorNT, _this, err); 3237 } else if (cb) cb(err); 3214 if (!cb && err) if (_this._writableState) { 3215 if (!_this._writableState.errorEmitted) { 3216 _this._writableState.errorEmitted = true; 3217 pna.nextTick(emitErrorNT, _this, err); 3218 } 3219 } else pna.nextTick(emitErrorNT, _this, err); 3220 else if (cb) cb(err); 3238 3221 }); 3239 3222 return this; … … 3298 3281 if ('number' != typeof size) throw new TypeError('Argument must be a number'); 3299 3282 var buf = Buffer(size); 3300 if (void 0 !== fill) { 3301 if ('string' == typeof encoding) buf.fill(fill, encoding); 3302 else buf.fill(fill); 3303 } else buf.fill(0); 3283 if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding); 3284 else buf.fill(fill); 3285 else buf.fill(0); 3304 3286 return buf; 3305 3287 }; … … 3440 3422 nb = utf8CheckByte(buf[j]); 3441 3423 if (nb >= 0) { 3442 if (nb > 0) { 3443 if (2 === nb) nb = 0; 3444 else self1.lastNeed = nb - 3; 3445 } 3424 if (nb > 0) if (2 === nb) nb = 0; 3425 else self1.lastNeed = nb - 3; 3446 3426 return nb; 3447 3427 } … … 3833 3813 list = events[type]; 3834 3814 if (void 0 === list) return this; 3835 if (list === listener || list.listener === listener) { 3836 if (0 === --this._eventsCount) this._events = Object.create(null); 3837 else { 3838 delete events[type]; 3839 if (events.removeListener) this.emit('removeListener', type, list.listener || listener); 3840 } 3841 } else if ('function' != typeof list) { 3815 if (list === listener || list.listener === listener) if (0 === --this._eventsCount) this._events = Object.create(null); 3816 else { 3817 delete events[type]; 3818 if (events.removeListener) this.emit('removeListener', type, list.listener || listener); 3819 } 3820 else if ('function' != typeof list) { 3842 3821 position = -1; 3843 3822 for(i = list.length - 1; i >= 0; i--)if (list[i] === listener || list[i].listener === listener) { … … 3863 3842 this._events = Object.create(null); 3864 3843 this._eventsCount = 0; 3865 } else if (void 0 !== events[type]) { 3866 if (0 === --this._eventsCount) this._events = Object.create(null); 3867 else delete events[type]; 3868 } 3844 } else if (void 0 !== events[type]) if (0 === --this._eventsCount) this._events = Object.create(null); 3845 else delete events[type]; 3869 3846 return this; 3870 3847 } … … 3957 3934 } 3958 3935 function eventTargetAgnosticAddListener(emitter, name, listener, flags) { 3959 if ('function' == typeof emitter.on) { 3960 if (flags.once) emitter.once(name, listener); 3961 else emitter.on(name, listener); 3962 } else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) { 3936 if ('function' == typeof emitter.on) if (flags.once) emitter.once(name, listener); 3937 else emitter.on(name, listener); 3938 else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) { 3963 3939 if (flags.once) emitter.removeEventListener(name, wrapListener); 3964 3940 listener(arg); … … 4001 3977 function setReplace(replace, val, k, parent) { 4002 3978 var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k); 4003 if (void 0 !== propertyDescriptor.get) { 4004 if (propertyDescriptor.configurable) { 4005 Object.defineProperty(parent, k, { 4006 value: replace 4007 }); 4008 arr.push([ 4009 parent, 4010 k, 4011 val, 4012 propertyDescriptor 4013 ]); 4014 } else replacerStack.push([ 3979 if (void 0 !== propertyDescriptor.get) if (propertyDescriptor.configurable) { 3980 Object.defineProperty(parent, k, { 3981 value: replace 3982 }); 3983 arr.push([ 3984 parent, 3985 k, 4015 3986 val, 4016 k, 4017 replace 3987 propertyDescriptor 4018 3988 ]); 4019 } else { 3989 } else replacerStack.push([ 3990 val, 3991 k, 3992 replace 3993 ]); 3994 else { 4020 3995 parent[k] = replace; 4021 3996 arr.push([ … … 4141 4116 var hasOwnProperty = Object.prototype.hasOwnProperty; 4142 4117 var forEachArray = function(array, iterator, receiver) { 4143 for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) { 4144 if (null == receiver) iterator(array[i], i, array); 4145 else iterator.call(receiver, array[i], i, array); 4146 } 4118 for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) if (null == receiver) iterator(array[i], i, array); 4119 else iterator.call(receiver, array[i], i, array); 4147 4120 }; 4148 4121 var forEachString = function(string, iterator, receiver) { … … 4151 4124 }; 4152 4125 var forEachObject = function(object, iterator, receiver) { 4153 for(var k in object)if (hasOwnProperty.call(object, k)) { 4154 if (null == receiver) iterator(object[k], k, object); 4155 else iterator.call(receiver, object[k], k, object); 4156 } 4126 for(var k in object)if (hasOwnProperty.call(object, k)) if (null == receiver) iterator(object[k], k, object); 4127 else iterator.call(receiver, object[k], k, object); 4157 4128 }; 4158 4129 var forEach = function(list, iterator, thisArg) { … … 5182 5153 depth: maxDepth - depth 5183 5154 }); 5184 if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect();5155 else if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect(); 5185 5156 } 5186 5157 if (isMap(obj)) { … … 5419 5390 for(var k = 0; k < syms.length; k++)symMap['$' + syms[k]] = syms[k]; 5420 5391 } 5421 for(var key in obj){ 5422 if (!!has(obj, key)) { 5423 if (!isArr || String(Number(key)) !== key || !(key < obj.length)) { 5424 if (!(hasShammedSymbols && symMap['$' + key] instanceof Symbol)) { 5425 if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); 5426 else xs.push(key + ': ' + inspect(obj[key], obj)); 5427 } 5428 } 5429 } 5392 for(var key in obj)if (has(obj, key)) { 5393 if (!isArr || String(Number(key)) !== key || !(key < obj.length)) if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) continue; 5394 else if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); 5395 else xs.push(key + ': ' + inspect(obj[key], obj)); 5430 5396 } 5431 5397 if ('function' == typeof gOPS) { … … 5960 5926 var pos = tmpSc.get(object); 5961 5927 step += 1; 5962 if (void 0 !== pos) { 5963 if (pos === step) throw new RangeError('Cyclic object value'); 5964 findFlag = true; 5965 } 5928 if (void 0 !== pos) if (pos === step) throw new RangeError('Cyclic object value'); 5929 else findFlag = true; 5966 5930 if (void 0 === tmpSc.get(sentinel)) step = 0; 5967 5931 } … … 6085 6049 var joined = keys.join(options.delimiter); 6086 6050 var prefix = true === options.addQueryPrefix ? '?' : ''; 6087 if (options.charsetSentinel) { 6088 if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&'; 6089 else prefix += 'utf8=%E2%9C%93&'; 6090 } 6051 if (options.charsetSentinel) if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&'; 6052 else prefix += 'utf8=%E2%9C%93&'; 6091 6053 return joined.length > 0 ? prefix + joined : ''; 6092 6054 }; … … 7582 7544 exports1.debuglog = function(set) { 7583 7545 set = set.toUpperCase(); 7584 if (!debugs[set]) { 7585 if (debugEnvRegex.test(set)) { 7586 var pid = process.pid; 7587 debugs[set] = function() { 7588 var msg = exports1.format.apply(exports1, arguments); 7589 console.error('%s %d: %s', set, pid, msg); 7590 }; 7591 } else debugs[set] = function() {}; 7592 } 7546 if (!debugs[set]) if (debugEnvRegex.test(set)) { 7547 var pid = process.pid; 7548 debugs[set] = function() { 7549 var msg = exports1.format.apply(exports1, arguments); 7550 console.error('%s %d: %s', set, pid, msg); 7551 }; 7552 } else debugs[set] = function() {}; 7593 7553 return debugs[set]; 7594 7554 }; … … 7729 7689 if (isError(value)) base = ' ' + formatError(value); 7730 7690 if (0 === keys.length && (!array || 0 == value.length)) return braces[0] + base + braces[1]; 7731 if (recurseTimes < 0) { 7732 if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); 7733 return ctx.stylize('[Object]', 'special'); 7734 } 7691 if (recurseTimes < 0) if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); 7692 else return ctx.stylize('[Object]', 'special'); 7735 7693 ctx.seen.push(value); 7736 7694 var output; … … 7771 7729 else if (desc.set) str = ctx.stylize('[Setter]', 'special'); 7772 7730 if (!hasOwnProperty(visibleKeys, key)) name = '[' + key + ']'; 7773 if (!str) { 7774 if (ctx.seen.indexOf(desc.value) < 0) { 7775 str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1); 7776 if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) { 7777 return ' ' + line; 7778 }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) { 7779 return ' ' + line; 7780 }).join('\n'); 7781 } else str = ctx.stylize('[Circular]', 'special'); 7782 } 7731 if (!str) if (ctx.seen.indexOf(desc.value) < 0) { 7732 str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1); 7733 if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) { 7734 return ' ' + line; 7735 }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) { 7736 return ' ' + line; 7737 }).join('\n'); 7738 } else str = ctx.stylize('[Circular]', 'special'); 7783 7739 if (isUndefined(name)) { 7784 7740 if (array && key.match(/^\d+$/)) return str; … … 8099 8055 function prependListener(emitter, event, fn) { 8100 8056 if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn); 8101 if (emitter._events && emitter._events[event]) { 8102 if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 8103 else emitter._events[event] = [ 8104 fn, 8105 emitter._events[event] 8106 ]; 8107 } else emitter.on(event, fn); 8057 if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); 8058 else emitter._events[event] = [ 8059 fn, 8060 emitter._events[event] 8061 ]; 8062 else emitter.on(event, fn); 8108 8063 } 8109 8064 function ReadableState(options, stream) { … … 8200 8155 else if (state.objectMode || chunk && chunk.length > 0) { 8201 8156 if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk); 8202 if (addToFront) { 8203 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 8204 else addChunk(stream, state, chunk, true); 8205 } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 8157 if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event')); 8158 else addChunk(stream, state, chunk, true); 8159 else if (state.ended) stream.emit('error', new Error('stream.push() after EOF')); 8206 8160 else { 8207 8161 state.reading = false; … … 8262 8216 if (n <= 0 || 0 === state.length && state.ended) return 0; 8263 8217 if (state.objectMode) return 1; 8264 if (n !== n) { 8265 if (state.flowing && state.length) return state.buffer.head.data.length; 8266 return state.length; 8267 } 8218 if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length; 8219 else return state.length; 8268 8220 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); 8269 8221 if (n <= state.length) return n; … … 9148 9100 } 9149 9101 function prefinish(stream, state) { 9150 if (!state.prefinished && !state.finalCalled) { 9151 if ('function' == typeof stream._final) { 9152 state.pendingcb++; 9153 state.finalCalled = true; 9154 pna.nextTick(callFinal, stream, state); 9155 } else { 9156 state.prefinished = true; 9157 stream.emit('prefinish'); 9158 } 9102 if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) { 9103 state.pendingcb++; 9104 state.finalCalled = true; 9105 pna.nextTick(callFinal, stream, state); 9106 } else { 9107 state.prefinished = true; 9108 stream.emit('prefinish'); 9159 9109 } 9160 9110 } … … 9173 9123 state.ending = true; 9174 9124 finishMaybe(stream, state); 9175 if (cb) { 9176 if (state.finished) pna.nextTick(cb); 9177 else stream.once('finish', cb); 9178 } 9125 if (cb) if (state.finished) pna.nextTick(cb); 9126 else stream.once('finish', cb); 9179 9127 state.ended = true; 9180 9128 stream.writable = false; … … 9293 9241 if (readableDestroyed || writableDestroyed) { 9294 9242 if (cb) cb(err); 9295 else if (err) { 9296 if (this._writableState) { 9297 if (!this._writableState.errorEmitted) { 9298 this._writableState.errorEmitted = true; 9299 pna.nextTick(emitErrorNT, this, err); 9300 } 9301 } else pna.nextTick(emitErrorNT, this, err); 9302 } 9243 else if (err) if (this._writableState) { 9244 if (!this._writableState.errorEmitted) { 9245 this._writableState.errorEmitted = true; 9246 pna.nextTick(emitErrorNT, this, err); 9247 } 9248 } else pna.nextTick(emitErrorNT, this, err); 9303 9249 return this; 9304 9250 } … … 9306 9252 if (this._writableState) this._writableState.destroyed = true; 9307 9253 this._destroy(err || null, function(err) { 9308 if (!cb && err) { 9309 if (_this._writableState) { 9310 if (!_this._writableState.errorEmitted) { 9311 _this._writableState.errorEmitted = true; 9312 pna.nextTick(emitErrorNT, _this, err); 9313 } 9314 } else pna.nextTick(emitErrorNT, _this, err); 9315 } else if (cb) cb(err); 9254 if (!cb && err) if (_this._writableState) { 9255 if (!_this._writableState.errorEmitted) { 9256 _this._writableState.errorEmitted = true; 9257 pna.nextTick(emitErrorNT, _this, err); 9258 } 9259 } else pna.nextTick(emitErrorNT, _this, err); 9260 else if (cb) cb(err); 9316 9261 }); 9317 9262 return this; … … 9376 9321 if ('number' != typeof size) throw new TypeError('Argument must be a number'); 9377 9322 var buf = Buffer(size); 9378 if (void 0 !== fill) { 9379 if ('string' == typeof encoding) buf.fill(fill, encoding); 9380 else buf.fill(fill); 9381 } else buf.fill(0); 9323 if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding); 9324 else buf.fill(fill); 9325 else buf.fill(0); 9382 9326 return buf; 9383 9327 }; … … 9518 9462 nb = utf8CheckByte(buf[j]); 9519 9463 if (nb >= 0) { 9520 if (nb > 0) { 9521 if (2 === nb) nb = 0; 9522 else self1.lastNeed = nb - 3; 9523 } 9464 if (nb > 0) if (2 === nb) nb = 0; 9465 else self1.lastNeed = nb - 3; 9524 9466 return nb; 9525 9467 } … … 9826 9768 } 9827 9769 }, 9828 "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[ 9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {9770 "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) { 9829 9771 "use strict"; 9830 9772 __webpack_require__.d(__webpack_exports__, { … … 9838 9780 ___CSS_LOADER_EXPORT___.push([ 9839 9781 module1.id, 9840 '@keyframes blink{0%{opacity:.9}35%{opacity:.9}50%{opacity:.1}85%{opacity:.1}to{opacity:.9}}.videomail .visuals{position:relative}.videomail .visuals video.replay{width:100%;height:100%}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint{height:auto;margin:0}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .paused,.videomail .facingMode,.videomail noscript{z-index:100;position:absolute}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint,.videomail noscript{font-weight:700}.videomail .countdown,.videomail .paused,.videomail noscript{width:100%;top:50%;transform:translateY(-50%)}.videomail .pausedHeader,.videomail .pausedHint,.videomail .countdown{text-align:center;letter-spacing:4px;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.videomail .pausedHeader,.videomail .countdown{opacity:.9;font-size:460%}.videomail .pausedHint{font-size:150%}.videomail .facingMode{color:#f5f5f5e6;z-index:10;background:#1e1e1e80;border:none;outline:none;padding:.1em .3em;font-family:monospace;font-size:1.2em;transition:all .2s;bottom:.6em;right:.7em}.videomail .facingMode:hover{cursor:pointer;background:#323232b3}.videomail .recordTimer,.videomail .recordNote{color:#00d814;opacity:.9;background:#0a0a0acc;padding:.3em .4em;font-family:monospace;transition:all 1s;right:.7em}.videomail .recordTimer.near,.videomail .recordNote.near{color:#eb9369}.videomail .recordTimer.nigh,.videomail .recordNote.nigh{color:#ea4b2a}.videomail .recordTimer{top:.7em}.videomail .recordNote{top:3.6em}.videomail .recordNote:before{content:"REC";animation:1s infinite blink}.videomail .notifier{box-sizing:border-box;overflow:hidden}.videomail .radioGroup{display:block}.videomail .radioGroup label{cursor:pointer}.videomail video{margin-bottom:0}.videomail video.userMedia{background-color:#3232321a}', 9782 `@keyframes blink { 9783 0% { 9784 opacity: .9; 9785 } 9786 9787 35% { 9788 opacity: .9; 9789 } 9790 9791 50% { 9792 opacity: .1; 9793 } 9794 9795 85% { 9796 opacity: .1; 9797 } 9798 9799 100% { 9800 opacity: .9; 9801 } 9802 } 9803 9804 .videomail .visuals { 9805 position: relative; 9806 } 9807 9808 .videomail .visuals video.replay { 9809 width: 100%; 9810 height: 100%; 9811 } 9812 9813 .videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint { 9814 height: auto; 9815 margin: 0; 9816 } 9817 9818 .videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .paused, .videomail .facingMode, .videomail noscript { 9819 z-index: 100; 9820 position: absolute; 9821 } 9822 9823 .videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint, .videomail noscript { 9824 font-weight: bold; 9825 } 9826 9827 .videomail .countdown, .videomail .paused, .videomail noscript { 9828 width: 100%; 9829 top: 50%; 9830 transform: translateY(-50%); 9831 } 9832 9833 .videomail .pausedHeader, .videomail .pausedHint, .videomail .countdown { 9834 text-align: center; 9835 letter-spacing: 4px; 9836 text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; 9837 } 9838 9839 .videomail .pausedHeader, .videomail .countdown { 9840 opacity: .9; 9841 font-size: 460%; 9842 } 9843 9844 .videomail .pausedHint { 9845 font-size: 150%; 9846 } 9847 9848 .videomail .facingMode { 9849 color: #f5f5f5e6; 9850 z-index: 10; 9851 background: #1e1e1e80; 9852 border: none; 9853 outline: none; 9854 padding: .1em .3em; 9855 font-family: monospace; 9856 font-size: 1.2em; 9857 transition: all .2s; 9858 bottom: .6em; 9859 right: .7em; 9860 } 9861 9862 .videomail .facingMode:hover { 9863 cursor: pointer; 9864 background: #323232b3; 9865 } 9866 9867 .videomail .recordTimer, .videomail .recordNote { 9868 color: #00d814; 9869 opacity: .9; 9870 background: #0a0a0acc; 9871 padding: .3em .4em; 9872 font-family: monospace; 9873 transition: all 1s; 9874 right: .7em; 9875 } 9876 9877 .videomail .recordTimer.near, .videomail .recordNote.near { 9878 color: #eb9369; 9879 } 9880 9881 .videomail .recordTimer.nigh, .videomail .recordNote.nigh { 9882 color: #ea4b2a; 9883 } 9884 9885 .videomail .recordTimer { 9886 top: .7em; 9887 } 9888 9889 .videomail .recordNote { 9890 top: 3.6em; 9891 } 9892 9893 .videomail .recordNote:before { 9894 content: "REC"; 9895 animation: 1s infinite blink; 9896 } 9897 9898 .videomail .notifier { 9899 box-sizing: border-box; 9900 overflow: hidden; 9901 } 9902 9903 .videomail .radioGroup { 9904 display: block; 9905 } 9906 9907 .videomail .radioGroup label { 9908 cursor: pointer; 9909 } 9910 9911 .videomail video { 9912 margin-bottom: 0; 9913 } 9914 9915 .videomail video.userMedia { 9916 background-color: #3232321a; 9917 } 9918 `, 9841 9919 "" 9842 9920 ]); … … 9883 9961 var item = [].concat(modules[_k]); 9884 9962 if (!dedupe || !alreadyImportedModules[item[0]]) { 9885 if (void 0 !== layer) { 9886 if (void 0 === item[5]) item[5] = layer; 9887 else { 9888 item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); 9889 item[5] = layer; 9890 } 9963 if (void 0 !== layer) if (void 0 === item[5]) item[5] = layer; 9964 else { 9965 item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); 9966 item[5] = layer; 9891 9967 } 9892 if (media) { 9893 if (item[2]) { 9894 item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); 9895 item[2] = media; 9896 } else item[2] = media; 9897 } 9898 if (supports) { 9899 if (item[4]) { 9900 item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); 9901 item[4] = supports; 9902 } else item[4] = "".concat(supports); 9903 } 9968 if (media) if (item[2]) { 9969 item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); 9970 item[2] = media; 9971 } else item[2] = media; 9972 if (supports) if (item[4]) { 9973 item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); 9974 item[4] = supports; 9975 } else item[4] = "".concat(supports); 9904 9976 list.push(item); 9905 9977 } … … 10165 10237 var client = __webpack_require__("./node_modules/superagent/lib/client.js"); 10166 10238 var client_default = /*#__PURE__*/ __webpack_require__.n(client); 10239 const list = [ 10240 Error, 10241 EvalError, 10242 RangeError, 10243 ReferenceError, 10244 SyntaxError, 10245 TypeError, 10246 URIError, 10247 AggregateError, 10248 globalThis.DOMException, 10249 globalThis.AssertionError, 10250 globalThis.SystemError 10251 ].filter(Boolean).map((constructor)=>[ 10252 constructor.name, 10253 constructor 10254 ]); 10255 const errorConstructors = new Map(list); 10256 const errorProperties = [ 10257 { 10258 property: 'name', 10259 enumerable: false 10260 }, 10261 { 10262 property: 'message', 10263 enumerable: false 10264 }, 10265 { 10266 property: 'stack', 10267 enumerable: false 10268 }, 10269 { 10270 property: 'code', 10271 enumerable: true 10272 }, 10273 { 10274 property: 'cause', 10275 enumerable: false 10276 }, 10277 { 10278 property: 'errors', 10279 enumerable: false 10280 } 10281 ]; 10282 const toJsonWasCalled = new WeakSet(); 10283 const toJSON = (from)=>{ 10284 toJsonWasCalled.add(from); 10285 const json = from.toJSON(); 10286 toJsonWasCalled.delete(from); 10287 return json; 10288 }; 10289 const newError = (name)=>{ 10290 const ErrorConstructor = errorConstructors.get(name) ?? Error; 10291 return ErrorConstructor === AggregateError ? new ErrorConstructor([]) : new ErrorConstructor(); 10292 }; 10293 const destroyCircular = ({ from, seen, to, forceEnumerable, maxDepth, depth, useToJSON, serialize })=>{ 10294 if (!to) to = Array.isArray(from) ? [] : !serialize && isErrorLike(from) ? newError(from.name) : {}; 10295 seen.push(from); 10296 if (depth >= maxDepth) return to; 10297 if (useToJSON && 'function' == typeof from.toJSON && !toJsonWasCalled.has(from)) return toJSON(from); 10298 const continueDestroyCircular = (value)=>destroyCircular({ 10299 from: value, 10300 seen: [ 10301 ...seen 10302 ], 10303 forceEnumerable, 10304 maxDepth, 10305 depth, 10306 useToJSON, 10307 serialize 10308 }); 10309 for (const [key, value] of Object.entries(from)){ 10310 if (value && value instanceof Uint8Array && 'Buffer' === value.constructor.name) { 10311 to[key] = '[object Buffer]'; 10312 continue; 10313 } 10314 if (null !== value && 'object' == typeof value && 'function' == typeof value.pipe) { 10315 to[key] = '[object Stream]'; 10316 continue; 10317 } 10318 if ('function' != typeof value) { 10319 if (!value || 'object' != typeof value) { 10320 try { 10321 to[key] = value; 10322 } catch {} 10323 continue; 10324 } 10325 if (!seen.includes(from[key])) { 10326 depth++; 10327 to[key] = continueDestroyCircular(from[key]); 10328 continue; 10329 } 10330 to[key] = '[Circular]'; 10331 } 10332 } 10333 if (serialize || to instanceof Error) { 10334 for (const { property, enumerable } of errorProperties)if (void 0 !== from[property] && null !== from[property]) Object.defineProperty(to, property, { 10335 value: isErrorLike(from[property]) || Array.isArray(from[property]) ? continueDestroyCircular(from[property]) : from[property], 10336 enumerable: forceEnumerable ? true : enumerable, 10337 configurable: true, 10338 writable: true 10339 }); 10340 } 10341 return to; 10342 }; 10343 function serializeError(value, options = {}) { 10344 const { maxDepth = Number.POSITIVE_INFINITY, useToJSON = true } = options; 10345 if ('object' == typeof value && null !== value) return destroyCircular({ 10346 from: value, 10347 seen: [], 10348 forceEnumerable: true, 10349 maxDepth, 10350 depth: 0, 10351 useToJSON, 10352 serialize: true 10353 }); 10354 if ('function' == typeof value) return `[Function: ${value.name || 'anonymous'}]`; 10355 return value; 10356 } 10357 function isErrorLike(value) { 10358 return Boolean(value) && 'object' == typeof value && 'string' == typeof value.name && 'string' == typeof value.message && 'string' == typeof value.stack; 10359 } 10167 10360 var util = __webpack_require__("./node_modules/util/util.js"); 10168 10361 var util_default = /*#__PURE__*/ __webpack_require__.n(util); … … 10277 10470 q = props[p]; 10278 10471 if (typeof q === OBJ_TYPE && q.length > 0) { 10279 if (2 === q.length) { 10280 if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match); 10281 else this[q[0]] = q[1]; 10282 } else if (3 === q.length) { 10283 if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0; 10284 else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0; 10285 } else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0; 10472 if (2 === q.length) if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match); 10473 else this[q[0]] = q[1]; 10474 else if (3 === q.length) if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0; 10475 else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0; 10476 else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0; 10286 10477 } else this[q] = match ? match : void 0; 10287 10478 } … … 13524 13715 for(var i = 0, l = form.elements.length; i < l; i++){ 13525 13716 var element = form.elements[i]; 13526 if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || !!options.includeDisabled)) {13717 if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || options.includeDisabled)) { 13527 13718 elementName = element.name || element.id; 13528 13719 if (elementName && !elementNameLookup[elementName]) { … … 13551 13742 var data = []; 13552 13743 var allRadios = true; 13553 for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || !!options.includeDisabled) {13744 for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || options.includeDisabled) { 13554 13745 if (allRadios && 'radio' !== element[i].type) allRadios = false; 13555 13746 var value = getFormElementValue(element[i], options.trim); … … 13753 13944 } 13754 13945 setDisabled(disabled, buttonsToo) { 13755 for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) { 13756 if (disabled) formControl.setAttribute("disabled", "disabled"); 13757 else formControl.removeAttribute("disabled"); 13758 } 13946 for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) if (disabled) formControl.setAttribute("disabled", "disabled"); 13947 else formControl.removeAttribute("disabled"); 13759 13948 } 13760 13949 hideAll() { … … 13910 14099 const wrappers_form = Form; 13911 14100 var package_namespaceObject = { 13912 i8: "10.2. 13"14101 i8: "10.2.22" 13913 14102 }; 13914 14103 function findOriginalExc(exc) { … … 14002 14191 device: err.device, 14003 14192 engine: err.engine, 14004 err: err.err,14193 err: serializeError(err.err), 14005 14194 explanation: err.explanation, 14006 14195 location: err.location, … … 14018 14207 versions: { 14019 14208 videomailClient: package_namespaceObject.i8, 14020 ninjaFormPlugin: this.options.versions?.ninjaFormPlugin14209 videomailNinjaFormPlugin: this.options.versions?.videomailNinjaFormPlugin 14021 14210 } 14022 14211 }; … … 15046 15235 this.messageElement = document.createElement("h2"); 15047 15236 this.messageElement.id = NOTIFIER_MESSAGE_ID; 15048 if (this.notifyElement) { 15049 if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement); 15050 else this.notifyElement.appendChild(this.messageElement); 15051 } else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`); 15052 } 15053 if (message.length > 0) { 15054 if (this.messageElement) { 15055 const problem = messageOptions?.problem; 15056 this.messageElement.innerHTML = (problem ? "☹ " : "") + message; 15057 } else this.options.logger.warn("There is no message element for displaying a message"); 15058 } else this.options.logger.warn("Not going to update notifierMessage element because message is empty"); 15237 if (this.notifyElement) if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement); 15238 else this.notifyElement.appendChild(this.messageElement); 15239 else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`); 15240 } 15241 if (message.length > 0) if (this.messageElement) { 15242 const problem = messageOptions?.problem; 15243 this.messageElement.innerHTML = (problem ? "☹ " : "") + message; 15244 } else this.options.logger.warn("There is no message element for displaying a message"); 15245 else this.options.logger.warn("Not going to update notifierMessage element because message is empty"); 15059 15246 hidden_default()(this.messageElement, false); 15060 15247 } … … 15344 15531 fakeUaString: void 0, 15345 15532 versions: { 15346 ninjaFormPlugin: void 015533 videomailNinjaFormPlugin: void 0 15347 15534 } 15348 15535 }; … … 15624 15811 try { 15625 15812 const videoTrack = media_getFirstVideoTrack(localMediaStream); 15626 if (videoTrack) { 15627 if (videoTrack.enabled) { 15628 let description = ""; 15629 if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label); 15630 description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`); 15631 this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`); 15632 } else throw error_createError({ 15633 message: "Webcam is disabled", 15634 explanation: "The video track seems to be disabled. Enable it in your system.", 15635 options: this.options 15636 }); 15637 } else this.options.logger.debug("UserMedia: detected (but no video tracks exist"); 15813 if (videoTrack) if (videoTrack.enabled) { 15814 let description = ""; 15815 if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label); 15816 description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`); 15817 this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`); 15818 } else throw error_createError({ 15819 message: "Webcam is disabled", 15820 explanation: "The video track seems to be disabled. Enable it in your system.", 15821 options: this.options 15822 }); 15823 else this.options.logger.debug("UserMedia: detected (but no video tracks exist"); 15638 15824 this.rawVisualUserMedia?.addEventListener("loadedmetadata", onLoadedMetaData); 15639 15825 this.rawVisualUserMedia?.addEventListener("play", onPlay); … … 15881 16067 } 15882 16068 writeStream(buffer, opts) { 15883 if (this.stream) { 15884 if (this.stream.destroyed) { 15885 this.stopPings(); 16069 if (this.stream) if (this.stream.destroyed) { 16070 this.stopPings(); 16071 const err = error_createError({ 16072 message: "Already disconnected", 16073 explanation: "Sorry, connection to the server has been destroyed. Please reload.", 16074 options: this.options 16075 }); 16076 this.emit("ERROR", { 16077 err 16078 }); 16079 } else { 16080 const onFlushedCallback = opts?.onFlushedCallback; 16081 try { 16082 this.stream.write(buffer, ()=>{ 16083 if (!onFlushedCallback) return; 16084 try { 16085 onFlushedCallback(opts); 16086 } catch (exc) { 16087 const err = error_createError({ 16088 message: "Failed to write stream buffer", 16089 explanation: `stream.write() failed because of ${pretty(exc)}`, 16090 options: this.options, 16091 exc 16092 }); 16093 this.emit("ERROR", { 16094 err 16095 }); 16096 } 16097 }); 16098 } catch (exc) { 15886 16099 const err = error_createError({ 15887 message: "Already disconnected", 15888 explanation: "Sorry, connection to the server has been destroyed. Please reload.", 15889 options: this.options 16100 message: "Failed writing to server", 16101 explanation: `stream.write() failed because of ${pretty(exc)}`, 16102 options: this.options, 16103 exc 15890 16104 }); 15891 16105 this.emit("ERROR", { 15892 16106 err 15893 16107 }); 15894 } else {15895 const onFlushedCallback = opts?.onFlushedCallback;15896 try {15897 this.stream.write(buffer, ()=>{15898 if (!onFlushedCallback) return;15899 try {15900 onFlushedCallback(opts);15901 } catch (exc) {15902 const err = error_createError({15903 message: "Failed to write stream buffer",15904 explanation: `stream.write() failed because of ${pretty(exc)}`,15905 options: this.options,15906 exc15907 });15908 this.emit("ERROR", {15909 err15910 });15911 }15912 });15913 } catch (exc) {15914 const err = error_createError({15915 message: "Failed writing to server",15916 explanation: `stream.write() failed because of ${pretty(exc)}`,15917 options: this.options,15918 exc15919 });15920 this.emit("ERROR", {15921 err15922 });15923 }15924 16108 } 15925 16109 } … … 16250 16434 case "ready": 16251 16435 this.emit("SERVER_READY"); 16252 if (!this.userMediaTimeout) { 16253 if (this.options.loadUserMediaOnRecord) this.show(); 16254 else this.loadUserMedia(); 16255 } 16436 if (!this.userMediaTimeout) if (this.options.loadUserMediaOnRecord) this.show(); 16437 else this.loadUserMedia(); 16256 16438 break; 16257 16439 case "preview": … … 16918 17100 const tracks = this.replayElement.getElementsByTagName("track"); 16919 17101 const firstTrack = tracks[0]; 16920 if (firstTrack) { 16921 if (src) firstTrack.setAttribute("src", src); 16922 else this.replayElement.removeChild(firstTrack); 16923 } else { 17102 if (firstTrack) if (src) firstTrack.setAttribute("src", src); 17103 else this.replayElement.removeChild(firstTrack); 17104 else { 16924 17105 const track = document.createElement("track"); 16925 17106 track.setAttribute("src", src); … … 16936 17117 let url = src; 16937 17118 if (url && bustCache) url += `?${Date.now()}`; 16938 if (source) { 16939 if (src) source.setAttribute("src", src); 16940 else this.replayElement.removeChild(source); 16941 } else if (src) { 17119 if (source) if (src) source.setAttribute("src", src); 17120 else this.replayElement.removeChild(source); 17121 else if (src) { 16942 17122 const { fps } = this.options.video; 16943 17123 const t = 1 / fps * 2; … … 17082 17262 if (parentElement) this.visualsElement = parentElement.querySelector(`.${this.options.selectors.visualsClass}`); 17083 17263 else this.visualsElement = this.container.querySelector(`.${this.options.selectors.visualsClass}`); 17084 if (!this.visualsElement) { 17085 if (playerOnly && parentElement) this.visualsElement = parentElement; 17086 else { 17087 this.visualsElement = document.createElement("div"); 17088 this.visualsElement.classList.add(this.options.selectors.visualsClass); 17089 const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`); 17090 if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement); 17091 else this.container.appendChild(this.visualsElement); 17092 } 17264 if (!this.visualsElement) if (playerOnly && parentElement) this.visualsElement = parentElement; 17265 else { 17266 this.visualsElement = document.createElement("div"); 17267 this.visualsElement.classList.add(this.options.selectors.visualsClass); 17268 const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`); 17269 if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement); 17270 else this.container.appendChild(this.visualsElement); 17093 17271 } 17094 17272 this.visualsElement.classList.add("visuals"); … … 17204 17382 } 17205 17383 show(params) { 17206 if (!params?.playerOnly) { 17207 if (this.isReplayShown()) { 17208 if (params?.goBack) this.recorder.show(); 17209 } else this.recorder.build(); 17210 } 17384 if (!params?.playerOnly) if (this.isReplayShown()) { 17385 if (params?.goBack) this.recorder.show(); 17386 } else this.recorder.build(); 17211 17387 this.showVisuals(); 17212 17388 } … … 17289 17465 var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js"); 17290 17466 var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform); 17291 var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[ 9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl");17467 var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl"); 17292 17468 var main_options = {}; 17293 17469 main_options.styleTagTransform = styleTagTransform_default(); … … 17381 17557 if (params.err?.stack) this.options.logger.error(params.err.stack); 17382 17558 else if (params.err?.message) this.options.logger.error(params.err.message); 17383 else if (params.exc) { 17384 if (params.exc instanceof Error) { 17385 if (params.exc.stack) this.options.logger.error(params.exc.stack); 17386 else if (params.exc.message) this.options.logger.error(params.exc.message); 17387 } else this.options.logger.error(params.exc); 17388 } 17559 else if (params.exc) if (params.exc instanceof Error) { 17560 if (params.exc.stack) this.options.logger.error(params.exc.stack); 17561 else if (params.exc.message) this.options.logger.error(params.exc.message); 17562 } else this.options.logger.error(params.exc); 17389 17563 if (this.options.displayErrors && params.err) this.visuals.error(params.err); 17390 17564 else this.visuals.reset(); … … 17400 17574 }); 17401 17575 if (!playerOnly) this.visibility.onChange((visible)=>{ 17402 if (this.built) { 17403 if (visible) { 17404 if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume(); 17405 this.emit("VISIBLE"); 17406 } else { 17407 if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause(); 17408 this.emit("INVISIBLE"); 17409 } 17576 if (this.built) if (visible) { 17577 if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume(); 17578 this.emit("VISIBLE"); 17579 } else { 17580 if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause(); 17581 this.emit("INVISIBLE"); 17410 17582 } 17411 17583 }); … … 17640 17812 const hasBcc = recipients.bcc && recipients.bcc.length > 0; 17641 17813 if (toIsConfigured) { 17642 if (!hasTo) { 17643 if (ccIsConfigured && bccIsConfigured) { 17644 if (!hasCc && !hasBcc) valid = false; 17645 } else if (ccIsConfigured) { 17646 if (!hasCc) valid = false; 17647 } else if (bccIsConfigured) { 17648 if (!hasBcc) valid = false; 17649 } else valid = false; 17650 } 17814 if (!hasTo) if (ccIsConfigured && bccIsConfigured) { 17815 if (!hasCc && !hasBcc) valid = false; 17816 } else if (ccIsConfigured) { 17817 if (!hasCc) valid = false; 17818 } else if (bccIsConfigured) { 17819 if (!hasBcc) valid = false; 17820 } else valid = false; 17651 17821 } else if (ccIsConfigured) { 17652 17822 if (!hasCc) { … … 17802 17972 debug(...args) { 17803 17973 const output = this.lifo("debug", args); 17804 if (this.options.verbose) { 17805 if (this.browser.isFirefox()) this.logger.debug(output); 17806 else if (this.logger.groupCollapsed) { 17807 this.logger.groupCollapsed(output); 17808 this.logger.trace("Trace"); 17809 this.logger.groupEnd(); 17810 } else if (this.logger.debug) this.logger.debug(output); 17811 else console.log(output); 17812 } 17974 if (this.options.verbose) if (this.browser.isFirefox()) this.logger.debug(output); 17975 else if (this.logger.groupCollapsed) { 17976 this.logger.groupCollapsed(output); 17977 this.logger.trace("Trace"); 17978 this.logger.groupEnd(); 17979 } else if (this.logger.debug) this.logger.debug(output); 17980 else console.log(output); 17813 17981 } 17814 17982 error(...args) { -
videomail-for-ninja-forms/trunk/target/php/videomail.php
r3257516 r3269283 3 3 4 4 const NAME = 'Videomail'; 5 const VERSION = '7.0. 7';5 const VERSION = '7.0.8'; 6 6 const AUTHOR = 'Michael Heuberger + Kyle B. Johnson'; 7 7 const SLUG = 'videomail'; -
videomail-for-ninja-forms/trunk/videomail-for-ninja-forms.php
r3257516 r3269283 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: 7.0. 76 Version: 7.0.8 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.