{"version":3,"sources":["webpack:///./performance/constants.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/components/form-input/form-input.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/directives/tooltip/tooltip.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/form/form_input/form_input.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/mixins/form-state.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack:///./blob/components/eventhub.js","webpack:///./performance/utils.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/utils/get-instance-from-directive.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/mixins/form-validity.js","webpack:////home/git/gitlab/node_modules/bootstrap-vue/esm/mixins/form-control.js"],"names":["PERFORMANCE_TYPE_MARK","PERFORMANCE_TYPE_MEASURE","SNIPPET_MARK_VIEW_APP_START","SNIPPET_MARK_EDIT_APP_START","SNIPPET_MARK_BLOBS_CONTENT","SNIPPET_MEASURE_BLOBS_CONTENT","WEBIDE_MARK_APP_START","WEBIDE_MARK_FILE_CLICKED","WEBIDE_MARK_FILE_FINISH","WEBIDE_MARK_REPO_EDITOR_START","WEBIDE_MARK_REPO_EDITOR_FINISH","WEBIDE_MARK_FETCH_BRANCH_DATA_START","WEBIDE_MARK_FETCH_BRANCH_DATA_FINISH","WEBIDE_MARK_FETCH_FILE_DATA_START","WEBIDE_MARK_FETCH_FILE_DATA_FINISH","WEBIDE_MARK_FETCH_FILES_START","WEBIDE_MARK_FETCH_FILES_FINISH","WEBIDE_MARK_FETCH_PROJECT_DATA_START","WEBIDE_MARK_FETCH_PROJECT_DATA_FINISH","WEBIDE_MEASURE_FILE_AFTER_INTERACTION","WEBIDE_MEASURE_FETCH_PROJECT_DATA","WEBIDE_MEASURE_FETCH_BRANCH_DATA","WEBIDE_MEASURE_FETCH_FILE_DATA","WEBIDE_MEASURE_BEFORE_VUE","WEBIDE_MEASURE_REPO_EDITOR","WEBIDE_MEASURE_FETCH_FILES","MR_DIFFS_MARK_FILE_TREE_START","MR_DIFFS_MARK_FILE_TREE_END","MR_DIFFS_MARK_DIFF_FILES_START","MR_DIFFS_MARK_FIRST_DIFF_FILE_SHOWN","MR_DIFFS_MARK_DIFF_FILES_END","MR_DIFFS_MEASURE_FILE_TREE_DONE","MR_DIFFS_MEASURE_DIFF_FILES_DONE","PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START","PIPELINES_DETAIL_LINKS_MARK_CALCULATE_END","PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION","PIPELINES_DETAIL_LINK_DURATION","PIPELINES_DETAIL_LINKS_TOTAL","PIPELINES_DETAIL_LINKS_JOB_RATIO","REPO_BLOB_LOAD_VIEWER_START","REPO_BLOB_SWITCH_TO_VIEWER_START","REPO_BLOB_LOAD_VIEWER_FINISH","REPO_BLOB_LOAD_VIEWER","REPO_BLOB_SWITCH_VIEWER","DESIGN_MARK_APP_START","DESIGN_MEASURE_BEFORE_APP","DESIGN_MAIN_IMAGE_OUTPUT","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","TYPES","props","list","max","min","noWheel","step","type","BFormInput","name","mixins","computed","localType","this","computedAttrs","form","disabled","placeholder","required","id","safeId","autocomplete","readonly","plaintext","computedAriaInvalid","computedListeners","bvListeners","input","onInput","change","onChange","blur","onBlur","watch","newValue","setWheelStopper","mounted","deactivated","activated","beforeDestroy","methods","on","$el","onWheelFocus","onWheelBlur","document","stopWheel","event","propagation","render","h","class","computedClass","attrs","domProps","localValue","ref","BV_TOOLTIP","validTriggers","focus","hover","click","manual","htmlRE","noninteractiveRE","noFadeRE","placementRE","boundaryRE","delayRE","delayShowRE","delayHideRE","offsetRE","variantRE","spacesRE","applyTooltip","el","bindings","vnode","config","title","undefined","trigger","placement","fallbackPlacement","container","animation","offset","html","interactive","delay","boundary","String","boundaryPadding","variant","customClass","data","show","hide","arg","concat","modifiers","mod","test","slice","selectedTriggers","join","trim","toLowerCase","split","parseBindings","parent","_scopeId","__bv_prev_data__","$on","updateData","triggers","noFade","oldData","newData","prop","VBTooltip","bind","componentUpdated","unbind","$destroy","removeTooltip","__vue_script__","components","inheritAttrs","model","width","default","validator","values","every","includes","defaultWidth","nonDefaultWidths","entries","map","_ref","breakpoint","_this","$listeners","_len","args","Array","_key","$emit","update","_len2","_key2","__vue_component__","_h","$createElement","_self","_c","_g","_b","staticClass","cssClasses","$attrs","listeners","staticRenderFns","state","formStateMixin","computedState","stateClass","ariaInvalid","_makeModelMixin","defaultValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","debounce","formatter","lazy","lazyFormatter","number","formTextMixin","vModelValue","modifyValue","isRange","isColor","sizeFormClass","computedDebounce","hasFormatter","stringifyValue","modifiedValue","clearDebounce","created","$_inputDebounceTimer","clearTimeout","formatValue","force","updateValue","doUpdate","$input","$refs","setTimeout","composing","formattedValue","defaultPrevented","size","formSizeMixin","formSelectionMixin","selectionStart","cache","get","set","val","selectionEnd","selectionDirection","select","_this$$refs$input","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","createEventHub","performanceMarkAndMeasure","mark","measures","window","requestAnimationFrame","performance","getEntriesByName","measure","start","end","getInstanceFromDirective","instance","context","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","autofocus","formControlMixin","handleAutofocus","$nextTick"],"mappings":"0FAAA,8jDAAO,MAAMA,EAAwB,OACxBC,EAA2B,UAO3BC,EAA8B,yBAC9BC,EAA8B,yBAC9BC,EAA6B,iCAG7BC,EAAgC,wBAOhCC,EAAwB,mBACxBC,EAA2B,sBAC3BC,EAA0B,uBAC1BC,EAAgC,2BAChCC,EAAiC,4BACjCC,EAAsC,6BACtCC,EAAuC,8BACvCC,EAAoC,2BACpCC,EAAqC,4BACrCC,EAAgC,wBAChCC,EAAiC,yBACjCC,EAAuC,8BACvCC,EAAwC,+BAGxCC,EAAwC,wCACxCC,EAAoC,uBACpCC,EAAmC,sBACnCC,EAAiC,oBACjCC,EAA4B,yBAC5BC,EAA6B,sBAC7BC,EAA6B,sBAO7BC,EAAgC,gCAChCC,EAA8B,8BAC9BC,EAAiC,iCACjCC,EAAsC,sCACtCC,EAA+B,+BAG/BC,EAAkC,kCAClCC,EAAmC,mCAOnCC,EACX,8CACWC,EACX,4CAGWC,EACX,4CAKWC,EAAiC,mDACjCC,EAA+B,6BAC/BC,EAAmC,qCAOnCC,EAA8B,+BAC9BC,EAAmC,qCACnCC,EAA+B,gCAG/BC,EAAwB,6CACxBC,EAA0B,+CAO1BC,EAAwB,mBAGxBC,EAA4B,wCAC5BC,EAA2B,2C,kCCrGxC,+OAASC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAASC,IAAmBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAiBP,EAAKQ,KAAKC,MAAMT,EAAMG,GAAY,OAAOH,EAE9U,SAASU,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIf,EAAQI,OAAOc,IAAS,GAAIC,SAAQ,SAAUC,GAAOC,EAAgBP,EAAQM,EAAKF,EAAOE,OAAYhB,OAAOkB,0BAA4BlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAAWlB,EAAQI,OAAOc,IAASC,SAAQ,SAAUC,GAAOhB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,OAAa,OAAON,EAEjf,SAASO,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOrB,OAAOoB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOhB,YAAY,EAAMiB,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAoB3M,IAAII,EAAQ,CAAC,OAAQ,WAAY,QAAS,SAAU,MAAO,MAAO,SAAU,QAAS,QAAS,OAAQ,OAAQ,WAAY,iBAAkB,QAAS,QAE1IC,EAAQ,YAAsB,YAASjB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,KAAU,KAAmB,KAAgB,KAAiB,KAAgB,GAAI,CAC1NkB,KAAM,YAAS,KACfC,IAAK,YAAS,KACdC,IAAK,YAAS,KAEdC,QAAS,YAAS,KAAmB,GACrCC,KAAM,YAAS,KACfC,KAAM,YAAS,IAAkB,QAAQ,SAAUA,GACjD,OAAO,YAAcP,EAAOO,SAE3B,KAGMC,EAA0B,YAAO,CAC1CC,KAAM,IAENC,OAAQ,CAAC,IAAgB,IAAS,IAAkB,IAAe,IAAgB,IAAe,IAAoB,KACtHT,MAAOA,EACPU,SAAU,CACRC,UAAW,WAET,IAAIL,EAAOM,KAAKN,KAChB,OAAO,YAAcP,EAAOO,GAAQA,EAAO,QAE7CO,cAAe,WACb,IAAIP,EAAOM,KAAKD,UACZH,EAAOI,KAAKJ,KACZM,EAAOF,KAAKE,KACZC,EAAWH,KAAKG,SAChBC,EAAcJ,KAAKI,YACnBC,EAAWL,KAAKK,SAChBd,EAAMS,KAAKT,IACXD,EAAMU,KAAKV,IACXG,EAAOO,KAAKP,KAChB,MAAO,CACLa,GAAIN,KAAKO,SACTX,KAAMA,EACNM,KAAMA,EACNR,KAAMA,EACNS,SAAUA,EACVC,YAAaA,EACbC,SAAUA,EACVG,aAAcR,KAAKQ,cAAgB,KACnCC,SAAUT,KAAKS,UAAYT,KAAKU,UAChCnB,IAAKA,EACLD,IAAKA,EACLG,KAAMA,EACNJ,KAAe,aAATK,EAAsBM,KAAKX,KAAO,KACxC,gBAAiBgB,EAAW,OAAS,KACrC,eAAgBL,KAAKW,sBAGzBC,kBAAmB,WACjB,OAAOzC,EAAcA,EAAc,GAAI6B,KAAKa,aAAc,GAAI,CAC5DC,MAAOd,KAAKe,QACZC,OAAQhB,KAAKiB,SACbC,KAAMlB,KAAKmB,WAIjBC,MAAO,CACL5B,QAAS,SAAiB6B,GACxBrB,KAAKsB,gBAAgBD,KAGzBE,QAAS,WACPvB,KAAKsB,gBAAgBtB,KAAKR,UAI5BgC,YAAa,WAIXxB,KAAKsB,iBAAgB,IAIvBG,UAAW,WAITzB,KAAKsB,gBAAgBtB,KAAKR,UAE5BkC,cAAe,WAEb1B,KAAKsB,iBAAgB,IAEvBK,QAAS,CACPL,gBAAiB,SAAyBM,GACxC,IAAId,EAAQd,KAAK6B,IAEjB,YAAWD,EAAId,EAAO,QAASd,KAAK8B,cACpC,YAAWF,EAAId,EAAO,OAAQd,KAAK+B,aAE9BH,GACH,YAASI,SAAU,QAAShC,KAAKiC,YAGrCH,aAAc,WACZ,YAAQE,SAAU,QAAShC,KAAKiC,YAElCF,YAAa,WACX,YAASC,SAAU,QAAShC,KAAKiC,YAEnCA,UAAW,SAAmBC,GAC5B,YAAUA,EAAO,CACfC,aAAa,IAEf,YAAYnC,KAAK6B,OAGrBO,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChBC,MAAOtC,KAAKuC,cACZC,MAAOxC,KAAKC,cACZwC,SAAU,CACRzD,MAAOgB,KAAK0C,YAEdd,GAAI5B,KAAKY,kBACT+B,IAAK,c,kCClJX,mOAASrF,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAASC,IAAmBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAiBP,EAAKQ,KAAKC,MAAMT,EAAMG,GAAY,OAAOH,EAE9U,SAASU,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIf,EAAQI,OAAOc,IAAS,GAAIC,SAAQ,SAAUC,GAAOC,EAAgBP,EAAQM,EAAKF,EAAOE,OAAYhB,OAAOkB,0BAA4BlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAAWlB,EAAQI,OAAOc,IAASC,SAAQ,SAAUC,GAAOhB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,OAAa,OAAON,EAEjf,SAASO,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOrB,OAAOoB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOhB,YAAY,EAAMiB,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAkB3M,IAAI6D,EAAa,iBAIbC,EAAgB,CAClBC,OAAO,EACPC,OAAO,EACPC,OAAO,EACP9B,MAAM,EACN+B,QAAQ,GAGNC,EAAS,UACTC,EAAmB,oBACnBC,EAAW,YACXC,EAAc,sFACdC,EAAa,oCACbC,EAAU,UACVC,EAAc,WACdC,EAAc,WACdC,EAAW,YACXC,EAAY,UACZC,EAAW,MAsIXC,EAAe,SAAsBC,EAAIC,EAAUC,GACrD,GAAK,IAAL,CAKA,IAAIC,EAzIc,SAAuBF,EAAUC,GAInD,IAAIC,EAAS,CACXC,WAAOC,EACPC,QAAS,GAETC,UAAW,MACXC,kBAAmB,OACnBC,WAAW,EAEXC,WAAW,EACXC,OAAQ,EACRnE,GAAI,KACJoE,MAAM,EACNC,aAAa,EACbxE,UAAU,EACVyE,MAAO,YAAmB,KAAc,QAAS,IACjDC,SAAUC,OAAO,YAAmB,KAAc,WAAY,iBAC9DC,gBAAiB,YAAU,YAAmB,KAAc,kBAAmB,GAAI,GACnFC,QAAS,YAAmB,KAAc,WAC1CC,YAAa,YAAmB,KAAc,gBAehD,GAZI,YAASlB,EAAS/E,QAAU,YAAS+E,EAAS/E,QAGvC,YAAW+E,EAAS/E,OAD7BiF,EAAOC,MAAQH,EAAS/E,MAIf,YAAc+E,EAAS/E,SAEhCiF,EAAS9F,EAAcA,EAAc,GAAI8F,GAASF,EAAS/E,QAIzD,YAAYiF,EAAOC,OAAQ,CAE7B,IAAI1B,EAAQ,IAASwB,EAAM5E,OAAS4E,EAAMkB,MAAQ,IAAI1C,MACtDyB,EAAOC,MAAQ1B,IAAU,YAAkBA,EAAM0B,OAAS1B,EAAM0B,WAAQC,EAIrE,YAAcF,EAAOW,SACxBX,EAAOW,MAAQ,CACbO,KAAM,YAAUlB,EAAOW,MAAO,GAC9BQ,KAAM,YAAUnB,EAAOW,MAAO,KAK9Bb,EAASsB,MAGXpB,EAAOM,UAAY,IAAIe,OAAOvB,EAASsB,MAIzC,YAAKtB,EAASwB,WAAW9G,SAAQ,SAAU+G,GACzC,GAAItC,EAAOuC,KAAKD,GAEdvB,EAAOS,MAAO,OACT,GAAIvB,EAAiBsC,KAAKD,GAE/BvB,EAAOU,aAAc,OAChB,GAAIvB,EAASqC,KAAKD,GAEvBvB,EAAOO,WAAY,OACd,GAAInB,EAAYoC,KAAKD,GAE1BvB,EAAOI,UAAYmB,OACd,GAAIlC,EAAWmC,KAAKD,GAEzBA,EAAc,iBAARA,EAAyB,eAAiBA,EAChDvB,EAAOY,SAAWW,OACb,GAAIjC,EAAQkC,KAAKD,GAAM,CAE5B,IAAIZ,EAAQ,YAAUY,EAAIE,MAAM,GAAI,GACpCzB,EAAOW,MAAMO,KAAOP,EACpBX,EAAOW,MAAMQ,KAAOR,OACXpB,EAAYiC,KAAKD,GAE1BvB,EAAOW,MAAMO,KAAO,YAAUK,EAAIE,MAAM,GAAI,GACnCjC,EAAYgC,KAAKD,GAE1BvB,EAAOW,MAAMQ,KAAO,YAAUI,EAAIE,MAAM,GAAI,GACnChC,EAAS+B,KAAKD,GAEvBvB,EAAOQ,OAAS,YAAUe,EAAIE,MAAM,GAAI,GAC/B/B,EAAU8B,KAAKD,KAExBvB,EAAOe,QAAUQ,EAAIE,MAAM,IAAM,SAKrC,IAAIC,EAAmB,GA8BvB,OA5BA,YAAO1B,EAAOG,SAAW,IAAIvG,OAAO,KAAU+H,KAAK,KAAKC,OAAOC,cAAcC,MAAMnC,GAAUnF,SAAQ,SAAU2F,GACzGvB,EAAcuB,KAChBuB,EAAiBvB,IAAW,MAIhC,YAAKL,EAASwB,WAAW9G,SAAQ,SAAU+G,GACzCA,EAAMA,EAAIM,cAENjD,EAAc2C,KAEhBG,EAAiBH,IAAO,MAI5BvB,EAAOG,QAAU,YAAKuB,GAAkBC,KAAK,KAEtB,SAAnB3B,EAAOG,UAETH,EAAOG,QAAU,SAGdH,EAAOG,UAEVH,EAAOG,QAlJU,eAsJZH,EAUM+B,CAAcjC,EAAUC,GAErC,IAAKF,EAAGlB,GAAa,CACnB,IAAIqD,EAAS,YAAyBjC,EAAOD,GAC7CD,EAAGlB,GAAc,YAAwBqD,EAAQ,IAAW,CAE1DC,SAAU,YAAWD,OAAQ9B,KAE/BL,EAAGlB,GAAYuD,iBAAmB,GAClCrC,EAAGlB,GAAYwD,IAAI,KAAiB,WAI9B,YAAWnC,EAAOC,QACpBJ,EAAGlB,GAAYyD,WAAW,CACxBnC,MAAOD,EAAOC,MAAMJ,QAM5B,IAAIoB,EAAO,CACThB,MAAOD,EAAOC,MACdoC,SAAUrC,EAAOG,QACjBC,UAAWJ,EAAOI,UAClBC,kBAAmBL,EAAOK,kBAC1BU,QAASf,EAAOe,QAChBC,YAAahB,EAAOgB,YACpBV,UAAWN,EAAOM,UAClBM,SAAUZ,EAAOY,SACjBD,MAAOX,EAAOW,MACdH,OAAQR,EAAOQ,OACf8B,QAAStC,EAAOO,UAChBlE,GAAI2D,EAAO3D,GACXqE,YAAaV,EAAOU,YACpBxE,SAAU8D,EAAO9D,SACjBuE,KAAMT,EAAOS,MAEX8B,EAAU1C,EAAGlB,GAAYuD,iBAG7B,GAFArC,EAAGlB,GAAYuD,iBAAmBjB,GAE7B,YAAWA,EAAMsB,GAAU,CAE9B,IAAIC,EAAU,CACZrI,OAAQ0F,GAEV,YAAKoB,GAAMzG,SAAQ,SAAUiI,GAEvBxB,EAAKwB,KAAUF,EAAQE,KAEzBD,EAAQC,GAAiB,UAATA,GAAoB,YAAWxB,EAAKwB,IAASxB,EAAKwB,GAAM5C,GAAMoB,EAAKwB,OAGvF5C,EAAGlB,GAAYyD,WAAWI,MAenBE,EAAY,CACrBC,KAAM,SAAc9C,EAAIC,EAAUC,GAChCH,EAAaC,EAAIC,EAAUC,IAI7B6C,iBAAkB,SAA0B/C,EAAIC,EAAUC,GAExD,aAAS,WACPH,EAAaC,EAAIC,EAAUC,OAG/B8C,OAAQ,SAAgBhD,IAtBN,SAAuBA,GACrCA,EAAGlB,KACLkB,EAAGlB,GAAYmE,WACfjD,EAAGlB,GAAc,aAGZkB,EAAGlB,GAiBRoE,CAAclD,M,kCCzQlB,sEAqFA,MAAMmD,EA9EO,CACXrH,KAAM,cACNsH,WAAY,CACVvH,WAAA,KAEFwH,cAAc,EACdC,MAAO,CACLV,KATe,QAUfxE,MATgB,SAWlB9C,MAAO,CAILiI,MAAO,CACL3H,KAAM,CAACoF,OAAQpH,QACf2C,UAAU,EACViH,QAAS,KACTC,UAAWvI,IACM,IAASA,GAAStB,OAAO8J,OAAOxI,GAAS,CAACA,IAC3CyI,MAAMJ,GAAS3J,OAAO8J,OAAO,KAAiBE,SAASL,MAI3EvH,SAAU,CACR,aACE,GAAmB,OAAfE,KAAKqH,MACP,MAAO,GAET,GAAI,IAASrH,KAAKqH,OAAQ,CACxB,MACEC,QAASK,KACNC,GACD5H,KAAKqH,MACT,MAAO,IAAKM,EAAe,CAAC,iBAAiBA,GAAkB,MAAQjK,OAAOmK,QAAQD,GAAkBE,IAAIC,IAC1G,IAAKC,EAAYX,GAASU,EAC1B,MAAO,MAAMC,gBAAyBX,OAG1C,MAAO,CAAC,iBAAiBrH,KAAKqH,QAEhC,YACE,IAAIY,EAAQjI,KACZ,MAAO,IACFA,KAAKkI,WAGRpH,MAAO,WACL,IAAK,IAAIqH,EAAO7J,UAAUC,OAAQ6J,EAAO,IAAIC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EF,EAAKE,GAAQhK,UAAUgK,GAQzBL,EAAMM,MAAM,YAAaH,IAE3BI,OAAQ,WACN,IAAK,IAAIC,EAAQnK,UAAUC,OAAQ6J,EAAO,IAAIC,MAAMI,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFN,EAAKM,GAASpK,UAAUoK,GAS1BT,EAAMM,MAvEI,WAuEkBH,QAepC,MAeMO,EAAoB,IACxB,CAAEvG,OApBe,WAAa,IAAiBwG,EAAT5I,KAAgB6I,eAAuC,OAAvD7I,KAA0C8I,MAAMC,IAAIH,GAAa,eAAjE5I,KAAoFgJ,GAApFhJ,KAA2FiJ,GAAG,CAACC,YAAY,gBAAgB5G,MAA3HtC,KAAqImJ,WAAW3G,MAAM,CAAC,WAAW,KAAK,eAAvKxC,KAA0LoJ,QAAO,GAAjMpJ,KAA4MqJ,aAoBxNC,gBAnBA,SAGEnF,EAkB5B8C,OAhBuB9C,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCCxHf,oIAcW/E,EAAQ,YAAsB,CAEvCmK,MAAO,YAAS,IAAmB,OAClC,aAGQC,EAAiB,YAAO,CACjCpK,MAAOA,EACPU,SAAU,CACR2J,cAAe,WAEb,OAAO,YAAUzJ,KAAKuJ,OAASvJ,KAAKuJ,MAAQ,MAE9CG,WAAY,WACV,IAAIH,EAAQvJ,KAAKyJ,cACjB,OAAiB,IAAVF,EAAiB,YAAuB,IAAVA,EAAkB,aAAe,MAExE5I,oBAAqB,WACnB,IAAIgJ,EAAc,YAAgB3J,MAAM2J,YAExC,OAAoB,IAAhBA,GAAwC,SAAhBA,GAA0C,KAAhBA,IAIxB,IAAvB3J,KAAKyJ,cAHH,OAGsCE,O,kCCtCrD,qNAASrM,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAASC,IAAmBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAiBP,EAAKQ,KAAKC,MAAMT,EAAMG,GAAY,OAAOH,EAE9U,SAASU,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIf,EAAQI,OAAOc,IAAS,GAAIC,SAAQ,SAAUC,GAAOC,EAAgBP,EAAQM,EAAKF,EAAOE,OAAYhB,OAAOkB,0BAA4BlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAAWlB,EAAQI,OAAOc,IAASC,SAAQ,SAAUC,GAAOhB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,OAAa,OAAON,EAEjf,SAASO,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOrB,OAAOoB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOhB,YAAY,EAAMiB,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAc3M,IAAI6K,EAAkB,YAAe,QAAS,CAC5ClK,KAAM,IACNmK,aAAc,GACd3H,MAAO,MAEL4H,EAAaF,EAAgBG,MAC7BC,EAAaJ,EAAgBxK,MAC7B6K,EAAkBL,EAAgBlD,KAClCwD,EAAmBN,EAAgB1H,MAI5B9C,EAAQ,YAAsB,YAASjB,EAAcA,EAAc,GAAI6L,GAAa,GAAI,CACjGL,YAAa,YAAS,KAA0B,GAChDnJ,aAAc,YAAS,KAEvB2J,SAAU,YAAS,IAAyB,GAC5CC,UAAW,YAAS,KAEpBC,KAAM,YAAS,KAAmB,GAClCC,cAAe,YAAS,KAAmB,GAC3CC,OAAQ,YAAS,KAAmB,GACpCnK,YAAa,YAAS,KACtBM,UAAW,YAAS,KAAmB,GACvCD,SAAU,YAAS,KAAmB,GACtCoF,KAAM,YAAS,KAAmB,MAC/B,oBAGM2E,EAAgB,YAAO,CAChC3K,OAAQ,CAACiK,GACT1K,MAAOA,EACP8F,KAAM,WACJ,IAAIlG,EAAQgB,KAAKiK,GACjB,MAAO,CACLvH,WAAY,YAAS1D,GACrByL,YAAazK,KAAK0K,YAAY1L,KAGlCc,SAAU,CACRyC,cAAe,WACb,IAAI7B,EAAYV,KAAKU,UACjBhB,EAAOM,KAAKN,KACZiL,EAAmB,UAATjL,EACVkL,EAAmB,UAATlL,EACd,MAAO,CAAC,CAEN,eAAgBiL,EAEhB,yBAA0BjK,IAAciK,IAAYC,EAGpD,eAAgBA,IAAYlK,IAAciK,GACzC3K,KAAK6K,cAAe7K,KAAK0J,aAE9BoB,iBAAkB,WAEhB,OAAO,YAAQ,YAAU9K,KAAKmK,SAAU,GAAI,IAE9CY,aAAc,WACZ,OAAO,YAAgB/K,KAAKoK,aAGhChJ,MAAOzC,EAAgB,GAAIsL,GAAiB,SAAU5I,GACpD,IAAI2J,EAAiB,YAAS3J,GAC1B4J,EAAgBjL,KAAK0K,YAAYrJ,GAEjC2J,IAAmBhL,KAAK0C,YAAcuI,IAAkBjL,KAAKyK,cAE/DzK,KAAKkL,gBAELlL,KAAK0C,WAAasI,EAClBhL,KAAKyK,YAAcQ,MAGvBE,QAAS,WAEPnL,KAAKoL,qBAAuB,MAE9B1J,cAAe,WACb1B,KAAKkL,iBAEPvJ,QAAS,CACPuJ,cAAe,WACbG,aAAarL,KAAKoL,sBAClBpL,KAAKoL,qBAAuB,MAE9BE,YAAa,SAAqBtM,EAAOkD,GACvC,IAAIqJ,EAAQjN,UAAUC,OAAS,QAAsB4F,IAAjB7F,UAAU,IAAmBA,UAAU,GAO3E,OANAU,EAAQ,YAASA,IAEbgB,KAAK+K,cAAkB/K,KAAKsK,gBAAiBiB,IAC/CvM,EAAQgB,KAAKoK,UAAUpL,EAAOkD,IAGzBlD,GAET0L,YAAa,SAAqB1L,GAYhC,OAXAA,EAAQ,YAASA,GAEbgB,KAAK6F,OACP7G,EAAQA,EAAM6G,QAIZ7F,KAAKuK,SACPvL,EAAQ,YAAQA,EAAOA,IAGlBA,GAETwM,YAAa,SAAqBxM,GAChC,IAAIiJ,EAAQjI,KAERuL,EAAQjN,UAAUC,OAAS,QAAsB4F,IAAjB7F,UAAU,IAAmBA,UAAU,GACvE+L,EAAOrK,KAAKqK,KAEhB,IAAIA,GAASkB,EAAb,CAMAvL,KAAKkL,gBAGL,IAAIO,EAAW,WAGb,IAFAzM,EAAQiJ,EAAMyC,YAAY1L,MAEZiJ,EAAMwC,YAClBxC,EAAMwC,YAAczL,EAEpBiJ,EAAMM,MAAM2B,EAAkBlL,QACzB,GAAIiJ,EAAM8C,aAAc,CAS7B,IAAIW,EAASzD,EAAM0D,MAAM7K,MAGrB4K,GAAU1M,IAAU0M,EAAO1M,QAC7B0M,EAAO1M,MAAQA,KAOjBmL,EAAWnK,KAAK8K,iBAEhBX,EAAW,IAAME,IAASkB,EAC5BvL,KAAKoL,qBAAuBQ,WAAWH,EAAUtB,GAGjDsB,MAGJ1K,QAAS,SAAiBmB,GAMxB,IAAIA,EAAM9D,OAAOyN,UAAjB,CAIA,IAAI7M,EAAQkD,EAAM9D,OAAOY,MACrB8M,EAAiB9L,KAAKsL,YAAYtM,EAAOkD,IAKtB,IAAnB4J,GAA4B5J,EAAM6J,iBACpC,YAAU7J,EAAO,CACfC,aAAa,KAKjBnC,KAAK0C,WAAaoJ,EAClB9L,KAAKwL,YAAYM,GACjB9L,KAAKuI,MAAM,IAAkBuD,MAE/B7K,SAAU,SAAkBiB,GAC1B,IAAIlD,EAAQkD,EAAM9D,OAAOY,MACrB8M,EAAiB9L,KAAKsL,YAAYtM,EAAOkD,IAKtB,IAAnB4J,GAA4B5J,EAAM6J,iBACpC,YAAU7J,EAAO,CACfC,aAAa,KAKjBnC,KAAK0C,WAAaoJ,EAClB9L,KAAKwL,YAAYM,GAAgB,GACjC9L,KAAKuI,MAAM,IAAmBuD,KAEhC3K,OAAQ,SAAgBe,GAGtB,IAAIlD,EAAQkD,EAAM9D,OAAOY,MACrB8M,EAAiB9L,KAAKsL,YAAYtM,EAAOkD,GAAO,IAE7B,IAAnB4J,IAGF9L,KAAK0C,WAAa,YAAS1C,KAAK0K,YAAYoB,IAG5C9L,KAAKwL,YAAYM,GAAgB,IAInC9L,KAAKuI,MAAM,IAAiBrG,IAE9BY,MAAO,WAEA9C,KAAKG,UACR,YAAaH,KAAK6B,MAGtBX,KAAM,WAEClB,KAAKG,UACR,YAAYH,KAAK6B,U,kCC5PzB,4GAIWzC,EAAQ,YAAsB,CACvC4M,KAAM,YAAS,MACd,gBAGQC,EAAgB,YAAO,CAChC7M,MAAOA,EACPU,SAAU,CACR+K,cAAe,WACb,MAAO,CAAC7K,KAAKgM,KAAO,gBAAgB1G,OAAOtF,KAAKgM,MAAQ,W,kCCb9D,kDAEWE,EAAqB,YAAO,CACrCpM,SAAU,CACRqM,eAAgB,CAEdC,OAAO,EAGPC,IAAK,WACH,OAAOrM,KAAK2L,MAAM7K,MAAMqL,gBAI1BG,IAAK,SAAaC,GAChBvM,KAAK2L,MAAM7K,MAAMqL,eAAiBI,IAGtCC,aAAc,CAEZJ,OAAO,EAGPC,IAAK,WACH,OAAOrM,KAAK2L,MAAM7K,MAAM0L,cAI1BF,IAAK,SAAaC,GAChBvM,KAAK2L,MAAM7K,MAAM0L,aAAeD,IAGpCE,mBAAoB,CAElBL,OAAO,EAGPC,IAAK,WACH,OAAOrM,KAAK2L,MAAM7K,MAAM2L,oBAI1BH,IAAK,SAAaC,GAChBvM,KAAK2L,MAAM7K,MAAM2L,mBAAqBF,KAI5C5K,QAAS,CAEP+K,OAAQ,WACN,IAAIC,GAGHA,EAAoB3M,KAAK2L,MAAM7K,OAAO4L,OAAOxO,MAAMyO,EAAmBrO,YAIzEsO,kBAAmB,WACjB,IAAIC,GAGHA,EAAqB7M,KAAK2L,MAAM7K,OAAO8L,kBAAkB1O,MAAM2O,EAAoBvO,YAItFwO,aAAc,WACZ,IAAIC,GAGHA,EAAqB/M,KAAK2L,MAAM7K,OAAOgM,aAAa5O,MAAM6O,EAAoBzO,gB,kCCrErF,gBAEe0O,mB,kGCFR,MAAMC,EAA4B,UAAC,KAAEC,EAAI,SAAEC,EAAW,IAAO,IAClEC,OAAOC,uBAAsB,WACvBH,IAASI,YAAYC,iBAAiBL,GAAM3O,QAC9C+O,YAAYJ,KAAKA,GAEnBC,EAAS1O,SAAQ,SAAC+O,GAChBF,YAAYE,QAAQA,EAAQ5N,KAAM4N,EAAQC,MAAOD,EAAQE,a,kCCN/D,kDACWC,EAA2B,SAAkC3J,EAAOD,GAC7E,OAAO,IAASA,EAAS6J,SAAW5J,EAAM6J,U,kCCF5C,kDAEWC,EAAoB,YAAO,CACpChO,SAAU,CACRiO,SAAU,CAER3B,OAAO,EAGPC,IAAK,WACH,OAAOrM,KAAK2L,MAAM7K,MAAMiN,WAG5BC,kBAAmB,CAEjB5B,OAAO,EAGPC,IAAK,WACH,OAAOrM,KAAK2L,MAAM7K,MAAMkN,oBAG5BC,aAAc,CAEZ7B,OAAO,EAGPC,IAAK,WACH,OAAOrM,KAAK2L,MAAM7K,MAAMmN,gBAI9BtM,QAAS,CAEPuM,kBAAmB,WACjB,IAAIvB,EAGJ,OAAQA,EAAoB3M,KAAK2L,MAAM7K,OAAOoN,kBAAkBhQ,MAAMyO,EAAmBrO,YAI3F6P,cAAe,WACb,IAAItB,EAGJ,OAAQA,EAAqB7M,KAAK2L,MAAM7K,OAAOqN,cAAcjQ,MAAM2O,EAAoBvO,YAIzF8P,eAAgB,WACd,IAAIrB,EAGJ,OAAQA,EAAqB/M,KAAK2L,MAAM7K,OAAOsN,eAAelQ,MAAM6O,EAAoBzO,gB,kCCtD9F,wHAOWc,EAAQ,YAAsB,CACvCiP,UAAW,YAAS,KAAmB,GACvClO,SAAU,YAAS,KAAmB,GACtCD,KAAM,YAAS,KACfI,GAAI,YAAS,KACbV,KAAM,YAAS,KACfS,SAAU,YAAS,KAAmB,IACrC,gBAGQiO,EAAmB,YAAO,CACnClP,MAAOA,EACPmC,QAAS,WACPvB,KAAKuO,mBAIP9M,UAAW,WACTzB,KAAKuO,mBAEP5M,QAAS,CACP4M,gBAAiB,WACf,IAAItG,EAAQjI,KAEZA,KAAKwO,WAAU,WACb,aAAU,WACR,IAAI1K,EAAKmE,EAAMpG,IAEXoG,EAAMoG,WAAa,YAAUvK,KAC1B,YAAQA,EA/BV,6BAgCDA,EAAK,YAhCJ,0BAgCqBA,IAGxB,YAAaA","file":"commons-pages.projects.blob.show-pages.projects.show-pages.projects.snippets.edit-pages.projects.sni-42df7d4c.56c2e52b.chunk.js","sourcesContent":["export const PERFORMANCE_TYPE_MARK = 'mark';\nexport const PERFORMANCE_TYPE_MEASURE = 'measure';\n\n//\n// SNIPPET namespace\n//\n\n// Marks\nexport const SNIPPET_MARK_VIEW_APP_START = 'snippet-view-app-start';\nexport const SNIPPET_MARK_EDIT_APP_START = 'snippet-edit-app-start';\nexport const SNIPPET_MARK_BLOBS_CONTENT = 'snippet-blobs-content-finished';\n\n// Measures\nexport const SNIPPET_MEASURE_BLOBS_CONTENT = 'snippet-blobs-content';\n\n//\n// WebIDE namespace\n//\n\n// Marks\nexport const WEBIDE_MARK_APP_START = 'webide-app-start';\nexport const WEBIDE_MARK_FILE_CLICKED = 'webide-file-clicked';\nexport const WEBIDE_MARK_FILE_FINISH = 'webide-file-finished';\nexport const WEBIDE_MARK_REPO_EDITOR_START = 'webide-init-editor-start';\nexport const WEBIDE_MARK_REPO_EDITOR_FINISH = 'webide-init-editor-finish';\nexport const WEBIDE_MARK_FETCH_BRANCH_DATA_START = 'webide-getBranchData-start';\nexport const WEBIDE_MARK_FETCH_BRANCH_DATA_FINISH = 'webide-getBranchData-finish';\nexport const WEBIDE_MARK_FETCH_FILE_DATA_START = 'webide-getFileData-start';\nexport const WEBIDE_MARK_FETCH_FILE_DATA_FINISH = 'webide-getFileData-finish';\nexport const WEBIDE_MARK_FETCH_FILES_START = 'webide-getFiles-start';\nexport const WEBIDE_MARK_FETCH_FILES_FINISH = 'webide-getFiles-finish';\nexport const WEBIDE_MARK_FETCH_PROJECT_DATA_START = 'webide-getProjectData-start';\nexport const WEBIDE_MARK_FETCH_PROJECT_DATA_FINISH = 'webide-getProjectData-finish';\n\n// Measures\nexport const WEBIDE_MEASURE_FILE_AFTER_INTERACTION = 'webide-file-loading-after-interaction';\nexport const WEBIDE_MEASURE_FETCH_PROJECT_DATA = 'WebIDE: Project data';\nexport const WEBIDE_MEASURE_FETCH_BRANCH_DATA = 'WebIDE: Branch data';\nexport const WEBIDE_MEASURE_FETCH_FILE_DATA = 'WebIDE: File data';\nexport const WEBIDE_MEASURE_BEFORE_VUE = 'WebIDE: Before Vue app';\nexport const WEBIDE_MEASURE_REPO_EDITOR = 'WebIDE: Repo Editor';\nexport const WEBIDE_MEASURE_FETCH_FILES = 'WebIDE: Fetch Files';\n\n//\n// MR Diffs namespace\n//\n\n// Marks\nexport const MR_DIFFS_MARK_FILE_TREE_START = 'mr-diffs-mark-file-tree-start';\nexport const MR_DIFFS_MARK_FILE_TREE_END = 'mr-diffs-mark-file-tree-end';\nexport const MR_DIFFS_MARK_DIFF_FILES_START = 'mr-diffs-mark-diff-files-start';\nexport const MR_DIFFS_MARK_FIRST_DIFF_FILE_SHOWN = 'mr-diffs-mark-first-diff-file-shown';\nexport const MR_DIFFS_MARK_DIFF_FILES_END = 'mr-diffs-mark-diff-files-end';\n\n// Measures\nexport const MR_DIFFS_MEASURE_FILE_TREE_DONE = 'mr-diffs-measure-file-tree-done';\nexport const MR_DIFFS_MEASURE_DIFF_FILES_DONE = 'mr-diffs-measure-diff-files-done';\n\n//\n// Pipelines Detail namespace\n//\n\n// Marks\nexport const PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START =\n 'pipelines-detail-links-mark-calculate-start';\nexport const PIPELINES_DETAIL_LINKS_MARK_CALCULATE_END =\n 'pipelines-detail-links-mark-calculate-end';\n\n// Measures\nexport const PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION =\n 'Pipelines Detail Graph: Links Calculation';\n\n// Metrics\n// Note: These strings must match the backend\n// (defined in: app/services/ci/prometheus_metrics/observe_histograms_service.rb)\nexport const PIPELINES_DETAIL_LINK_DURATION = 'pipeline_graph_link_calculation_duration_seconds';\nexport const PIPELINES_DETAIL_LINKS_TOTAL = 'pipeline_graph_links_total';\nexport const PIPELINES_DETAIL_LINKS_JOB_RATIO = 'pipeline_graph_links_per_job_ratio';\n\n//\n// REPO BROWSER NAMESPACE\n//\n\n// Marks\nexport const REPO_BLOB_LOAD_VIEWER_START = 'blobviewer-load-viewer-start';\nexport const REPO_BLOB_SWITCH_TO_VIEWER_START = 'blobviewer-switch-to-viewerr-start';\nexport const REPO_BLOB_LOAD_VIEWER_FINISH = 'blobviewer-load-viewer-finish';\n\n// Measures\nexport const REPO_BLOB_LOAD_VIEWER = 'Repository File Viewer: loading the viewer';\nexport const REPO_BLOB_SWITCH_VIEWER = 'Repository File Viewer: switching the viewer';\n\n//\n// DESIGN MANAGEMENT NAMESPACE\n//\n\n// Marks\nexport const DESIGN_MARK_APP_START = 'design-app-start';\n\n// Measures\nexport const DESIGN_MEASURE_BEFORE_APP = 'Design Management: Before the Vue app';\nexport const DESIGN_MAIN_IMAGE_OUTPUT = 'Design Management: Single image preview';\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_FORM_INPUT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { attemptBlur } from '../../utils/dom';\nimport { eventOn, eventOff, eventOnOff, stopEvent } from '../../utils/events';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners'; // --- Constants ---\n// Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n list: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING),\n min: makeProp(PROP_TYPE_NUMBER_STRING),\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n step: makeProp(PROP_TYPE_NUMBER_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n return arrayIncludes(TYPES, type);\n })\n})), NAME_FORM_INPUT); // --- Main component ---\n// @vue/component\n\nexport var BFormInput = /*#__PURE__*/extend({\n name: NAME_FORM_INPUT,\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n computed: {\n localType: function localType() {\n // We only allow certain types\n var type = this.type;\n return arrayIncludes(TYPES, type) ? type : 'text';\n },\n computedAttrs: function computedAttrs() {\n var type = this.localType,\n name = this.name,\n form = this.form,\n disabled = this.disabled,\n placeholder = this.placeholder,\n required = this.required,\n min = this.min,\n max = this.max,\n step = this.step;\n return {\n id: this.safeId(),\n name: name,\n form: form,\n type: type,\n disabled: disabled,\n placeholder: placeholder,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n min: min,\n max: max,\n step: step,\n list: type !== 'password' ? this.list : null,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n noWheel: function noWheel(newValue) {\n this.setWheelStopper(newValue);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n eventOnOff(on, input, 'focus', this.onWheelFocus);\n eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n if (!on) {\n eventOff(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus() {\n eventOn(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur() {\n eventOff(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(event) {\n stopEvent(event, {\n propagation: false\n });\n attemptBlur(this.$el);\n }\n },\n render: function render(h) {\n return h('input', {\n class: this.computedClass,\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_TOOLTIP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_SHOW } from '../../constants/events';\nimport { concat } from '../../utils/array';\nimport { isVue3, nextTick } from '../../vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { getScopeId } from '../../utils/get-scope-id';\nimport { identity } from '../../utils/identity';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { toInteger } from '../../utils/number';\nimport { keys } from '../../utils/object';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { BVTooltip } from '../../components/tooltip/helpers/bv-tooltip'; // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\nvar DefaultTrigger = 'hover focus'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noninteractiveRE = /^noninteractive$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i;\nvar spacesRE = /\\s+/; // Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var config = {\n title: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'top',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n id: null,\n html: false,\n interactive: true,\n disabled: false,\n delay: getComponentConfig(NAME_TOOLTIP, 'delay', 50),\n boundary: String(getComponentConfig(NAME_TOOLTIP, 'boundary', 'scrollParent')),\n boundaryPadding: toInteger(getComponentConfig(NAME_TOOLTIP, 'boundaryPadding', 5), 0),\n variant: getComponentConfig(NAME_TOOLTIP, 'variant'),\n customClass: getComponentConfig(NAME_TOOLTIP, 'customClass')\n }; // Process `bindings.value`\n\n if (isString(bindings.value) || isNumber(bindings.value)) {\n // Value is tooltip content (HTML optionally supported)\n config.title = bindings.value;\n } else if (isFunction(bindings.value)) {\n // Title generator function\n config.title = bindings.value;\n } else if (isPlainObject(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread(_objectSpread({}, config), bindings.value);\n } // If title is not provided, try title attribute\n\n\n if (isUndefined(config.title)) {\n // Try attribute\n var attrs = isVue3 ? vnode.props : (vnode.data || {}).attrs;\n config.title = attrs && !isUndefinedOrNull(attrs.title) ? attrs.title : undefined;\n } // Normalize delay\n\n\n if (!isPlainObject(config.delay)) {\n config.delay = {\n show: toInteger(config.delay, 0),\n hide: toInteger(config.delay, 0)\n };\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (htmlRE.test(mod)) {\n // Title allows HTML\n config.html = true;\n } else if (noninteractiveRE.test(mod)) {\n // Noninteractive\n config.interactive = false;\n } else if (noFadeRE.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE.test(mod)) {\n // Placement of tooltip\n config.placement = mod;\n } else if (boundaryRE.test(mod)) {\n // Boundary of tooltip\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE.test(mod)) {\n // Delay value\n var delay = toInteger(mod.slice(1), 0);\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE.test(mod)) {\n // Delay show value\n config.delay.show = toInteger(mod.slice(2), 0);\n } else if (delayHideRE.test(mod)) {\n // Delay hide value\n config.delay.hide = toInteger(mod.slice(2), 0);\n } else if (offsetRE.test(mod)) {\n // Offset value, negative allowed\n config.offset = toInteger(mod.slice(1), 0);\n } else if (variantRE.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n keys(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = keys(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger;\n } // Return the config\n\n\n return config;\n}; // Add/update Tooltip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n if (!IS_BROWSER) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings, vnode);\n\n if (!el[BV_TOOLTIP]) {\n var parent = getInstanceFromDirective(vnode, bindings);\n el[BV_TOOLTIP] = createNewChildComponent(parent, BVTooltip, {\n // Add the parent's scoped style attribute data\n _scopeId: getScopeId(parent, undefined)\n });\n el[BV_TOOLTIP].__bv_prev_data__ = {};\n el[BV_TOOLTIP].$on(EVENT_NAME_SHOW, function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the tooltip, we update the title if it is a function\n if (isFunction(config.title)) {\n el[BV_TOOLTIP].updateData({\n title: config.title(el)\n });\n }\n });\n }\n\n var data = {\n title: config.title,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n interactive: config.interactive,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n if (!looseEqual(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n keys(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // if title is a function, we execute it here\n newData[prop] = prop === 'title' && isFunction(data[prop]) ? data[prop](el) : data[prop];\n }\n });\n el[BV_TOOLTIP].updateData(newData);\n }\n}; // Remove Tooltip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].$destroy();\n el[BV_TOOLTIP] = null;\n }\n\n delete el[BV_TOOLTIP];\n}; // Export our directive\n\n\nexport var VBTooltip = {\n bind: function bind(el, bindings, vnode) {\n applyTooltip(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent render update loops\n nextTick(function () {\n applyTooltip(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removeTooltip(el);\n }\n};","import isObject from 'lodash/isObject';\nimport { BFormInput } from 'bootstrap-vue/esm/index.js';\nimport { formInputWidths } from '../../../../utils/constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst MODEL_PROP = 'value';\nconst MODEL_EVENT = 'input';\nvar script = {\n name: 'GlFormInput',\n components: {\n BFormInput\n },\n inheritAttrs: false,\n model: {\n prop: MODEL_PROP,\n event: MODEL_EVENT\n },\n props: {\n /**\n * Maximum width of the input\n */\n width: {\n type: [String, Object],\n required: false,\n default: null,\n validator: value => {\n const widths = isObject(value) ? Object.values(value) : [value];\n return widths.every(width => Object.values(formInputWidths).includes(width));\n }\n }\n },\n computed: {\n cssClasses() {\n if (this.width === null) {\n return [];\n }\n if (isObject(this.width)) {\n const {\n default: defaultWidth,\n ...nonDefaultWidths\n } = this.width;\n return [...(defaultWidth ? [`gl-form-input-${defaultWidth}`] : []), ...Object.entries(nonDefaultWidths).map(_ref => {\n let [breakpoint, width] = _ref;\n return `gl-${breakpoint}-form-input-${width}`;\n })];\n }\n return [`gl-form-input-${this.width}`];\n },\n listeners() {\n var _this = this;\n return {\n ...this.$listeners,\n // Swap purpose of input and update events from underlying BFormInput.\n // See https://gitlab.com/gitlab-org/gitlab-ui/-/issues/631.\n input: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n /**\n * Emitted to update the v-model\n *\n * @event update\n * @property {string} value new value\n */\n _this.$emit('update', ...args);\n },\n update: function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n /**\n * Triggered by user interaction. Emitted after any formatting (not including 'trim' or 'number' props).\n * Useful for getting the currently entered value when the 'debounce' or 'lazy' props are set.\n *\n * @event input\n * @property {string} value new value\n */\n _this.$emit(MODEL_EVENT, ...args);\n }\n };\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-input',_vm._g(_vm._b({staticClass:\"gl-form-input\",class:_vm.cssClasses,attrs:{\"no-wheel\":\"\"}},'b-form-input',_vm.$attrs,false),_vm.listeners))};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","/* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n * - true for is-valid\n * - false for is-invalid\n * - null for no contextual state\n */\nimport { extend } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { isBoolean } from '../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { safeVueInstance } from '../utils/safe-vue-instance'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Tri-state prop: true, false, null (or undefined)\n state: makeProp(PROP_TYPE_BOOLEAN, null)\n}, 'formState'); // --- Mixin ---\n// @vue/component\n\nexport var formStateMixin = extend({\n props: props,\n computed: {\n computedState: function computedState() {\n // If not a boolean, ensure that value is null\n return isBoolean(this.state) ? this.state : null;\n },\n stateClass: function stateClass() {\n var state = this.computedState;\n return state === true ? 'is-valid' : state === false ? 'is-invalid' : null;\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = safeVueInstance(this).ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : ariaInvalid;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { EVENT_NAME_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n defaultValue: '',\n event: EVENT_NAME_UPDATE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n autocomplete: makeProp(PROP_TYPE_STRING),\n // Debounce timeout (in ms). Not applicable with `lazy` prop\n debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n formatter: makeProp(PROP_TYPE_FUNCTION),\n // Only update the `v-model` on blur/change events\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n number: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING),\n plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var value = this[MODEL_PROP_NAME];\n return {\n localValue: toString(value),\n vModelValue: this.modifyValue(value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n var plaintext = this.plaintext,\n type = this.type;\n var isRange = type === 'range';\n var isColor = type === 'color';\n return [{\n // Range input needs class `custom-range`\n 'custom-range': isRange,\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext': plaintext && !isRange && !isColor,\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': isColor || !plaintext && !isRange\n }, this.sizeFormClass, this.stateClass];\n },\n computedDebounce: function computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return mathMax(toInteger(this.debounce, 0), 0);\n },\n hasFormatter: function hasFormatter() {\n return hasPropFunction(this.formatter);\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n var stringifyValue = toString(newValue);\n var modifiedValue = this.modifyValue(newValue);\n\n if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce(); // Update the local values\n\n this.localValue = stringifyValue;\n this.vModelValue = modifiedValue;\n }\n }),\n created: function created() {\n // Create private non-reactive props\n this.$_inputDebounceTimer = null;\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDebounce();\n },\n methods: {\n clearDebounce: function clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer);\n this.$_inputDebounceTimer = null;\n },\n formatValue: function formatValue(value, event) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = toString(value);\n\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, event);\n }\n\n return value;\n },\n modifyValue: function modifyValue(value) {\n value = toString(value); // Emulate `.trim` modifier behaviour\n\n if (this.trim) {\n value = value.trim();\n } // Emulate `.number` modifier behaviour\n\n\n if (this.number) {\n value = toFloat(value, value);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n var _this = this;\n\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var lazy = this.lazy;\n\n if (lazy && !force) {\n return;\n } // Make sure to always clear the debounce when `updateValue()`\n // is called, even when the v-model hasn't changed\n\n\n this.clearDebounce(); // Define the shared update logic in a method to be able to use\n // it for immediate and debounced value changes\n\n var doUpdate = function doUpdate() {\n value = _this.modifyValue(value);\n\n if (value !== _this.vModelValue) {\n _this.vModelValue = value;\n\n _this.$emit(MODEL_EVENT_NAME, value);\n } else if (_this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n var $input = _this.$refs.input;\n /* istanbul ignore if: hard to test out of sync value */\n\n if ($input && value !== $input.value) {\n $input.value = value;\n }\n }\n }; // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n\n\n var debounce = this.computedDebounce;\n\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n } else {\n // Immediately update the v-model\n doUpdate();\n }\n },\n onInput: function onInput(event) {\n // `event.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n\n /* istanbul ignore if: hard to test composition events */\n if (event.target.composing) {\n return;\n }\n\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue);\n this.$emit(EVENT_NAME_INPUT, formattedValue);\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue, true);\n this.$emit(EVENT_NAME_CHANGE, formattedValue);\n },\n onBlur: function onBlur(event) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event, true);\n\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n\n this.updateValue(formattedValue, true);\n } // Emit native blur event\n\n\n this.$emit(EVENT_NAME_BLUR, event);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n }\n }\n});","import { extend } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n size: makeProp(PROP_TYPE_STRING)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formSizeMixin = extend({\n props: props,\n computed: {\n sizeFormClass: function sizeFormClass() {\n return [this.size ? \"form-control-\".concat(this.size) : null];\n }\n }\n});","import { extend } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = extend({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionStart;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionEnd;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionDirection;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n select: function select() {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n setSelectionRange: function setSelectionRange() {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n setRangeText: function setRangeText() {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","export const performanceMarkAndMeasure = ({ mark, measures = [] } = {}) => {\n window.requestAnimationFrame(() => {\n if (mark && !performance.getEntriesByName(mark).length) {\n performance.mark(mark);\n }\n measures.forEach((measure) => {\n performance.measure(measure.name, measure.start, measure.end);\n });\n });\n};\n","import { isVue3 } from '../vue';\nexport var getInstanceFromDirective = function getInstanceFromDirective(vnode, bindings) {\n return isVue3 ? bindings.instance : vnode.context;\n};","import { extend } from '../vue'; // @vue/component\n\nexport var formValidityMixin = extend({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n setCustomValidity: function setCustomValidity() {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n checkValidity: function checkValidity() {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n reportValidity: function reportValidity() {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n});","import { extend } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n form: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING),\n required: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formControlMixin = extend({\n props: props,\n mounted: function mounted() {\n this.handleAutofocus();\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.handleAutofocus();\n },\n methods: {\n handleAutofocus: function handleAutofocus() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n var el = _this.$el;\n\n if (_this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el);\n }\n\n attemptFocus(el);\n }\n });\n });\n }\n }\n});"],"sourceRoot":""}