mirror of
https://github.com/silverstripe/silverstripe-userforms.git
synced 2024-10-22 15:05:42 +00:00
1 line
84 KiB
Plaintext
1 line
84 KiB
Plaintext
{"version":3,"sources":["webpack:///webpack/bootstrap 733868626977781e90f3","webpack:///./client/src/bundles/UserForms.js","webpack:///./client/src/bundles/bundle.js","webpack:///./~/async-validator/dist-web/index.js","webpack:///./~/process/browser.js"],"names":["isVisible","element","style","display","visibility","classList","contains","ProgressBar","dom","userForm","progressTitle","querySelector","buttons","querySelectorAll","currentStepNumber","init","forEach","button","console","log","addEventListener","e","preventDefault","stepNumber","parseInt","getAttribute","jumpToStep","update","detail","stepId","getCurrentStepID","newStep","getStep","newStepElement","step","barWidth","length","innerText","setAttribute","parent","parentNode","add","disabled","remove","width","FormStep","viewed","buttonHolder","id","getHTMLId","document","action","trigger","input","getFieldLabel","window","closest","holder","getHolderForField","label","onlyDirty","descriptors","fields","field","title","type","getValidatorType","required","message","getValidatorMessage","min","max","asyncValidator","rule","value","Promise","resolve","reject","minL","maxL","getValidationsDescriptors","Object","keys","validator","Schema","formData","FormData","data","key","selectableFields","selectableField","fieldName","promise","validate","errors","displayErrorMessages","then","catch","errorIds","error","fieldHolder","errorLabel","createElement","push","innerHTML","append","messages","mesasge","indexOf","FormActions","prevButton","nextButton","triggerDispatchEvent","numberOfSteps","getNumberOfSteps","i","lastStep","conditionallyHidden","UserForm","form","CONSTANTS","steps","progressBar","actions","currentStep","ENABLE_LIVE_VALIDATION","undefined","DISPLAY_ERROR_MESSAGES_AT_TOP","initialiseFormSteps","stepDom","hide","addStep","enableLiveValidation","setCurrentStep","progressBarDom","stepNavigation","formActions","setUpPing","nextStep","prevStep","validateForm","submit","show","setId","index","direction","targetStep","forward","setInterval","fetch","forms"],"mappings":"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AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gFAAgF;AAChF;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC;;AAEpC,sCAAsC,iDAAW,IAAI,aAAoB;AACzE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,wFAAwF,aAAa;AACrG;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,wGAAwG,EAAE;AAC1G,2BAA2B,IAAI;AAC/B,uCAAuC,EAAE,gHAAgH,EAAE,2JAA2J,EAAE,kCAAkC,IAAI,qHAAqH,EAAE,sBAAsB,IAAI,+BAA+B,IAAI,mGAAmG,EAAE,sBAAsB,IAAI,+BAA+B,IAAI,mGAAmG,EAAE,sBAAsB,IAAI,+BAA+B,IAAI,mGAAmG,EAAE,sBAAsB,IAAI,+BAA+B,IAAI,0GAA0G,IAAI,+BAA+B,IAAI,kGAAkG,GAAG,gIAAgI;;AAE92C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,GAAG;AAC9C,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,4BAA4B,yBAAyB,6BAA6B,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,8GAA8G,GAAG;AAC3O;AACA,+HAA+H,IAAI,qBAAqB,EAAE,uMAAuM,GAAG,sBAAsB,IAAI;AAC9X;AACA;AACA,qBAAqB,EAAE,UAAU,EAAE;AACnC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sFAAsF;;AAEtF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,SAAS;;;AAGT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT,gEAAgE;;AAEhE;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAE6B;AAC7B;;;;;;;;;AChzCA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU","file":"js/userforms.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./client/src/bundles/bundle.js\");\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 733868626977781e90f3","/**\n * @file Manages the multi-step navigation.\n */\nimport Schema from 'async-validator';\n\nfunction isVisible(element) {\n return element.style.display !== 'none'\n && element.style.visibility !== 'hidden'\n && !element.classList.contains('hide');\n}\n\nclass ProgressBar {\n constructor(dom, userForm) {\n this.dom = dom;\n this.userForm = userForm;\n this.progressTitle = this.userForm.dom.querySelector('.progress-title');\n this.buttons = this.dom.querySelectorAll('.step-button-jump');\n this.currentStepNumber = this.dom.querySelector('.current-step-number');\n this.init();\n }\n\n init() {\n this.dom.style.display = 'initial';\n const buttons = this.buttons;\n buttons.forEach((button) => {\n console.log(button, this.userForm);\n button.addEventListener('click', (e) => {\n e.preventDefault();\n const stepNumber = parseInt(button.getAttribute('data-step'), 10);\n console.log(stepNumber);\n this.userForm.jumpToStep(stepNumber - 1);\n return false;\n });\n });\n // for (const button of buttons) {\n // button.addEventListener('click', (e) => {\n // e.preventDefault();\n // const stepNumber = parseInt(button.getAttribute('data-step'), 10);\n // this.userForm.jumpToStep(stepNumber);\n // return false;\n // });\n // }\n this.userForm.dom.addEventListener('userform.form.changestep', (e) => {\n this.update(e.detail.stepId);\n });\n this.update(0);\n }\n\n update(stepId) {\n const stepNumber = this.userForm.getCurrentStepID() + 1;\n const newStep = this.userForm.getStep(stepId);\n const newStepElement = newStep.step;\n let barWidth = (stepId / (this.buttons.length - 1)) * 100;\n\n this.currentStepNumber.innerText = stepNumber;\n\n for (const e of this.dom.querySelectorAll('[aria-valuenow]')) {\n e.setAttribute('aria-valuenow', stepNumber);\n }\n\n for (const button of this.buttons) {\n const parent = button.parentNode;\n if (parseInt(button.getAttribute('data-step'), 10) === stepNumber\n && isVisible(button)) {\n parent.classList.add('current');\n parent.classList.add('viewed');\n\n button.disabled = false;\n break;\n }\n parent.classList.remove('current');\n }\n\n this.progressTitle.innerText = newStepElement.getAttribute('data-title');\n\n // Update the width of the progress bar.\n barWidth = barWidth ? `${barWidth}%` : '';\n this.dom.querySelector('.progress-bar').style.width = barWidth;\n }\n}\n\nclass FormStep {\n constructor(step, userForm) {\n this.step = step;\n this.userForm = userForm;\n this.viewed = false;\n this.buttonHolder = null;\n this.id = 0;\n\n this.init();\n }\n\n init() {\n const id = this.getHTMLId();\n this.buttonHolder = document.querySelector(`.step-button-wrapper[data-for='${id}']`);\n ['userform.field.hide', 'userform.field.show'].forEach((action) => {\n this.buttonHolder.addEventListener(action, () => {\n this.userForm.dom.trigger('userform.form.conditionalstep');\n });\n });\n }\n\n setId(id) {\n this.id = id;\n }\n\n getHTMLId() {\n return this.step.getAttribute('id');\n }\n\n show() {\n this.step.setAttribute('aria-hidden', false);\n this.step.classList.remove('hide');\n this.step.classList.add('viewed');\n this.viewed = true;\n }\n\n hide() {\n this.step.setAttribute('aria-hidden', true);\n this.step.classList.add('hide');\n }\n\n conditionallyHidden() {\n const button = this.buttonHolder.querySelector('button');\n return !(button.style.display !== 'none' && button.visibility !== 'hidden' && !button.classList.contains('hide'));\n }\n\n\n getValidatorType(input) {\n if (input.getAttribute('type') === 'email') {\n return 'email';\n }\n if (input.getAttribute('type') === 'date') {\n return 'date';\n }\n if (input.classList.contains('numeric') || input.getAttribute('type') === 'numeric') {\n return 'number';\n }\n return 'string';\n }\n\n getValidatorMessage(input) {\n if (input.getAttribute('data-msg-required')) {\n return input.getAttribute('data-msg-required');\n }\n return `${this.getFieldLabel(input)} is required`;\n }\n\n getHolderForField(input) {\n return window.closest(input, '.field');\n }\n\n getFieldLabel(input) {\n const holder = this.getHolderForField(input);\n if (holder) {\n const label = holder.querySelector('label.left, legend.left');\n if (label) {\n return label.innerText;\n }\n }\n return input.getAttribute('name');\n }\n\n getValidationsDescriptors(onlyDirty) {\n const descriptors = {};\n const fields = this.step.querySelectorAll('input, textarea, select');\n\n for (const field of fields) {\n if (isVisible(field) && (!onlyDirty || (onlyDirty && !field.classList.contains('dirty')))) {\n const label = this.getFieldLabel(field);\n const holder = this.getHolderForField(field);\n\n descriptors[field.getAttribute('name')] = {\n title: label,\n type: this.getValidatorType(field),\n required: holder.classList.contains('requiredField'),\n message: this.getValidatorMessage(field)\n };\n\n const min = field.getAttribute('data-rule-min');\n const max = field.getAttribute('data-rule-max');\n if (min !== null || max !== null) {\n descriptors[field.getAttribute('name')].asyncValidator = (rule, value) => {\n return new Promise((resolve, reject) => {\n if (min !== null && value < min) {\n reject(`${label} cannot be less than ${min}`);\n } else if (max !== null && value > max) {\n reject(`${label} cannot be greater than ${max}`);\n } else {\n resolve();\n }\n });\n };\n }\n\n const minL = field.getAttribute('data-rule-minlength');\n const maxL = field.getAttribute('data-rule-maxlength');\n if (minL !== null || maxL !== null) {\n descriptors[field.getAttribute('name')].asyncValidator = (rule, value) => {\n return new Promise((resolve, reject) => {\n if (minL !== null && value.length < minL) {\n reject(`${label} cannot be shorter than ${minL}`);\n } else if (maxL !== null && value.length > maxL) {\n reject(`${label} cannot be longer than ${maxL}`);\n } else {\n resolve();\n }\n });\n };\n }\n }\n }\n\n return descriptors;\n }\n\n validate(onlyDirty) {\n const descriptors = this.getValidationsDescriptors(onlyDirty);\n if (Object.keys(descriptors).length) {\n const validator = new Schema(descriptors);\n\n const formData = new FormData(this.userForm.dom);\n const data = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n // now check for unselected checkboxes and radio buttons\n const selectableFields = this.step.querySelectorAll('input[type=\"radio\"],input[type=\"checkbox\"]');\n for (const selectableField of selectableFields) {\n const fieldName = selectableField.getAttribute('name');\n if (typeof data[fieldName] === 'undefined') {\n data[fieldName] = '';\n }\n }\n\n const promise = new Promise((resolve, reject) => {\n validator.validate(data, (errors) => {\n if (errors && errors.length) {\n this.displayErrorMessages(errors);\n reject(errors);\n } else {\n this.displayErrorMessages([]);\n resolve();\n }\n });\n });\n return promise;\n }\n\n const promise = new Promise((resolve) => {\n resolve();\n });\n return promise;\n }\n\n enableLiveValidation() {\n const fields = this.step.querySelectorAll('input, textarea, select');\n for (const field of fields) {\n field.addEventListener('change', () => {\n field.classList.add('dirty');\n });\n\n field.addEventListener('focusout', () => {\n this.validate(true).then(() => {\n }).catch(() => {\n });\n });\n }\n }\n\n displayErrorMessages(errors) {\n const errorIds = [];\n\n for (const error of errors) {\n const fieldHolder = this.userForm.dom.querySelector(`#${error.field}`);\n if (fieldHolder) {\n let errorLabel = fieldHolder.querySelector('span.error');\n if (!errorLabel) {\n errorLabel = document.createElement('span');\n errorLabel.classList.add('error');\n errorLabel.setAttribute('data-id', error.field);\n }\n errorIds.push(error.field);\n errorLabel.innerHTML = error.message;\n fieldHolder.append(errorLabel);\n }\n }\n\n\n // remove any thats not required\n const messages = this.step.querySelectorAll('span.error');\n for (const mesasge of messages) {\n const id = mesasge.getAttribute('data-id');\n if (errorIds.indexOf(id) === -1) {\n mesasge.remove();\n }\n }\n }\n}\n\nclass FormActions {\n constructor(dom, userForm) {\n this.dom = dom;\n this.userForm = userForm;\n this.prevButton = dom.querySelector('.step-button-prev');\n this.nextButton = dom.querySelector('.step-button-next');\n\n this.init();\n }\n\n init() {\n this.prevButton.addEventListener('click', (e) => {\n e.preventDefault();\n // scrollUpFx();\n window.triggerDispatchEvent(this.userForm.dom, 'userform.action.prev');\n });\n this.nextButton.addEventListener('click', (e) => {\n e.preventDefault();\n // scrollUpFx();\n window.triggerDispatchEvent(this.userForm.dom, 'userform.action.next');\n });\n\n this.update();\n\n this.userForm.dom.addEventListener('userform.form.changestep', () => {\n this.update();\n });\n\n this.userForm.dom.addEventListener('userform.form.conditionalstep', () => {\n this.update();\n });\n }\n\n update() {\n const numberOfSteps = this.userForm.getNumberOfSteps();\n const stepId = this.userForm.getCurrentStepID();\n let i = null;\n let lastStep = null;\n for (i = numberOfSteps - 1; i >= 0; i--) {\n lastStep = this.userForm.getStep(i);\n if (!lastStep.conditionallyHidden()) {\n if (stepId >= i) {\n this.nextButton.parentNode.classList.add('hide');\n } else {\n this.nextButton.parentNode.classList.remove('hide');\n }\n\n if (stepId > 0 && stepId <= i) {\n this.prevButton.parentNode.classList.remove('hide');\n } else {\n this.prevButton.parentNode.classList.add('hide');\n }\n\n if (stepId >= i) {\n this.dom.querySelector('.btn-toolbar').classList.remove('hide');\n } else {\n this.dom.querySelector('.btn-toolbar').classList.add('hide');\n }\n\n break;\n }\n }\n }\n}\n\nclass UserForm {\n constructor(form) {\n this.dom = form;\n this.CONSTANTS = {}; // Settings that come from the CMS.\n this.steps = [];\n this.progressBar = null;\n this.actions = null;\n this.currentStep = null;\n\n this.CONSTANTS.ENABLE_LIVE_VALIDATION = this.dom.getAttribute('livevalidation') !== undefined;\n this.CONSTANTS.DISPLAY_ERROR_MESSAGES_AT_TOP = this.dom.getAttribute('toperrors') !== undefined;\n }\n\n init() {\n this.initialiseFormSteps();\n }\n\n initialiseFormSteps() {\n const steps = this.dom.querySelectorAll('.form-step');\n for (const stepDom of steps) {\n const step = new FormStep(stepDom, this);\n step.hide();\n this.addStep(step);\n\n if (this.CONSTANTS.ENABLE_LIVE_VALIDATION) {\n step.enableLiveValidation();\n }\n }\n\n this.setCurrentStep(this.steps[0]);\n\n const progressBarDom = this.dom.querySelector('.userform-progress');\n if (progressBarDom) {\n this.progressBar = new ProgressBar(progressBarDom, this);\n }\n\n const stepNavigation = this.dom.querySelector('.step-navigation');\n if (stepNavigation) {\n this.formActions = new FormActions(stepNavigation, this);\n this.formActions.update();\n }\n\n this.setUpPing();\n\n this.dom.addEventListener('userform.action.next', () => {\n this.nextStep();\n });\n\n this.dom.addEventListener('userform.action.prev', () => {\n this.prevStep();\n });\n\n this.dom.addEventListener('submit', (e) => {\n this.validateForm(e);\n });\n }\n\n\n validateForm(e) {\n e.preventDefault();\n this.currentStep.validate()\n .then((errors) => {\n if (!errors) {\n this.dom.submit();\n }\n })\n .catch(() => {});\n }\n\n setCurrentStep(step) {\n // Make sure we're dealing with a form step.\n if (!(step instanceof FormStep)) {\n return;\n }\n this.currentStep = step;\n this.currentStep.show();\n }\n\n addStep(step) {\n if (!(step instanceof FormStep)) {\n return;\n }\n step.setId(this.steps.length);\n this.steps.push(step);\n }\n\n getNumberOfSteps() {\n return this.steps.length;\n }\n\n getCurrentStepID() {\n return this.currentStep.id ? this.currentStep.id : 0;\n }\n\n getStep(index) {\n return this.steps[index];\n }\n\n nextStep() {\n this.currentStep.validate().then(() => {\n this.jumpToStep(this.steps.indexOf(this.currentStep) + 1, true);\n }).catch(() => {});\n }\n\n prevStep() {\n this.jumpToStep(this.steps.indexOf(this.currentStep) - 1, true);\n }\n\n jumpToStep(stepNumber, direction) {\n const targetStep = this.steps[stepNumber];\n const forward = direction === undefined ? true : direction;\n\n if (targetStep === undefined) {\n return;\n }\n\n if (targetStep.conditionallyHidden()) {\n if (forward) {\n this.jumpToStep(stepNumber + 1, direction);\n } else {\n this.jumpToStep(stepNumber - 1, direction);\n }\n return;\n }\n\n if (this.currentStep) {\n this.currentStep.hide();\n }\n\n this.setCurrentStep(targetStep);\n\n window.triggerDispatchEvent(this.dom, 'userform.form.changestep', {\n stepId: targetStep.id\n });\n }\n\n setUpPing() {\n // Make sure the form doesn't expire on the user. Pings every 3 mins.\n window.setInterval(() => {\n fetch('UserDefinedFormController/ping');\n }, 180 * 1000);\n }\n}\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const forms = document.querySelectorAll('form.userform');\n for (const form of forms) {\n const userForm = new UserForm(form);\n userForm.init();\n }\n});\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/bundles/UserForms.js","// Used for frontend userforms\nimport 'bundles/UserForms';\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/bundles/bundle.js","function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format(template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var i = 0;\n var len = args.length;\n\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n\n if (typeof template === 'string') {\n var str = template.replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n\n if (i >= len) {\n return x;\n }\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n break;\n\n default:\n return x;\n }\n });\n return str;\n }\n\n return template;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n\n return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors || []);\n total++;\n\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n\n var original = index;\n index = index + 1;\n\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k] || []);\n });\n return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n\n function AsyncValidationError(errors, fields) {\n var _this;\n\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n };\n\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n\n _pending[\"catch\"](function (e) {\n return e;\n });\n\n return _pending;\n }\n\n var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n }\n };\n\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\n\nfunction isErrorObj(obj) {\n return !!(obj && obj.message !== undefined);\n}\n\nfunction getValue(value, path) {\n var v = value;\n\n for (var i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n\n v = v[path[i]];\n }\n\n return v;\n}\n\nfunction complementError(rule, source) {\n return function (oe) {\n var fieldValue;\n\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[oe.field || rule.fullField];\n }\n\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue: fieldValue,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n\n return target;\n}\n\nvar required$1 = function required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = (function () {\n if (urlReg) {\n return urlReg;\n }\n\n var word = '[a-fA-F\\\\d:]';\n\n var b = function b(options) {\n return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n };\n\n var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n var v6seg = '[a-fA-F\\\\d]{1,4}';\n var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n var v4exact = new RegExp(\"^\" + v4 + \"$\");\n var v6exact = new RegExp(\"^\" + v6 + \"$\");\n\n var ip = function ip(options) {\n return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n };\n\n ip.v4 = function (options) {\n return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n };\n\n ip.v6 = function (options) {\n return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n };\n\n var protocol = \"(?:(?:[a-z]+:)?//)\";\n var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n var ipv4 = ip.v4().source;\n var ipv6 = ip.v6().source;\n var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n var port = '(?::\\\\d{2,5})?';\n var path = '(?:[/?#][^\\\\s\"]*)?';\n var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n return urlReg;\n});\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n },\n url: function url(value) {\n return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern$2.hex);\n }\n};\n\nvar type$1 = function type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required$1(rule, value, source, errors, options);\n return;\n }\n\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n};\n\nvar range = function range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n\n if (!key) {\n return false;\n }\n\n if (arr) {\n val = value.length;\n }\n\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n};\n\nvar ENUM$1 = 'enum';\n\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n\n if (rule[ENUM$1].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n }\n};\n\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n};\n\nvar rules = {\n required: required$1,\n whitespace: whitespace,\n type: type$1,\n range: range,\n \"enum\": enumerable$1,\n pattern: pattern$1\n};\n\nvar string = function string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'string');\n\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar method = function method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar number = function number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar regexp = function regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar integer = function integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar array = function array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'array');\n\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar object = function object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar ENUM = 'enum';\n\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar pattern = function pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar date = function date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar required = function required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\n\nvar type = function type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, ruleType);\n\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar any = function any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n }\n\n callback(errors);\n};\n\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required,\n any: any\n};\n\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n // ========================= Static =========================\n // ======================== Instance ========================\n function Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n }\n\n var _proto = Schema.prototype;\n\n _proto.define = function define(rules) {\n var _this = this;\n\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n\n this.rules = {};\n Object.keys(rules).forEach(function (name) {\n var item = rules[name];\n _this.rules[name] = Array.isArray(item) ? item : [item];\n });\n };\n\n _proto.messages = function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n\n return this._messages;\n };\n\n _proto.validate = function validate(source_, o, oc) {\n var _this2 = this;\n\n if (o === void 0) {\n o = {};\n }\n\n if (oc === void 0) {\n oc = function oc() {};\n }\n\n var source = source_;\n var options = o;\n var callback = oc;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n\n return Promise.resolve(source);\n }\n\n function complete(results) {\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n callback(errors, fields);\n }\n }\n\n if (options.messages) {\n var messages$1 = this.messages();\n\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n var arr = _this2.rules[z];\n var value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n\n value = source[z] = rule.transform(value);\n }\n\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n } // Fill validator. Skip if nothing need to validate\n\n\n rule.validator = _this2.getValidationMethod(rule);\n\n if (!rule.validator) {\n return;\n }\n\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this2.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n\n function addFullField(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + \".\" + key,\n fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n });\n }\n\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n\n var errorList = Array.isArray(e) ? e : [e];\n\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n } // Fill error info\n\n\n var filledErrors = errorList.map(complementError(rule, source));\n\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = [].concat(rule.message).map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n\n return doIt(filledErrors);\n }\n\n var fieldsSchema = {};\n\n if (rule.defaultField) {\n Object.keys(data.value).map(function (key) {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n var paredFieldsSchema = {};\n Object.keys(fieldsSchema).forEach(function (field) {\n var fieldSchema = fieldsSchema[field];\n var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n });\n var schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n\n if (filledErrors && filledErrors.length) {\n finalErrors.push.apply(finalErrors, filledErrors);\n }\n\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n var res;\n\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n if (!options.suppressValidatorError) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n\n cb(error.message);\n }\n\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n }, source);\n };\n\n _proto.getType = function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n\n return rule.type || 'string';\n };\n\n _proto.getValidationMethod = function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n\n return validators[this.getType(rule)] || undefined;\n };\n\n return Schema;\n}();\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n\n validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport { Schema as default };\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/async-validator/dist-web/index.js\n// module id = ./node_modules/async-validator/dist-web/index.js\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = ./node_modules/process/browser.js\n// module chunks = 0"],"sourceRoot":""} |