videomail-client 10.3.4 → 10.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/umd/index.js CHANGED
@@ -10502,8 +10502,6 @@
10502
10502
  ENC_TYPE_FORM: "application/x-www-form-urlencoded"
10503
10503
  }
10504
10504
  };
10505
- var client = __webpack_require__("./node_modules/superagent/lib/client.js");
10506
- var client_default = /*#__PURE__*/ __webpack_require__.n(client);
10507
10505
  const list = [
10508
10506
  Error,
10509
10507
  EvalError,
@@ -10654,35 +10652,11 @@
10654
10652
  function isMinimumViableSerializedError(value) {
10655
10653
  return Boolean(value) && 'object' == typeof value && 'string' == typeof value.message && !Array.isArray(value);
10656
10654
  }
10657
- var util = __webpack_require__("./node_modules/util/util.js");
10658
- var util_default = /*#__PURE__*/ __webpack_require__.n(util);
10659
- function inspect(element) {
10660
- return util_default().inspect(element, {
10661
- colors: true,
10662
- compact: true,
10663
- depth: 4,
10664
- breakLength: 1 / 0
10665
- }).replace(/\s+/gu, " ").replace(/\r?\n/gu, "");
10666
- }
10667
- function pretty(anything) {
10668
- if (anything instanceof HTMLElement) {
10669
- if (anything.id) return `#${anything.id}`;
10670
- if (anything.className) return `.${anything.className}`;
10671
- return "(No HTML identifier available)";
10672
- }
10673
- return inspect(anything);
10674
- }
10675
- const util_pretty = pretty;
10676
- function isAudioEnabled(options) {
10677
- return Boolean(options.audio.enabled);
10678
- }
10679
- function setAudioEnabled(enabled, options) {
10680
- options.audio.enabled = enabled;
10681
- return options;
10682
- }
10683
- function isAutoPauseEnabled(options) {
10684
- return options.enableAutoPause && options.enablePause;
10685
- }
10655
+ var client = __webpack_require__("./node_modules/superagent/lib/client.js");
10656
+ var client_default = /*#__PURE__*/ __webpack_require__.n(client);
10657
+ var package_namespaceObject = {
10658
+ i8: "10.3.6"
10659
+ };
10686
10660
  var defined = __webpack_require__("./node_modules/defined/index.js");
10687
10661
  var defined_default = /*#__PURE__*/ __webpack_require__.n(defined);
10688
10662
  var LIBVERSION = '2.0.4', UA_MAX_LENGTH = 500, USER_AGENT = 'user-agent', EMPTY = '', UNKNOWN = '?', FUNC_TYPE = 'function', UNDEF_TYPE = 'undefined', OBJ_TYPE = 'object', STR_TYPE = 'string', UA_BROWSER = 'browser', UA_CPU = 'cpu', UA_DEVICE = 'device', UA_ENGINE = 'engine', UA_OS = 'os', UA_RESULT = 'result', NAME = 'name', TYPE = 'type', VENDOR = 'vendor', VERSION = 'version', ARCHITECTURE = 'architecture', MAJOR = 'major', MODEL = 'model', CONSOLE = 'console', MOBILE = 'mobile', TABLET = 'tablet', SMARTTV = 'smarttv', WEARABLE = 'wearable', XR = 'xr', EMBEDDED = 'embedded', INAPP = 'inapp', BRANDS = 'brands', FORMFACTORS = 'formFactors', FULLVERLIST = 'fullVersionList', PLATFORM = 'platform', PLATFORMVER = 'platformVersion', BITNESS = 'bitness', CH_HEADER = 'sec-ch-ua', CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list', CH_HEADER_ARCH = CH_HEADER + '-arch', CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS, CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors', CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE, CH_HEADER_MODEL = CH_HEADER + '-' + MODEL, CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM, CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version', CH_ALL_VALUES = [
@@ -13794,17 +13768,17 @@
13794
13768
  NAME,
13795
13769
  VERSION
13796
13770
  ]);
13771
+ var VideoType_VideoType = /*#__PURE__*/ function(VideoType) {
13772
+ VideoType["WebM"] = "webm";
13773
+ VideoType["MP4"] = "mp4";
13774
+ return VideoType;
13775
+ }({});
13797
13776
  function canPlayType_canPlayType(video, type) {
13798
13777
  const canPlayType = video.canPlayType(`video/${type}`);
13799
13778
  if ("" === canPlayType) return false;
13800
13779
  return canPlayType;
13801
13780
  }
13802
13781
  const media_canPlayType = canPlayType_canPlayType;
13803
- var VideoType_VideoType = /*#__PURE__*/ function(VideoType) {
13804
- VideoType["WebM"] = "webm";
13805
- VideoType["MP4"] = "mp4";
13806
- return VideoType;
13807
- }({});
13808
13782
  const FALLBACK_VIDEO_TYPE = VideoType_VideoType.MP4;
13809
13783
  class Browser {
13810
13784
  options;
@@ -13887,6 +13861,35 @@
13887
13861
  return getBrowser_browser;
13888
13862
  }
13889
13863
  const util_getBrowser = getBrowser;
13864
+ function isAudioEnabled(options) {
13865
+ return Boolean(options.audio.enabled);
13866
+ }
13867
+ function setAudioEnabled(enabled, options) {
13868
+ options.audio.enabled = enabled;
13869
+ return options;
13870
+ }
13871
+ function isAutoPauseEnabled(options) {
13872
+ return options.enableAutoPause && options.enablePause;
13873
+ }
13874
+ var util = __webpack_require__("./node_modules/util/util.js");
13875
+ var util_default = /*#__PURE__*/ __webpack_require__.n(util);
13876
+ function inspect(element) {
13877
+ return util_default().inspect(element, {
13878
+ colors: false,
13879
+ compact: true,
13880
+ depth: 4,
13881
+ breakLength: 1 / 0
13882
+ }).replace(/\s+/gu, " ").replace(/\r?\n/gu, "");
13883
+ }
13884
+ function pretty(anything) {
13885
+ if (anything instanceof HTMLElement) {
13886
+ if (anything.id) return `#${anything.id}`;
13887
+ if (anything.className) return `.${anything.className}`;
13888
+ return "(No HTML identifier available)";
13889
+ }
13890
+ return inspect(anything);
13891
+ }
13892
+ const util_pretty = pretty;
13890
13893
  class HTTPVideomailError_HTTPVideomailError extends Error {
13891
13894
  code;
13892
13895
  status;
@@ -14258,6 +14261,10 @@
14258
14261
  }
14259
14262
  }
14260
14263
  const util_Despot = Despot;
14264
+ function isNotButton(element) {
14265
+ return "BUTTON" !== element.tagName && "submit" !== element.getAttribute("type");
14266
+ }
14267
+ const html_isNotButton = isNotButton;
14261
14268
  const REGEX = /[ ,]+/u;
14262
14269
  function trimEmail(email) {
14263
14270
  return email.replace(REGEX, "");
@@ -14266,10 +14273,6 @@
14266
14273
  const trimmedEmails = emails.split(REGEX).map((item)=>item.trim()).filter(Boolean);
14267
14274
  return trimmedEmails;
14268
14275
  }
14269
- function isNotButton(element) {
14270
- return "BUTTON" !== element.tagName && "submit" !== element.getAttribute("type");
14271
- }
14272
- const html_isNotButton = isNotButton;
14273
14276
  var form_FormMethod = /*#__PURE__*/ function(FormMethod) {
14274
14277
  FormMethod["POST"] = "post";
14275
14278
  FormMethod["PUT"] = "put";
@@ -14521,9 +14524,6 @@
14521
14524
  }
14522
14525
  }
14523
14526
  const wrappers_form = Form;
14524
- var package_namespaceObject = {
14525
- i8: "10.3.4"
14526
- };
14527
14527
  function findOriginalExc(exc) {
14528
14528
  if (exc instanceof Error && "response" in exc) {
14529
14529
  const response = exc.response;
@@ -14684,61 +14684,299 @@
14684
14684
  }
14685
14685
  }
14686
14686
  const src_resource = Resource;
14687
- var document_visibility = __webpack_require__("./node_modules/document-visibility/index.js");
14688
- var document_visibility_default = /*#__PURE__*/ __webpack_require__.n(document_visibility);
14689
- var contains = __webpack_require__("./node_modules/contains/index.js");
14690
- var contains_default = /*#__PURE__*/ __webpack_require__.n(contains);
14691
- function disableElement(element) {
14692
- if (!element) return;
14693
- if ("INPUT" === element.tagName || "BUTTON" === element.tagName) element.setAttribute("disabled", "true");
14694
- else element.classList.add("disabled");
14695
- }
14696
- const html_disableElement = disableElement;
14697
- function enableElement(element) {
14698
- if (!element) return;
14699
- if ("INPUT" === element.tagName || "BUTTON" === element.tagName) element.removeAttribute("disabled");
14700
- else element.classList.remove("disabled");
14701
- }
14702
- const html_enableElement = enableElement;
14703
- function hideElement_hideElement(element) {
14704
- if (!element) return;
14705
- hidden_default()(element, true);
14706
- }
14707
- const hideElement = hideElement_hideElement;
14708
- function showElement(element) {
14709
- if (!element) return;
14710
- hidden_default()(element, false);
14711
- }
14712
- const html_showElement = showElement;
14713
- function isShown_isShown(element) {
14714
- if (!element) return false;
14715
- return !hidden_default()(element);
14687
+ var cjs = __webpack_require__("./node_modules/deepmerge/dist/cjs.js");
14688
+ var cjs_default = /*#__PURE__*/ __webpack_require__.n(cjs);
14689
+ const NodeEnvType = {
14690
+ DEVELOPMENT: "development",
14691
+ PRODUCTION: "production"
14692
+ };
14693
+ function getNodeEnv() {
14694
+ return "production";
14716
14695
  }
14717
- const isShown = isShown_isShown;
14718
- function adjustButton(buttonElement, show, type, disabled) {
14719
- if (disabled) html_disableElement(buttonElement);
14720
- if (type) buttonElement.type = type;
14721
- if (!show) hideElement(buttonElement);
14722
- return buttonElement;
14696
+ const util_getNodeEnv = getNodeEnv;
14697
+ function isProductionMode() {
14698
+ return util_getNodeEnv() === NodeEnvType.PRODUCTION;
14723
14699
  }
14724
- const html_adjustButton = adjustButton;
14725
- class Buttons extends util_Despot {
14726
- container;
14727
- buttonsElement;
14728
- recordButton;
14729
- pauseButton;
14730
- resumeButton;
14731
- previewButton;
14732
- recordAgainButton;
14733
- submitButton;
14734
- audioOnRadioPair;
14735
- audioOffRadioPair;
14736
- built = false;
14737
- constructor(container, options){
14738
- super("Buttons", options);
14739
- this.container = container;
14700
+ const util_isProductionMode = isProductionMode;
14701
+ const PRODUCTION = util_isProductionMode();
14702
+ const options_options = {
14703
+ logger: console,
14704
+ logStackSize: 30,
14705
+ verbose: !PRODUCTION,
14706
+ baseUrl: "https://videomail.io",
14707
+ socketUrl: "wss://videomail.io",
14708
+ siteName: "videomail-client-demo",
14709
+ enablePause: true,
14710
+ enableAutoPause: true,
14711
+ enableSpace: true,
14712
+ submitWithVideomail: false,
14713
+ disableSubmit: false,
14714
+ enableAutoValidation: true,
14715
+ enableAutoUnload: true,
14716
+ enableAutoSubmission: true,
14717
+ enctype: "application/json",
14718
+ selectors: {
14719
+ containerId: void 0,
14720
+ containerClass: "videomail",
14721
+ replayClass: "replay",
14722
+ userMediaClass: "userMedia",
14723
+ visualsClass: "visuals",
14724
+ buttonClass: void 0,
14725
+ buttonsClass: "buttons",
14726
+ recordButtonClass: "record",
14727
+ pauseButtonClass: "pause",
14728
+ resumeButtonClass: "resume",
14729
+ previewButtonClass: "preview",
14730
+ recordAgainButtonClass: "recordAgain",
14731
+ submitButtonClass: "submit",
14732
+ subjectInputName: "subject",
14733
+ fromInputName: "from",
14734
+ toInputName: "to",
14735
+ ccInputName: "cc",
14736
+ bccInputName: "bcc",
14737
+ bodyInputName: "body",
14738
+ sendCopyInputName: "sendCopy",
14739
+ keyInputName: "videomail_key",
14740
+ parentKeyInputName: "videomail_parent_key",
14741
+ formId: void 0,
14742
+ submitButtonId: void 0,
14743
+ submitButtonSelector: void 0
14744
+ },
14745
+ audio: {
14746
+ enabled: false,
14747
+ switch: false,
14748
+ volume: 0.2,
14749
+ bufferSize: "auto"
14750
+ },
14751
+ video: {
14752
+ fps: 15,
14753
+ limitSeconds: 30,
14754
+ countdown: 3,
14755
+ width: void 0,
14756
+ height: void 0,
14757
+ facingMode: "user",
14758
+ facingModeButton: false,
14759
+ stretch: false
14760
+ },
14761
+ image: {
14762
+ quality: 0.42,
14763
+ types: [
14764
+ "webp",
14765
+ "jpeg"
14766
+ ]
14767
+ },
14768
+ text: {
14769
+ pausedHeader: "Paused",
14770
+ pausedHint: void 0,
14771
+ sending: "Teleporting",
14772
+ encoding: "Encoding",
14773
+ limitReached: "Limit reached",
14774
+ audioOff: "Audio off",
14775
+ audioOn: "Audio on",
14776
+ buttons: {
14777
+ record: "Record video",
14778
+ recordAgain: "Record again",
14779
+ resume: "Resume",
14780
+ pause: "Pause",
14781
+ preview: "Preview"
14782
+ }
14783
+ },
14784
+ notifier: {
14785
+ entertain: false,
14786
+ entertainClass: "bg",
14787
+ entertainLimit: 6,
14788
+ entertainInterval: 9000
14789
+ },
14790
+ timeouts: {
14791
+ userMedia: 20e3,
14792
+ connection: 1e4,
14793
+ pingInterval: 30e3
14794
+ },
14795
+ loadUserMediaOnRecord: false,
14796
+ callbacks: {
14797
+ adjustFormDataBeforePosting: void 0
14798
+ },
14799
+ defaults: {
14800
+ from: void 0,
14801
+ to: void 0,
14802
+ cc: void 0,
14803
+ bcc: void 0,
14804
+ subject: void 0,
14805
+ body: void 0
14806
+ },
14807
+ displayErrors: true,
14808
+ adjustFormOnBrowserError: true,
14809
+ reportErrors: true,
14810
+ fakeUaString: void 0,
14811
+ versions: {
14812
+ videomailNinjaFormPlugin: void 0
14740
14813
  }
14741
- replaceClickHandler(element, clickHandler) {
14814
+ };
14815
+ const src_options = options_options;
14816
+ class CollectLogger {
14817
+ browser;
14818
+ logger;
14819
+ stack = [];
14820
+ options;
14821
+ constructor(options){
14822
+ this.options = options;
14823
+ this.browser = util_getBrowser(options);
14824
+ this.logger = options.logger;
14825
+ }
14826
+ lifo(level, parameters) {
14827
+ const line = parameters.join();
14828
+ if (this.stack.length > this.options.logStackSize) this.stack.pop();
14829
+ this.stack.push(`[${level}] ${line}`);
14830
+ return line;
14831
+ }
14832
+ debug(...args) {
14833
+ const output = this.lifo("debug", args);
14834
+ if (this.options.verbose) if (this.browser.isFirefox()) this.logger.debug(output);
14835
+ else if (this.logger.groupCollapsed) {
14836
+ this.logger.groupCollapsed(output);
14837
+ this.logger.trace("Trace");
14838
+ this.logger.groupEnd();
14839
+ } else if (this.logger.debug) this.logger.debug(output);
14840
+ else console.log(output);
14841
+ }
14842
+ error(...args) {
14843
+ this.logger.error(this.lifo("error", args));
14844
+ }
14845
+ warn(...args) {
14846
+ this.logger.warn(this.lifo("warn", args));
14847
+ }
14848
+ info(...args) {
14849
+ this.logger.info(this.lifo("info", args));
14850
+ }
14851
+ getLines() {
14852
+ return this.stack;
14853
+ }
14854
+ }
14855
+ const util_CollectLogger = CollectLogger;
14856
+ var process = __webpack_require__("./node_modules/process/browser.js");
14857
+ function isTest() {
14858
+ return "test" === process.env.ENVIRON;
14859
+ }
14860
+ const util_isTest = isTest;
14861
+ function mergeWithDefaultOptions_mergeWithDefaultOptions(options = {}) {
14862
+ const newOptions = cjs_default()(src_options, options, {
14863
+ arrayMerge (_destination, source) {
14864
+ return source;
14865
+ }
14866
+ });
14867
+ const collectLogger = new util_CollectLogger(newOptions);
14868
+ newOptions.logger = collectLogger;
14869
+ if (util_isTest()) newOptions.verbose = false;
14870
+ return newOptions;
14871
+ }
14872
+ const mergeWithDefaultOptions = mergeWithDefaultOptions_mergeWithDefaultOptions;
14873
+ var injectStylesIntoStyleTag = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/injectStylesIntoStyleTag.js");
14874
+ var injectStylesIntoStyleTag_default = /*#__PURE__*/ __webpack_require__.n(injectStylesIntoStyleTag);
14875
+ var styleDomAPI = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleDomAPI.js");
14876
+ var styleDomAPI_default = /*#__PURE__*/ __webpack_require__.n(styleDomAPI);
14877
+ var insertBySelector = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/insertBySelector.js");
14878
+ var insertBySelector_default = /*#__PURE__*/ __webpack_require__.n(insertBySelector);
14879
+ var setAttributesWithoutAttributes = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/setAttributesWithoutAttributes.js");
14880
+ var setAttributesWithoutAttributes_default = /*#__PURE__*/ __webpack_require__.n(setAttributesWithoutAttributes);
14881
+ var insertStyleElement = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/insertStyleElement.js");
14882
+ var insertStyleElement_default = /*#__PURE__*/ __webpack_require__.n(insertStyleElement);
14883
+ var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
14884
+ var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
14885
+ var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[12].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl");
14886
+ var main_options = {};
14887
+ main_options.styleTagTransform = styleTagTransform_default();
14888
+ main_options.setAttributes = setAttributesWithoutAttributes_default();
14889
+ main_options.insert = insertBySelector_default().bind(null, "head");
14890
+ main_options.domAPI = styleDomAPI_default();
14891
+ main_options.insertStyleElement = insertStyleElement_default();
14892
+ injectStylesIntoStyleTag_default()(main.Z, main_options);
14893
+ main.Z && main.Z.locals && main.Z.locals;
14894
+ var document_visibility = __webpack_require__("./node_modules/document-visibility/index.js");
14895
+ var document_visibility_default = /*#__PURE__*/ __webpack_require__.n(document_visibility);
14896
+ function limitHeight(height, options, calledFrom) {
14897
+ let limitedHeight = document.documentElement.clientHeight;
14898
+ if (height) limitedHeight = Math.min(height, limitedHeight);
14899
+ if (limitedHeight < 1) throw error_createError({
14900
+ message: `Limited height ${limitedHeight} cannot be less than 1! (Called from ${calledFrom})`,
14901
+ options
14902
+ });
14903
+ return limitedHeight;
14904
+ }
14905
+ const dimensions_limitHeight = limitHeight;
14906
+ function getOuterWidth_getOuterWidth(element) {
14907
+ let rect = element.getBoundingClientRect();
14908
+ let outerWidth = rect.right - rect.left;
14909
+ if (outerWidth < 1) {
14910
+ rect = document.body.getBoundingClientRect();
14911
+ outerWidth = rect.right - rect.left;
14912
+ }
14913
+ return outerWidth;
14914
+ }
14915
+ const getOuterWidth = getOuterWidth_getOuterWidth;
14916
+ function limitWidth(element, options, width) {
14917
+ let limitedWidth;
14918
+ const outerWidth = getOuterWidth(element);
14919
+ limitedWidth = width && "number" == typeof width ? outerWidth > 0 && outerWidth < width ? outerWidth : width : outerWidth;
14920
+ if (Number.isInteger(limitedWidth) && limitedWidth < 1) throw error_createError({
14921
+ message: "Limited width cannot be less than 1!",
14922
+ options
14923
+ });
14924
+ return limitedWidth;
14925
+ }
14926
+ const dimensions_limitWidth = limitWidth;
14927
+ var contains = __webpack_require__("./node_modules/contains/index.js");
14928
+ var contains_default = /*#__PURE__*/ __webpack_require__.n(contains);
14929
+ function disableElement(element) {
14930
+ if (!element) return;
14931
+ if ("INPUT" === element.tagName || "BUTTON" === element.tagName) element.setAttribute("disabled", "true");
14932
+ else element.classList.add("disabled");
14933
+ }
14934
+ const html_disableElement = disableElement;
14935
+ function hideElement_hideElement(element) {
14936
+ if (!element) return;
14937
+ hidden_default()(element, true);
14938
+ }
14939
+ const hideElement = hideElement_hideElement;
14940
+ function adjustButton(buttonElement, show, type, disabled) {
14941
+ if (disabled) html_disableElement(buttonElement);
14942
+ if (type) buttonElement.type = type;
14943
+ if (!show) hideElement(buttonElement);
14944
+ return buttonElement;
14945
+ }
14946
+ const html_adjustButton = adjustButton;
14947
+ function enableElement(element) {
14948
+ if (!element) return;
14949
+ if ("INPUT" === element.tagName || "BUTTON" === element.tagName) element.removeAttribute("disabled");
14950
+ else element.classList.remove("disabled");
14951
+ }
14952
+ const html_enableElement = enableElement;
14953
+ function isShown(element) {
14954
+ if (!element) return false;
14955
+ return !hidden_default()(element);
14956
+ }
14957
+ const html_isShown = isShown;
14958
+ function showElement(element) {
14959
+ if (!element) return;
14960
+ hidden_default()(element, false);
14961
+ }
14962
+ const html_showElement = showElement;
14963
+ class Buttons extends util_Despot {
14964
+ container;
14965
+ buttonsElement;
14966
+ recordButton;
14967
+ pauseButton;
14968
+ resumeButton;
14969
+ previewButton;
14970
+ recordAgainButton;
14971
+ submitButton;
14972
+ audioOnRadioPair;
14973
+ audioOffRadioPair;
14974
+ built = false;
14975
+ constructor(container, options){
14976
+ super("Buttons", options);
14977
+ this.container = container;
14978
+ }
14979
+ replaceClickHandler(element, clickHandler) {
14742
14980
  const wrappedClickHandler = (ev)=>{
14743
14981
  ev.preventDefault();
14744
14982
  try {
@@ -14829,7 +15067,7 @@
14829
15067
  }
14830
15068
  }
14831
15069
  onFormReady(params) {
14832
- if (!isShown(this.recordAgainButton)) {
15070
+ if (!html_isShown(this.recordAgainButton)) {
14833
15071
  if (!params?.paused) html_showElement(this.recordButton);
14834
15072
  }
14835
15073
  if (!params?.paused) {
@@ -14851,12 +15089,12 @@
14851
15089
  html_showElement(this.buttonsElement);
14852
15090
  html_showElement(this.audioOnRadioPair);
14853
15091
  html_showElement(this.audioOffRadioPair);
14854
- if (isShown(this.recordButton) && !params.recordWhenReady) html_enableElement(this.recordButton);
14855
- else if (isShown(this.recordAgainButton) && !params.recordWhenReady) html_enableElement(this.recordAgainButton);
15092
+ if (html_isShown(this.recordButton) && !params.recordWhenReady) html_enableElement(this.recordButton);
15093
+ else if (html_isShown(this.recordAgainButton) && !params.recordWhenReady) html_enableElement(this.recordAgainButton);
14856
15094
  if (this.options.enableAutoValidation) html_disableElement(this.submitButton);
14857
15095
  if (!params.recordWhenReady) {
14858
- if (isShown(this.audioOnRadioPair)) html_enableElement(this.audioOnRadioPair);
14859
- if (isShown(this.audioOffRadioPair)) html_enableElement(this.audioOffRadioPair);
15096
+ if (html_isShown(this.audioOnRadioPair)) html_enableElement(this.audioOnRadioPair);
15097
+ if (html_isShown(this.audioOffRadioPair)) html_enableElement(this.audioOffRadioPair);
14860
15098
  }
14861
15099
  }
14862
15100
  onResetting() {
@@ -15039,7 +15277,7 @@
15039
15277
  });
15040
15278
  this.on("CONNECTED", ()=>{
15041
15279
  if (this.options.loadUserMediaOnRecord) {
15042
- if (isShown(this.recordButton)) html_enableElement(this.recordButton);
15280
+ if (html_isShown(this.recordButton)) html_enableElement(this.recordButton);
15043
15281
  }
15044
15282
  });
15045
15283
  this.on("DISCONNECTED", ()=>{
@@ -15314,7 +15552,9 @@
15314
15552
  }
15315
15553
  const recorder_recordNote = RecordNote;
15316
15554
  function pad(n) {
15317
- return n < 10 ? `0${n}` : n;
15555
+ const absNum = Math.abs(n);
15556
+ if (absNum < 10) return n < 0 ? `-0${absNum}` : `0${absNum}`;
15557
+ return String(n);
15318
15558
  }
15319
15559
  const util_pad = pad;
15320
15560
  class RecordTimer {
@@ -15811,160 +16051,84 @@
15811
16051
  if (t) {
15812
16052
  const i = this.canvas.toDataURL(t, this.quality);
15813
16053
  e = this.uriToBuffer(i);
15814
- }
15815
- return e;
15816
- }
15817
- getMimeType() {
15818
- return canvas_to_buffer_modern_s && canvas_to_buffer_modern_e || (canvas_to_buffer_modern_s = this.figureMimeType()), canvas_to_buffer_modern_s;
15819
- }
15820
- }
15821
- canvas_to_buffer_modern_r.atob = void 0;
15822
- var websocket_stream_stream = __webpack_require__("./node_modules/websocket-stream/stream.js");
15823
- var stream_default = /*#__PURE__*/ __webpack_require__.n(websocket_stream_stream);
15824
- function isPromise(anything) {
15825
- return anything && "undefined" != typeof Promise && anything instanceof Promise;
15826
- }
15827
- const util_isPromise = isPromise;
15828
- class audio_sample_modern_t {
15829
- constructor(r){
15830
- this.float32Array = void 0, this.float32Array = r;
15831
- }
15832
- toBuffer() {
15833
- const t = new Int16Array(this.float32Array.length);
15834
- return this.float32Array.forEach((r, a)=>{
15835
- t[a] = 32767 * Math.min(1, r);
15836
- }), typedarray_to_buffer(t);
15837
- }
15838
- }
15839
- var is_power_of_two = __webpack_require__("./node_modules/is-power-of-two/index.js");
15840
- var is_power_of_two_default = /*#__PURE__*/ __webpack_require__.n(is_power_of_two);
15841
- function getNodeEnv() {
15842
- return "production";
15843
- }
15844
- const util_getNodeEnv = getNodeEnv;
15845
- const NodeEnvType = {
15846
- DEVELOPMENT: "development",
15847
- PRODUCTION: "production"
15848
- };
15849
- function isProductionMode() {
15850
- return util_getNodeEnv() === NodeEnvType.PRODUCTION;
15851
- }
15852
- const util_isProductionMode = isProductionMode;
15853
- const PRODUCTION = util_isProductionMode();
15854
- const options_options = {
15855
- logger: console,
15856
- logStackSize: 30,
15857
- verbose: !PRODUCTION,
15858
- baseUrl: "https://videomail.io",
15859
- socketUrl: "wss://videomail.io",
15860
- siteName: "videomail-client-demo",
15861
- enablePause: true,
15862
- enableAutoPause: true,
15863
- enableSpace: true,
15864
- submitWithVideomail: false,
15865
- disableSubmit: false,
15866
- enableAutoValidation: true,
15867
- enableAutoUnload: true,
15868
- enableAutoSubmission: true,
15869
- enctype: "application/json",
15870
- selectors: {
15871
- containerId: void 0,
15872
- containerClass: "videomail",
15873
- replayClass: "replay",
15874
- userMediaClass: "userMedia",
15875
- visualsClass: "visuals",
15876
- buttonClass: void 0,
15877
- buttonsClass: "buttons",
15878
- recordButtonClass: "record",
15879
- pauseButtonClass: "pause",
15880
- resumeButtonClass: "resume",
15881
- previewButtonClass: "preview",
15882
- recordAgainButtonClass: "recordAgain",
15883
- submitButtonClass: "submit",
15884
- subjectInputName: "subject",
15885
- fromInputName: "from",
15886
- toInputName: "to",
15887
- ccInputName: "cc",
15888
- bccInputName: "bcc",
15889
- bodyInputName: "body",
15890
- sendCopyInputName: "sendCopy",
15891
- keyInputName: "videomail_key",
15892
- parentKeyInputName: "videomail_parent_key",
15893
- formId: void 0,
15894
- submitButtonId: void 0,
15895
- submitButtonSelector: void 0
15896
- },
15897
- audio: {
15898
- enabled: false,
15899
- switch: false,
15900
- volume: 0.2,
15901
- bufferSize: "auto"
15902
- },
15903
- video: {
15904
- fps: 15,
15905
- limitSeconds: 30,
15906
- countdown: 3,
15907
- width: void 0,
15908
- height: void 0,
15909
- facingMode: "user",
15910
- facingModeButton: false,
15911
- stretch: false
15912
- },
15913
- image: {
15914
- quality: 0.42,
15915
- types: [
15916
- "webp",
15917
- "jpeg"
15918
- ]
15919
- },
15920
- text: {
15921
- pausedHeader: "Paused",
15922
- pausedHint: void 0,
15923
- sending: "Teleporting",
15924
- encoding: "Encoding",
15925
- limitReached: "Limit reached",
15926
- audioOff: "Audio off",
15927
- audioOn: "Audio on",
15928
- buttons: {
15929
- record: "Record video",
15930
- recordAgain: "Record again",
15931
- resume: "Resume",
15932
- pause: "Pause",
15933
- preview: "Preview"
15934
- }
15935
- },
15936
- notifier: {
15937
- entertain: false,
15938
- entertainClass: "bg",
15939
- entertainLimit: 6,
15940
- entertainInterval: 9000
15941
- },
15942
- timeouts: {
15943
- userMedia: 20e3,
15944
- connection: 1e4,
15945
- pingInterval: 30e3
15946
- },
15947
- loadUserMediaOnRecord: false,
15948
- callbacks: {
15949
- adjustFormDataBeforePosting: void 0
15950
- },
15951
- defaults: {
15952
- from: void 0,
15953
- to: void 0,
15954
- cc: void 0,
15955
- bcc: void 0,
15956
- subject: void 0,
15957
- body: void 0
15958
- },
15959
- displayErrors: true,
15960
- adjustFormOnBrowserError: true,
15961
- reportErrors: true,
15962
- fakeUaString: void 0,
15963
- versions: {
15964
- videomailNinjaFormPlugin: void 0
16054
+ }
16055
+ return e;
15965
16056
  }
15966
- };
15967
- const src_options = options_options;
16057
+ getMimeType() {
16058
+ return canvas_to_buffer_modern_s && canvas_to_buffer_modern_e || (canvas_to_buffer_modern_s = this.figureMimeType()), canvas_to_buffer_modern_s;
16059
+ }
16060
+ }
16061
+ canvas_to_buffer_modern_r.atob = void 0;
16062
+ var websocket_stream_stream = __webpack_require__("./node_modules/websocket-stream/stream.js");
16063
+ var stream_default = /*#__PURE__*/ __webpack_require__.n(websocket_stream_stream);
16064
+ function figureMinHeight(height, options) {
16065
+ let minHeight;
16066
+ if (options.video.height) {
16067
+ minHeight = Math.min(options.video.height, height);
16068
+ if (minHeight < 1) throw error_createError({
16069
+ message: `Got a min height less than 1 (${minHeight})!`,
16070
+ options
16071
+ });
16072
+ } else minHeight = height;
16073
+ return minHeight;
16074
+ }
16075
+ const dimensions_figureMinHeight = figureMinHeight;
16076
+ function getRatio_getRatio(options, videoHeight, videoWidth) {
16077
+ let ratio = 1;
16078
+ const hasVideoDimensions = videoHeight && videoWidth;
16079
+ const desiredHeight = options.video.height;
16080
+ const desiredWidth = options.video.width;
16081
+ const hasDesiredDimensions = desiredHeight && desiredWidth;
16082
+ if (hasDesiredDimensions) ratio = hasVideoDimensions ? videoHeight < desiredHeight || videoWidth < desiredWidth ? videoHeight / videoWidth : desiredHeight / desiredWidth : desiredHeight / desiredWidth;
16083
+ else if (hasVideoDimensions) ratio = videoHeight / videoWidth;
16084
+ return ratio;
16085
+ }
16086
+ const getRatio = getRatio_getRatio;
16087
+ function calculateHeight(responsive, videoWidth, options, target, ratio, element) {
16088
+ let width = videoWidth;
16089
+ if (width < 1) throw error_createError({
16090
+ message: `Unable to calculate height for target ${target} when width is less than 1 (= ${width}) and responsive mode is set to ${responsive}`,
16091
+ options
16092
+ });
16093
+ if (responsive && element) width = dimensions_limitWidth(element, options, width);
16094
+ const chosenRatio = ratio ?? getRatio(options, void 0, videoWidth);
16095
+ const height = Math.round(width * chosenRatio);
16096
+ if (Number.isInteger(height) && height < 1) throw error_createError({
16097
+ message: "Just calculated a height less than 1 which is wrong.",
16098
+ options
16099
+ });
16100
+ return dimensions_figureMinHeight(height, options);
16101
+ }
16102
+ const dimensions_calculateHeight = calculateHeight;
16103
+ function calculateWidth(responsive, videoHeight, options, ratio) {
16104
+ let height = dimensions_figureMinHeight(videoHeight, options);
16105
+ if (responsive) height = dimensions_limitHeight(height, options, "calculateWidth");
16106
+ if (!height || height < 1) throw error_createError({
16107
+ message: `Height ${height} cannot be smaller than 1 when calculating width.`,
16108
+ options
16109
+ });
16110
+ const chosenRatio = ratio ?? getRatio(options, videoHeight);
16111
+ const calculatedWidth = Math.round(height / chosenRatio);
16112
+ if (calculatedWidth < 1) throw error_createError({
16113
+ message: "Calculated width cannot be smaller than 1!",
16114
+ options
16115
+ });
16116
+ return calculatedWidth;
16117
+ }
16118
+ const dimensions_calculateWidth = calculateWidth;
16119
+ class audio_sample_modern_t {
16120
+ constructor(r){
16121
+ this.float32Array = void 0, this.float32Array = r;
16122
+ }
16123
+ toBuffer() {
16124
+ const t = new Int16Array(this.float32Array.length);
16125
+ return this.float32Array.forEach((r, a)=>{
16126
+ t[a] = 32767 * Math.min(1, r);
16127
+ }), typedarray_to_buffer(t);
16128
+ }
16129
+ }
16130
+ var is_power_of_two = __webpack_require__("./node_modules/is-power-of-two/index.js");
16131
+ var is_power_of_two_default = /*#__PURE__*/ __webpack_require__.n(is_power_of_two);
15968
16132
  const CHANNELS = 1;
15969
16133
  function getAudioContextClass() {
15970
16134
  return window.AudioContext;
@@ -16050,6 +16214,13 @@
16050
16214
  }
16051
16215
  }
16052
16216
  const AudioRecorder = AudioRecorder_AudioRecorder;
16217
+ function getFirstVideoTrack(localMediaStream) {
16218
+ const videoTracks = localMediaStream.getVideoTracks();
16219
+ let videoTrack;
16220
+ if (videoTracks[0]) videoTrack = videoTracks[0];
16221
+ return videoTrack;
16222
+ }
16223
+ const media_getFirstVideoTrack = getFirstVideoTrack;
16053
16224
  const MEDIA_EVENTS = [
16054
16225
  "loadstart",
16055
16226
  "suspend",
@@ -16071,13 +16242,10 @@
16071
16242
  "volumechange"
16072
16243
  ];
16073
16244
  const mediaEvents = MEDIA_EVENTS;
16074
- function getFirstVideoTrack(localMediaStream) {
16075
- const videoTracks = localMediaStream.getVideoTracks();
16076
- let videoTrack;
16077
- if (videoTracks[0]) videoTrack = videoTracks[0];
16078
- return videoTrack;
16245
+ function isPromise_isPromise(anything) {
16246
+ return Boolean(anything && "undefined" != typeof Promise && "[object Promise]" === Object.prototype.toString.call(anything));
16079
16247
  }
16080
- const media_getFirstVideoTrack = getFirstVideoTrack;
16248
+ const isPromise = isPromise_isPromise;
16081
16249
  const EVENT_ASCII = "|\u2014O\u2014|";
16082
16250
  class UserMedia extends util_Despot {
16083
16251
  recorder;
@@ -16168,7 +16336,7 @@
16168
16336
  } catch (exc) {
16169
16337
  this.options.logger.warn(`Caught raw user media play exception: ${exc}`);
16170
16338
  }
16171
- if (util_isPromise(p)) p.then(()=>{
16339
+ if (isPromise(p)) p.then(()=>{
16172
16340
  if (!this.playingPromiseReached) {
16173
16341
  this.options.logger.debug("UserMedia: play promise successful. Playing now.");
16174
16342
  this.playingPromiseReached = true;
@@ -16368,92 +16536,6 @@
16368
16536
  }
16369
16537
  }
16370
16538
  const visuals_userMedia = UserMedia;
16371
- function figureMinHeight(height, options) {
16372
- let minHeight;
16373
- if (options.video.height) {
16374
- minHeight = Math.min(options.video.height, height);
16375
- if (minHeight < 1) throw error_createError({
16376
- message: `Got a min height less than 1 (${minHeight})!`,
16377
- options
16378
- });
16379
- } else minHeight = height;
16380
- return minHeight;
16381
- }
16382
- const dimensions_figureMinHeight = figureMinHeight;
16383
- function getRatio_getRatio(options, videoHeight, videoWidth) {
16384
- let ratio = 1;
16385
- const hasVideoDimensions = videoHeight && videoWidth;
16386
- const desiredHeight = options.video.height;
16387
- const desiredWidth = options.video.width;
16388
- const hasDesiredDimensions = desiredHeight && desiredWidth;
16389
- if (hasDesiredDimensions) ratio = hasVideoDimensions ? videoHeight < desiredHeight || videoWidth < desiredWidth ? videoHeight / videoWidth : desiredHeight / desiredWidth : desiredHeight / desiredWidth;
16390
- else if (hasVideoDimensions) ratio = videoHeight / videoWidth;
16391
- return ratio;
16392
- }
16393
- const getRatio = getRatio_getRatio;
16394
- function limitHeight(height, options, calledFrom) {
16395
- let limitedHeight = document.documentElement.clientHeight;
16396
- if (height) limitedHeight = Math.min(height, limitedHeight);
16397
- if (limitedHeight < 1) throw error_createError({
16398
- message: `Limited height ${limitedHeight} cannot be less than 1! (Called from ${calledFrom})`,
16399
- options
16400
- });
16401
- return limitedHeight;
16402
- }
16403
- const dimensions_limitHeight = limitHeight;
16404
- function calculateWidth(responsive, videoHeight, options, ratio) {
16405
- let height = dimensions_figureMinHeight(videoHeight, options);
16406
- if (responsive) height = dimensions_limitHeight(height, options, "calculateWidth");
16407
- if (!height || height < 1) throw error_createError({
16408
- message: `Height ${height} cannot be smaller than 1 when calculating width.`,
16409
- options
16410
- });
16411
- const chosenRatio = ratio ?? getRatio(options, videoHeight);
16412
- const calculatedWidth = Math.round(height / chosenRatio);
16413
- if (calculatedWidth < 1) throw error_createError({
16414
- message: "Calculated width cannot be smaller than 1!",
16415
- options
16416
- });
16417
- return calculatedWidth;
16418
- }
16419
- const dimensions_calculateWidth = calculateWidth;
16420
- function getOuterWidth_getOuterWidth(element) {
16421
- let rect = element.getBoundingClientRect();
16422
- let outerWidth = rect.right - rect.left;
16423
- if (outerWidth < 1) {
16424
- rect = document.body.getBoundingClientRect();
16425
- outerWidth = rect.right - rect.left;
16426
- }
16427
- return outerWidth;
16428
- }
16429
- const getOuterWidth = getOuterWidth_getOuterWidth;
16430
- function limitWidth(element, options, width) {
16431
- let limitedWidth;
16432
- const outerWidth = getOuterWidth(element);
16433
- limitedWidth = width && "number" == typeof width ? outerWidth > 0 && outerWidth < width ? outerWidth : width : outerWidth;
16434
- if (Number.isInteger(limitedWidth) && limitedWidth < 1) throw error_createError({
16435
- message: "Limited width cannot be less than 1!",
16436
- options
16437
- });
16438
- return limitedWidth;
16439
- }
16440
- const dimensions_limitWidth = limitWidth;
16441
- function calculateHeight(responsive, videoWidth, options, target, ratio, element) {
16442
- let width = videoWidth;
16443
- if (width < 1) throw error_createError({
16444
- message: `Unable to calculate height for target ${target} when width is less than 1 (= ${width}) and responsive mode is set to ${responsive}`,
16445
- options
16446
- });
16447
- if (responsive && element) width = dimensions_limitWidth(element, options, width);
16448
- const chosenRatio = ratio ?? getRatio(options, void 0, videoWidth);
16449
- const height = Math.round(width * chosenRatio);
16450
- if (Number.isInteger(height) && height < 1) throw error_createError({
16451
- message: "Just calculated a height less than 1 which is wrong.",
16452
- options
16453
- });
16454
- return dimensions_figureMinHeight(height, options);
16455
- }
16456
- const dimensions_calculateHeight = calculateHeight;
16457
16539
  var Buffer = __webpack_require__("./node_modules/buffer/index.js")["Buffer"];
16458
16540
  const PIPE_SYMBOL = "\xb0\xba\xa4\xf8,\xb8\xb8,\xf8\xa4\xba\xb0`\xb0\xba\xa4\xf8,\xb8,\xf8\xa4\xb0\xba\xa4\xf8,\xb8\xb8,\xf8\xa4\xba\xb0`\xb0\xba\xa4\xf8,\xb8 ";
16459
16541
  class Recorder extends util_Despot {
@@ -17907,27 +17989,6 @@
17907
17989
  }
17908
17990
  }
17909
17991
  const wrappers_visuals = Visuals;
17910
- var injectStylesIntoStyleTag = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/injectStylesIntoStyleTag.js");
17911
- var injectStylesIntoStyleTag_default = /*#__PURE__*/ __webpack_require__.n(injectStylesIntoStyleTag);
17912
- var styleDomAPI = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleDomAPI.js");
17913
- var styleDomAPI_default = /*#__PURE__*/ __webpack_require__.n(styleDomAPI);
17914
- var insertBySelector = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/insertBySelector.js");
17915
- var insertBySelector_default = /*#__PURE__*/ __webpack_require__.n(insertBySelector);
17916
- var setAttributesWithoutAttributes = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/setAttributesWithoutAttributes.js");
17917
- var setAttributesWithoutAttributes_default = /*#__PURE__*/ __webpack_require__.n(setAttributesWithoutAttributes);
17918
- var insertStyleElement = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/insertStyleElement.js");
17919
- var insertStyleElement_default = /*#__PURE__*/ __webpack_require__.n(insertStyleElement);
17920
- var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
17921
- var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
17922
- var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[12].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl");
17923
- var main_options = {};
17924
- main_options.styleTagTransform = styleTagTransform_default();
17925
- main_options.setAttributes = setAttributesWithoutAttributes_default();
17926
- main_options.insert = insertBySelector_default().bind(null, "head");
17927
- main_options.domAPI = styleDomAPI_default();
17928
- main_options.insertStyleElement = insertStyleElement_default();
17929
- injectStylesIntoStyleTag_default()(main.Z, main_options);
17930
- main.Z && main.Z.locals && main.Z.locals;
17931
17992
  class Container extends util_Despot {
17932
17993
  visibility = document_visibility_default()();
17933
17994
  htmlElement = document.querySelector("html");
@@ -18406,71 +18467,12 @@
18406
18467
  }
18407
18468
  }
18408
18469
  const wrappers_container = Container;
18409
- var cjs = __webpack_require__("./node_modules/deepmerge/dist/cjs.js");
18410
- var cjs_default = /*#__PURE__*/ __webpack_require__.n(cjs);
18411
- class CollectLogger {
18412
- browser;
18413
- logger;
18414
- stack = [];
18415
- options;
18416
- constructor(options){
18417
- this.options = options;
18418
- this.browser = util_getBrowser(options);
18419
- this.logger = options.logger;
18420
- }
18421
- lifo(level, parameters) {
18422
- const line = parameters.join();
18423
- if (this.stack.length > this.options.logStackSize) this.stack.pop();
18424
- this.stack.push(`[${level}] ${line}`);
18425
- return line;
18426
- }
18427
- debug(...args) {
18428
- const output = this.lifo("debug", args);
18429
- if (this.options.verbose) if (this.browser.isFirefox()) this.logger.debug(output);
18430
- else if (this.logger.groupCollapsed) {
18431
- this.logger.groupCollapsed(output);
18432
- this.logger.trace("Trace");
18433
- this.logger.groupEnd();
18434
- } else if (this.logger.debug) this.logger.debug(output);
18435
- else console.log(output);
18436
- }
18437
- error(...args) {
18438
- this.logger.error(this.lifo("error", args));
18439
- }
18440
- warn(...args) {
18441
- this.logger.warn(this.lifo("warn", args));
18442
- }
18443
- info(...args) {
18444
- this.logger.info(this.lifo("info", args));
18445
- }
18446
- getLines() {
18447
- return this.stack;
18448
- }
18449
- }
18450
- const util_CollectLogger = CollectLogger;
18451
- var process = __webpack_require__("./node_modules/process/browser.js");
18452
- function isTest() {
18453
- return "test" === process.env.ENVIRON;
18454
- }
18455
- const util_isTest = isTest;
18456
- function mergeWithDefaultOptions(options = {}) {
18457
- const newOptions = cjs_default()(src_options, options, {
18458
- arrayMerge (_destination, source) {
18459
- return source;
18460
- }
18461
- });
18462
- const collectLogger = new util_CollectLogger(newOptions);
18463
- newOptions.logger = collectLogger;
18464
- if (util_isTest()) newOptions.verbose = false;
18465
- return newOptions;
18466
- }
18467
- const options_mergeWithDefaultOptions = mergeWithDefaultOptions;
18468
18470
  class VideomailClient extends util_Despot {
18469
18471
  container;
18470
18472
  static ENC_TYPE_APP_JSON = constants["public"].ENC_TYPE_APP_JSON;
18471
18473
  static ENC_TYPE_FORM = constants["public"].ENC_TYPE_FORM;
18472
18474
  constructor(options = {}){
18473
- super("VideomailClient", options_mergeWithDefaultOptions(options));
18475
+ super("VideomailClient", mergeWithDefaultOptions(options));
18474
18476
  this.validateOptions();
18475
18477
  util_Despot.removeAllListeners();
18476
18478
  this.container = new wrappers_container(this.options);