diff --git a/.vscode/settings.json b/.vscode/settings.json index 4e677935..a98691e9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -307,6 +307,10 @@ "OrderEntry.bbj": { "name": "OrderEntry", "style": "" + }, + "GetRows.bbj": { + "name": "GetRows", + "style": "" } }, "cSpell.words": [ diff --git a/BBjGridExWidget.bbj b/BBjGridExWidget.bbj index 33628701..c4fa5b17 100644 --- a/BBjGridExWidget.bbj +++ b/BBjGridExWidget.bbj @@ -463,6 +463,32 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf methodret "never" methodend rem /** + rem * Constant value which describes the rows in before sorting and + rem * filtering phase. + rem * + rem * @return BBjString + rem */ + method public static BBjString GRID_ROWS_PHASE_ALL() + methodret "forEachNode" + methodend + rem /** + rem * Constant value which describes the rows in after filtering phase. + rem * + rem * @return BBjString + rem */ + method public static BBjString GRID_ROWS_PHASE_AFTER_FILTER() + methodret "forEachNodeAfterFilter" + methodend + rem /** + rem * Constant value which describes the rows in after filtering and sorting + rem * phase. + rem * + rem * @return BBjString + rem */ + method public static BBjString GRID_ROWS_PHASE_AFTER_FILTER_SORT() + methodret "forEachNodeAfterFilterAndSort" + methodend + rem /** rem * Constant value which defines that chart toolbar settings item rem * rem * @return BBjString @@ -749,7 +775,7 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf method public static void setDebug(BBjNumber debug! , BBjNumber port!) if(debug!.booleanValue()) chromiumSwitches$ = stbl("!CHROMIUM_SWITCHES","--remote-debugging-port=" + str(port!)) - fi + FI #Debug! = debug! methodend @@ -881,7 +907,10 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf method public void onInit(BBjEvent ev!) #HTMLView!.clearCallback(BBjAPI.ON_PAGE_LOADED) isLicensed! = 0 - if (#getForceCommunityBuild() = 0) then isLicensed! = #isLicensed() FI + + if (#getForceCommunityBuild() = 0) then + isLicensed! = #isLicensed() + FI rem /** rem * work out the required js files rem */ @@ -968,7 +997,10 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf rem * @param BBjGainedFocusEvent ev! The focus event rem */ method public void onGainedFocus(BBjGainedFocusEvent ev!) - if(ev!.isTemporary()) methodret + if(ev!.isTemporary()) + methodret + FI + #focus() methodend rem /** @@ -1630,7 +1662,10 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf rem * The widget is declared ready when the HTMLView fires the ON_PAGE_LOADED rem * event and the scripts are injected succesfully rem */ - if(!isWidgetReady!) methodret + if(!isWidgetReady!) + methodret + FI + isFirstRender! = #getIsFirstRender() gson! = new Gson() options! = #getAsJsonObject() @@ -1644,12 +1679,18 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf rem * is queued in the normal order. rem */ priority! = 0 - if(!isFirstRender!) priority! = null() + + if(!isFirstRender!) + priority! = null() + FI + #getExecutor().execute("$wnd.gw_init(" + gson!.toJson(options!) + ",'" + #LicenseKey$ + "'," + data$ + ")" , 1 , priority!) rem /** rem * Update the IsFirstRender flag once and only once rem */ - if(!isFirstRender!) #setIsFirstRender(BBjAPI.FALSE) + if(!isFirstRender!) + #setIsFirstRender(BBjAPI.FALSE) + FI methodend rem /** rem * Re-render the column definitions on the client. @@ -2190,7 +2231,7 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf #getHTMLView().clearCallback(BBjAPI.ON_GAINED_FOCUS) #HTMLView!.focus() #getHTMLView().setCallback(BBjAPI.ON_GAINED_FOCUS,#this!,"onGainedFocus") - fi + FI rem /** rem * We never debounce the focus calls , this causes a heck of problems rem * when there are several grids rendered @@ -2301,6 +2342,16 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf #getExecutor().execute(scriptKey!,script$) methodend rem /** + rem * Select a row by its index + rem * + rem *
#API + rem * + rem * @param BBjNumber x!: the row index to select + rem */ + method public void setSelectedRow(BBjNumber index!) + #setSelectedRow(str(index!)) + methodend + rem /** rem * Select a row by its key rem * rem *
#API @@ -2312,14 +2363,19 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf #getExecutor().execute(script$) methodend rem /** - rem * Select a row by its index + rem * Get the current selected row rem * rem *
#API rem * - rem * @param BBjNumber x!: the row index to select + rem * @return GxClientRowModel The selected row if any, null() otherwise rem */ - method public void setSelectedRow(BBjNumber index!) - #setSelectedRow(str(index!)) + method public GxClientRowModel getSelectedRow() + returnedRow! = #getExecutor().execute("$wnd.gw_getSelectedRow('" + #GRIDID$ + "')",0) + if returnedRow!<>null() and len(returnedRow!) > 0 then + methodret #getClientJsonFactory().getRow(returnedRow!) + FI + + methodret null() methodend rem /** rem * Select a vector of rows. @@ -2347,6 +2403,121 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf #getExecutor().execute(script$) methodend rem /** + rem * Get Array of selected rows + rem * + rem *
#API + rem * + rem * @return BBjVector A vector filled with the selected rows + rem */ + method public BBjVector getSelectedRows() + rows! = new BBjVector() + + if (#getRS() = null()) then + goto getSelectedRowsErr + FI + + returnedRows! = #getExecutor().execute("$wnd.gw_getSelectedRows('" + #GRIDID$ + "')" , 0) + if returnedRows! = null() then + goto getSelectedRowsErr + FI + + parser! = new JsonParser() + array! = parser!.parse(returnedRows!).getAsJsonArray() + it! = array!.iterator() + while (it!.hasNext()) + next! = it!.next().getAsJsonObject(err=getSelectedRowsErr) + rows!.add(#getClientJsonFactory().getRow(next!)) + wend + + getSelectedRowsErr: + methodret rows! + methodend + rem /** + rem * Get the rows from grid in the given phase after applying the given + rem * filter expression. + rem * + rem * Note: if you only need to get the whole rows from the grid and you don't care about + rem * filtering and sorting Then retrieve them from ResultSet as this will be faster + rem * especially in BUI + rem * + rem * @param BBjString phase! The rows phase + rem * @param BBjString filterExpression! A filter expression to execute before returning the rows. + rem * The expression must return true or false for the given row + rem * + rem * @return BBjVector A vector of GxClientRowModel(s) + rem * + rem * @see #GRID_ROWS_PHASE_ALL() + rem * @see #GRID_ROWS_PHASE_AFTER_FILTER() + rem * @see #GRID_ROWS_PHASE_AFTER_FILTER_SORT() + rem * + rem * @see see GxExpression + rem */ + method public BBjVector getRows(BBjString phase! , BBjString filterExpression!) + rows! = new BBjVector() + returnedRows! = #getExecutor().execute("$wnd.gw_getRows('" + #GRIDID$ + "','" + phase! + "'," + (new Gson()).toJson(filterExpression!) + ")" , 0) + if returnedRows! <> null() AND returnedRows! <> "[]" then + parser! = new JsonParser() + array! = parser!.parse(returnedRows!).getAsJsonArray() + it! = array!.iterator() + while (it!.hasNext()) + next! = it!.next().getAsJsonObject() + rows!.add(#getClientJsonFactory().getRow(next!)) + wend + FI + + methodret rows! + methodend + rem /** + rem * Get the rows from grid in the given phase after applying the given + rem * filter expression. + rem * + rem * Note: if you only need to get the whole rows from the grid and you don't care about + rem * filtering and sorting Then retrieve them from ResultSet as this will be faster + rem * especially in BUI + rem * + rem * @param BBjString phase! The rows phase + rem * @param GxExpressionInterface filterExpression! A filter expression to execute before returning the rows. + rem * The expression must return true or false for the given row + rem * + rem * @return BBjVector A vector of GxClientRowModel(s) + rem * + rem * @see #GRID_ROWS_PHASE_ALL() + rem * @see #GRID_ROWS_PHASE_AFTER_FILTER() + rem * @see #GRID_ROWS_PHASE_AFTER_FILTER_SORT() + rem * + rem * @see see GxExpression + rem */ + method public BBjVector getRows(BBjString phase! , GxExpressionInterface filterExpression!) + methodret #getRows(phase!, filterExpression!.toString()) + methodend + rem /** + rem * Get the rows from grid in the given phase after applying the given + rem * filter expression. + rem * + rem * Note: if you only need to get the whole rows from the grid and you don't care about + rem * filtering and sorting Then retrieve them from ResultSet as this will be faster + rem * especially in BUI + rem * + rem * @param BBjString phase! The rows phase + rem * + rem * @return BBjVector A vector of GxClientRowModel(s) + rem * + rem * @see #GRID_ROWS_PHASE_ALL() + rem * @see #GRID_ROWS_PHASE_AFTER_FILTER() + rem * @see #GRID_ROWS_PHASE_AFTER_FILTER_SORT() + rem */ + method public BBjVector getRows(BBjString phase!) + methodret #getRows(phase!, "") + methodend + rem /** + rem * Get the rows from grid after sorting and filtering + rem * + rem * @return BBjVector A vector of GxClientRowModel(s) + rem */ + method public BBjVector getRows() + methodret #getRows(#GRID_ROWS_PHASE_AFTER_FILTER_SORT()) + methodend + rem /** rem * Expand all groups rem * rem *
#API @@ -2580,7 +2751,7 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf method public void updateContext() if(#IsReady!) #getExecutor().execute("$wnd.gw_updateContext('" + #GRIDID$ +"'," + #getClientContext().toString() + ")") - fi + FI methodend rem /** rem * Set and apply filter model for the given column @@ -2651,7 +2822,7 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf if(#getIsReady() = BBjAPI.TRUE) code! = String.format("JSON.stringify($wnd.gw_getGrid('%s').options.api.getFilterInstance('%s').getModel());" , #getGRIDID(), column!) jsonModel! = #getExecutor().execute(code! , 0) - fi + FI if(jsonModel! <> null() AND jsonModel! <> "null") methodret #getClientJsonFactory().getFilter(jsonModel!,column!) @@ -2677,16 +2848,16 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf model! = new GxClientFilterSetFilterModel() break SWEND - fi + FI if(model! = null()) throw "Failed to create column filter's model. The column has no filter component attached" , 256 - fi + FI model!.setWidget(#this!) model!.setColumn(column!) methodret model! - fi + FI methodend rem /** rem * Get The combined filter model for the given column @@ -2713,12 +2884,16 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf if(isAlreadyCombined! = 0 AND model!.supportsCombinedModel() = 0) throw "The column's filter component does not support combined models" , 256 - fi + FI combinedModel! = iff(isAlreadyCombined!,model! ,new GxClientFilterCombinedModel() ) combinedModel!.setWidget(#this!) combinedModel!.setColumn(column!) - if(!isAlreadyCombined!) combinedModel!.setFirstCondition(model!) + + if(!isAlreadyCombined!) + combinedModel!.setFirstCondition(model!) + FI + methodret combinedModel! methodend rem /** @@ -3026,51 +3201,6 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf #updateContext() methodend rem /** - rem * Get the current selected row - rem * - rem *
#API - rem * - rem * @return GxClientRowModel The selected row if any, null() otherwise - rem */ - method public GxClientRowModel getSelectedRow() - returnedRow! = #getExecutor().execute("$wnd.gw_getSelectedRow('" + #GRIDID$ + "')",0) - if returnedRow!<>null() and len(returnedRow!) > 0 then - methodret #getClientJsonFactory().getRow(returnedRow!) - FI - - methodret null() - methodend - rem /** - rem * Get Array of selected rows - rem * - rem *
#API - rem * - rem * @return BBjVector A vector filled with the selected rows - rem */ - method public BBjVector getSelectedRows() - rows! = new BBjVector() - - if (#getRS() = null()) then - goto getSelectedRowsErr - FI - - returnedRows! = #getExecutor().execute("$wnd.gw_getSelectedRows('" + #GRIDID$ + "')" , 0) - if returnedRows! = null() then - goto getSelectedRowsErr - FI - - parser! = new JsonParser() - array! = parser!.parse(returnedRows!).getAsJsonArray() - it! = array!.iterator() - while (it!.hasNext()) - next! = it!.next().getAsJsonObject(err=getSelectedRowsErr) - rows!.add(#getClientJsonFactory().getRow(next!)) - wend - - getSelectedRowsErr: - methodret rows! - methodend - rem /** rem * The method will return a vector of the selected ranges including columns and rows rem * rem *
#API @@ -3400,4 +3530,4 @@ class public BBjGridExWidget extends BBjWidget implements GxColumnsManagerInterf #fireEvent(#ON_GRID_KEYPRESS(), event!) methodend -classend +classend \ No newline at end of file diff --git a/client/dist/bbj-grid-widget.js b/client/dist/bbj-grid-widget.js index a3f4ac97..909eb65a 100644 --- a/client/dist/bbj-grid-widget.js +++ b/client/dist/bbj-grid-widget.js @@ -1,18 +1,24254 @@ -!function(e,n){for(var t in n)e[t]=n[t]}(window,function(e){var n={};function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)t.d(a,r,function(n){return e[n]}.bind(null,r));return a},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=19)}([function(e,n,t){"use strict";function a(e){window.BBjGridExWidget=window.BBjGridExWidget||{};var n=window.BBjGridExWidget[e]||null;if(!n){var t=JSON.stringify(Object.keys(window.BBjGridExWidget));throw new TypeError("\n\n[Grid Not Found] The method asked for non-existent grid instance.\n-------------------------------------------------------------------\nRequired Grid Id : ".concat(e," \nRegistered Grids : ").concat(t,"\n"))}return n}Object.defineProperty(n,"__esModule",{value:!0}),n.gw_getDocument=function(){return"undefined"!=typeof $doc?$doc:document},n.gw_getWindow=function(){return"undefined"!=typeof $wnd?$wnd:window},n.gw_escape=function(e){return null!=e?e:""},n.gw_uuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var n=16*Math.random()|0;return("x"==e?n:3&n|8).toString(16)}))},n.gw_getGrid=a,n.gw_addGrid=function(e,n){return window.BBjGridExWidget=window.BBjGridExWidget||{},window.BBjGridExWidget[e]=n,a(e)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.gw_debounce=function(e,n,t){var a;return function(){var r=this,o=arguments,i=function(){a=null,t||e.apply(r,o)},l=t&&!a;clearTimeout(a),a=setTimeout(i,n),l&&e.apply(r,o)}},n.gw_sendEvent=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=e.interests||[];if(r.includes(t)){var o=(0,a.gw_getDocument)().getElementById("event-bridge-".concat(e.id)),i=new CustomEvent("click");i.payload=n,o.dispatchEvent(i)}},n.gw_parseNode=r,n.gw_parseNodeFromEvent=function(e){return r(e.node,e.context)};var a=t(0);function r(e,n){return!0!==e.group&&{i:e.id,x:e.rowIndex,p:e.hasOwnProperty("parent")&&e.parent.hasOwnProperty("key")?e.parent.key:"",c:e.childIndex,s:Boolean(e.selected),cr:n.hasOwnProperty("includeClientRowData")&&!0===n.includeClientRowData?e.data:null}}},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n,t){var a,r,o={},i=(a=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===r&&(r=a.apply(this,arguments)),r}),l=function(e){return document.querySelector(e)},g=function(e){var n={};return function(e){if("function"==typeof e)return e();if(void 0===n[e]){var t=l.call(this,e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}}(),d=null,c=0,p=[],u=t(51);function s(e,n){for(var t=0;t=0&&p.splice(n,1)}function b(e){var n=document.createElement("style");return e.attrs.type="text/css",A(n,e.attrs),m(e,n),n}function A(e,n){Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])}))}function x(e,n){var t,a,r,o;if(n.transform&&e.css){if(!(o=n.transform(e.css)))return function(){};e.css=o}if(n.singleton){var i=c++;t=d||(d=b(n)),a=k.bind(null,t,i,!1),r=k.bind(null,t,i,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(t=function(e){var n=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",A(n,e.attrs),m(e,n),n}(n),a=E.bind(null,t,n),r=function(){f(t),t.href&&URL.revokeObjectURL(t.href)}):(t=b(n),a=v.bind(null,t),r=function(){f(t)});return a(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;a(e=n)}else r()}}e.exports=function(e,n){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(n=n||{}).attrs="object"==typeof n.attrs?n.attrs:{},n.singleton||"boolean"==typeof n.singleton||(n.singleton=i()),n.insertInto||(n.insertInto="head"),n.insertAt||(n.insertAt="bottom");var t=h(e,n);return s(t,n),function(e){for(var a=[],r=0;r1&&void 0!==arguments[1]&&arguments[1],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=(0,a.gw_getGrid)(e).options,o=r.columnApi;if(t&&t.length)o.autoSizeColumns(t,Boolean(n));else{var i=[];o.getAllColumns().forEach((function(e){i.push(e.colId)})),o.autoSizeColumns(i,Boolean(n))}},n.gw_ensureColumnVisible=function(e,n){(0,a.gw_getGrid)(e).options.api.ensureColumnVisible(n)},n.gw_setColumnWidth=function(e,n,t){(0,a.gw_getGrid)(e).options.columnApi.setColumnWidth(n,Number(t))},n.gw_pinColumn=function(e,n,t){(0,a.gw_getGrid)(e).options.columnApi.setColumnPinned(n,t)},n.gw_moveColumn=function(e,n,t){(0,a.gw_getGrid)(e).options.columnApi.moveColumn(n,t)},n.gw_isShowSelectionCheckbox=g,n.gw_isHeaderCheckboxSelection=d,n.gw_addRowGroupColumn=function(e,n,t){(0,a.gw_getGrid)(e).options.columnApi[t?"setRowGroupColumns":"addRowGroupColumns"](n.split(",").map((function(e){return e.trim()})))},n.gw_removeRowGroupColumn=function(e,n){(0,a.gw_getGrid)(e).options.columnApi.removeRowGroupColumns(n.split(",").map((function(e){return e.trim()})))},n.gw_getPivotMode=function(e){return(0,a.gw_getGrid)(e).options.columnApi.isPivotMode()},n.gw_setPivotMode=function(e,n){(0,a.gw_getGrid)(e).options.columnApi.setPivotMode(!!Number(n))},n.gw_addPivotColumns=function(e,n,t){(0,a.gw_getGrid)(e).options.columnApi[t?"setPivotColumns":"addPivotColumns"](n.split(",").map((function(e){return e.trim()})))},n.gw_removePivotColumns=function(e,n){(0,a.gw_getGrid)(e).options.columnApi.removePivotColumns(n.split(",").map((function(e){return e.trim()})))},n.gw_addValueColumns=function(e,n){(0,a.gw_getGrid)(e).options.columnApi.addValueColumns(n.split(",").map((function(e){return e.trim()})))},n.gw_removeValueColumns=function(e,n){(0,a.gw_getGrid)(e).options.columnApi.removeValueColumns(n.split(",").map((function(e){return e.trim()})))},n.gw_setSortModel=function(e,n){var t=JSON.parse(n),r=[];t.forEach((function(e){for(var n in e)r.push({colId:n,sort:e[n]})})),(0,a.gw_getGrid)(e).options.api.setSortModel(r)},n.gw_refreshHeader=function(e){(0,a.gw_getGrid)(e).options.api.redrawRows()};var a=t(0),r=t(32),o=t(5).deepParseJson;function i(e){var n=e.tooltipValueGetter;n&&(e.tooltipValueGetter=function(e){return(0,r.gw_executeExpression)(n,e)}),e.tooltipComponent="HTMLTooltip",e.hasOwnProperty("children")&&e.children.forEach((function(e){return i(e)}))}function l(e){for(var n in e){var t=e[n];t.checkboxSelection=t.checkboxSelection||g,t.headerCheckboxSelection=t.headerCheckboxSelection||d,i(t),t.hasOwnProperty("editable")&&"string"==typeof t.editable&&function(){var e=t.editable;t.editable=function(n){return(0,r.gw_executeExpression)(e,n)}}()}}function g(e){return!!e.context.showSelectionCheckbox&&e.columnApi.getAllGridColumns()[0].colDef.field===e.colDef.field}function d(e){return!!e.api.gridOptionsWrapper.gridOptions.context.showHeaderSelectionCheckbox&&e.columnApi.getAllGridColumns()[0].colDef.field===e.colDef.field}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.gw_setQuickFilter=function(e,n){(0,a.gw_getGrid)(e).options.api.setQuickFilter(n)},n.gw_expandAll=function(e){(0,a.gw_getGrid)(e).options.api.expandAll()},n.gw_collapseAll=function(e){(0,a.gw_getGrid)(e).options.api.collapseAll()},n.gw_ensureIndexVisible=function(e,n,t){var r=(0,a.gw_getGrid)(e).options.api,o=r.getRowNode(n);o?r.ensureNodeVisible(o,t):r.ensureIndexVisible(Number(n),t)},n.gw_navigateToNextRow=function(e,n){var t=(0,a.gw_getGrid)(e).options,r=n.previousCellPosition,o=n.nextCellPosition;switch(n.key){case 40:return t.api.forEachNode((function(e){r.rowIndex+1===e.rowIndex&&e.setSelected(!0)})),o;case 38:return t.api.forEachNode((function(e){r.rowIndex-1===e.rowIndex&&e.setSelected(!0)})),o;case 37:case 39:return o;default:throw new Error("You have super strange keyboard")}},n.gw_getRowNodeId=function(e,n){return n[(0,a.gw_getGrid)(e).options.context.getRowNodeId]},n.gw_setRowData=function(e,n){var t=(0,a.gw_getGrid)(e).options;t.api.setRowData(n),t.rowData=n},n.gw_updateRowData=function(e,n,t){var r=(0,a.gw_getGrid)(e).options;if(n.remove.length){var o=[];n.remove.forEach((function(e){o.push(r.api.getRowNode(e).data)})),n.remove=o}t?r.api.batchUpdateRowData(n):r.api.updateRowData(n)},n.gw_setRowsHeight=function(e,n){var t=(0,a.gw_getGrid)(e).options.api;t.forEachNode((function(e){e.setRowHeight(n)})),t.onRowHeightChanged()},n.gw_setRowHeight=function(e,n,t){var r=(0,a.gw_getGrid)(e).options,o=r.api,i=o.getRowNode(n)||o.getDisplayedRowAtIndex(n);i?(i.setRowHeight(t),r.api.onRowHeightChanged()):console.warn("Failed to set height for row ".concat(n,". Row cannot be found"))},n.gw_resetRowHeights=function(e){(0,a.gw_getGrid)(e).options.api.resetRowHeights()},n.gw_setSelectedRows=function(e,n){var t=(0,a.gw_getGrid)(e).options.api;t.forEachNodeAfterFilterAndSort((function(e){(n.indexOf(String(e.rowIndex))>-1||n.indexOf(String(e.id))>-1)&&(e.setSelected(!0),e.expanded=!0)})),t.onGroupExpandedOrCollapsed()},n.gw_selectAll=function(e,n){var t=(0,a.gw_getGrid)(e).options;1===n?t.api.selectAllFiltered():t.api.selectAll()},n.gw_deselectAll=function(e,n){var t=(0,a.gw_getGrid)(e).options;1===n?t.api.deselectAllFiltered():t.api.deselectAll()},n.gw_getSelectedRows=o,n.gw_getSelectedRow=function(e){var n=JSON.parse(o(e));if(n.length)return JSON.stringify(n[n.length-1]);return""},n.gw_redrawRows=function(e){(0,a.gw_getGrid)(e).options.api.redrawRows()};var a=t(0),r=t(1);function o(e){var n=(0,a.gw_getGrid)(e).options,t=n.api.getSelectedNodes(),o=[];return t.forEach((function(e){o.push((0,r.gw_parseNode)(e,n.context))})),JSON.stringify(o)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.gw_getChartToolbarItems=function(e){return e.api.gridOptionsWrapper.gridOptions.context.chartToolbarItems||[]},n.gw_addChartRange=function(e,n){var t=(0,a.gw_getGrid)(e),i=t.options,l=o(JSON.stringify(n));l.cellRange=(0,r.gw_parseAddCellRange)(i,l.cellRange);var g=i.api.chartRange(l),d=(0,a.gw_uuid)();return t.created_charts=t.created_charts||{},t.created_charts[d]=g,d},n.gw_destroyChart=function(e,n){var t=(0,a.gw_getGrid)(e);if(n)t.hasOwnProperty("created_charts")&&t.created_charts.hasOwnProperty(n)&&t.created_charts[n].destroyChart();else if(t.hasOwnProperty("created_charts"))for(var r in t.created_charts){if(t.created_charts.hasOwnProperty(r))t.created_charts[r].destroyChart()}};var a=t(0),r=t(13),o=t(5).deepParseJson},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.gw_startEditingCell=function(e,n,t,r,o){var i=(0,a.gw_getGrid)(e).options,l=i.api,g=l.getRowNode(n)||l.getDisplayedRowAtIndex(n);i.api.startEditingCell({rowIndex:g.rowIndex,colKey:t,keyPress:Number(r),charPress:o})},n.gw_stopEditing=function(e,n){(0,a.gw_getGrid)(e).options.api.stopEditing(n)},n.gw_tabToNextCell=function(e){(0,a.gw_getGrid)(e).options.api.tabToNextCell()},n.gw_tabToPreviousCell=function(e){(0,a.gw_getGrid)(e).options.api.tabToPreviousCell()},n.gw_setFocusedCell=function(e,n,t){var r,o,i=(0,a.gw_getGrid)(e).options;if(i.api.getEditingCells().length>0)return;if(-1==n){var l=i.api.getFocusedCell();l?(r=l.rowIndex,o=l.column.colId):(r=0,o=i.columnApi.getAllGridColumns()[0].colId)}else r=n?Number.isInteger(+n)?+n:i.api.getRowNode(n).rowIndex:0,o=t||i.columnApi.getAllGridColumns()[0].colId;(0,a.gw_getGrid)(e).options.api.setFocusedCell(r,o)},n.gw_getRangeSelections=function(e){var n=(0,a.gw_getGrid)(e).options,t=n.context,o=n.api,i=o.getCellRanges(),l=o.getModel(),g=[];return i.forEach((function(e){for(var n=e.columns.reduce((function(e,n){return"ag-Grid-AutoColumn"!==n.colId&&e.push(n.colId),e}),[]).filter(Boolean),a=Math.min(e.startRow.rowIndex,e.endRow.rowIndex),o=Math.max(e.startRow.rowIndex,e.endRow.rowIndex),i=[],d=a;d<=o;d++){var c=l.getRow(d);if(c){var p=(0,r.gw_parseNode)(c,t);p&&i.push(p)}}i.length&&n.length&&g.push({r:i,c:n})})),JSON.stringify(g)},n.gw_parseAddCellRange=i,n.gw_addCellRange=function(e,n){var t=(0,a.gw_getGrid)(e).options;t.api.addCellRange(i(t,n))},n.gw_clearRangeSelection=function(e){(0,a.gw_getGrid)(e).options.api.clearRangeSelection()};var a=t(0),r=t(1),o=t(5).deepParseJson;function i(e,n){var t=o(JSON.stringify(n)),a=t.start?Number.isInteger(+t.start)?+t.start:e.api.getRowNode(t.start).rowIndex:0,r=t.end?Number.isInteger(+t.end)?+t.end:e.api.getRowNode(t.end).rowIndex:e.rowData.length-1;return{rowStartIndex:Math.abs(a),rowEndIndex:Math.abs(r),columns:t.columns}}},function(e,n){e.exports=function(e){if(!e.webpackPolyfill){var n=Object.create(e);n.children||(n.children=[]),Object.defineProperty(n,"loaded",{enumerable:!0,get:function(){return n.l}}),Object.defineProperty(n,"id",{enumerable:!0,get:function(){return n.i}}),Object.defineProperty(n,"exports",{enumerable:!0}),n.webpackPolyfill=1}return n}},function(e,n,t){"use strict";t.r(n);const a=/^\d+$/,r=/\s/,o=e=>e==e.toLowerCase()&&e!=e.toUpperCase(),i=e=>e==e.toUpperCase()&&e!=e.toLowerCase(),l=(e,n,t,a)=>{if(!e){const e=a.charAt(t),n=t+1;throw{name:"StringMaskError",message:`StringMaskError: error applying mask at position "${n}" , char "${e}"`,pos:n,char:e}}n[t]=" "};var g=class{static mask(e,n,t=!0){e=String(e);const g=(n=String(n)).length,d=e.length;if(d>g){if(t)return e;throw{name:"MaskIsTooShortError",message:"MaskIsTooShortError: Mask is shorter than the passed string"}}const c=new Array(g);let p=0,u="";for(let s=0;s?@[]^_`{|}~".indexOf(n)>-1?c[s]=n:l(t,c,s,e)}else c[s]=" ";++p;break;default:c[s]=u}if(pg){if(i)return e.toString();throw{name:"MaskError",message:"MaskError: Number is too large for mask"}}if(m>d){p=a._round(p,d),u=a._toCharArray(p),s=u.length,h=0,m=0,c=!1;for(let e=0;eg){if(i)return e.toString();throw{name:"MaskError",message:"MaskError: Number is too large for mask"}}}let f=" ",b=" ",A=0,x=0,w=0;"*"==n.charAt(0)&&(f="*");const y=f,k=a._getSign(p)<0;let v=s>0||n.indexOf("0")>=0,E=!1,_=!1;c=!1;let C=new Array(l);for(let e=0;e0?C[x]=t:(C[x]=f,c||(w=e)),++x;break;case"-":_||" "!=b?C[x]=k?"-":f:(k&&(b="-"),C[x]=f,w=c?-1:e),++x;break;case"+":_||" "!=b?C[x]=k?"-":"+":(b=k?"-":"+",C[x]=f,w=c?-1:e),++x;break;case"$":_||" "!=b?C[x]="$":(b="$",C[x]=f,w=c?-1:e),++x;break;case"(":_||" "!=b?C[x]=k?"(":c?" ":f:(k&&(b="("),C[x]=f,w=c?-1:e),++x;break;case")":C[x]=k?")":c?" ":f,++x;break;case"C":e=l;)--w;C[w]==y&&(C[w]=b)}return C.join("")}static _shift(e,n,t){t&&(n=-n);var a=(""+e).split("e");return+(a[0]+"e"+(a[1]?+a[1]+n:n))}static _round(e,n){return a._shift(Math.round(a._shift(e,n,!1)),n,!0)}static _toCharArray(e){const n=a._getSign(e);let t=[];if(0!==n){let a=n<0?`${-1*e.toString()}`:e.toString();a.length>1&&"0"==a.charAt(0)&&(a=a.substring(1)),t=a.split("")}return t}static _getSign(e){return(e>0)-(e<0)||+e}}var r=a;n.default=r},function(e,n,t){"use strict";(function(e){var a=t(4),r=t(18),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,l=i&&i.exports===o?a.a.Buffer:void 0,g=(l?l.isBuffer:void 0)||r.a;n.a=g}).call(this,t(14)(e))},function(e,n,t){"use strict";n.a=function(){return!1}},function(e,n,t){e.exports=t(20)},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t(21),t(23),t(25),t(27);var a=t(29);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}})}));var r=t(30);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})})),t(49),t(52),t(54),t(56),t(58),t(60)},function(e,n,t){(function(n){n.BBj||(n.BBj={}),e.exports=n.BBj.Masks=t(22)}).call(this,t(2))},function(e,n,t){"use strict";(function(e){var t,a,r,o;function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}"undefined"!=typeof self&&self,o=function(){return function(e){var n={};function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=5)}([function(e,n,t){n.a=function(e){if(null===e||!0===e||!1===e)return NaN;var n=Number(e);return isNaN(n)?n:n<0?Math.ceil(n):Math.floor(n)}},function(e,n,t){var a=t(6);n.a=a.a},function(e,n,t){var a=t(7);t.d(n,"e",(function(){return a.e})),t.d(n,"g",(function(){return a.g})),t.d(n,"h",(function(){return a.h})),t.d(n,"a",(function(){return a.a})),t.d(n,"b",(function(){return a.b})),t.d(n,"d",(function(){return a.d})),t.d(n,"f",(function(){return a.f})),n.c=a.c},function(e,n,t){n.a=function(e,n){var t,i,l;if(t=r.timezoneZ.exec(e))return 0;if(t=r.timezoneHH.exec(e))return o(l=parseInt(t[2],10))?(i=36e5*l,"+"===t[1]?-i:i):NaN;if(t=r.timezoneHHMM.exec(e)){l=parseInt(t[2],10);var g=parseInt(t[3],10);return o(0,g)?(i=36e5*l+6e4*g,"+"===t[1]?-i:i):NaN}if(t=r.timezoneIANA.exec(e)){var d=Object(a.a)(n,e),c=Date.UTC(d[0],d[1]-1,d[2],d[3],d[4],d[5]),p=n.getTime()-n.getTime()%1e3;return-(c-p)}return 0};var a=t(9),r={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-])(\d{2})$/,timezoneHHMM:/^([+-])(\d{2}):?(\d{2})$/,timezoneIANA:/(UTC|(?:[a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?))$/};function o(e,n){return null==n||!(n<0||n>59)}},function(e,n,t){var a=t(19);n.a=a.a},function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"Utils",(function(){return l}));var a=t(1),r=t(2),o=t(4),i=t(20);t.d(n,"Types",(function(){return i.a})),t.d(n,"NumberMask",(function(){return a.a})),t.d(n,"DateMask",(function(){return r.c})),t.d(n,"StringMask",(function(){return o.a}));var l={Dates:{getDayOfYear:r.e,getWeekNumber:r.g,getWeekStartByLocale:r.h,IS_DATE_REGEX:r.a,IS_TIME_REGEX:r.b,fixShortISO:r.d,getTimezoneOrOffset:r.f}};n.default=i.a},function(e,n,t){function a(e,n){for(var t=0;t2&&void 0!==arguments[2]?arguments[2]:",",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".",o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=t.length;if(0===l){if(i)return str;throw{name:"MaskError",message:"MaskError: Mask is empty"}}for(var g=0,d=0,c=!1,p=0;pg){if(i)return n.toString();throw{name:"MaskError",message:"MaskError: Number is too large for mask"}}if(b>d){s=e._round(s,d),m=(h=e._toCharArray(s)).length,f=0,b=0,c=!1;for(var x=0;xg){if(i)return n.toString();throw{name:"MaskError",message:"MaskError: Number is too large for mask"}}}var w=" ",y=" ",k=0,v=0,E=0;"*"==t.charAt(0)&&(w="*");var _=w,C=e._getSign(s)<0,D=m>0||t.indexOf("0")>=0,I=!1,M=!1;c=!1;for(var B=new Array(l),O=0;O0?B[v]=a:(B[v]=w,c||(E=O)),++v;break;case"-":M||" "!=y?B[v]=C?"-":w:(C&&(y="-"),B[v]=w,E=c?-1:O),++v;break;case"+":M||" "!=y?B[v]=C?"-":"+":(y=C?"-":"+",B[v]=w,E=c?-1:O),++v;break;case"$":M||" "!=y?B[v]="$":(y="$",B[v]=w,E=c?-1:O),++v;break;case"(":M||" "!=y?B[v]=C?"(":c?" ":w:(C&&(y="("),B[v]=w,E=c?-1:O),++v;break;case")":B[v]=C?")":c?" ":w,++v;break;case"C":O=l;)--E;B[E]==_&&(B[E]=y)}return B.join("")}},{key:"_shift",value:function(e,n,t){t&&(n=-n);var a=(""+e).split("e");return+(a[0]+"e"+(a[1]?+a[1]+n:n))}},{key:"_round",value:function(n,t){return e._shift(Math.round(e._shift(n,t,!1)),t,!0)}},{key:"_toCharArray",value:function(n){var t=e._getSign(n),a=[];if(0!==t){var r=t<0?"".concat(-1*n.toString()):n.toString();r.length>1&&"0"==r.charAt(0)&&(r=r.substring(1)),a=r.split("")}return a}},{key:"_getSign",value:function(e){return(e>0)-(e<0)||+e}}],(t=null)&&a(n.prototype,t),r&&a(n,r),e}();n.a=r},function(e,n,t){t.d(n,"b",(function(){return i})),t.d(n,"a",(function(){return l})),t.d(n,"h",(function(){return g})),t.d(n,"e",(function(){return d})),t.d(n,"d",(function(){return c})),t.d(n,"f",(function(){return p})),t.d(n,"g",(function(){return u}));var a=t(8),r=t(15);function o(e,n){for(var t=0;t12?"PM":"AM",pp:e.hours24>12?"pm":"am",p:e.hours24>12?"pm":"am",Jz:1==String(e.dayOfYear).length?"0"+e.dayOfYear:e.dayOfYear,Js:e.dayOfYear,Jl:e.dayOfYear,Jd:e.dayOfYear,J:e.dayOfYear,Wz:1==String(e.dayOfWeek).length?"0"+e.dayOfWeek:e.dayOfWeek,Ws:e.dayOfWeek,Wl:e.dayOfWeek,Wp:String.fromCharCode(e.dayOfWeek),Wd:e.dayOfWeek,W:e.dayOfWeek,wz:1==String(e.weekNumber).length?"0"+e.weekNumber:e.weekNumber,ws:e.weekNumber,wl:e.weekNumber,wp:String.fromCharCode(e.weekNumber),wd:e.weekNumber,w:e.weekNumber}}}],(t=null)&&o(n.prototype,t),r&&o(n,r),e}();n.c=s},function(e,n,t){n.a=function(e,n,t){var i=Object(o.a)(e,t),l=new Date(i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate(),i.getUTCHours(),i.getUTCMinutes(),i.getUTCSeconds(),i.getUTCMilliseconds()),g=Object(a.a)(n,i);return g?Object(r.a)(l,g):l};var a=t(3),r=t(10),o=t(13)},function(e,n,t){n.a=function(e,n){var t=function(e){if(!r[e]){var n=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),t="06/25/2014, 00:00:00"===n||"‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00"===n;r[e]=t?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return r[e]}(n);return t.formatToParts?function(e,n){for(var t=e.formatToParts(n),r=[],o=0;o=0&&(r[i]=parseInt(t[o].value,10))}return r}(t,e):function(e,n){var t=e.format(n).replace(/\u200E/g,""),a=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(t);return[a[3],a[1],a[2],a[4],a[5],a[6]]}(t,e)};var a={year:0,month:1,day:2,hour:3,minute:4,second:5},r={}},function(e,n,t){n.a=function(e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var t=Object(a.a)(n);return Object(r.a)(e,-t)};var a=t(0),r=t(11)},function(e,n,t){n.a=function(e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var t=Object(r.a)(e).getTime(),o=Object(a.a)(n);return new Date(t+o)};var a=t(0),r=t(12)},function(e,n,t){n.a=function(e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=Object.prototype.toString.call(e);return e instanceof Date||"object"===i(e)&&"[object Date]"===n?new Date(e.getTime()):"number"==typeof e||"[object Number]"===n?new Date(e):("string"!=typeof e&&"[object String]"!==n||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}},function(e,n,t){n.a=function(e,n){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(null===e)return new Date(NaN);var t=n||{},l=null==t.additionalDigits?2:Object(a.a)(t.additionalDigits);if(2!==l&&1!==l&&0!==l)throw new RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||"object"===i(e)&&"[object Date]"===Object.prototype.toString.call(e))return new Date(e.getTime());if("number"==typeof e||"[object Number]"===Object.prototype.toString.call(e))return new Date(e);if("string"!=typeof e&&"[object String]"!==Object.prototype.toString.call(e))return new Date(NaN);var u=g(e),s=d(u.date,l),h=s.year,m=s.restDateString,f=c(m,h);if(isNaN(f))return new Date(NaN);if(f){var b,A=f.getTime(),x=0;if(u.time&&(x=p(u.time),isNaN(x)))return new Date(NaN);if(u.timezone||t.timeZone){if(b=Object(o.a)(u.timezone||t.timeZone,new Date(A+x)),isNaN(b))return new Date(NaN)}else b=Object(r.a)(new Date(A+x)),b=Object(r.a)(new Date(A+x+b));return new Date(A+x+b)}return new Date(NaN)};var a=t(0),r=t(14),o=t(3),l={dateTimeDelimeter:/[T ]/,plainTime:/:/,timeZoneDelimeter:/[Z ]/i,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timezone:/([Z+-].*| UTC|(?:[a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?))$/};function g(e){var n,t={},a=e.split(l.dateTimeDelimeter);if(l.plainTime.test(a[0])?(t.date=null,n=a[0]):(t.date=a[0],n=a[1],t.timezone=a[2],l.timeZoneDelimeter.test(t.date)&&(t.date=e.split(l.timeZoneDelimeter)[0],n=e.substr(t.date.length,e.length))),n){var r=l.timezone.exec(n);r?(t.time=n.replace(r[1],""),t.timezone=r[1]):t.time=n}return t}function d(e,n){var t,a=l.YYY[n],r=l.YYYYY[n];if(t=l.YYYY.exec(e)||r.exec(e)){var o=t[1];return{year:parseInt(o,10),restDateString:e.slice(o.length)}}if(t=l.YY.exec(e)||a.exec(e)){var i=t[1];return{year:100*parseInt(i,10),restDateString:e.slice(i.length)}}return{year:null}}function c(e,n){if(null===n)return null;var t,a,r,o;if(0===e.length)return(a=new Date(0)).setUTCFullYear(n),a;if(t=l.MM.exec(e))return a=new Date(0),f(n,r=parseInt(t[1],10)-1)?(a.setUTCFullYear(n,r),a):new Date(NaN);if(t=l.DDD.exec(e)){a=new Date(0);var i=parseInt(t[1],10);return function(e,n){if(n<1)return!1;var t=m(e);return!(t&&n>366)&&!(!t&&n>365)}(n,i)?(a.setUTCFullYear(n,0,i),a):new Date(NaN)}if(t=l.MMDD.exec(e)){a=new Date(0),r=parseInt(t[1],10)-1;var g=parseInt(t[2],10);return f(n,r,g)?(a.setUTCFullYear(n,r,g),a):new Date(NaN)}if(t=l.Www.exec(e))return b(0,o=parseInt(t[1],10)-1)?u(n,o):new Date(NaN);if(t=l.WwwD.exec(e)){o=parseInt(t[1],10)-1;var d=parseInt(t[2],10)-1;return b(0,o,d)?u(n,o,d):new Date(NaN)}return null}function p(e){var n,t,a;if(n=l.HH.exec(e))return A(t=parseFloat(n[1].replace(",",".")))?t%24*36e5:NaN;if(n=l.HHMM.exec(e))return A(t=parseInt(n[1],10),a=parseFloat(n[2].replace(",",".")))?t%24*36e5+6e4*a:NaN;if(n=l.HHMMSS.exec(e)){t=parseInt(n[1],10),a=parseInt(n[2],10);var r=parseFloat(n[3].replace(",","."));return A(t,a,r)?t%24*36e5+6e4*a+1e3*r:NaN}return null}function u(e,n,t){n=n||0,t=t||0;var a=new Date(0);a.setUTCFullYear(e,0,4);var r=7*n+t+1-(a.getUTCDay()||7);return a.setUTCDate(a.getUTCDate()+r),a}var s=[31,28,31,30,31,30,31,31,30,31,30,31],h=[31,29,31,30,31,30,31,31,30,31,30,31];function m(e){return e%400==0||e%4==0&&e%100!=0}function f(e,n,t){if(n<0||n>11)return!1;if(null!=t){if(t<1)return!1;var a=m(e);if(a&&t>h[n])return!1;if(!a&&t>s[n])return!1}return!0}function b(e,n,t){return!(n<0||n>52||null!=t&&(t<0||t>6))}function A(e,n,t){return!(null!=e&&(e<0||e>=25)||null!=n&&(n<0||n>=60)||null!=t&&(t<0||t>=60))}},function(e,n,t){n.a=function(e){var n=new Date(e.getTime()),t=Math.ceil(n.getTimezoneOffset());n.setSeconds(0,0);var a=n.getTime()%6e4;return 6e4*t+a}},function(e,n,t){t.d(n,"a",(function(){return i}));var a=t(16),r=t(17),o=t(18);function i(e){return Object(a.a)(e,r.a,o.a)}},function(e,n,t){function a(e,n){var t=n["string"==typeof e?e.toUpperCase():e];return"number"==typeof t?t:1}function r(e,n,t){if(e){var r,o=e.toLowerCase().split(/[-_]/),i=o[0];if(o[1]&&4===o[1].length?(i+="_"+o[1],r=o[2]):r=o[1],r||(r=n[i]),r)return a(r.match(/^\d+$/)?Number(r):r,t)}return 1}t.d(n,"b",(function(){return a})),t.d(n,"a",(function(){return r}))},function(e,n,t){n.a={en:"US",zh:"CN",zh_hans:"CN",hans:"CN",wuu:"CN",hsn:"CN",hak:"CN",nan:"CN",gan:"CN",hi:"IN",te:"IN",mr:"IN",ta:"IN",gu:"IN",kn:"IN",or:"IN",ml:"IN",pa_guru:"IN",bho:"IN",awa:"IN",as:"IN",mwr:"IN",mai:"IN",mag:"IN",bgc:"IN",hne:"IN",dcc:"IN",dz:"BT",tn:"BW",am:"ET",om:"ET",quc:"GT",id:"ID",jv:"ID",su:"ID",mad:"ID",ms_arab:"ID",ga:"IE",he:"IL",jam:"JM",ja:"JP",km:"KH",ko:"KR",lo:"LA",mh:"MH",my:"MM",mt:"MT",ne:"NP",fil:"PH",ceb:"PH",ilo:"PH",ur:"PK",pa:"PK",pa_arab:"PK",arab:"PK",lah:"PK",ps:"PK",sd:"PK",sd_arab:"PK",skr:"PK",gn:"PY",th:"TH",tts:"TH",aeb:"TN",zh_hant:"TW",hant:"TW",sm:"WS",zu:"ZA",sn:"ZW",arq:"DZ",ar:"EG",arz:"EG",fa:"IR",az_arab:"IR",ary:"MA",bn:"BD",rkt:"BD",dv:"MV"}},function(e,n,t){n.a={AG:0,ATG:0,28:0,AR:0,ARG:0,32:0,AS:0,ASM:0,16:0,AU:0,AUS:0,36:0,BR:0,BRA:0,76:0,BS:0,BHS:0,44:0,BT:0,BTN:0,64:0,BW:0,BWA:0,72:0,BZ:0,BLZ:0,84:0,CA:0,CAN:0,124:0,CN:0,CHN:0,156:0,CO:0,COL:0,170:0,DM:0,DMA:0,212:0,DO:0,DOM:0,214:0,ET:0,ETH:0,231:0,GT:0,GTM:0,320:0,GU:0,GUM:0,316:0,HK:0,HKG:0,344:0,HN:0,HND:0,340:0,ID:0,IDN:0,360:0,IE:0,IRL:0,372:0,IL:0,ISR:0,376:0,IN:0,IND:0,356:0,JM:0,JAM:0,388:0,JP:0,JPN:0,392:0,KE:0,KEN:0,404:0,KH:0,KHM:0,116:0,KR:0,KOR:0,410:0,LA:0,LA0:0,418:0,MH:0,MHL:0,584:0,MM:0,MMR:0,104:0,MO:0,MAC:0,446:0,MT:0,MLT:0,470:0,MX:0,MEX:0,484:0,MZ:0,MOZ:0,508:0,NI:0,NIC:0,558:0,NP:0,NPL:0,524:0,NZ:0,NZL:0,554:0,PA:0,PAN:0,591:0,PE:0,PER:0,604:0,PH:0,PHL:0,608:0,PK:0,PAK:0,586:0,PR:0,PRI:0,630:0,PY:0,PRY:0,600:0,SA:0,SAU:0,682:0,SG:0,SGP:0,702:0,SV:0,SLV:0,222:0,TH:0,THA:0,764:0,TN:0,TUN:0,788:0,TT:0,TTO:0,780:0,TW:0,TWN:0,158:0,UM:0,UMI:0,581:0,US:0,USA:0,840:0,VE:0,VEN:0,862:0,VI:0,VIR:0,850:0,WS:0,WSM:0,882:0,YE:0,YEM:0,887:0,ZA:0,ZAF:0,710:0,ZW:0,ZWE:0,716:0,AE:6,ARE:6,784:6,AF:6,AFG:6,4:6,BH:6,BHR:6,48:6,DJ:6,DJI:6,262:6,DZ:6,DZA:6,12:6,EG:6,EGY:6,818:6,IQ:6,IRQ:6,368:6,IR:6,IRN:6,364:6,JO:6,JOR:6,400:6,KW:6,KWT:6,414:6,LY:6,LBY:6,434:6,MA:6,MAR:6,504:6,OM:6,OMN:6,512:6,QA:6,QAT:6,634:6,SD:6,SDN:6,729:6,SY:6,SYR:6,760:6,BD:5,BGD:5,50:5,MV:5,MDV:5,462:5}},function(e,n,t){function a(e,n){for(var t=0;t2&&void 0!==arguments[2])||arguments[2];e=String(e);var a=(n=String(n)).length,d=e.length;if(d>a){if(t)return e;throw{name:"MaskIsTooShortError",message:"MaskIsTooShortError: Mask is shorter than the passed string"}}for(var c=new Array(a),p=0,u="",s=0;s?@[]^_`{|}~".indexOf(x)>-1?c[s]=x:g(t,c,s,e)}else c[s]=" ";++p;break;default:c[s]=u}if(p2&&void 0!==arguments[2]?arguments[2]:",",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".",o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];return a.a.mask(e,n,t,r,o,i)}},{key:"date",value:function(e,n,t,a){return r.c.mask(e,n,t,a)}},{key:"string",value:function(e,n){var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return o.a.mask(e,n,t)}}],(t=null)&&i(n.prototype,t),l&&i(n,l),e}();n.a=l}])},"object"===i(n)&&"object"===i(e)?e.exports=o():(a=[],void 0===(r="function"==typeof(t=o)?t.apply(n,a):t)||(e.exports=r))}).call(this,t(9)(e))},function(e,n,t){(function(n){n.Basis||(n.Basis={}),e.exports=n.Basis.InputMasking=t(24)}).call(this,t(2))},function(module,exports,__webpack_require__){"use strict";(function(module){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,factory;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}"undefined"!=typeof self&&self,factory=function(__WEBPACK_EXTERNAL_MODULE_0__,__WEBPACK_EXTERNAL_MODULE_7__){return function(e){var n={};function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=1)}([function(e,n){e.exports=__WEBPACK_EXTERNAL_MODULE_0__},function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0});var a=t(2),r=t(5);t.d(n,"TextInput",(function(){return a.a})),t.d(n,"NumberInput",(function(){return r.a}))},function(e,n,t){var a=t(3);n.a=a.a},function(e,n,t){var a=t(0),r=t.n(a),o=t(4);function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};d(this,e),this.options=l({},{elements:".bbj-text-masked",doc:document,cssClassError:"bbj-mask-error",cssClassSuccess:"bbj-mask-success",onUpdate:null,onInvalid:null},{},n),this._onKeystroke=this._onKeystroke.bind(this),this._onFocus=this._onFocus.bind(this),this.refresh()}var n,t,a;return n=e,(t=[{key:"refresh",value:function(){for(var e,n,t="string"==typeof this.options.elements?this.options.doc.querySelectorAll(this.options.elements):this.options.elements,a=0;a-1;this._wrap(e,r)}else console.warn("BBjMasking: Invalid input element. The element will be ignored",e)}},{key:"destroy",value:function(){for(var e,n,t="string"==typeof this.options.elements?this.options.doc.querySelectorAll(this.options.elements):this.options.elements,a=0;a-1&&this._unwrap(e)}},{key:"_wrap",value:function(e,n){var t=e.getAttribute("id"),a=e.getAttribute("name"),r=e.dataset.mask||"",i=e.pattern,l=Object(o.b)(r),g=i||l,d=null,c=null;return n?c=(d=e.parentNode).querySelector(".textInputMask__unmaskedInput"):(d=this.options.doc.createElement("span"),c=this.options.doc.createElement("input")),e.value=Object(o.c)(e.value,r),e.pattern=g,e.classList.add("textInputMask__textInput"),e.dataset.mask=r,e.dataset.valueUnmasked=Object(o.d)(e.value,r),i&&i!==l&&(e.dataset.isCustomPattern=!0),n||(e.hasAttribute("readonly")||e.hasAttribute("disable")||(e.addEventListener("keyup",this._onKeystroke),e.addEventListener("keypress",this._onKeystroke),e.addEventListener("paste",this._onKeystroke),e.addEventListener("focusin",this._onFocus),e.addEventListener("click",this._onFocus)),e.parentNode.insertBefore(d,e)),this._validateInput(e)&&this.__fireOnUpdate(e.value,e.dataset.valueUnmasked,e),c.setAttribute("aria-hidden","true"),c.setAttribute("type","hidden"),c.classList.add("textInputMask__unmaskedInput"),c.value=e.dataset.valueUnmasked,t&&c.setAttribute("id","".concat(t,"-unmasked")),a&&c.setAttribute("name","".concat(a,"-unmasked")),n||(d.setAttribute("class","textInputMask__wrap"),d.appendChild(c),d.appendChild(e)),d}},{key:"_unwrap",value:function(e){e.removeChild(e.querySelector(".textInputMask__unmaskedInput"));var n=e.querySelector(".textInputMask__textInput");n.removeEventListener("keyup",this._onKeystroke),n.removeEventListener("keypress",this._onKeystroke),n.removeEventListener("paste",this._onKeystroke),n.removeEventListener("focusin",this._onFocus),n.removeEventListener("click",this._onFocus),delete n.dataset.valueUnmasked,n.dataset.isCustomPattern||(n.removeAttribute("pattern"),delete n.dataset.isCustomPattern),n.classList.remove(this.options.cssClassError),e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e)}},{key:"_onKeystroke",value:function(e){if(!(e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)){13!==e.keyCode&&e.preventDefault();var n=e.target,t=n.dataset.mask||this.options.mask,a=e.type;n.classList.remove(this.options.cssClassError),n.classList.remove(this.options.cssClassSuccess),n.setCustomValidity("");var i,l,g=n.value,d=e.keyCode,c=e.key||e.code.replace(/[^0-9]/g,""),p=c?c.length>1?"":c:"",u=Object(o.a)(g,t),s=!1;switch(a){case"paste":i=Object(o.c)((e.clipboardData||window.clipboardData).getData("Text"),t);break;case"keyup":i=g;break;case"keypress":var h=n.selectionStart;h!==u&&(u=h),i=g.substr(0,u)+p+g.substr(u)}if(l=Object(o.d)(i,t),-1===[35,36,37,38,39,40].indexOf(d)){try{n.value=r.a.mask(l,t,!1),this._validateInput(n)&&(n.dataset.valueUnmasked=l,this.options.doc.querySelector("#".concat(n.getAttribute("id"),"-unmasked")).value=l,this.__applyCssClassState(n,"success"),this.__fireOnUpdate(n.value,n.dataset.valueUnmasked,n)),s=!1}catch(e){this.__applyCssClassState(n,"error"),this.__fireOnInvalid(e,n),s=!0}this._updateCaretPosition(n,t)}s||this._validateInput(n)}}},{key:"_onFocus",value:function(e){var n=e.target,t=n.dataset.mask||this.options.mask;this._updateCaretPosition(n,t)}},{key:"_updateCaretPosition",value:function(e,n){setTimeout((function(){var t=Object(o.a)(e.value,n);e.setSelectionRange(t,t)}),0)}},{key:"_validateInput",value:function(e){var n=e.checkValidity();return n?(this.__applyCssClassState(e,"success"),e.setCustomValidity("")):(this.__applyCssClassState(e,"error"),this.__fireOnInvalid(e.validationMessage,e)),n}},{key:"__fireOnUpdate",value:function(e,n,t){this.options.onUpdate&&this.options.onUpdate(e,n,t)}},{key:"__fireOnInvalid",value:function(e,n){this.options.onInvalid&&this.options.onInvalid(e,n)}},{key:"__applyCssClassState",value:function(e,n){e.hasAttribute("readonly")||e.hasAttribute("disabled")?(e.classList.remove(this.options.cssClassError),e.classList.remove(this.options.cssClassSuccess)):("success"===n&&(e.classList.remove(this.options.cssClassError),e.classList.add(this.options.cssClassSuccess)),"error"===n&&(e.classList.add(this.options.cssClassError),e.classList.remove(this.options.cssClassSuccess)))}}])&&c(n.prototype,t),a&&c(n,a),e}();n.a=p},function(module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,"c",(function(){return maskIfNotMasked})),__webpack_require__.d(__webpack_exports__,"d",(function(){return unmask})),__webpack_require__.d(__webpack_exports__,"a",(function(){return findCaretPosition})),__webpack_require__.d(__webpack_exports__,"b",(function(){return generatePatternFromMask}));var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask__=__webpack_require__(0),__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask__),SUPPORTED_MASKS=["X","a","A","0","z","Z","U"],IS_UNICODE_PROPERTY_SUPPORTED=!1;try{eval("/\\p{L}/u"),IS_UNICODE_PROPERTY_SUPPORTED=!0}catch(e){IS_UNICODE_PROPERTY_SUPPORTED=!1}var isMaskedValue=function e(n,t){void 0===e.__CACHE__&&(e.__CACHE__={});var a="".concat(n,"-").concat(t);if(!e.__CACHE__[a]){var r=unmask(n,t);e.__CACHE__[a]=n===__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask(r,t)}return e.__CACHE__[a]},maskIfNotMasked=function e(n,t){void 0===e.__CACHE__&&(e.__CACHE__={});var a="".concat(n,"-").concat(t);if(!e.__CACHE__[a])if(isMaskedValue(n,t))e.__CACHE__[a]=n;else try{e.__CACHE__[a]=__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask(n,t,!1)}catch(n){e.__CACHE__[a]=__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask("",t)}return e.__CACHE__[a]},generatePatternFromMask=function e(n){void 0===e.__CACHE__&&(e.__CACHE__={});var t=n;if(!e.__CACHE__[t]){var a=n.split(""),r="";a.forEach((function(e){switch(e){case"X":r+="([^ -~])";break;case"a":case"A":r+=IS_UNICODE_PROPERTY_SUPPORTED?"\\p{L}":"((?:[A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞿꟂ-Ᶎꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭧꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf40\udf42-\udf49\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc80-\udd43]|[\ud80c\ud81c-\ud820\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0\udfe1\udfe3]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]))";break;case"0":r+="([0-9])";break;case"z":case"Z":r+=IS_UNICODE_PROPERTY_SUPPORTED?"([0-9]|\\p{L})":"([0-9]|(?:[A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞿꟂ-Ᶎꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭧꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf40\udf42-\udf49\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc80-\udd43]|[\ud80c\ud81c-\ud820\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0\udfe1\udfe3]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]))";break;case"U":r+=IS_UNICODE_PROPERTY_SUPPORTED?"(([0-9])|(\\s)|([.,/#!$%^&*;:{}=-_`~()])|(\\p{L}))":"(([0-9])|(\\s)|([.,/#!$%^&*;:{}=-_`~()])|(?:[A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞿꟂ-Ᶎꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭧꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf40\udf42-\udf49\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc80-\udd43]|[\ud80c\ud81c-\ud820\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0\udfe1\udfe3]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]))";break;default:r+=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}})),e.__CACHE__[t]=r}return e.__CACHE__[t]},unmask=function e(n,t){void 0===e.__CACHE__&&(e.__CACHE__={});var a="".concat(n,"-").concat(t);if(!e.__CACHE__[a]){for(var r=t.split(""),o=n.split(""),i="",l=0;l-1){if(!new RegExp(generatePatternFromMask(d),IS_UNICODE_PROPERTY_SUPPORTED?"u":"").test(g))break;i+=g}}e.__CACHE__[a]=i.toLocaleLowerCase()}return e.__CACHE__[a]},findCaretPosition=function e(n,t){void 0===e.__CACHE__&&(e.__CACHE__={});var a="".concat(n,"-").concat(t);if(!e.__CACHE__[a]){var r=t.split(""),o=n.split("");o.length-1&&!new RegExp(generatePatternFromMask(g),IS_UNICODE_PROPERTY_SUPPORTED?"u":"").test(o[l])){i=l;break}}e.__CACHE__[a]=i<0?o.length:i}return e.__CACHE__[a]}},function(e,n,t){var a=t(6);n.a=a.a},function(e,n,t){var a=t(7),r=t.n(a);function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};g(this,e),this.options=i({},{elements:".bbj-number-masked",doc:document,cssClassError:"bbj-mask-error",cssClassSuccess:"bbj-mask-success",onUpdate:null,onInvalid:null},{},n),this._actualInputHandler=this._actualInputHandler.bind(this),this._unmaskedInputHandler=this._unmaskedInputHandler.bind(this),this.refresh()}var n,t,a;return n=e,(t=[{key:"refresh",value:function(){for(var e,n,t="string"==typeof this.options.elements?this.options.doc.querySelectorAll(this.options.elements):this.options.elements,a=0;a-1;this._wrap(e,r)}else console.warn("BBjMasking: Invalid input element. The element will be ignored",e)}},{key:"destroy",value:function(){for(var e,n,t="string"==typeof this.options.elements?this.options.doc.querySelectorAll(this.options.elements):this.options.elements,a=0;a-1&&this._unwrap(e)}},{key:"_wrap",value:function(e,n){var t=e.getAttribute("id"),a=e.getAttribute("name"),o=e.dataset.step||null,i=e.dataset.max||null,l=e.dataset.min||null,g=e.dataset.groupingSeparator||",",d=e.dataset.decimalSeparator||".",p=e.dataset.forceTrailingZeros||null,u=e.dataset.mask||"",s=e.getAttribute("class"),h=e.getAttribute("required")||null,m=null,f=null;if(n?f=(m=e.parentNode).querySelector(".numberInputMask__unmaskedInput"):(m=this.options.doc.createElement("span"),f=this.options.doc.createElement("input")),n||(e.parentNode.insertBefore(m,e),e.hasAttribute("readonly")||e.hasAttribute("disabled")||(e.addEventListener("click",this._actualInputHandler),e.addEventListener("focusin",this._actualInputHandler))),e.dataset.valueUnmasked=e.value||0,e.dataset.groupingSeparator=g,e.dataset.decimalSeparator=d,e.dataset.forceTrailingZeros=p,e.value=r.a.mask(e.dataset.valueUnmasked,u,g,d,p).trim(),e.classList.add("numberInputMask__textInput",this.options.cssClassSuccess),f.value=e.dataset.valueUnmasked,f.setAttribute("aria-hidden","true"),f.setAttribute("type","hidden"),f.setAttribute("class",s),t&&f.setAttribute("id","".concat(t,"-unmasked")),a&&f.setAttribute("name","".concat(a,"-unmasked")),h&&f.setAttribute("required","required"),o)f.setAttribute("step",o);else{var b=c(f.value),A="1";b>0&&(A=".".concat(Array(b).join("0"),"1")),f.setAttribute("step",A)}return l&&f.setAttribute("min",l),i&&f.setAttribute("max",i),f.dataset.inputId=t,f.dataset.mask=u,f.dataset.groupingSeparator=g,f.dataset.decimalSeparator=d,p&&(f.dataset.forceTrailingZeros=p),n||(f.classList.add("numberInputMask__unmaskedInput"),f.addEventListener("keydown",this._unmaskedInputHandler),f.addEventListener("keyup",this._unmaskedInputHandler),f.addEventListener("focusout",this._unmaskedInputHandler),m.setAttribute("class","numberInputMask__wrap"),m.appendChild(f),m.appendChild(e)),isNaN(Number(e.dataset.valueUnmasked))?e.classList.add(this.options.cssClassError):this._validateInput(f,e)&&this.__fireOnUpdate(e.value,e.dataset.valueUnmasked,e),m}},{key:"_unwrap",value:function(e){var n=e.querySelector(".numberInputMask__textInput"),t=n.id,a=e.querySelector("#".concat(t,"-unmasked"));a.removeEventListener("keyup",this._unmaskedInputHandler),a.removeEventListener("keypress",this._unmaskedInputHandler),a.removeEventListener("focusout",this._unmaskedInputHandler),e.removeChild(a),n.removeEventListener("click",this._actualInputHandler),n.removeEventListener("focusin",this._actualInputHandler),n.classList.remove("numberInputMask__textInput"),n.classList.remove(this.options.cssClassError),n.classList.remove(this.options.cssClassSuccess),delete n.dataset.valueUnmasked,e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e)}},{key:"_actualInputHandler",value:function(e){var n=e.target,t=n.id,a=this.options.doc.querySelector("#".concat(t,"-unmasked"));n.setAttribute("aria-hidden","true"),n.setAttribute("type","hidden"),a.removeAttribute("aria-hidden"),a.setAttribute("type","number"),this._validateInput(a,n),setTimeout((function(){a.focus();var e=String(a.value).length;a.type="text",a.setSelectionRange(e,e),a.type="number"}),0)}},{key:"_unmaskedInputHandler",value:function(e){var n,t=e.target,a=e.keyCode,o=t.dataset.mask,i=t.dataset.groupingSeparator,l=t.dataset.decimalSeparator,g=t.dataset.forceTrailingZeros,d=t.dataset.inputId,c=this.options.doc.querySelector("#".concat(d)),p=!1,u=this._validateInput(t,c);try{p=r.a.mask(t.value||0,o,i,l,g,!1).trim()}catch(e){p=!1,this.__applyCssClassState(t,c,"error"),this.__fireOnInvalid(e,c)}n=p&&u,([13,27].indexOf(a)>-1||"focusout"===e.type)&&(t.classList.remove(this.options.cssClassError),t.classList.remove(this.options.cssClassSuccess),t.setAttribute("aria-hidden","true"),t.setAttribute("type","hidden"),c.removeAttribute("aria-hidden"),c.setAttribute("type","text"),c.classList.add(this.options.cssClassSuccess),n?(c.value=p,c.dataset.valueUnmasked=t.value,this.__fireOnUpdate(p,t.value,c)):(t.value=c.dataset.valueUnmasked,this.__applyCssClassState(t,c,"success")))}},{key:"_validateInput",value:function(e,n){var t=!0,a=Number(e.value);if("hidden"!==e.getAttribute("type")||isNaN(a))t=e.checkValidity();else{var r=e.getAttribute("max"),o=e.getAttribute("min"),i=e.getAttribute("step");o&&(t=t&&a>=Number(o)),r&&(t=t&&a<=Number(r)),i&&(t=t&&c(i)===c(e.value))}return t?this.__applyCssClassState(e,n,"success"):(this.__applyCssClassState(e,n,"error"),this.__fireOnInvalid(e.validationMessage||"Validity check fails",n)),t}},{key:"__fireOnUpdate",value:function(e,n,t){this.options.onUpdate&&this.options.onUpdate(e,n,t)}},{key:"__fireOnInvalid",value:function(e,n){this.options.onInvalid&&this.options.onInvalid(e,n)}},{key:"__applyCssClassState",value:function(e,n,t){n.hasAttribute("readonly")||n.hasAttribute("disabled")?(n.classList.remove(this.options.cssClassError),n.classList.remove(this.options.cssClassSuccess),e.classList.remove(this.options.cssClassError),e.classList.remove(this.options.cssClassSuccess)):("success"===t&&(n.classList.remove(this.options.cssClassError),n.classList.add(this.options.cssClassSuccess),e.classList.remove(this.options.cssClassError),e.classList.add(this.options.cssClassSuccess)),"error"===t&&(n.classList.add(this.options.cssClassError),n.classList.remove(this.options.cssClassSuccess),e.classList.add(this.options.cssClassError),e.classList.remove(this.options.cssClassSuccess)))}}])&&d(n.prototype,t),a&&d(n,a),e}();n.a=p},function(e,n){e.exports=__WEBPACK_EXTERNAL_MODULE_7__}])},"object"===_typeof(exports)&&"object"===_typeof(module)?module.exports=factory(__webpack_require__(15),__webpack_require__(16)):(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(15),__webpack_require__(16)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}).call(this,__webpack_require__(9)(module))},function(e,n,t){(function(n){e.exports=n.flatpickr=t(26)}).call(this,t(2))},function(e,n,t){ +(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "../../basis-input-masking/node_modules/bbj-masks/src/NumberMask/NumberMask.js": +/*!*********************************************************************************************!*\ + !*** /mnt/d/Github/basis-input-masking/node_modules/bbj-masks/src/NumberMask/NumberMask.js ***! + \*********************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * NumberMask + * + * A javascript implementation for BBj numbers masking + * + * @author Hyyan Abo Fakher + */ +class NumberMask { + /** + * Mask the given number with the given mask according to BBj rules + * + * @param {Number} number the number to format + * @param {String} mask the mask to use for formatting + * @param {String} [groupingSeparator=,] - a char which will be used as a grouping separator + * @param {String} [decimalSeparator=.] - a char which will be used as a decimal separator + * @param {Boolean} [forceTrailingZeros=false] - Affects the output by switching the way a mask with "#" characters in the trailing positions is filled. + * for example, the function `NumberMask.mask(.10:"#.##")` returns ` .10` instead of ` .1 ` + * @param {Boolean} [loose=true] when true , errors will be ignored and the method will try at apply the mask + * anyway , otherwise it will stop at first error and throw it. + * + * @throws {MaskError} only if loose is disabled + * + * @returns {String} the masked number + */ + static mask( + number, + mask, + groupingSeparator = ',', + decimalSeparator = '.', + forceTrailingZeros = false, + loose = true + ) { + const maskLen = mask.length + if (0 === maskLen) { + if (loose) return str + // friendly silent fail + else + throw { + name: 'MaskError', + message: `MaskError: Mask is empty` + } + } + + // Get magnitude and precision of MASK + let maskBeforeDecimal = 0 + let maskAfterDecimal = 0 + let foundDecimal = false + for (let i = 0; i < maskLen; ++i) { + const m = mask.charAt(i) + if (m == '0' || m == '#') { + if (foundDecimal) ++maskAfterDecimal + else ++maskBeforeDecimal + } else if (m == '.') foundDecimal = true + } + + let num = NumberMask._round(number, maskAfterDecimal) + let bytes = NumberMask._toCharArray(num) + + // Get magnitude and precision of NUMBER + let inLen = bytes.length + let numBeforeDecimal = 0 + let numAfterDecimal = 0 + foundDecimal = false + for (let i = 0; i < inLen; ++i) { + if (bytes[i] == '.') foundDecimal = true + else { + if (foundDecimal) ++numAfterDecimal + else ++numBeforeDecimal + } + } + + // always ignore mask overflow + if (numBeforeDecimal > maskBeforeDecimal) { + if (loose) return number.toString() + // friendly silent fail + else + throw { + name: 'MaskError', + message: `MaskError: Number is too large for mask` + } + } + + // round if mask is for a lower precision number + if (numAfterDecimal > maskAfterDecimal) { + num = NumberMask._round(num, maskAfterDecimal) + bytes = NumberMask._toCharArray(num) + inLen = bytes.length + + // Get new magnitude and precision of NUMBER + numBeforeDecimal = 0 + numAfterDecimal = 0 + foundDecimal = false + for (let i = 0; i < inLen; ++i) { + if (bytes[i] == '.') foundDecimal = true + else { + if (foundDecimal) ++numAfterDecimal + else ++numBeforeDecimal + } + } + + // always ignore mask overflow + if (numBeforeDecimal > maskBeforeDecimal) { + if (loose) return number.toString() + // friendly silent fail + else + throw { + name: 'MaskError', + message: `MaskError: Number is too large for mask` + } + } + } + + let fillByte = ' ', + floatByte = ' ' + let inPos = 0, + outPos = 0, + floatPos = 0 + if (mask.charAt(0) == '*') fillByte = '*' + + const fillInit = fillByte + const isNegative = NumberMask._getSign(num) < 0 + let emitDecimal = inLen > 0 || mask.indexOf('0') >= 0 + let foundZero = false + let foundDigit = false + let currency = false + foundDecimal = false + + let ret = new Array(maskLen) + + for (let maskPos = 0; maskPos < maskLen; ++maskPos) { + let m = mask.charAt(maskPos) + switch (m) { + case '0': + --maskBeforeDecimal + if (maskBeforeDecimal < numBeforeDecimal && inPos < inLen) { + ret[outPos] = bytes[inPos] + ++inPos + foundDigit = true + } else { + ret[outPos] = '0' + foundZero = true + } + ++outPos + break + + case '#': + --maskBeforeDecimal + if (maskBeforeDecimal < numBeforeDecimal && inPos < inLen) { + ret[outPos] = bytes[inPos] + ++inPos + foundDigit = true + } else { + ret[outPos] = + foundDecimal && + forceTrailingZeros && + NumberMask._getSign(num) != 0 + ? '0' + : fillByte + if (!foundDecimal) floatPos = maskPos + } + ++outPos + break + + case ',': + if (foundZero || inPos > 0) ret[outPos] = groupingSeparator + else { + ret[outPos] = fillByte + if (!foundDecimal) floatPos = maskPos + } + ++outPos + break + + case '-': + if (!foundDigit && floatByte == ' ') { + if (isNegative) floatByte = '-' + ret[outPos] = fillByte + floatPos = foundDecimal ? -1 : maskPos + } else ret[outPos] = isNegative ? '-' : fillByte + ++outPos + break + + case '+': + if (!foundDigit && floatByte == ' ') { + floatByte = isNegative ? '-' : '+' + ret[outPos] = fillByte + floatPos = foundDecimal ? -1 : maskPos + } else ret[outPos] = isNegative ? '-' : '+' + ++outPos + break + + case '$': + if (!foundDigit && floatByte == ' ') { + floatByte = '$' + ret[outPos] = fillByte + floatPos = foundDecimal ? -1 : maskPos + } else { + ret[outPos] = '$' + } + ++outPos + break + + // case '&': + // currency = true + // if (!foundDigit && floatByte == ' ') { + // floatByte = '&' + // ret[outPos] = fillByte + // floatPos = foundDecimal ? -1 : maskPos + // } else { + // ret[outPos] = '&' + // } + // ++outPos + // break + + // case '@': + // currency = true + // if (!foundDigit && floatByte == ' ') { + // floatByte = '@' + // ret[outPos] = fillByte + // floatPos = foundDecimal ? -1 : maskPos + // } else { + // ret[outPos] = '@' + // } + // ++outPos + // break + + case '(': + if (!foundDigit && floatByte == ' ') { + if (isNegative) floatByte = '(' + ret[outPos] = fillByte + floatPos = foundDecimal ? -1 : maskPos + } else { + if (isNegative) { + ret[outPos] = '(' + } else { + ret[outPos] = foundDecimal ? ' ' : fillByte + } + } + ++outPos + break + + case ')': + if (isNegative) { + ret[outPos] = ')' + } else { + ret[outPos] = foundDecimal ? ' ' : fillByte + } + ++outPos + break + + case 'C': + if (maskPos < maskLen - 1 && mask.charAt(maskPos + 1) == 'R') { + if (isNegative) { + ret[outPos] = 'C' + ret[outPos + 1] = 'R' + } else { + ret[outPos] = ' ' + ret[outPos + 1] = ' ' + } + outPos += 2 + ++maskPos + } else { + ret[outPos] = 'C' + ++outPos + } + break + case 'D': + if (maskPos < maskLen - 1 && mask.charAt(maskPos + 1) == 'R') { + if (isNegative) { + ret[outPos] = 'C' + ret[outPos + 1] = 'R' + } else { + ret[outPos] = 'D' + ret[outPos + 1] = 'R' + } + outPos += 2 + ++maskPos + } else { + ret[outPos] = 'D' + ++outPos + } + break + + case '*': + ret[outPos] = '*' + ++outPos + break + + case '.': + ret[outPos] = emitDecimal ? decimalSeparator : fillByte + fillByte = ' ' + foundDecimal = true + ++inPos + ++outPos + break + + case 'B': + ret[outPos] = ' ' + ++outPos + break + + default: + ret[outPos] = m + ++outPos + break + } + } + + if (floatByte != ' ') { + if (floatPos < 0) floatPos = outPos + while (floatPos >= maskLen) --floatPos + if (ret[floatPos] == fillInit) ret[floatPos] = floatByte + } + + return ret.join('') + } + + static _shift(number, precision, reverseShift) { + if (reverseShift) precision = -precision + var numArray = ('' + number).split('e') + return +( + numArray[0] + + 'e' + + (numArray[1] ? +numArray[1] + precision : precision) + ) + } + + static _round(number, precision) { + return NumberMask._shift( + Math.round(NumberMask._shift(number, precision, false)), + precision, + true + ) + } + + static _toCharArray(number) { + const signum = NumberMask._getSign(number) + let chars = [] + + if (signum !== 0) { + let string = signum < 0 ? `${-1 * number.toString()}` : number.toString() + + if (string.length > 1 && string.charAt(0) == '0') + string = string.substring(1) + + // The string contains only [0-9] and '.' + chars = string.split('') + } + + return chars + } + + /** + * Returns the sign of a number + * + * @param {Number} x number + * @returns {Number} A number representing the sign of the given argument. + * If the argument is a positive number, negative number, positive zero + * or negative zero, the function will return 1, -1, 0 or -0 respectively. + * Otherwise, NaN is returned. + */ + static _getSign(x) { + return (x > 0) - (x < 0) || +x + } +} + +/* harmony default export */ __webpack_exports__["default"] = (NumberMask); + + +/***/ }), + +/***/ "../../basis-input-masking/node_modules/bbj-masks/src/NumberMask/index.js": +/*!****************************************************************************************!*\ + !*** /mnt/d/Github/basis-input-masking/node_modules/bbj-masks/src/NumberMask/index.js ***! + \****************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _NumberMask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NumberMask */ "../../basis-input-masking/node_modules/bbj-masks/src/NumberMask/NumberMask.js"); +/* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + +/* harmony default export */ __webpack_exports__["default"] = (_NumberMask__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "../../basis-input-masking/node_modules/bbj-masks/src/StringMask/StringMask.js": +/*!*********************************************************************************************!*\ + !*** /mnt/d/Github/basis-input-masking/node_modules/bbj-masks/src/StringMask/StringMask.js ***! + \*********************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +const isNumberRegex = /^\d+$/ +const isWhitespaceRegex = /\s/ +const punctuationList = '!"#$%&\'()*+,-./:;<=>?@[]^_`{|}~' + +/** + * Check if the given string is in lower case + * + * @param {String} str + */ +const isLowerCase = str => { + return str == str.toLowerCase() && str != str.toUpperCase() +} + +/** + * Check if the given string is in upper case + * + * @param {String} str + */ +const isUpperCase = str => { + return str == str.toUpperCase() && str != str.toLowerCase() +} + +const passOrThrowError = (loose, ret, i, str) => { + if (!loose) { + const char = str.charAt(i) + const pos = i + 1 + throw { + name: 'StringMaskError', + message: `StringMaskError: error applying mask at position "${pos}" , char "${char}"`, + pos, + char + } + } else ret[i] = ' ' +} + +/** + * NumberMask + * + * A javascript implementation for BBj numbers masking + * + * @author Hyyan Abo Fakher + */ +class StringMask { + /** + * Mask the given string with the given mask according to BBj rules + * + * @param {String} str the string to mask + * @param {String} mask the mask to use for formatting + * @param {Boolean} [loose=true] when true , errors will be ignored and the method will try at apply the mask + * anyway , otherwise it will stop at first error and throw it. + * + * @throws {MaskIsTooShortError} + * @throws {StringMaskError} + * @throws {MaskError} + * + * @returns {String} the masked string + */ + static mask(str, mask, loose = true) { + str = String(str) + mask = String(mask) + const maskLen = mask.length + const strLen = str.length + + if (strLen > maskLen) { + if (loose) return str + // friendly silent fail + else + throw { + name: 'MaskIsTooShortError', + message: `MaskIsTooShortError: Mask is shorter than the passed string` + } + } + + const ret = new Array(maskLen) + let pos = 0 // to keep track of the current position in the str + let maskByte = '' + + for (let i = 0; i < maskLen; i++) { + maskByte = mask.charAt(i) + switch (maskByte) { + case 'X': // match any character + ret[i] = pos < strLen ? str.charAt(pos) : ' ' + ++pos + break + + case 'A': // match letter; force upper case + if (pos < strLen) { + const byte = str.charAt(pos) + if (isUpperCase(byte)) ret[i] = byte + else if (isLowerCase(byte)) ret[i] = byte.toUpperCase() + else passOrThrowError(loose, ret, i, str) + } else ret[i] = ' ' + ++pos + break + + case 'a': // match letter + if (pos < strLen) { + const byte = str.charAt(pos) + if (isUpperCase(byte) || isLowerCase(byte)) ret[i] = byte + else passOrThrowError(loose, ret, i, str) + } else ret[i] = ' ' + ++pos + break + case '0': // match digit + if (pos < strLen) { + const byte = str.charAt(pos) + if (isNumberRegex.test(byte)) ret[i] = byte + else passOrThrowError(loose, ret, i, str) + } else ret[i] = ' ' + ++pos + break + case 'Z': // match letter or digit; force upper case + if (pos < strLen) { + const byte = str.charAt(pos) + if (isUpperCase(byte) || isNumberRegex.test(byte)) ret[i] = byte + else if (isLowerCase(byte)) ret[i] = byte.toUpperCase() + else passOrThrowError(loose, ret, i, str) + } else ret[i] = ' ' + ++pos + break + case 'z': // match letter or digit + if (pos < strLen) { + const byte = str.charAt(pos) + if ( + isUpperCase(byte) || + isLowerCase(byte) || + isNumberRegex.test(byte) + ) + ret[i] = byte + else passOrThrowError(loose, ret, i, str) + } else ret[i] = ' ' + ++pos + break + + break + case 'U': // match letter (force upper case), digit, whitespace or punctuation. + if (pos < strLen) { + const byte = str.charAt(pos) + if (isLowerCase(byte)) ret[i] = byte.toUpperCase() + else if ( + isUpperCase(byte) || + isNumberRegex.test(byte) || + isWhitespaceRegex.test(byte) || + punctuationList.indexOf(byte) > -1 + ) + ret[i] = byte + else passOrThrowError(loose, ret, i, str) + } else ret[i] = ' ' + ++pos + break + default: + ret[i] = maskByte + break + } + } + + if (pos < strLen) { + if (!loose) { + throw { name: 'MaskError', message: 'Mask cannot be applied' } + } + } + + return ret.join('') + } +} + +/* harmony default export */ __webpack_exports__["default"] = (StringMask); + + +/***/ }), + +/***/ "../../basis-input-masking/node_modules/bbj-masks/src/StringMask/index.js": +/*!****************************************************************************************!*\ + !*** /mnt/d/Github/basis-input-masking/node_modules/bbj-masks/src/StringMask/index.js ***! + \****************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _StringMask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./StringMask */ "../../basis-input-masking/node_modules/bbj-masks/src/StringMask/StringMask.js"); +/* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + +/* harmony default export */ __webpack_exports__["default"] = (_StringMask__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }), + +/***/ "./node_modules/ag-grid-community/dist/styles/ag-grid.css": +/*!****************************************************************!*\ + !*** ./node_modules/ag-grid-community/dist/styles/ag-grid.css ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__(/*! !../../../postcss-loader/src!../../../postcss-loader/src!./ag-grid.css */ "./node_modules/postcss-loader/src/index.js!./node_modules/postcss-loader/src/index.js!./node_modules/ag-grid-community/dist/styles/ag-grid.css"); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + +var options = {"hmr":true} + +options.transform = transform +options.insertInto = function() { + return window.parent.document.head + }; + +var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), + +/***/ "./node_modules/ag-grid-community/dist/styles/ag-theme-balham-dark.css": +/*!*****************************************************************************!*\ + !*** ./node_modules/ag-grid-community/dist/styles/ag-theme-balham-dark.css ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__(/*! !../../../postcss-loader/src!../../../postcss-loader/src!./ag-theme-balham-dark.css */ "./node_modules/postcss-loader/src/index.js!./node_modules/postcss-loader/src/index.js!./node_modules/ag-grid-community/dist/styles/ag-theme-balham-dark.css"); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + +var options = {"hmr":true} + +options.transform = transform +options.insertInto = function() { + return window.parent.document.head + }; + +var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), + +/***/ "./node_modules/ag-grid-community/dist/styles/ag-theme-balham.css": +/*!************************************************************************!*\ + !*** ./node_modules/ag-grid-community/dist/styles/ag-theme-balham.css ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__(/*! !../../../postcss-loader/src!../../../postcss-loader/src!./ag-theme-balham.css */ "./node_modules/postcss-loader/src/index.js!./node_modules/postcss-loader/src/index.js!./node_modules/ag-grid-community/dist/styles/ag-theme-balham.css"); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + +var options = {"hmr":true} + +options.transform = transform +options.insertInto = function() { + return window.parent.document.head + }; + +var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), + +/***/ "./node_modules/ag-grid-community/dist/styles/ag-theme-material.css": +/*!**************************************************************************!*\ + !*** ./node_modules/ag-grid-community/dist/styles/ag-theme-material.css ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__(/*! !../../../postcss-loader/src!../../../postcss-loader/src!./ag-theme-material.css */ "./node_modules/postcss-loader/src/index.js!./node_modules/postcss-loader/src/index.js!./node_modules/ag-grid-community/dist/styles/ag-theme-material.css"); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + +var options = {"hmr":true} + +options.transform = transform +options.insertInto = function() { + return window.parent.document.head + }; + +var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!../../basis-input-masking/dist/basis-input-masking.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4!/mnt/d/Github/basis-input-masking/dist/basis-input-masking.js ***! + \*************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +(function webpackUniversalModuleDefinition(root, factory) { + if (( false ? undefined : _typeof(exports)) === 'object' && ( false ? undefined : _typeof(module)) === 'object') module.exports = factory(__webpack_require__(/*! bbj-masks/src/StringMask */ "../../basis-input-masking/node_modules/bbj-masks/src/StringMask/index.js"), __webpack_require__(/*! bbj-masks/src/NumberMask */ "../../basis-input-masking/node_modules/bbj-masks/src/NumberMask/index.js"));else if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! bbj-masks/src/StringMask */ "../../basis-input-masking/node_modules/bbj-masks/src/StringMask/index.js"), __webpack_require__(/*! bbj-masks/src/NumberMask */ "../../basis-input-masking/node_modules/bbj-masks/src/NumberMask/index.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {} +})(typeof self !== 'undefined' ? self : void 0, function (__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_7__) { + return ( + /******/ + function (modules) { + // webpackBootstrap + + /******/ + // The module cache + + /******/ + var installedModules = {}; + /******/ + + /******/ + // The require function + + /******/ + + function __webpack_require__(moduleId) { + /******/ + + /******/ + // Check if module is in cache + + /******/ + if (installedModules[moduleId]) { + /******/ + return installedModules[moduleId].exports; + /******/ + } + /******/ + // Create a new module (and put it into the cache) + + /******/ + + + var module = installedModules[moduleId] = { + /******/ + i: moduleId, + + /******/ + l: false, + + /******/ + exports: {} + /******/ + + }; + /******/ + + /******/ + // Execute the module function + + /******/ + + modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + /******/ + + /******/ + // Flag the module as loaded + + /******/ + + module.l = true; + /******/ + + /******/ + // Return the exports of the module + + /******/ + + return module.exports; + /******/ + } + /******/ + + /******/ + + /******/ + // expose the modules object (__webpack_modules__) + + /******/ + + + __webpack_require__.m = modules; + /******/ + + /******/ + // expose the module cache + + /******/ + + __webpack_require__.c = installedModules; + /******/ + + /******/ + // define getter function for harmony exports + + /******/ + + __webpack_require__.d = function (exports, name, getter) { + /******/ + if (!__webpack_require__.o(exports, name)) { + /******/ + Object.defineProperty(exports, name, { + /******/ + configurable: false, + + /******/ + enumerable: true, + + /******/ + get: getter + /******/ + + }); + /******/ + } + /******/ + + }; + /******/ + + /******/ + // getDefaultExport function for compatibility with non-harmony modules + + /******/ + + + __webpack_require__.n = function (module) { + /******/ + var getter = module && module.__esModule ? + /******/ + function getDefault() { + return module['default']; + } : + /******/ + function getModuleExports() { + return module; + }; + /******/ + + __webpack_require__.d(getter, 'a', getter); + /******/ + + + return getter; + /******/ + }; + /******/ + + /******/ + // Object.prototype.hasOwnProperty.call + + /******/ + + + __webpack_require__.o = function (object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + /******/ + + /******/ + // __webpack_public_path__ + + /******/ + + + __webpack_require__.p = ""; + /******/ + + /******/ + // Load entry module and return exports + + /******/ + + return __webpack_require__(__webpack_require__.s = 1); + /******/ + }( + /************************************************************************/ + + /******/ + [ + /* 0 */ + + /***/ + function (module, exports) { + module.exports = __WEBPACK_EXTERNAL_MODULE_0__; + /***/ + }, + /* 1 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + Object.defineProperty(__webpack_exports__, "__esModule", { + value: true + }); + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__TextInput__ = __webpack_require__(2); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__NumberInput__ = __webpack_require__(5); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "TextInput", function () { + return __WEBPACK_IMPORTED_MODULE_0__TextInput__["a"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "NumberInput", function () { + return __WEBPACK_IMPORTED_MODULE_1__NumberInput__["a"]; + }); + /* + * This file is part of basis-input-masking lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /***/ + + }, + /* 2 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__TextInput__ = __webpack_require__(3); + /* + * This file is part of basis-input-masking lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* harmony default export */ + + + __webpack_exports__["a"] = __WEBPACK_IMPORTED_MODULE_0__TextInput__["a" + /* default */ + ]; + /***/ + }, + /* 3 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask__ = __webpack_require__(0); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask__); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__tools_js__ = __webpack_require__(4); + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; + } + + function _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; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + /* + * This file is part of basis-input-masking lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /** + * The `TextInput` will wrap text inputs and apply the given [bbj string mask](https://github.com/BasisHub/bbj-masks#string-masks) + * + * **Options** + * + * _Options can be passed via data attributes . For data attributes, append the option name to data-, as in data-mask_ + * + * | Option | Default | Description | + * |-----------|---------|---------------------------------------------------------------------------------------------------------| + * | mask | | The bbj string mask @see [BBj String Masks](https://github.com/BasisHub/bbj-masks#string-masks) | + * + *
+ * + * **Example :** + * ```html + * + * + * + * ``` + * + * @author Hyyan Abo Fakher + */ + + + var TextInput = /*#__PURE__*/function () { + /** + * Construct new TextInput + * + * @param {?Object} options - The input options. + * @param {HTMLElement|String} [options.elements=".bbj-text-masked"] - The class name or the node to use + * @param {HTMLDocument} [options.document=document] - Document instance to use + * @param {String} [options.cssClassError="bbj-mask-error"] - A css class to attach to the input when it is invalid + * @param {String} [options.cssClassSuccess="bbj-mask-success"] - A css class to attach to the input when it is valid after the user interaction + * @param {Function} [options.onUpdate=null] - A callback to be called on the new masked value is set + * @param {Function} [options.onInvalid=null] - A callback to be called on the input or the mask is invalid + */ + function TextInput() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, TextInput); + + this.options = _objectSpread({}, { + elements: '.bbj-text-masked', + doc: document, + cssClassError: 'bbj-mask-error', + cssClassSuccess: 'bbj-mask-success', + onUpdate: null, + onInvalid: null + }, {}, options); + this._onKeystroke = this._onKeystroke.bind(this); + this._onFocus = this._onFocus.bind(this); + this.refresh(); + } + /** + * Initialize the component and wrap the input elements for masking in case + * they are not wrapped yet + */ + + + _createClass(TextInput, [{ + key: "refresh", + value: function refresh() { + var elements = typeof this.options.elements === 'string' ? this.options.doc.querySelectorAll(this.options.elements) : this.options.elements; + var input, parentClass; + + for (var i = 0; i < elements.length; i++) { + input = elements[i]; + + if (input instanceof HTMLInputElement) { + parentClass = input.parentNode.getAttribute('class'); + + if (!input.getAttribute('id')) { + console.warn("BBjMasking: Input has no ID. Without an ID the input cannot be masked", input); + continue; + } // we don't initialize the input's wrap twice + + + var isWrapped = parentClass && parentClass.indexOf('textInputMask__wrap') > -1; + + this._wrap(input, isWrapped); + } else { + console.warn("BBjMasking: Invalid input element. The element will be ignored", input); + } + } + } + /** + * Unwrap the input elements and remove attached listeners + */ + + }, { + key: "destroy", + value: function destroy() { + var elements = typeof this.options.elements === 'string' ? this.options.doc.querySelectorAll(this.options.elements) : this.options.elements; + var input, parent, parentClass; + + for (var i = 0; i < elements.length; i++) { + input = elements[i]; + parent = input.parentNode; + parentClass = parent.getAttribute('class'); + + if (parentClass && parentClass.indexOf('textInputMask__wrap') > -1) { + this._unwrap(parent); + } + } + } + /** + * Create the text masking input wrapper + * + * @param {HTMLInputElement} input the input element + * @param {Boolean} isWrapped when true the input is already wrapped and we need to add what is + * missing only + * + * @returns {HTMLSpanElement} the wrap element + * + * @protected + */ + + }, { + key: "_wrap", + value: function _wrap(input, isWrapped) { + var inputId = input.getAttribute('id'), + inputName = input.getAttribute('name'), + mask = input.dataset.mask || '', + originalPattern = input.pattern, + defaultPattern = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["b" + /* generatePatternFromMask */ + ])(mask), + pattern = originalPattern || defaultPattern; + var wrap = null, + unmaskInput = null; + + if (!isWrapped) { + wrap = this.options.doc.createElement('span'); + unmaskInput = this.options.doc.createElement('input'); // hidden input with the unmasked values for forms + } else { + wrap = input.parentNode; + unmaskInput = wrap.querySelector('.textInputMask__unmaskedInput'); + } // configure the actual input + // ----------------------------------------------------- + + + input.value = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["c" + /* maskIfNotMasked */ + ])(input.value, mask); + input.pattern = pattern; + input.classList.add('textInputMask__textInput'); + input.dataset.mask = mask; + input.dataset.valueUnmasked = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["d" + /* unmask */ + ])(input.value, mask); + + if (originalPattern && originalPattern !== defaultPattern) { + input.dataset.isCustomPattern = true; + } + + if (!isWrapped) { + if (!(input.hasAttribute('readonly') || input.hasAttribute('disable'))) { + input.addEventListener('keyup', this._onKeystroke); + input.addEventListener('keypress', this._onKeystroke); + input.addEventListener('paste', this._onKeystroke); + input.addEventListener('focusin', this._onFocus); + input.addEventListener('click', this._onFocus); + } + + input.parentNode.insertBefore(wrap, input); // move the input outside the wrapper + } + + if (this._validateInput(input)) { + this.__fireOnUpdate(input.value, input.dataset.valueUnmasked, input); + } // configure the unmasked input + // ---------------------------------------------------- + + + unmaskInput.setAttribute('aria-hidden', 'true'); + unmaskInput.setAttribute('type', 'hidden'); + unmaskInput.classList.add('textInputMask__unmaskedInput'); + unmaskInput.value = input.dataset.valueUnmasked; + if (inputId) unmaskInput.setAttribute('id', "".concat(inputId, "-unmasked")); + if (inputName) unmaskInput.setAttribute('name', "".concat(inputName, "-unmasked")); + + if (!isWrapped) { + // configure the wrapper + wrap.setAttribute('class', 'textInputMask__wrap'); + wrap.appendChild(unmaskInput); + wrap.appendChild(input); + } + + return wrap; + } + /** + * Unwrap the masked input and remove the value changed listener + * + * @param {HTMLSpanElement} textInput the wrapper span instance + * + * @protected + */ + + }, { + key: "_unwrap", + value: function _unwrap(textInput) { + textInput.removeChild(textInput.querySelector('.textInputMask__unmaskedInput')); + var input = textInput.querySelector('.textInputMask__textInput'); + input.removeEventListener('keyup', this._onKeystroke); + input.removeEventListener('keypress', this._onKeystroke); + input.removeEventListener('paste', this._onKeystroke); + input.removeEventListener('focusin', this._onFocus); + input.removeEventListener('click', this._onFocus); + delete input.dataset.valueUnmasked; + + if (!input.dataset.isCustomPattern) { + input.removeAttribute('pattern'); + delete input.dataset.isCustomPattern; + } + + input.classList.remove(this.options.cssClassError); + textInput.parentNode.insertBefore(input, textInput); + textInput.parentNode.removeChild(textInput); + } + /** + * Listen to every keystroke on the input and update the masked and the unmasked value + * + * @param {Event} e + * + * @protected + */ + + }, { + key: "_onKeystroke", + value: function _onKeystroke(e) { + if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) return; + if (e.keyCode !== 13) e.preventDefault(); + var input = e.target, + mask = input.dataset.mask || this.options.mask, + eventType = e.type; + input.classList.remove(this.options.cssClassError); + input.classList.remove(this.options.cssClassSuccess); + input.setCustomValidity(''); + var value = input.value, + keyCode = e.keyCode, + keyContent = e.key || e.code.replace(/[^0-9]/g, ''), + key = keyContent ? keyContent.length > 1 ? '' : keyContent : '', + insertPosition = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["a" + /* findCaretPosition */ + ])(value, mask), + newValue, + unmaskedValue, + maskError = false; + + switch (eventType) { + case 'paste': + newValue = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["c" + /* maskIfNotMasked */ + ])((e.clipboardData || window.clipboardData).getData('Text'), mask); + break; + + case 'keyup': + newValue = value; + break; + + case 'keypress': + var selectionStart = input.selectionStart; + if (selectionStart !== insertPosition) insertPosition = selectionStart; + newValue = value.substr(0, insertPosition) + key + value.substr(insertPosition); + break; + + default: + break; + } + + unmaskedValue = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["d" + /* unmask */ + ])(newValue, mask); + + if ([35, 36, 37, 38, 39, 40].indexOf(keyCode) === -1) { + try { + input.value = __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask(unmaskedValue, mask, false); + + if (this._validateInput(input)) { + input.dataset.valueUnmasked = unmaskedValue; + this.options.doc.querySelector("#".concat(input.getAttribute('id'), "-unmasked")).value = unmaskedValue; + + this.__applyCssClassState(input, 'success'); + + this.__fireOnUpdate(input.value, input.dataset.valueUnmasked, input); + } + + maskError = false; + } catch (error) { + this.__applyCssClassState(input, 'error'); + + this.__fireOnInvalid(error, input); + + maskError = true; + } + + this._updateCaretPosition(input, mask); + } + + if (!maskError) this._validateInput(input); + } + /** + * Listen to focus events on the input and update the caret position + * where the next char should be inserted according to the mask + * + * @param {FocusEvent} e + * + * @protected + */ + + }, { + key: "_onFocus", + value: function _onFocus(e) { + var input = e.target; + var mask = input.dataset.mask || this.options.mask; + + this._updateCaretPosition(input, mask); + } + /** + * Update the caret position on the input based on the given mask + * + * @param {HTMLInputElement} input instance + * @param {String} mask bbj string + * + * @protected + */ + + }, { + key: "_updateCaretPosition", + value: function _updateCaretPosition(input, mask) { + setTimeout(function () { + var position = Object(__WEBPACK_IMPORTED_MODULE_1__tools_js__["a" + /* findCaretPosition */ + ])(input.value, mask); + input.setSelectionRange(position, position); + }, 0); + } + /** + * Trigger `checkValidity` on the input + * + * @param {HTMLInputElement} input + * + * @returns {Boolean} true when valid , false otherwise + * + * @protected + */ + + }, { + key: "_validateInput", + value: function _validateInput(input) { + var isValid = input.checkValidity(); + + if (isValid) { + this.__applyCssClassState(input, 'success'); + + input.setCustomValidity(''); + } else { + this.__applyCssClassState(input, 'error'); + + this.__fireOnInvalid(input.validationMessage, input); + } + + return isValid; + } + /** + * @private + */ + + }, { + key: "__fireOnUpdate", + value: function __fireOnUpdate(valueMasked, valueUnmasked, input) { + if (this.options.onUpdate) { + this.options.onUpdate(valueMasked, valueUnmasked, input); + } + } + /** + * @private + */ + + }, { + key: "__fireOnInvalid", + value: function __fireOnInvalid(error, input) { + if (this.options.onInvalid) { + this.options.onInvalid(error, input); + } + } + /** + * @private + */ + + }, { + key: "__applyCssClassState", + value: function __applyCssClassState(input, state) { + if (input.hasAttribute('readonly') || input.hasAttribute('disabled')) { + input.classList.remove(this.options.cssClassError); + input.classList.remove(this.options.cssClassSuccess); + } else { + if (state === 'success') { + input.classList.remove(this.options.cssClassError); + input.classList.add(this.options.cssClassSuccess); + } + + if (state === 'error') { + input.classList.add(this.options.cssClassError); + input.classList.remove(this.options.cssClassSuccess); + } + } + } + }]); + + return TextInput; + }(); + /* harmony default export */ + + + __webpack_exports__["a"] = TextInput; + /***/ + }, + /* 4 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* unused harmony export isMaskedValue */ + + /* harmony export (binding) */ + + __webpack_require__.d(__webpack_exports__, "c", function () { + return maskIfNotMasked; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "d", function () { + return unmask; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "a", function () { + return findCaretPosition; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "b", function () { + return generatePatternFromMask; + }); + /* unused harmony export IS_UNICODE_PROPERTY_SUPPORTED */ + + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask__ = __webpack_require__(0); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask__); + /* + * This file is part of basis-input-masking lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + var SUPPORTED_MASKS = ['X', 'a', 'A', '0', 'z', 'Z', 'U']; + /** + * When true , then the browser supports Unicode Property Escapes + * otherwise it is false + * + * {@link https://github.com/tc39/proposal-regexp-unicode-property-escapes} + */ + + var IS_UNICODE_PROPERTY_SUPPORTED = false; + + try { + eval('/\\p{L}/u'); + IS_UNICODE_PROPERTY_SUPPORTED = true; + } catch (err) { + IS_UNICODE_PROPERTY_SUPPORTED = false; + } + /** + * Check if the given value is masked with the given mask or not + * + * @param {String} value masked or unmasked value + * @param {String} mask a bbj mask + * + * @return {Boolean} true when the value is masked with given mask , false otherwise + */ + + + var isMaskedValue = function isMaskedValue(value, mask) { + if (typeof isMaskedValue.__CACHE__ === 'undefined') { + isMaskedValue.__CACHE__ = {}; + } + + var cacheKey = "".concat(value, "-").concat(mask); + + if (!isMaskedValue.__CACHE__[cacheKey]) { + var unmaskedValue = unmask(value, mask); + isMaskedValue.__CACHE__[cacheKey] = value === __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask(unmaskedValue, mask); + } + + return isMaskedValue.__CACHE__[cacheKey]; + }; + /** + * Mask the given value with the given mask in case the value is not already masked with the + * given mask + * + * @param {String} value masked or unmasked value + * @param {String} mask a bbj mask + * + * @return {String} a masked value + */ + + + var maskIfNotMasked = function maskIfNotMasked(value, mask) { + if (typeof maskIfNotMasked.__CACHE__ === 'undefined') { + maskIfNotMasked.__CACHE__ = {}; + } + + var cacheKey = "".concat(value, "-").concat(mask); + + if (!maskIfNotMasked.__CACHE__[cacheKey]) { + if (isMaskedValue(value, mask)) { + maskIfNotMasked.__CACHE__[cacheKey] = value; + } else { + try { + maskIfNotMasked.__CACHE__[cacheKey] = __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask(value, mask, false); + } catch (e) { + maskIfNotMasked.__CACHE__[cacheKey] = __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_StringMask___default.a.mask('', mask); + } + } + } + + return maskIfNotMasked.__CACHE__[cacheKey]; + }; + /** + * Generate a regex patter based on the give task + * + * @param {String} mask bbj string mask + * + * @return {String} regex for the give mask + */ + + + var generatePatternFromMask = function generatePatternFromMask(mask) { + if (typeof generatePatternFromMask.__CACHE__ === 'undefined') { + generatePatternFromMask.__CACHE__ = {}; + } + + var cacheKey = mask; + + if (!generatePatternFromMask.__CACHE__[cacheKey]) { + var maskAsArry = mask.split(''); + var regex = ''; + maskAsArry.forEach(function (c) { + switch (c) { + case 'X': + regex += '([^ -~])'; + break; + + case 'a': + case 'A': + // https://mothereff.in/regexpu#input=var+regex+%3D+/%5Cp%7BL%7D/u%3B&unicodePropertyEscape=1 + // https://stackoverflow.com/questions/150033/regular-expression-to-match-non-ascii-characters#answer-48902765 + regex += IS_UNICODE_PROPERTY_SUPPORTED ? '\\p{L}' : "((?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]))"; + break; + + case '0': + regex += '([0-9])'; + break; + + case 'z': + case 'Z': + regex += IS_UNICODE_PROPERTY_SUPPORTED ? '([0-9]|\\p{L})' : "([0-9]|(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]))"; + break; + + case 'U': + regex += IS_UNICODE_PROPERTY_SUPPORTED ? '(([0-9])|(\\s)|([.,/#!$%^&*;:{}=-_`~()])|(\\p{L}))' : "(([0-9])|(\\s)|([.,/#!$%^&*;:{}=-_`~()])|(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]))"; + break; + + default: + regex += c.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + break; + } + }); + generatePatternFromMask.__CACHE__[cacheKey] = regex; + } + + return generatePatternFromMask.__CACHE__[cacheKey]; + }; + /** + * Unmask the given value + * + * @param {String} maskedValue masked string + * @param {String} mask the used mask to produce the masked string + */ + + + var unmask = function unmask(maskedValue, mask) { + if (typeof unmask.__CACHE__ === 'undefined') { + unmask.__CACHE__ = {}; + } + + var cacheKey = "".concat(maskedValue, "-").concat(mask); + + if (!unmask.__CACHE__[cacheKey]) { + var maskAsArray = mask.split(''); + var maskedValueAsArray = maskedValue.split(''); + var unmasked = ''; + + for (var index = 0; index < maskedValueAsArray.length; index++) { + var el = maskedValueAsArray[index]; + var _mask = maskAsArray[index]; + var elHasMask = SUPPORTED_MASKS.indexOf(_mask) > -1; + + if (elHasMask) { + var pattern = new RegExp(generatePatternFromMask(_mask), IS_UNICODE_PROPERTY_SUPPORTED ? 'u' : ''); + if (pattern.test(el)) unmasked += el;else break; + } + } + + unmask.__CACHE__[cacheKey] = unmasked.toLocaleLowerCase(); + } + + return unmask.__CACHE__[cacheKey]; + }; + /** + * Given the masked string , find the next caret position depending on + * what is missing to complete the mask + * + * @param {String} maskedValue masked string + * @param {String} mask the used mask to produce the masked string + */ + + + var findCaretPosition = function findCaretPosition(maskedValue, mask) { + if (typeof findCaretPosition.__CACHE__ === 'undefined') { + findCaretPosition.__CACHE__ = {}; + } + + var cacheKey = "".concat(maskedValue, "-").concat(mask); + + if (!findCaretPosition.__CACHE__[cacheKey]) { + var maskAsArray = mask.split(''); + var maskedValueAsArray = maskedValue.split(''); + + if (maskedValueAsArray.length < maskAsArray.length) { + maskedValueAsArray = maskedValueAsArray.concat(new Array(maskAsArray.length - maskedValueAsArray.length).join(' ').split('')); + } + + var position = -1; + + for (var index = 0; index < maskAsArray.length; index++) { + var el = maskAsArray[index]; + + if (el !== maskedValueAsArray[index]) { + // if (maskedValueAsArray[index] === ' ') return index + if (SUPPORTED_MASKS.indexOf(el) > -1) { + var pattern = new RegExp(generatePatternFromMask(el), IS_UNICODE_PROPERTY_SUPPORTED ? 'u' : ''); + + if (!pattern.test(maskedValueAsArray[index])) { + position = index; + break; + } + } + } + } + + findCaretPosition.__CACHE__[cacheKey] = position < 0 ? maskedValueAsArray.length : position; + } + + return findCaretPosition.__CACHE__[cacheKey]; + }; + /***/ + + }, + /* 5 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__NumberInput__ = __webpack_require__(6); + /* + * This file is part of basis-input-masking lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* harmony default export */ + + + __webpack_exports__["a"] = __WEBPACK_IMPORTED_MODULE_0__NumberInput__["a" + /* default */ + ]; + /***/ + }, + /* 6 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_NumberMask__ = __webpack_require__(7); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_NumberMask___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_NumberMask__); + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; + } + + function _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; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + /* + * This file is part of basis-input-masking lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + var countDecimals = function countDecimals(value) { + if (value % 1 != 0) { + var split = value.toString().split('.'); + if (split.length === 2) return split[1].length; + } + + return 0; + }; + /** + * The `NumberInput` will wrap text inputs and apply the given [bbj Number mask](https://github.com/BasisHub/bbj-masks#number-masks) + * + * **Options** + * + * _Options can be passed via data attributes . For data attributes, append the option name to data-, as in data-mask_ + * + * | Option | Default | Description | + * |-----------|---------|---------------------------------------------------------------------------------------------------------| + * | mask | | The bbj number mask @see [BBj Number Masks](https://github.com/BasisHub/bbj-masks#number-masks) | + * | min | | The maximum value to accept for this input| + * | max | | The minimum value to accept for this input| + * | step | | A stepping interval to use when using up and down arrows to adjust the value, as well as for validation| + * |grouping-separator | , | a char which will be used as a grouping separator | + * |decimal-separator | . | a char which will be used as a decimal separator | + * |force-trailing-zeros | false | Affects the output by switching the way a mask with "#" characters in the trailing positions is filled. for example, the function NumberMask.mask(.10:"#.##") returns .10 instead of .1| + * + *
+ * + * **Example :** + * ```html + * + * + * + * ``` + * + * @author Hyyan Abo Fakher + */ + + + var NumberInput = /*#__PURE__*/function () { + /** + * Construct new NumberInput + * + * @param {?Object} options - The input options. + * @param {HTMLElement|String} [options.elements=".bbj-number-masked"] - The class name or the node to use + * @param {HTMLDocument} [options.document=document] - Document instance to use + * @param {String} [options.cssClassError="bbj-mask-error"] - A css class to attach to the input when it is invalid + * @param {String} [options.cssClassSuccess="bbj-mask-success"] - A css class to attach to the input when it is valid after the user interaction + * @param {Function} [options.onUpdate=null] - A callback to be called on the new masked value is set + * @param {Function} [options.onInvalid=null] - A callback to be called on the input or the mask is invalid + */ + function NumberInput() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, NumberInput); + + this.options = _objectSpread({}, { + elements: '.bbj-number-masked', + doc: document, + cssClassError: 'bbj-mask-error', + cssClassSuccess: 'bbj-mask-success', + onUpdate: null, + onInvalid: null + }, {}, options); + this._actualInputHandler = this._actualInputHandler.bind(this); + this._unmaskedInputHandler = this._unmaskedInputHandler.bind(this); + this.refresh(); + } + /** + * Initialize the component and wrap the input elements for masking in case + * they are not wrapped yet + */ + + + _createClass(NumberInput, [{ + key: "refresh", + value: function refresh() { + var elements = typeof this.options.elements === 'string' ? this.options.doc.querySelectorAll(this.options.elements) : this.options.elements; + var input, parentClass; + + for (var i = 0; i < elements.length; i++) { + input = elements[i]; + + if (input instanceof HTMLInputElement) { + parentClass = input.parentNode.getAttribute('class'); + + if (!input.getAttribute('id')) { + console.warn("BBjMasking: Input has no ID. Without an ID the input cannot be masked", input); + continue; + } // we don't initialize the input's wrap twice + + + var isWrapped = parentClass && parentClass.indexOf('numberInputMask__wrap') > -1; + + this._wrap(input, isWrapped); + } else { + console.warn("BBjMasking: Invalid input element. The element will be ignored", input); + } + } + } + /** + * Unwrap the input elements and remove attached listeners + */ + + }, { + key: "destroy", + value: function destroy() { + var elements = typeof this.options.elements === 'string' ? this.options.doc.querySelectorAll(this.options.elements) : this.options.elements; + var input, parent, parentClass; + + for (var i = 0; i < elements.length; i++) { + input = elements[i]; + parent = input.parentNode; + parentClass = parent.getAttribute('class'); + + if (parentClass && parentClass.indexOf('numberInputMask__wrap') > -1) { + this._unwrap(parent); + } + } + } + /** + * Create the number masking input wrapper + * + * @param {HTMLInputElement} actualInput the input element + * @param {Boolean} isWrapped when true the input is already wrapped and we need to add what is + * missing only + * + * @returns {HTMLSpanElement} wrapper instance + * + * @protected + */ + + }, { + key: "_wrap", + value: function _wrap(actualInput, isWrapped) { + var actualInputId = actualInput.getAttribute('id'), + actualInputName = actualInput.getAttribute('name'), + actualInputStep = actualInput.dataset.step || null, + actualInputMax = actualInput.dataset.max || null, + actualInputMin = actualInput.dataset.min || null, + actualInputGroupingSeparator = actualInput.dataset.groupingSeparator || ',', + actualInputDecimalSeparator = actualInput.dataset.decimalSeparator || '.', + actualInputForceTrailingZeros = actualInput.dataset.forceTrailingZeros || null, + actualInputMask = actualInput.dataset.mask || '', + actualInputClasses = actualInput.getAttribute('class'), + actualInputRequired = actualInput.getAttribute('required') || null; + var wrap = null, + unmaskedInput = null; + + if (!isWrapped) { + wrap = this.options.doc.createElement('span'); + unmaskedInput = this.options.doc.createElement('input'); // hidden input with the unmasked values for forms + } else { + wrap = actualInput.parentNode; + unmaskedInput = wrap.querySelector('.numberInputMask__unmaskedInput'); + } // configure the actual input + // ----------------------------------------------------- + + + if (!isWrapped) { + actualInput.parentNode.insertBefore(wrap, actualInput); // move the input outside the wrapper + + if (!(actualInput.hasAttribute('readonly') || actualInput.hasAttribute('disabled'))) { + actualInput.addEventListener('click', this._actualInputHandler); + actualInput.addEventListener('focusin', this._actualInputHandler); + } + } + + actualInput.dataset.valueUnmasked = actualInput.value || 0; + actualInput.dataset.groupingSeparator = actualInputGroupingSeparator; + actualInput.dataset.decimalSeparator = actualInputDecimalSeparator; + actualInput.dataset.forceTrailingZeros = actualInputForceTrailingZeros; + actualInput.value = __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_NumberMask___default.a.mask(actualInput.dataset.valueUnmasked, actualInputMask, actualInputGroupingSeparator, actualInputDecimalSeparator, actualInputForceTrailingZeros).trim(); + actualInput.classList.add('numberInputMask__textInput', this.options.cssClassSuccess); // configure the unmasked input + // ---------------------------------------------------- + + unmaskedInput.value = actualInput.dataset.valueUnmasked; + unmaskedInput.setAttribute('aria-hidden', 'true'); + unmaskedInput.setAttribute('type', 'hidden'); + unmaskedInput.setAttribute('class', actualInputClasses); + if (actualInputId) unmaskedInput.setAttribute('id', "".concat(actualInputId, "-unmasked")); + if (actualInputName) unmaskedInput.setAttribute('name', "".concat(actualInputName, "-unmasked")); + if (actualInputRequired) unmaskedInput.setAttribute('required', 'required'); + if (actualInputStep) unmaskedInput.setAttribute('step', actualInputStep);else { + var decimals = countDecimals(unmaskedInput.value); + var step = '1'; + + if (decimals > 0) { + step = ".".concat(Array(decimals).join('0'), "1"); + } + + unmaskedInput.setAttribute('step', step); + } + if (actualInputMin) unmaskedInput.setAttribute('min', actualInputMin); + if (actualInputMax) unmaskedInput.setAttribute('max', actualInputMax); + unmaskedInput.dataset.inputId = actualInputId; + unmaskedInput.dataset.mask = actualInputMask; + unmaskedInput.dataset.groupingSeparator = actualInputGroupingSeparator; + unmaskedInput.dataset.decimalSeparator = actualInputDecimalSeparator; + if (actualInputForceTrailingZeros) unmaskedInput.dataset.forceTrailingZeros = actualInputForceTrailingZeros; + + if (!isWrapped) { + unmaskedInput.classList.add('numberInputMask__unmaskedInput'); + unmaskedInput.addEventListener('keydown', this._unmaskedInputHandler); + unmaskedInput.addEventListener('keyup', this._unmaskedInputHandler); + unmaskedInput.addEventListener('focusout', this._unmaskedInputHandler); // configure the wrapper + + wrap.setAttribute('class', 'numberInputMask__wrap'); + wrap.appendChild(unmaskedInput); + wrap.appendChild(actualInput); + } + + if (!isNaN(Number(actualInput.dataset.valueUnmasked))) { + if (this._validateInput(unmaskedInput, actualInput)) { + this.__fireOnUpdate(actualInput.value, actualInput.dataset.valueUnmasked, actualInput); + } + } else { + actualInput.classList.add(this.options.cssClassError); + } + + return wrap; + } + /** + * Unwrap the masked input and remove the value changed listener + * + * @param {HTMLSpanElement} wrapper the wrapper span instance + * + * @protected + */ + + }, { + key: "_unwrap", + value: function _unwrap(wrapper) { + var actualInput = wrapper.querySelector('.numberInputMask__textInput'), + actualInputId = actualInput.id, + unmaskedInput = wrapper.querySelector("#".concat(actualInputId, "-unmasked")); + unmaskedInput.removeEventListener('keyup', this._unmaskedInputHandler); + unmaskedInput.removeEventListener('keypress', this._unmaskedInputHandler); + unmaskedInput.removeEventListener('focusout', this._unmaskedInputHandler); + wrapper.removeChild(unmaskedInput); + actualInput.removeEventListener('click', this._actualInputHandler); + actualInput.removeEventListener('focusin', this._actualInputHandler); + actualInput.classList.remove('numberInputMask__textInput'); + actualInput.classList.remove(this.options.cssClassError); + actualInput.classList.remove(this.options.cssClassSuccess); + delete actualInput.dataset.valueUnmasked; + wrapper.parentNode.insertBefore(actualInput, wrapper); + wrapper.parentNode.removeChild(wrapper); + } + /** + * Listen to click and focusin event on the actual input and toggle the number input + * + * @param {Event} e + * + * @protected + */ + + }, { + key: "_actualInputHandler", + value: function _actualInputHandler(e) { + var actualInput = e.target, + actualInputId = actualInput.id, + unmaskedInput = this.options.doc.querySelector("#".concat(actualInputId, "-unmasked")); + actualInput.setAttribute('aria-hidden', 'true'); + actualInput.setAttribute('type', 'hidden'); + unmaskedInput.removeAttribute('aria-hidden'); + unmaskedInput.setAttribute('type', 'number'); + + this._validateInput(unmaskedInput, actualInput); + + setTimeout(function () { + unmaskedInput.focus(); + var length = String(unmaskedInput.value).length; + unmaskedInput.type = 'text'; + unmaskedInput.setSelectionRange(length, length); + unmaskedInput.type = 'number'; + }, 0); + } + /** + * Listen to the unmasked input keydown and focusout events and check + * if the input value can be masked or not + * + * @param {Event} e + * + * @protected + */ + + }, { + key: "_unmaskedInputHandler", + value: function _unmaskedInputHandler(e) { + var unmaskedInput = e.target, + keyCode = e.keyCode, + mask = unmaskedInput.dataset.mask, + groupingSeparator = unmaskedInput.dataset.groupingSeparator, + decimalSeparator = unmaskedInput.dataset.decimalSeparator, + forceTrailingZeros = unmaskedInput.dataset.forceTrailingZeros, + actualInputId = unmaskedInput.dataset.inputId, + actualInput = this.options.doc.querySelector("#".concat(actualInputId)); + + var restore = false, + apply = false, + maskedValue = false, + isValid = this._validateInput(unmaskedInput, actualInput); + + try { + maskedValue = __WEBPACK_IMPORTED_MODULE_0_bbj_masks_src_NumberMask___default.a.mask(unmaskedInput.value || 0, mask, groupingSeparator, decimalSeparator, forceTrailingZeros, false).trim(); + } catch (e) { + maskedValue = false; + + this.__applyCssClassState(unmaskedInput, actualInput, 'error'); + + this.__fireOnInvalid(e, actualInput); + } + + restore = [13, 27].indexOf(keyCode) > -1 || e.type === 'focusout'; + apply = maskedValue && isValid; + + if (restore) { + unmaskedInput.classList.remove(this.options.cssClassError); + unmaskedInput.classList.remove(this.options.cssClassSuccess); + unmaskedInput.setAttribute('aria-hidden', 'true'); + unmaskedInput.setAttribute('type', 'hidden'); + actualInput.removeAttribute('aria-hidden'); + actualInput.setAttribute('type', 'text'); + actualInput.classList.add(this.options.cssClassSuccess); + + if (apply) { + actualInput.value = maskedValue; + actualInput.dataset.valueUnmasked = unmaskedInput.value; + + this.__fireOnUpdate(maskedValue, unmaskedInput.value, actualInput); + } else { + unmaskedInput.value = actualInput.dataset.valueUnmasked; + + this.__applyCssClassState(unmaskedInput, actualInput, 'success'); + } + } + } + /** + * Trigger `checkValidity` on the input + * + * @param {HTMLInputElement} unmaskedInput + * @param {HTMLInputElement} actualInput + * + * @returns {Boolean} true when valid , false otherwise + * + * @protected + */ + + }, { + key: "_validateInput", + value: function _validateInput(unmaskedInput, actualInput) { + var isValid = true; + var value = Number(unmaskedInput.value); + + if (unmaskedInput.getAttribute('type') === 'hidden' && !isNaN(value)) { + var max = unmaskedInput.getAttribute('max'); + var min = unmaskedInput.getAttribute('min'); + var step = unmaskedInput.getAttribute('step'); + if (min) isValid = isValid && value >= Number(min); + if (max) isValid = isValid && value <= Number(max); + if (step) isValid = isValid && countDecimals(step) === countDecimals(unmaskedInput.value); + } else isValid = unmaskedInput.checkValidity(); + + if (isValid) { + this.__applyCssClassState(unmaskedInput, actualInput, 'success'); + } else { + this.__applyCssClassState(unmaskedInput, actualInput, 'error'); + + this.__fireOnInvalid(unmaskedInput.validationMessage || 'Validity check fails', actualInput); + } + + return isValid; + } + /** + * @param {String} valueMasked masked value + * @param {Number} valueUnmasked original value + * @param {HTMLInputElement} input the actual input instance + * + * @private + */ + + }, { + key: "__fireOnUpdate", + value: function __fireOnUpdate(valueMasked, valueUnmasked, input) { + if (this.options.onUpdate) { + this.options.onUpdate(valueMasked, valueUnmasked, input); + } + } + /** + * @param {String|Object} error last occurred error. could be mask error or validation error + * @param {HTMLInputElement} input the actual input instance + * + * @private + */ + + }, { + key: "__fireOnInvalid", + value: function __fireOnInvalid(error, input) { + if (this.options.onInvalid) { + this.options.onInvalid(error, input); + } + } + /** + * @private + */ + + }, { + key: "__applyCssClassState", + value: function __applyCssClassState(unmaskedInput, actualInput, state) { + if (actualInput.hasAttribute('readonly') || actualInput.hasAttribute('disabled')) { + actualInput.classList.remove(this.options.cssClassError); + actualInput.classList.remove(this.options.cssClassSuccess); + unmaskedInput.classList.remove(this.options.cssClassError); + unmaskedInput.classList.remove(this.options.cssClassSuccess); + } else { + if (state === 'success') { + actualInput.classList.remove(this.options.cssClassError); + actualInput.classList.add(this.options.cssClassSuccess); + unmaskedInput.classList.remove(this.options.cssClassError); + unmaskedInput.classList.add(this.options.cssClassSuccess); + } + + if (state === 'error') { + actualInput.classList.add(this.options.cssClassError); + actualInput.classList.remove(this.options.cssClassSuccess); + unmaskedInput.classList.add(this.options.cssClassError); + unmaskedInput.classList.remove(this.options.cssClassSuccess); + } + } + } + }]); + + return NumberInput; + }(); + /* harmony default export */ + + + __webpack_exports__["a"] = NumberInput; + /***/ + }, + /* 7 */ + + /***/ + function (module, exports) { + module.exports = __WEBPACK_EXTERNAL_MODULE_7__; + /***/ + } + /******/ + ]) + ); +}); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../BBjGridExWidget/client/node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!../../bbj-masks/dist/bbj-masks.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4!/mnt/d/Github/bbj-masks/dist/bbj-masks.js ***! + \*****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +(function webpackUniversalModuleDefinition(root, factory) { + if (( false ? undefined : _typeof(exports)) === 'object' && ( false ? undefined : _typeof(module)) === 'object') module.exports = factory();else if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {} +})(typeof self !== 'undefined' ? self : void 0, function () { + return ( + /******/ + function (modules) { + // webpackBootstrap + + /******/ + // The module cache + + /******/ + var installedModules = {}; + /******/ + + /******/ + // The require function + + /******/ + + function __webpack_require__(moduleId) { + /******/ + + /******/ + // Check if module is in cache + + /******/ + if (installedModules[moduleId]) { + /******/ + return installedModules[moduleId].exports; + /******/ + } + /******/ + // Create a new module (and put it into the cache) + + /******/ + + + var module = installedModules[moduleId] = { + /******/ + i: moduleId, + + /******/ + l: false, + + /******/ + exports: {} + /******/ + + }; + /******/ + + /******/ + // Execute the module function + + /******/ + + modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + /******/ + + /******/ + // Flag the module as loaded + + /******/ + + module.l = true; + /******/ + + /******/ + // Return the exports of the module + + /******/ + + return module.exports; + /******/ + } + /******/ + + /******/ + + /******/ + // expose the modules object (__webpack_modules__) + + /******/ + + + __webpack_require__.m = modules; + /******/ + + /******/ + // expose the module cache + + /******/ + + __webpack_require__.c = installedModules; + /******/ + + /******/ + // define getter function for harmony exports + + /******/ + + __webpack_require__.d = function (exports, name, getter) { + /******/ + if (!__webpack_require__.o(exports, name)) { + /******/ + Object.defineProperty(exports, name, { + /******/ + configurable: false, + + /******/ + enumerable: true, + + /******/ + get: getter + /******/ + + }); + /******/ + } + /******/ + + }; + /******/ + + /******/ + // getDefaultExport function for compatibility with non-harmony modules + + /******/ + + + __webpack_require__.n = function (module) { + /******/ + var getter = module && module.__esModule ? + /******/ + function getDefault() { + return module['default']; + } : + /******/ + function getModuleExports() { + return module; + }; + /******/ + + __webpack_require__.d(getter, 'a', getter); + /******/ + + + return getter; + /******/ + }; + /******/ + + /******/ + // Object.prototype.hasOwnProperty.call + + /******/ + + + __webpack_require__.o = function (object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + /******/ + + /******/ + // __webpack_public_path__ + + /******/ + + + __webpack_require__.p = ""; + /******/ + + /******/ + // Load entry module and return exports + + /******/ + + return __webpack_require__(__webpack_require__.s = 5); + /******/ + }( + /************************************************************************/ + + /******/ + [ + /* 0 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = toInteger; + + function toInteger(dirtyNumber) { + if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { + return NaN; + } + + var number = Number(dirtyNumber); + + if (isNaN(number)) { + return number; + } + + return number < 0 ? Math.ceil(number) : Math.floor(number); + } + /***/ + + }, + /* 1 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__NumberMask__ = __webpack_require__(6); + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* harmony default export */ + + + __webpack_exports__["a"] = __WEBPACK_IMPORTED_MODULE_0__NumberMask__["a" + /* default */ + ]; + /***/ + }, + /* 2 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__DateMask__ = __webpack_require__(7); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "e", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["e"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "g", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["g"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "h", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["h"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "a", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["a"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "b", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["b"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "d", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["d"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "f", function () { + return __WEBPACK_IMPORTED_MODULE_0__DateMask__["f"]; + }); + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* harmony default export */ + + + __webpack_exports__["c"] = __WEBPACK_IMPORTED_MODULE_0__DateMask__["c" + /* default */ + ]; + /***/ + }, + /* 3 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = tzParseTimezone; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__tzTokenizeDate_index_js__ = __webpack_require__(9); + + var MILLISECONDS_IN_HOUR = 3600000; + var MILLISECONDS_IN_MINUTE = 60000; + var patterns = { + timezone: /([Z+-].*)$/, + timezoneZ: /^(Z)$/, + timezoneHH: /^([+-])(\d{2})$/, + timezoneHHMM: /^([+-])(\d{2}):?(\d{2})$/, + timezoneIANA: /(UTC|(?:[a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?))$/ + }; // Parse various time zone offset formats to an offset in milliseconds + + function tzParseTimezone(timezoneString, date) { + var token; + var absoluteOffset; // Z + + token = patterns.timezoneZ.exec(timezoneString); + + if (token) { + return 0; + } + + var hours; // ±hh + + token = patterns.timezoneHH.exec(timezoneString); + + if (token) { + hours = parseInt(token[2], 10); + + if (!validateTimezone(hours)) { + return NaN; + } + + absoluteOffset = hours * MILLISECONDS_IN_HOUR; + return token[1] === '+' ? -absoluteOffset : absoluteOffset; + } // ±hh:mm or ±hhmm + + + token = patterns.timezoneHHMM.exec(timezoneString); + + if (token) { + hours = parseInt(token[2], 10); + var minutes = parseInt(token[3], 10); + + if (!validateTimezone(hours, minutes)) { + return NaN; + } + + absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE; + return token[1] === '+' ? -absoluteOffset : absoluteOffset; + } // IANA time zone + + + token = patterns.timezoneIANA.exec(timezoneString); + + if (token) { + // var [fYear, fMonth, fDay, fHour, fMinute, fSecond] = tzTokenizeDate(date, timezoneString) + var tokens = Object(__WEBPACK_IMPORTED_MODULE_0__tzTokenizeDate_index_js__["a" + /* default */ + ])(date, timezoneString); + var asUTC = Date.UTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3], tokens[4], tokens[5]); + var timestampWithMsZeroed = date.getTime() - date.getTime() % 1000; + return -(asUTC - timestampWithMsZeroed); + } + + return 0; + } + + function validateTimezone(hours, minutes) { + if (minutes != null && (minutes < 0 || minutes > 59)) { + return false; + } + + return true; + } + /***/ + + }, + /* 4 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__StringMask__ = __webpack_require__(19); + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* harmony default export */ + + + __webpack_exports__["a"] = __WEBPACK_IMPORTED_MODULE_0__StringMask__["a" + /* default */ + ]; + /***/ + }, + /* 5 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + Object.defineProperty(__webpack_exports__, "__esModule", { + value: true + }); + /* harmony export (binding) */ + + __webpack_require__.d(__webpack_exports__, "Utils", function () { + return Utils; + }); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0__NumberMask__ = __webpack_require__(1); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__DateMask__ = __webpack_require__(2); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_2__StringMask__ = __webpack_require__(4); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_3__Types__ = __webpack_require__(20); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "Types", function () { + return __WEBPACK_IMPORTED_MODULE_3__Types__["a"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "NumberMask", function () { + return __WEBPACK_IMPORTED_MODULE_0__NumberMask__["a"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "DateMask", function () { + return __WEBPACK_IMPORTED_MODULE_1__DateMask__["c"]; + }); + /* harmony reexport (binding) */ + + + __webpack_require__.d(__webpack_exports__, "StringMask", function () { + return __WEBPACK_IMPORTED_MODULE_2__StringMask__["a"]; + }); + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + var Utils = { + Dates: { + getDayOfYear: __WEBPACK_IMPORTED_MODULE_1__DateMask__["e" + /* getDayOfYear */ + ], + getWeekNumber: __WEBPACK_IMPORTED_MODULE_1__DateMask__["g" + /* getWeekNumber */ + ], + getWeekStartByLocale: __WEBPACK_IMPORTED_MODULE_1__DateMask__["h" + /* getWeekStartByLocale */ + ], + IS_DATE_REGEX: __WEBPACK_IMPORTED_MODULE_1__DateMask__["a" + /* IS_DATE_REGEX */ + ], + IS_TIME_REGEX: __WEBPACK_IMPORTED_MODULE_1__DateMask__["b" + /* IS_TIME_REGEX */ + ], + fixShortISO: __WEBPACK_IMPORTED_MODULE_1__DateMask__["d" + /* fixShortISO */ + ], + getTimezoneOrOffset: __WEBPACK_IMPORTED_MODULE_1__DateMask__["f" + /* getTimezoneOrOffset */ + ] + } + }; + /* harmony default export */ + + __webpack_exports__["default"] = __WEBPACK_IMPORTED_MODULE_3__Types__["a" + /* default */ + ]; + /***/ + }, + /* 6 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /** + * NumberMask + * + * A javascript implementation for BBj numbers masking + * + * @author Hyyan Abo Fakher + */ + + + var NumberMask = /*#__PURE__*/function () { + function NumberMask() { + _classCallCheck(this, NumberMask); + } + + _createClass(NumberMask, null, [{ + key: "mask", + + /** + * Mask the given number with the given mask according to BBj rules + * + * @param {Number} number the number to format + * @param {String} mask the mask to use for formatting + * @param {String} [groupingSeparator=,] - a char which will be used as a grouping separator + * @param {String} [decimalSeparator=.] - a char which will be used as a decimal separator + * @param {Boolean} [forceTrailingZeros=false] - Affects the output by switching the way a mask with "#" characters in the trailing positions is filled. + * for example, the function `NumberMask.mask(.10:"#.##")` returns ` .10` instead of ` .1 ` + * @param {Boolean} [loose=true] when true , errors will be ignored and the method will try at apply the mask + * anyway , otherwise it will stop at first error and throw it. + * + * @throws {MaskError} only if loose is disabled + * + * @returns {String} the masked number + */ + value: function mask(number, _mask) { + var groupingSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ','; + var decimalSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.'; + var forceTrailingZeros = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var loose = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var maskLen = _mask.length; + + if (0 === maskLen) { + if (loose) return str; // friendly silent fail + else throw { + name: 'MaskError', + message: "MaskError: Mask is empty" + }; + } // Get magnitude and precision of MASK + + + var maskBeforeDecimal = 0; + var maskAfterDecimal = 0; + var foundDecimal = false; + + for (var i = 0; i < maskLen; ++i) { + var m = _mask.charAt(i); + + if (m == '0' || m == '#') { + if (foundDecimal) ++maskAfterDecimal;else ++maskBeforeDecimal; + } else if (m == '.') foundDecimal = true; + } + + var num = NumberMask._round(number, maskAfterDecimal); + + var bytes = NumberMask._toCharArray(num); // Get magnitude and precision of NUMBER + + + var inLen = bytes.length; + var numBeforeDecimal = 0; + var numAfterDecimal = 0; + foundDecimal = false; + + for (var _i = 0; _i < inLen; ++_i) { + if (bytes[_i] == '.') foundDecimal = true;else { + if (foundDecimal) ++numAfterDecimal;else ++numBeforeDecimal; + } + } // always ignore mask overflow + + + if (numBeforeDecimal > maskBeforeDecimal) { + if (loose) return number.toString(); // friendly silent fail + else throw { + name: 'MaskError', + message: "MaskError: Number is too large for mask" + }; + } // round if mask is for a lower precision number + + + if (numAfterDecimal > maskAfterDecimal) { + num = NumberMask._round(num, maskAfterDecimal); + bytes = NumberMask._toCharArray(num); + inLen = bytes.length; // Get new magnitude and precision of NUMBER + + numBeforeDecimal = 0; + numAfterDecimal = 0; + foundDecimal = false; + + for (var _i2 = 0; _i2 < inLen; ++_i2) { + if (bytes[_i2] == '.') foundDecimal = true;else { + if (foundDecimal) ++numAfterDecimal;else ++numBeforeDecimal; + } + } // always ignore mask overflow + + + if (numBeforeDecimal > maskBeforeDecimal) { + if (loose) return number.toString(); // friendly silent fail + else throw { + name: 'MaskError', + message: "MaskError: Number is too large for mask" + }; + } + } + + var fillByte = ' ', + floatByte = ' '; + var inPos = 0, + outPos = 0, + floatPos = 0; + if (_mask.charAt(0) == '*') fillByte = '*'; + var fillInit = fillByte; + var isNegative = NumberMask._getSign(num) < 0; + var emitDecimal = inLen > 0 || _mask.indexOf('0') >= 0; + var foundZero = false; + var foundDigit = false; + var currency = false; + foundDecimal = false; + var ret = new Array(maskLen); + + for (var maskPos = 0; maskPos < maskLen; ++maskPos) { + var _m = _mask.charAt(maskPos); + + switch (_m) { + case '0': + --maskBeforeDecimal; + + if (maskBeforeDecimal < numBeforeDecimal && inPos < inLen) { + ret[outPos] = bytes[inPos]; + ++inPos; + foundDigit = true; + } else { + ret[outPos] = '0'; + foundZero = true; + } + + ++outPos; + break; + + case '#': + --maskBeforeDecimal; + + if (maskBeforeDecimal < numBeforeDecimal && inPos < inLen) { + ret[outPos] = bytes[inPos]; + ++inPos; + foundDigit = true; + } else { + ret[outPos] = foundDecimal && forceTrailingZeros && NumberMask._getSign(num) != 0 ? '0' : fillByte; + if (!foundDecimal) floatPos = maskPos; + } + + ++outPos; + break; + + case ',': + if (foundZero || inPos > 0) ret[outPos] = groupingSeparator;else { + ret[outPos] = fillByte; + if (!foundDecimal) floatPos = maskPos; + } + ++outPos; + break; + + case '-': + if (!foundDigit && floatByte == ' ') { + if (isNegative) floatByte = '-'; + ret[outPos] = fillByte; + floatPos = foundDecimal ? -1 : maskPos; + } else ret[outPos] = isNegative ? '-' : fillByte; + + ++outPos; + break; + + case '+': + if (!foundDigit && floatByte == ' ') { + floatByte = isNegative ? '-' : '+'; + ret[outPos] = fillByte; + floatPos = foundDecimal ? -1 : maskPos; + } else ret[outPos] = isNegative ? '-' : '+'; + + ++outPos; + break; + + case '$': + if (!foundDigit && floatByte == ' ') { + floatByte = '$'; + ret[outPos] = fillByte; + floatPos = foundDecimal ? -1 : maskPos; + } else { + ret[outPos] = '$'; + } + + ++outPos; + break; + // case '&': + // currency = true + // if (!foundDigit && floatByte == ' ') { + // floatByte = '&' + // ret[outPos] = fillByte + // floatPos = foundDecimal ? -1 : maskPos + // } else { + // ret[outPos] = '&' + // } + // ++outPos + // break + // case '@': + // currency = true + // if (!foundDigit && floatByte == ' ') { + // floatByte = '@' + // ret[outPos] = fillByte + // floatPos = foundDecimal ? -1 : maskPos + // } else { + // ret[outPos] = '@' + // } + // ++outPos + // break + + case '(': + if (!foundDigit && floatByte == ' ') { + if (isNegative) floatByte = '('; + ret[outPos] = fillByte; + floatPos = foundDecimal ? -1 : maskPos; + } else { + if (isNegative) { + ret[outPos] = '('; + } else { + ret[outPos] = foundDecimal ? ' ' : fillByte; + } + } + + ++outPos; + break; + + case ')': + if (isNegative) { + ret[outPos] = ')'; + } else { + ret[outPos] = foundDecimal ? ' ' : fillByte; + } + + ++outPos; + break; + + case 'C': + if (maskPos < maskLen - 1 && _mask.charAt(maskPos + 1) == 'R') { + if (isNegative) { + ret[outPos] = 'C'; + ret[outPos + 1] = 'R'; + } else { + ret[outPos] = ' '; + ret[outPos + 1] = ' '; + } + + outPos += 2; + ++maskPos; + } else { + ret[outPos] = 'C'; + ++outPos; + } + + break; + + case 'D': + if (maskPos < maskLen - 1 && _mask.charAt(maskPos + 1) == 'R') { + if (isNegative) { + ret[outPos] = 'C'; + ret[outPos + 1] = 'R'; + } else { + ret[outPos] = 'D'; + ret[outPos + 1] = 'R'; + } + + outPos += 2; + ++maskPos; + } else { + ret[outPos] = 'D'; + ++outPos; + } + + break; + + case '*': + ret[outPos] = '*'; + ++outPos; + break; + + case '.': + ret[outPos] = emitDecimal ? decimalSeparator : fillByte; + fillByte = ' '; + foundDecimal = true; + ++inPos; + ++outPos; + break; + + case 'B': + ret[outPos] = ' '; + ++outPos; + break; + + default: + ret[outPos] = _m; + ++outPos; + break; + } + } + + if (floatByte != ' ') { + if (floatPos < 0) floatPos = outPos; + + while (floatPos >= maskLen) { + --floatPos; + } + + if (ret[floatPos] == fillInit) ret[floatPos] = floatByte; + } + + return ret.join(''); + } + }, { + key: "_shift", + value: function _shift(number, precision, reverseShift) { + if (reverseShift) precision = -precision; + var numArray = ('' + number).split('e'); + return +(numArray[0] + 'e' + (numArray[1] ? +numArray[1] + precision : precision)); + } + }, { + key: "_round", + value: function _round(number, precision) { + return NumberMask._shift(Math.round(NumberMask._shift(number, precision, false)), precision, true); + } + }, { + key: "_toCharArray", + value: function _toCharArray(number) { + var signum = NumberMask._getSign(number); + + var chars = []; + + if (signum !== 0) { + var string = signum < 0 ? "".concat(-1 * number.toString()) : number.toString(); + if (string.length > 1 && string.charAt(0) == '0') string = string.substring(1); // The string contains only [0-9] and '.' + + chars = string.split(''); + } + + return chars; + } + /** + * Returns the sign of a number + * + * @param {Number} x number + * @returns {Number} A number representing the sign of the given argument. + * If the argument is a positive number, negative number, positive zero + * or negative zero, the function will return 1, -1, 0 or -0 respectively. + * Otherwise, NaN is returned. + */ + + }, { + key: "_getSign", + value: function _getSign(x) { + return (x > 0) - (x < 0) || +x; + } + }]); + + return NumberMask; + }(); + /* harmony default export */ + + + __webpack_exports__["a"] = NumberMask; + /***/ + }, + /* 7 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (binding) */ + + __webpack_require__.d(__webpack_exports__, "b", function () { + return IS_TIME_REGEX; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "a", function () { + return IS_DATE_REGEX; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "h", function () { + return getWeekStartByLocale; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "e", function () { + return getDayOfYear; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "d", function () { + return fixShortISO; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "f", function () { + return getTimezoneOrOffset; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "g", function () { + return getWeekNumber; + }); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0_date_fns_tz_utcToZonedTime__ = __webpack_require__(8); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1_weekstart__ = __webpack_require__(15); + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + var IS_TIME_REGEX = /^(2[0-3]|[01][0-9]):?([0-5][0-9]):?([0-5][0-9])(Z|[+-](?:2[0-3]|[01][0-9])(?::?(?:[0-5][0-9]))?)$/; + var IS_DATE_REGEX = /^(([12]\d{3})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(Z|[+-](?:2[0-3]|[01][0-9])(?::?(?:[0-5][0-9]))?))$/; + /** + * Find out when the first day of the week based on the passed locale + * + * @param {locale} locale + * + * @return {Number} a number 0 = sunday , 1 = monday , .... + */ + + var getWeekStartByLocale = function getWeekStartByLocale(locale) { + return Object(__WEBPACK_IMPORTED_MODULE_1_weekstart__["a" + /* getWeekStartByLocale */ + ])(locale); + }; + /** + * Get day number in the year of the passed date + * + * @param {Date} date + * + * @return {Number} day number + */ + + + var getDayOfYear = function getDayOfYear(date) { + var start = new Date(date.getFullYear(), 0, 0); + var diff = date - start + (start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000; + var oneDay = 1000 * 60 * 60 * 24; + var day = Math.floor(diff / oneDay); + return day; + }; + /** + * Takes incomplete iso string and return a complete one + * + * @param {String} date incomplete iso string + * + * @return {String} complete iso string + */ + + + var fixShortISO = function fixShortISO(date) { + var value = date; + var offset = (value.match(/z$|[+\-]\d\d:\d\d$/i) || [])[0]; + + if (!offset) { + offset = 'Z'; + value += offset; + } + + if (IS_TIME_REGEX.test(value)) { + value = "1970-01-01T".concat(value); + } else if (IS_DATE_REGEX.test(value)) { + value = "".concat(value.split(offset)[0], "T00:00:00").concat(offset); + } + + return value; + }; + /** + * Get the browser timezone name , if not supported then the browser + * timezone offset formatted + * + * @return {String} timezone of offset + */ + + + var getTimezoneOrOffset = function getTimezoneOrOffset() { + var timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + + if (!timezone) { + var pad = function pad(number, length) { + var str = '' + number; + + while (str.length < length) { + str = '0' + str; + } + + return str; + }; + + var offset = new Date().getTimezoneOffset(); + offset = (offset < 0 ? '+' : '-') + // Note the reversed sign! + pad(parseInt(Math.abs(offset / 60)), 2) + pad(Math.abs(offset % 60), 2); + return offset; + } + + return timezone; + }; + /** + * Get the Week Number in the passed date + * + * @param {Date} date - Date object + * @param {Number} weekStart A number which defines the first day of the week (0 = sunday , 1 = monday , ...) + * + * @returns {Number} the week number + */ + + + var getWeekNumber = function getWeekNumber(date, weekStart) { + var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + var dayNum = d.getUTCDay() - (weekStart - 1) || 7; + d.setUTCDate(d.getUTCDate() + 4 - dayNum); + var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); + return Math.ceil(((d - yearStart) / 86400000 + 1) / 7); + }; + /** + * DateMask + * + * A javascript implementation for BBj dates masking + * + * @author Hyyan Abo Fakher + */ + + + var DateMask = /*#__PURE__*/function () { + function DateMask() { + _classCallCheck(this, DateMask); + } + + _createClass(DateMask, null, [{ + key: "mask", + + /** + * Mask date + * + * Mask the passed date with the passed mask + * + * @param {String} date date as a string + * @param {String} mask mask as a string + * @param {String} [locale=Browser's locale] the language to use ex(en-US). default is to the system language + * @param {String} [timezone=System timezone] the time zone descriptor (e.g. America/Los_Angeles). default to the system + * timezone + * + * @return {String} a date masked with the given mask + */ + value: function mask(date, _mask, locale, timezone) { + if (!date) return ''; + if (!_mask) return date; + timezone = timezone || getTimezoneOrOffset(); + locale = locale || Intl.DateTimeFormat().resolvedOptions().locale || 'en-US'; // make sure we have a complete iso string + + date = date instanceof Date ? date : fixShortISO(date); + var dateObject = Object(__WEBPACK_IMPORTED_MODULE_0_date_fns_tz_utcToZonedTime__["a" + /* default */ + ])(date, timezone); + + var translation = DateMask._buildTranslation({ + year: dateObject.getFullYear(), + month: dateObject.getMonth() + 1, + monthShort: new Intl.DateTimeFormat([locale], { + month: 'short' + }).format(dateObject), + monthLong: new Intl.DateTimeFormat([locale], { + month: 'long' + }).format(dateObject), + day: dateObject.getDate(), + dayShort: new Intl.DateTimeFormat([locale], { + weekday: 'short' + }).format(dateObject), + dayLong: new Intl.DateTimeFormat([locale], { + weekday: 'long' + }).format(dateObject), + minutes: dateObject.getMinutes(), + seconds: dateObject.getSeconds(), + + get hours24() { + return dateObject.getHours(); + }, + + get hours12() { + return this.hours24 % 12 || 12; + }, + + dayOfYear: getDayOfYear(dateObject), + dayOfWeek: dateObject.getDay() + 1, + // Sunday = 1 in BBj but Sunday = 0 in JS + weekNumber: getWeekNumber(dateObject, getWeekStartByLocale(locale)), + locale: locale, + timezone: timezone + }); + + var result = _mask; + + for (var k in translation) { + result = result.replace(new RegExp('(%' + k + ')', 'g'), translation[k]); + } + + return result; + } + /** + * Get a map object which contains all possible forms of masks + * + * @param {Object} dateDetails date + * + * @return {Object} forms masks + */ + + }, { + key: "_buildTranslation", + value: function _buildTranslation(dateDetails) { + return { + // year + Yz: dateDetails.year.toString().substr(-2), + Ys: dateDetails.year, + Yl: dateDetails.year, + Yp: String.fromCharCode(dateDetails.year), + Yd: dateDetails.year, + Y: dateDetails.year, + // month + Mz: String(dateDetails.month).length == 1 ? '0' + dateDetails.month : dateDetails.month, + Ms: dateDetails.monthShort, + Ml: dateDetails.monthLong, + Mp: String.fromCharCode(dateDetails.month), + Md: dateDetails.month, + M: dateDetails.month, + // day + Dz: String(dateDetails.day).length == 1 ? '0' + dateDetails.day : dateDetails.day, + Ds: dateDetails.dayShort, + Dl: dateDetails.dayLong, + Dp: String.fromCharCode(dateDetails.day), + Dd: dateDetails.day, + D: dateDetails.day, + // hour 24 + Hz: String(dateDetails.hours24).length == 1 ? '0' + dateDetails.hours24 : dateDetails.hours24, + Hs: dateDetails.hours24, + Hl: dateDetails.hours24, + Hp: String.fromCharCode(dateDetails.hours24), + Hd: dateDetails.hours24, + H: dateDetails.hours24, + // hour 12 + hz: String(dateDetails.hours12).length == 1 ? '0' + dateDetails.hours12 : dateDetails.hours12, + hs: dateDetails.hours12, + hl: dateDetails.hours12, + hp: String.fromCharCode(dateDetails.hours12), + hd: dateDetails.hours12, + h: dateDetails.hours12, + // minutes + mz: String(dateDetails.minutes).length == 1 ? '0' + dateDetails.minutes : dateDetails.minutes, + ms: dateDetails.minutes, + ml: dateDetails.minutes, + mp: String.fromCharCode(dateDetails.minutes), + md: dateDetails.minutes, + m: dateDetails.minutes, + // seconds + sz: String(dateDetails.seconds).length == 1 ? '0' + dateDetails.seconds : dateDetails.seconds, + ss: dateDetails.seconds, + sl: dateDetails.seconds, + sp: String.fromCharCode(dateDetails.seconds), + sd: dateDetails.seconds, + s: dateDetails.seconds, + // AM , PM + PP: dateDetails.hours24 > 12 ? 'PM' : 'PM', + P: dateDetails.hours24 > 12 ? 'PM' : 'AM', + pp: dateDetails.hours24 > 12 ? 'pm' : 'am', + p: dateDetails.hours24 > 12 ? 'pm' : 'am', + // Day of Year + Jz: String(dateDetails.dayOfYear).length == 1 ? '0' + dateDetails.dayOfYear : dateDetails.dayOfYear, + Js: dateDetails.dayOfYear, + Jl: dateDetails.dayOfYear, + Jd: dateDetails.dayOfYear, + J: dateDetails.dayOfYear, + // Day Of Week + Wz: String(dateDetails.dayOfWeek).length == 1 ? '0' + dateDetails.dayOfWeek : dateDetails.dayOfWeek, + Ws: dateDetails.dayOfWeek, + Wl: dateDetails.dayOfWeek, + Wp: String.fromCharCode(dateDetails.dayOfWeek), + Wd: dateDetails.dayOfWeek, + W: dateDetails.dayOfWeek, + // week number + wz: String(dateDetails.weekNumber).length == 1 ? '0' + dateDetails.weekNumber : dateDetails.weekNumber, + ws: dateDetails.weekNumber, + wl: dateDetails.weekNumber, + wp: String.fromCharCode(dateDetails.weekNumber), + wd: dateDetails.weekNumber, + w: dateDetails.weekNumber + }; + } + }]); + + return DateMask; + }(); + /* harmony default export */ + + + __webpack_exports__["c"] = DateMask; + /***/ + }, + /* 8 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = utcToZonedTime; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__lib_tzParseTimezone__ = __webpack_require__(3); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1_date_fns_esm_subMilliseconds__ = __webpack_require__(10); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_2__toDate__ = __webpack_require__(13); + /** + * @name utcToZonedTime + * @category Time Zone Helpers + * @summary Get a date/time representing local time in a given time zone from the UTC date + * + * @description + * Returns a date instance with values representing the local time in the time zone + * specified of the UTC time from the date provided. In other words, when the new date + * is formatted it will show the equivalent hours in the target time zone regardless + * of the current system time zone. + * + * @param {Date|String|Number} date - the date with the relevant UTC time + * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone + * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options} + * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} + * @returns {Date} the new date with the equivalent time in the time zone + * @throws {TypeError} 2 arguments required + * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2 + * + * @example + * // In June 10am UTC is 6am in New York (-04:00) + * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York') + * //=> Jun 25 2014 06:00:00 + */ + + + function utcToZonedTime(dirtyDate, timeZone, options) { + var date = Object(__WEBPACK_IMPORTED_MODULE_2__toDate__["a" + /* default */ + ])(dirtyDate, options); // This date has the UTC time values of the input date at the system time zone + + var utcDate = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()); // We just need to apply the offset indicated by the time zone to this localized date + + var offsetMilliseconds = Object(__WEBPACK_IMPORTED_MODULE_0__lib_tzParseTimezone__["a" + /* default */ + ])(timeZone, date); + return offsetMilliseconds ? Object(__WEBPACK_IMPORTED_MODULE_1_date_fns_esm_subMilliseconds__["a" + /* default */ + ])(utcDate, offsetMilliseconds) : utcDate; + } + /***/ + + }, + /* 9 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = tzTokenizeDate; + /** + * Returns the [year, month, day, hour, minute, seconds] tokens of the provided + * `date` as it will be rendered in the `timeZone`. + */ + + function tzTokenizeDate(date, timeZone) { + var dtf = getDateTimeFormat(timeZone); + return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date); + } + + var typeToPos = { + year: 0, + month: 1, + day: 2, + hour: 3, + minute: 4, + second: 5 + }; + + function partsOffset(dtf, date) { + var formatted = dtf.formatToParts(date); + var filled = []; + + for (var i = 0; i < formatted.length; i++) { + var pos = typeToPos[formatted[i].type]; + + if (pos >= 0) { + filled[pos] = parseInt(formatted[i].value, 10); + } + } + + return filled; + } + + function hackyOffset(dtf, date) { + var formatted = dtf.format(date).replace(/\u200E/g, ''); + var parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted); // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed + // return [fYear, fMonth, fDay, fHour, fMinute, fSecond] + + return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]; + } // Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used + // to get deterministic local date/time output according to the `en-US` locale which + // can be used to extract local time parts as necessary. + + + var dtfCache = {}; + + function getDateTimeFormat(timeZone) { + if (!dtfCache[timeZone]) { + // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12` + var testDateFormatted = new Intl.DateTimeFormat('en-US', { + hour12: false, + timeZone: 'America/New_York', + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }).format(new Date('2014-06-25T04:00:00.123Z')); + var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' || testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'; + dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat('en-US', { + hour12: false, + timeZone: timeZone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }) : new Intl.DateTimeFormat('en-US', { + hourCycle: 'h23', + timeZone: timeZone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }); + } + + return dtfCache[timeZone]; + } + /***/ + + }, + /* 10 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = subMilliseconds; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__lib_toInteger_index_js__ = __webpack_require__(0); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__addMilliseconds_index_js__ = __webpack_require__(11); + /** + * @name subMilliseconds + * @category Millisecond Helpers + * @summary Subtract the specified number of milliseconds from the given date. + * + * @description + * Subtract the specified number of milliseconds from the given date. + * + * ### v2.0.0 breaking changes: + * + * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes). + * + * @param {Date|Number} date - the date to be changed + * @param {Number} amount - the amount of milliseconds to be subtracted + * @returns {Date} the new date with the milliseconds subtracted + * @throws {TypeError} 2 arguments required + * + * @example + * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000: + * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) + * //=> Thu Jul 10 2014 12:45:29.250 + */ + + + function subMilliseconds(dirtyDate, dirtyAmount) { + if (arguments.length < 2) { + throw new TypeError('2 arguments required, but only ' + arguments.length + ' present'); + } + + var amount = Object(__WEBPACK_IMPORTED_MODULE_0__lib_toInteger_index_js__["a" + /* default */ + ])(dirtyAmount); + return Object(__WEBPACK_IMPORTED_MODULE_1__addMilliseconds_index_js__["a" + /* default */ + ])(dirtyDate, -amount); + } + /***/ + + }, + /* 11 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = addMilliseconds; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__lib_toInteger_index_js__ = __webpack_require__(0); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__toDate_index_js__ = __webpack_require__(12); + /** + * @name addMilliseconds + * @category Millisecond Helpers + * @summary Add the specified number of milliseconds to the given date. + * + * @description + * Add the specified number of milliseconds to the given date. + * + * ### v2.0.0 breaking changes: + * + * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes). + * + * @param {Date|Number} date - the date to be changed + * @param {Number} amount - the amount of milliseconds to be added + * @returns {Date} the new date with the milliseconds added + * @throws {TypeError} 2 arguments required + * + * @example + * // Add 750 milliseconds to 10 July 2014 12:45:30.000: + * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) + * //=> Thu Jul 10 2014 12:45:30.750 + */ + + + function addMilliseconds(dirtyDate, dirtyAmount) { + if (arguments.length < 2) { + throw new TypeError('2 arguments required, but only ' + arguments.length + ' present'); + } + + var timestamp = Object(__WEBPACK_IMPORTED_MODULE_1__toDate_index_js__["a" + /* default */ + ])(dirtyDate).getTime(); + var amount = Object(__WEBPACK_IMPORTED_MODULE_0__lib_toInteger_index_js__["a" + /* default */ + ])(dirtyAmount); + return new Date(timestamp + amount); + } + /***/ + + }, + /* 12 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = toDate; + /** + * @name toDate + * @category Common Helpers + * @summary Convert the given argument to an instance of Date. + * + * @description + * Convert the given argument to an instance of Date. + * + * If the argument is an instance of Date, the function returns its clone. + * + * If the argument is a number, it is treated as a timestamp. + * + * If the argument is none of the above, the function returns Invalid Date. + * + * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. + * + * @param {Date|Number} argument - the value to convert + * @returns {Date} the parsed date in the local time zone + * @throws {TypeError} 1 argument required + * + * @example + * // Clone the date: + * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) + * //=> Tue Feb 11 2014 11:30:30 + * + * @example + * // Convert the timestamp to date: + * const result = toDate(1392098430000) + * //=> Tue Feb 11 2014 11:30:30 + */ + + function toDate(argument) { + if (arguments.length < 1) { + throw new TypeError('1 argument required, but only ' + arguments.length + ' present'); + } + + var argStr = Object.prototype.toString.call(argument); // Clone the date + + if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') { + // Prevent the date to lose the milliseconds when passed to new Date() in IE10 + return new Date(argument.getTime()); + } else if (typeof argument === 'number' || argStr === '[object Number]') { + return new Date(argument); + } else { + if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') { + // eslint-disable-next-line no-console + console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"); // eslint-disable-next-line no-console + + console.warn(new Error().stack); + } + + return new Date(NaN); + } + } + /***/ + + }, + /* 13 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = toDate; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0_date_fns_esm_lib_toInteger_index_js__ = __webpack_require__(0); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1_date_fns_esm_lib_getTimezoneOffsetInMilliseconds_index_js__ = __webpack_require__(14); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_2__lib_tzParseTimezone__ = __webpack_require__(3); + + var MILLISECONDS_IN_HOUR = 3600000; + var MILLISECONDS_IN_MINUTE = 60000; + var DEFAULT_ADDITIONAL_DIGITS = 2; + var patterns = { + dateTimeDelimeter: /[T ]/, + plainTime: /:/, + timeZoneDelimeter: /[Z ]/i, + // year tokens + YY: /^(\d{2})$/, + YYY: [/^([+-]\d{2})$/, // 0 additional digits + /^([+-]\d{3})$/, // 1 additional digit + /^([+-]\d{4})$/ // 2 additional digits + ], + YYYY: /^(\d{4})/, + YYYYY: [/^([+-]\d{4})/, // 0 additional digits + /^([+-]\d{5})/, // 1 additional digit + /^([+-]\d{6})/ // 2 additional digits + ], + // date tokens + MM: /^-(\d{2})$/, + DDD: /^-?(\d{3})$/, + MMDD: /^-?(\d{2})-?(\d{2})$/, + Www: /^-?W(\d{2})$/, + WwwD: /^-?W(\d{2})-?(\d{1})$/, + HH: /^(\d{2}([.,]\d*)?)$/, + HHMM: /^(\d{2}):?(\d{2}([.,]\d*)?)$/, + HHMMSS: /^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/, + // timezone tokens (to identify the presence of a tz) + timezone: /([Z+-].*| UTC|(?:[a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?))$/ + }; + /** + * @name toDate + * @category Common Helpers + * @summary Convert the given argument to an instance of Date. + * + * @description + * Convert the given argument to an instance of Date. + * + * If the argument is an instance of Date, the function returns its clone. + * + * If the argument is a number, it is treated as a timestamp. + * + * If an argument is a string, the function tries to parse it. + * Function accepts complete ISO 8601 formats as well as partial implementations. + * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601 + * If the function cannot parse the string or the values are invalid, it returns Invalid Date. + * + * If the argument is none of the above, the function returns Invalid Date. + * + * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. + * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined. + * + * @param {Date|String|Number} argument - the value to convert + * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options} + * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format + * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String. + * @returns {Date} the parsed date in the local time zone + * @throws {TypeError} 1 argument required + * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2 + * + * @example + * // Convert string '2014-02-11T11:30:30' to date: + * var result = toDate('2014-02-11T11:30:30') + * //=> Tue Feb 11 2014 11:30:30 + * + * @example + * // Convert string '+02014101' to date, + * // if the additional number of digits in the extended year format is 1: + * var result = toDate('+02014101', {additionalDigits: 1}) + * //=> Fri Apr 11 2014 00:00:00 + */ + + function toDate(argument, dirtyOptions) { + if (arguments.length < 1) { + throw new TypeError('1 argument required, but only ' + arguments.length + ' present'); + } + + if (argument === null) { + return new Date(NaN); + } + + var options = dirtyOptions || {}; + var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : Object(__WEBPACK_IMPORTED_MODULE_0_date_fns_esm_lib_toInteger_index_js__["a" + /* default */ + ])(options.additionalDigits); + + if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) { + throw new RangeError('additionalDigits must be 0, 1 or 2'); + } // Clone the date + + + if (argument instanceof Date || _typeof(argument) === 'object' && Object.prototype.toString.call(argument) === '[object Date]') { + // Prevent the date to lose the milliseconds when passed to new Date() in IE10 + return new Date(argument.getTime()); + } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') { + return new Date(argument); + } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) { + return new Date(NaN); + } + + var dateStrings = splitDateString(argument); + var parseYearResult = parseYear(dateStrings.date, additionalDigits); + var year = parseYearResult.year; + var restDateString = parseYearResult.restDateString; + var date = parseDate(restDateString, year); + + if (isNaN(date)) { + return new Date(NaN); + } + + if (date) { + var timestamp = date.getTime(); + var time = 0; + var offset; + + if (dateStrings.time) { + time = parseTime(dateStrings.time); + + if (isNaN(time)) { + return new Date(NaN); + } + } + + if (dateStrings.timezone || options.timeZone) { + offset = Object(__WEBPACK_IMPORTED_MODULE_2__lib_tzParseTimezone__["a" + /* default */ + ])(dateStrings.timezone || options.timeZone, new Date(timestamp + time)); + + if (isNaN(offset)) { + return new Date(NaN); + } + } else { + // get offset accurate to hour in timezones that change offset + offset = Object(__WEBPACK_IMPORTED_MODULE_1_date_fns_esm_lib_getTimezoneOffsetInMilliseconds_index_js__["a" + /* default */ + ])(new Date(timestamp + time)); + offset = Object(__WEBPACK_IMPORTED_MODULE_1_date_fns_esm_lib_getTimezoneOffsetInMilliseconds_index_js__["a" + /* default */ + ])(new Date(timestamp + time + offset)); + } + + return new Date(timestamp + time + offset); + } else { + return new Date(NaN); + } + } + + function splitDateString(dateString) { + var dateStrings = {}; + var array = dateString.split(patterns.dateTimeDelimeter); + var timeString; + + if (patterns.plainTime.test(array[0])) { + dateStrings.date = null; + timeString = array[0]; + } else { + dateStrings.date = array[0]; + timeString = array[1]; + dateStrings.timezone = array[2]; + + if (patterns.timeZoneDelimeter.test(dateStrings.date)) { + dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0]; + timeString = dateString.substr(dateStrings.date.length, dateString.length); + } + } + + if (timeString) { + var token = patterns.timezone.exec(timeString); + + if (token) { + dateStrings.time = timeString.replace(token[1], ''); + dateStrings.timezone = token[1]; + } else { + dateStrings.time = timeString; + } + } + + return dateStrings; + } + + function parseYear(dateString, additionalDigits) { + var patternYYY = patterns.YYY[additionalDigits]; + var patternYYYYY = patterns.YYYYY[additionalDigits]; + var token; // YYYY or ±YYYYY + + token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString); + + if (token) { + var yearString = token[1]; + return { + year: parseInt(yearString, 10), + restDateString: dateString.slice(yearString.length) + }; + } // YY or ±YYY + + + token = patterns.YY.exec(dateString) || patternYYY.exec(dateString); + + if (token) { + var centuryString = token[1]; + return { + year: parseInt(centuryString, 10) * 100, + restDateString: dateString.slice(centuryString.length) + }; + } // Invalid ISO-formatted year + + + return { + year: null + }; + } + + function parseDate(dateString, year) { + // Invalid ISO-formatted year + if (year === null) { + return null; + } + + var token; + var date; + var month; + var week; // YYYY + + if (dateString.length === 0) { + date = new Date(0); + date.setUTCFullYear(year); + return date; + } // YYYY-MM + + + token = patterns.MM.exec(dateString); + + if (token) { + date = new Date(0); + month = parseInt(token[1], 10) - 1; + + if (!validateDate(year, month)) { + return new Date(NaN); + } + + date.setUTCFullYear(year, month); + return date; + } // YYYY-DDD or YYYYDDD + + + token = patterns.DDD.exec(dateString); + + if (token) { + date = new Date(0); + var dayOfYear = parseInt(token[1], 10); + + if (!validateDayOfYearDate(year, dayOfYear)) { + return new Date(NaN); + } + + date.setUTCFullYear(year, 0, dayOfYear); + return date; + } // yyyy-MM-dd or YYYYMMDD + + + token = patterns.MMDD.exec(dateString); + + if (token) { + date = new Date(0); + month = parseInt(token[1], 10) - 1; + var day = parseInt(token[2], 10); + + if (!validateDate(year, month, day)) { + return new Date(NaN); + } + + date.setUTCFullYear(year, month, day); + return date; + } // YYYY-Www or YYYYWww + + + token = patterns.Www.exec(dateString); + + if (token) { + week = parseInt(token[1], 10) - 1; + + if (!validateWeekDate(year, week)) { + return new Date(NaN); + } + + return dayOfISOWeekYear(year, week); + } // YYYY-Www-D or YYYYWwwD + + + token = patterns.WwwD.exec(dateString); + + if (token) { + week = parseInt(token[1], 10) - 1; + var dayOfWeek = parseInt(token[2], 10) - 1; + + if (!validateWeekDate(year, week, dayOfWeek)) { + return new Date(NaN); + } + + return dayOfISOWeekYear(year, week, dayOfWeek); + } // Invalid ISO-formatted date + + + return null; + } + + function parseTime(timeString) { + var token; + var hours; + var minutes; // hh + + token = patterns.HH.exec(timeString); + + if (token) { + hours = parseFloat(token[1].replace(',', '.')); + + if (!validateTime(hours)) { + return NaN; + } + + return hours % 24 * MILLISECONDS_IN_HOUR; + } // hh:mm or hhmm + + + token = patterns.HHMM.exec(timeString); + + if (token) { + hours = parseInt(token[1], 10); + minutes = parseFloat(token[2].replace(',', '.')); + + if (!validateTime(hours, minutes)) { + return NaN; + } + + return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE; + } // hh:mm:ss or hhmmss + + + token = patterns.HHMMSS.exec(timeString); + + if (token) { + hours = parseInt(token[1], 10); + minutes = parseInt(token[2], 10); + var seconds = parseFloat(token[3].replace(',', '.')); + + if (!validateTime(hours, minutes, seconds)) { + return NaN; + } + + return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000; + } // Invalid ISO-formatted time + + + return null; + } + + function dayOfISOWeekYear(isoWeekYear, week, day) { + week = week || 0; + day = day || 0; + var date = new Date(0); + date.setUTCFullYear(isoWeekYear, 0, 4); + var fourthOfJanuaryDay = date.getUTCDay() || 7; + var diff = week * 7 + day + 1 - fourthOfJanuaryDay; + date.setUTCDate(date.getUTCDate() + diff); + return date; + } // Validation functions + + + var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + var DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + + function isLeapYearIndex(year) { + return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0; + } + + function validateDate(year, month, date) { + if (month < 0 || month > 11) { + return false; + } + + if (date != null) { + if (date < 1) { + return false; + } + + var isLeapYear = isLeapYearIndex(year); + + if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) { + return false; + } + + if (!isLeapYear && date > DAYS_IN_MONTH[month]) { + return false; + } + } + + return true; + } + + function validateDayOfYearDate(year, dayOfYear) { + if (dayOfYear < 1) { + return false; + } + + var isLeapYear = isLeapYearIndex(year); + + if (isLeapYear && dayOfYear > 366) { + return false; + } + + if (!isLeapYear && dayOfYear > 365) { + return false; + } + + return true; + } + + function validateWeekDate(year, week, day) { + if (week < 0 || week > 52) { + return false; + } + + if (day != null && (day < 0 || day > 6)) { + return false; + } + + return true; + } + + function validateTime(hours, minutes, seconds) { + if (hours != null && (hours < 0 || hours >= 25)) { + return false; + } + + if (minutes != null && (minutes < 0 || minutes >= 60)) { + return false; + } + + if (seconds != null && (seconds < 0 || seconds >= 60)) { + return false; + } + + return true; + } + /***/ + + }, + /* 14 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (immutable) */ + + __webpack_exports__["a"] = getTimezoneOffsetInMilliseconds; + var MILLISECONDS_IN_MINUTE = 60000; + /** + * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. + * They usually appear for dates that denote time before the timezones were introduced + * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 + * and GMT+01:00:00 after that date) + * + * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, + * which would lead to incorrect calculations. + * + * This function returns the timezone offset in milliseconds that takes seconds in account. + */ + + function getTimezoneOffsetInMilliseconds(dirtyDate) { + var date = new Date(dirtyDate.getTime()); + var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset()); + date.setSeconds(0, 0); + var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE; + return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset; + } + /***/ + + }, + /* 15 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* unused harmony export getWeekStartByRegion */ + + /* harmony export (binding) */ + + __webpack_require__.d(__webpack_exports__, "a", function () { + return getWeekStartByLocale$1; + }); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_0__api_js__ = __webpack_require__(16); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__langRegionMap_js__ = __webpack_require__(17); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_2__regionDayMap_js__ = __webpack_require__(18); + + function getWeekStartByRegion$1(regionCode) { + return Object(__WEBPACK_IMPORTED_MODULE_0__api_js__["b" + /* getWeekStartByRegion */ + ])(regionCode, __WEBPACK_IMPORTED_MODULE_2__regionDayMap_js__["a" + /* default */ + ]); + } + + function getWeekStartByLocale$1(locale) { + return Object(__WEBPACK_IMPORTED_MODULE_0__api_js__["a" + /* getWeekStartByLocale */ + ])(locale, __WEBPACK_IMPORTED_MODULE_1__langRegionMap_js__["a" + /* default */ + ], __WEBPACK_IMPORTED_MODULE_2__regionDayMap_js__["a" + /* default */ + ]); + } + /***/ + + }, + /* 16 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony export (binding) */ + + __webpack_require__.d(__webpack_exports__, "b", function () { + return getWeekStartByRegion; + }); + /* harmony export (binding) */ + + + __webpack_require__.d(__webpack_exports__, "a", function () { + return getWeekStartByLocale; + }); + + function getWeekStartByRegion(regionCode, regionDayMap) { + var code = regionDayMap[typeof regionCode === 'string' ? regionCode.toUpperCase() : regionCode]; + return typeof code === 'number' ? code : 1; + } + + function getWeekStartByLocale(locale, langRegionMap, regionDayMap) { + if (locale) { + var data = locale.toLowerCase().split(/[-_]/); + var language = data[0]; + var country; + + if (data[1] && data[1].length === 4) { + language += "_" + data[1]; + country = data[2]; + } else { + country = data[1]; + } + + if (!country) { + country = langRegionMap[language]; + } + + if (country) { + return getWeekStartByRegion(country.match(/^\d+$/) ? Number(country) : country, regionDayMap); + } + } + + return 1; + } + /***/ + + }, + /* 17 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + var langRegionMap = { + en: 'US', + zh: 'CN', + zh_hans: 'CN', + hans: 'CN', + wuu: 'CN', + hsn: 'CN', + hak: 'CN', + nan: 'CN', + gan: 'CN', + hi: 'IN', + te: 'IN', + mr: 'IN', + ta: 'IN', + gu: 'IN', + kn: 'IN', + or: 'IN', + ml: 'IN', + pa_guru: 'IN', + bho: 'IN', + awa: 'IN', + as: 'IN', + mwr: 'IN', + mai: 'IN', + mag: 'IN', + bgc: 'IN', + hne: 'IN', + dcc: 'IN', + dz: 'BT', + tn: 'BW', + am: 'ET', + om: 'ET', + quc: 'GT', + id: 'ID', + jv: 'ID', + su: 'ID', + mad: 'ID', + ms_arab: 'ID', + ga: 'IE', + he: 'IL', + jam: 'JM', + ja: 'JP', + km: 'KH', + ko: 'KR', + lo: 'LA', + mh: 'MH', + my: 'MM', + mt: 'MT', + ne: 'NP', + fil: 'PH', + ceb: 'PH', + ilo: 'PH', + ur: 'PK', + pa: 'PK', + pa_arab: 'PK', + arab: 'PK', + lah: 'PK', + ps: 'PK', + sd: 'PK', + sd_arab: 'PK', + skr: 'PK', + gn: 'PY', + th: 'TH', + tts: 'TH', + aeb: 'TN', + zh_hant: 'TW', + hant: 'TW', + sm: 'WS', + zu: 'ZA', + sn: 'ZW', + arq: 'DZ', + ar: 'EG', + arz: 'EG', + fa: 'IR', + az_arab: 'IR', + ary: 'MA', + bn: 'BD', + rkt: 'BD', + dv: 'MV' + }; + /* harmony default export */ + + __webpack_exports__["a"] = langRegionMap; + /***/ + }, + /* 18 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + var regionDayMap = { + AG: 0, + ATG: 0, + 28: 0, + AR: 0, + ARG: 0, + 32: 0, + AS: 0, + ASM: 0, + 16: 0, + AU: 0, + AUS: 0, + 36: 0, + BR: 0, + BRA: 0, + 76: 0, + BS: 0, + BHS: 0, + 44: 0, + BT: 0, + BTN: 0, + 64: 0, + BW: 0, + BWA: 0, + 72: 0, + BZ: 0, + BLZ: 0, + 84: 0, + CA: 0, + CAN: 0, + 124: 0, + CN: 0, + CHN: 0, + 156: 0, + CO: 0, + COL: 0, + 170: 0, + DM: 0, + DMA: 0, + 212: 0, + DO: 0, + DOM: 0, + 214: 0, + ET: 0, + ETH: 0, + 231: 0, + GT: 0, + GTM: 0, + 320: 0, + GU: 0, + GUM: 0, + 316: 0, + HK: 0, + HKG: 0, + 344: 0, + HN: 0, + HND: 0, + 340: 0, + ID: 0, + IDN: 0, + 360: 0, + IE: 0, + IRL: 0, + 372: 0, + IL: 0, + ISR: 0, + 376: 0, + IN: 0, + IND: 0, + 356: 0, + JM: 0, + JAM: 0, + 388: 0, + JP: 0, + JPN: 0, + 392: 0, + KE: 0, + KEN: 0, + 404: 0, + KH: 0, + KHM: 0, + 116: 0, + KR: 0, + KOR: 0, + 410: 0, + LA: 0, + LA0: 0, + 418: 0, + MH: 0, + MHL: 0, + 584: 0, + MM: 0, + MMR: 0, + 104: 0, + MO: 0, + MAC: 0, + 446: 0, + MT: 0, + MLT: 0, + 470: 0, + MX: 0, + MEX: 0, + 484: 0, + MZ: 0, + MOZ: 0, + 508: 0, + NI: 0, + NIC: 0, + 558: 0, + NP: 0, + NPL: 0, + 524: 0, + NZ: 0, + NZL: 0, + 554: 0, + PA: 0, + PAN: 0, + 591: 0, + PE: 0, + PER: 0, + 604: 0, + PH: 0, + PHL: 0, + 608: 0, + PK: 0, + PAK: 0, + 586: 0, + PR: 0, + PRI: 0, + 630: 0, + PY: 0, + PRY: 0, + 600: 0, + SA: 0, + SAU: 0, + 682: 0, + SG: 0, + SGP: 0, + 702: 0, + SV: 0, + SLV: 0, + 222: 0, + TH: 0, + THA: 0, + 764: 0, + TN: 0, + TUN: 0, + 788: 0, + TT: 0, + TTO: 0, + 780: 0, + TW: 0, + TWN: 0, + 158: 0, + UM: 0, + UMI: 0, + 581: 0, + US: 0, + USA: 0, + 840: 0, + VE: 0, + VEN: 0, + 862: 0, + VI: 0, + VIR: 0, + 850: 0, + WS: 0, + WSM: 0, + 882: 0, + YE: 0, + YEM: 0, + 887: 0, + ZA: 0, + ZAF: 0, + 710: 0, + ZW: 0, + ZWE: 0, + 716: 0, + AE: 6, + ARE: 6, + 784: 6, + AF: 6, + AFG: 6, + 4: 6, + BH: 6, + BHR: 6, + 48: 6, + DJ: 6, + DJI: 6, + 262: 6, + DZ: 6, + DZA: 6, + 12: 6, + EG: 6, + EGY: 6, + 818: 6, + IQ: 6, + IRQ: 6, + 368: 6, + IR: 6, + IRN: 6, + 364: 6, + JO: 6, + JOR: 6, + 400: 6, + KW: 6, + KWT: 6, + 414: 6, + LY: 6, + LBY: 6, + 434: 6, + MA: 6, + MAR: 6, + 504: 6, + OM: 6, + OMN: 6, + 512: 6, + QA: 6, + QAT: 6, + 634: 6, + SD: 6, + SDN: 6, + 729: 6, + SY: 6, + SYR: 6, + 760: 6, + BD: 5, + BGD: 5, + 50: 5, + MV: 5, + MDV: 5, + 462: 5 + }; + /* harmony default export */ + + __webpack_exports__["a"] = regionDayMap; + /***/ + }, + /* 19 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + + var isNumberRegex = /^\d+$/; + var isWhitespaceRegex = /\s/; + var punctuationList = '!"#$%&\'()*+,-./:;<=>?@[]^_`{|}~'; + /** + * Check if the given string is in lower case + * + * @param {String} str + */ + + var isLowerCase = function isLowerCase(str) { + return str == str.toLowerCase() && str != str.toUpperCase(); + }; + /** + * Check if the given string is in upper case + * + * @param {String} str + */ + + + var isUpperCase = function isUpperCase(str) { + return str == str.toUpperCase() && str != str.toLowerCase(); + }; + + var passOrThrowError = function passOrThrowError(loose, ret, i, str) { + if (!loose) { + var _char = str.charAt(i); + + var pos = i + 1; + throw { + name: 'StringMaskError', + message: "StringMaskError: error applying mask at position \"".concat(pos, "\" , char \"").concat(_char, "\""), + pos: pos, + "char": _char + }; + } else ret[i] = ' '; + }; + /** + * NumberMask + * + * A javascript implementation for BBj numbers masking + * + * @author Hyyan Abo Fakher + */ + + + var StringMask = /*#__PURE__*/function () { + function StringMask() { + _classCallCheck(this, StringMask); + } + + _createClass(StringMask, null, [{ + key: "mask", + + /** + * Mask the given string with the given mask according to BBj rules + * + * @param {String} str the string to mask + * @param {String} mask the mask to use for formatting + * @param {Boolean} [loose=true] when true , errors will be ignored and the method will try at apply the mask + * anyway , otherwise it will stop at first error and throw it. + * + * @throws {MaskIsTooShortError} + * @throws {StringMaskError} + * @throws {MaskError} + * + * @returns {String} the masked string + */ + value: function mask(str, _mask) { + var loose = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + str = String(str); + _mask = String(_mask); + var maskLen = _mask.length; + var strLen = str.length; + + if (strLen > maskLen) { + if (loose) return str; // friendly silent fail + else throw { + name: 'MaskIsTooShortError', + message: "MaskIsTooShortError: Mask is shorter than the passed string" + }; + } + + var ret = new Array(maskLen); + var pos = 0; // to keep track of the current position in the str + + var maskByte = ''; + + for (var i = 0; i < maskLen; i++) { + maskByte = _mask.charAt(i); + + switch (maskByte) { + case 'X': + // match any character + ret[i] = pos < strLen ? str.charAt(pos) : ' '; + ++pos; + break; + + case 'A': + // match letter; force upper case + if (pos < strLen) { + var _byte = str.charAt(pos); + + if (isUpperCase(_byte)) ret[i] = _byte;else if (isLowerCase(_byte)) ret[i] = _byte.toUpperCase();else passOrThrowError(loose, ret, i, str); + } else ret[i] = ' '; + + ++pos; + break; + + case 'a': + // match letter + if (pos < strLen) { + var _byte2 = str.charAt(pos); + + if (isUpperCase(_byte2) || isLowerCase(_byte2)) ret[i] = _byte2;else passOrThrowError(loose, ret, i, str); + } else ret[i] = ' '; + + ++pos; + break; + + case '0': + // match digit + if (pos < strLen) { + var _byte3 = str.charAt(pos); + + if (isNumberRegex.test(_byte3)) ret[i] = _byte3;else passOrThrowError(loose, ret, i, str); + } else ret[i] = ' '; + + ++pos; + break; + + case 'Z': + // match letter or digit; force upper case + if (pos < strLen) { + var _byte4 = str.charAt(pos); + + if (isUpperCase(_byte4) || isNumberRegex.test(_byte4)) ret[i] = _byte4;else if (isLowerCase(_byte4)) ret[i] = _byte4.toUpperCase();else passOrThrowError(loose, ret, i, str); + } else ret[i] = ' '; + + ++pos; + break; + + case 'z': + // match letter or digit + if (pos < strLen) { + var _byte5 = str.charAt(pos); + + if (isUpperCase(_byte5) || isLowerCase(_byte5) || isNumberRegex.test(_byte5)) ret[i] = _byte5;else passOrThrowError(loose, ret, i, str); + } else ret[i] = ' '; + + ++pos; + break; + break; + + case 'U': + // match letter (force upper case), digit, whitespace or punctuation. + if (pos < strLen) { + var _byte6 = str.charAt(pos); + + if (isLowerCase(_byte6)) ret[i] = _byte6.toUpperCase();else if (isUpperCase(_byte6) || isNumberRegex.test(_byte6) || isWhitespaceRegex.test(_byte6) || punctuationList.indexOf(_byte6) > -1) ret[i] = _byte6;else passOrThrowError(loose, ret, i, str); + } else ret[i] = ' '; + + ++pos; + break; + + default: + ret[i] = maskByte; + break; + } + } + + if (pos < strLen) { + if (!loose) { + throw { + name: 'MaskError', + message: 'Mask cannot be applied' + }; + } + } + + return ret.join(''); + } + }]); + + return StringMask; + }(); + /* harmony default export */ + + + __webpack_exports__["a"] = StringMask; + /***/ + }, + /* 20 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__Types__ = __webpack_require__(21); + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* harmony default export */ + + + __webpack_exports__["a"] = __WEBPACK_IMPORTED_MODULE_0__Types__["a" + /* default */ + ]; + /***/ + }, + /* 21 */ + + /***/ + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + /* harmony import */ + + var __WEBPACK_IMPORTED_MODULE_0__NumberMask__ = __webpack_require__(1); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_1__DateMask__ = __webpack_require__(2); + /* harmony import */ + + + var __WEBPACK_IMPORTED_MODULE_2__StringMask__ = __webpack_require__(4); + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + /* + * This file is part of bbj-masks lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /** + * Types + * + * BBj masks factory + * + * @author Hyyan Abo Fakher + */ + + + var Types = /*#__PURE__*/function () { + function Types() { + _classCallCheck(this, Types); + } + + _createClass(Types, null, [{ + key: "number", + + /** + * Mask the given number with the given mask according to BBj rules + * + * @param {Number} number the number to format + * @param {String} mask the mask to use for formatting + * @param {String} [groupingSeparator=,] - a char which will be used as a grouping separator + * @param {String} [decimalSeparator=.] - a char which will be used as a decimal separator + * @param {Boolean} [forceTrailingZeros=false] - Affects the output by switching the way a mask with "#" characters in the trailing positions is filled. + * for example, the function `NumberMask.mask(.10:"#.##")` returns ` .10` instead of ` .1 ` + * @param {Boolean} [loose=true] when true , errors will be ignored and the method will try at apply the mask + * anyway , otherwise it will stop at first error and throw it. + * + * @returns {String} the masked number + */ + value: function number(_number, mask) { + var groupingSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ','; + var decimalSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.'; + var forceTrailingZeros = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var loose = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + return __WEBPACK_IMPORTED_MODULE_0__NumberMask__["a" + /* default */ + ].mask(_number, mask, groupingSeparator, decimalSeparator, forceTrailingZeros, loose); + } + /** + * Mask a date according to bbj masking rules + * + * @param {String} date date as a string + * @param {String} mask mask as a string + * @param {String} [locale=Browser's locale] the language to use ex(en-US). default is to the system language + * @param {String} [timezone=System timezone] the time zone descriptor (e.g. America/Los_Angeles). default to the system + * timezone + * + * @return {String} number masked with the given mask + */ + + }, { + key: "date", + value: function date(_date, mask, locale, timezone) { + return __WEBPACK_IMPORTED_MODULE_1__DateMask__["c" + /* default */ + ].mask(_date, mask, locale, timezone); + } + /** + * Mask the given string with the given mask according to BBj rules + * + * @param {String} str the string to mask + * @param {String} mask the mask to use for formatting + * @param {Boolean} [loose=true] when true , errors will be ignored and the method will try at apply the mask + * anyway , otherwise it will stop at first error and throw it. + * + * @throws {MaskIsTooShortError} + * @throws {StringMaskError} + * @throws {MaskError} + * + * @returns {String} the masked string + */ + + }, { + key: "string", + value: function string(str, mask) { + var loose = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + return __WEBPACK_IMPORTED_MODULE_2__StringMask__["a" + /* default */ + ].mask(str, mask, loose); + } + }]); + + return Types; + }(); + /* harmony default export */ + + + __webpack_exports__["a"] = Types; + /***/ + } + /******/ + ]) + ); +}); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../BBjGridExWidget/client/node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + +/***/ }), + +/***/ "./node_modules/basis-aggrid-components/dist/basis-aggrid-components.js": +/*!******************************************************************************!*\ + !*** ./node_modules/basis-aggrid-components/dist/basis-aggrid-components.js ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +(function webpackUniversalModuleDefinition(root, factory) { + if(true) + module.exports = factory(); + else {} +})(typeof self !== 'undefined' ? self : this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 42); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Component__ = __webpack_require__(45); +/* + * This file is part of basis-aggrid-components lib. + * (c) Basis Europe + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__Component__["a" /* default */]); + +/***/ }), +/* 1 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = autobind; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__private_utils__ = __webpack_require__(7); +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + +var defineProperty = Object.defineProperty, + getPrototypeOf = Object.getPrototypeOf; +var mapStore; + +function getBoundSuper(obj, fn) { + if (typeof WeakMap === 'undefined') { + throw new Error("Using @autobind on ".concat(fn.name, "() requires WeakMap support due to its use of super.").concat(fn.name, "()\n See https://github.com/jayphelps/core-decorators.js/issues/20")); + } + + if (!mapStore) { + mapStore = new WeakMap(); + } + + if (mapStore.has(obj) === false) { + mapStore.set(obj, new WeakMap()); + } + + var superStore = mapStore.get(obj); + + if (superStore.has(fn) === false) { + superStore.set(fn, Object(__WEBPACK_IMPORTED_MODULE_0__private_utils__["a" /* bind */])(fn, obj)); + } + + return superStore.get(fn); +} + +function autobindClass(klass) { + var descs = Object(__WEBPACK_IMPORTED_MODULE_0__private_utils__["e" /* getOwnPropertyDescriptors */])(klass.prototype); + var keys = Object(__WEBPACK_IMPORTED_MODULE_0__private_utils__["d" /* getOwnKeys */])(descs); + + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + var desc = descs[key]; + + if (typeof desc.value !== 'function' || key === 'constructor') { + continue; + } + + defineProperty(klass.prototype, key, autobindMethod(klass.prototype, key, desc)); + } +} + +function autobindMethod(target, key, _ref) { + var fn = _ref.value, + configurable = _ref.configurable, + enumerable = _ref.enumerable; + + if (typeof fn !== 'function') { + throw new SyntaxError("@autobind can only be used on functions, not: ".concat(fn)); + } + + var constructor = target.constructor; + return { + configurable: configurable, + enumerable: enumerable, + get: function get() { + // Class.prototype.key lookup + // Someone accesses the property directly on the prototype on which it is + // actually defined on, i.e. Class.prototype.hasOwnProperty(key) + if (this === target) { + return fn; + } // Class.prototype.key lookup + // Someone accesses the property directly on a prototype but it was found + // up the chain, not defined directly on it + // i.e. Class.prototype.hasOwnProperty(key) == false && key in Class.prototype + + + if (this.constructor !== constructor && getPrototypeOf(this).constructor === constructor) { + return fn; + } // Autobound method calling super.sameMethod() which is also autobound and so on. + + + if (this.constructor !== constructor && key in this.constructor.prototype) { + return getBoundSuper(this, fn); + } + + var boundFn = Object(__WEBPACK_IMPORTED_MODULE_0__private_utils__["a" /* bind */])(fn, this); + defineProperty(this, key, { + configurable: true, + writable: true, + // NOT enumerable when it's a bound method + enumerable: false, + value: boundFn + }); + return boundFn; + }, + set: Object(__WEBPACK_IMPORTED_MODULE_0__private_utils__["b" /* createDefaultSetter */])(key) + }; +} + +function handle(args) { + if (args.length === 1) { + return autobindClass.apply(void 0, _toConsumableArray(args)); + } else { + return autobindMethod.apply(void 0, _toConsumableArray(args)); + } +} + +function autobind() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args.length === 0) { + return function () { + return handle(arguments); + }; + } else { + return handle(args); + } +} + +/***/ }), +/* 2 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = override; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__private_utils__ = __webpack_require__(7); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + +var GENERIC_FUNCTION_ERROR = '{child} does not properly override {parent}'; +var FUNCTION_REGEXP = /^function ([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?(\([^\)]*\))[\s\S]+$/; + +var SyntaxErrorReporter = /*#__PURE__*/function () { + _createClass(SyntaxErrorReporter, [{ + key: "_getTopic", + value: function _getTopic(descriptor) { + if (descriptor === undefined) { + return null; + } + + if ('value' in descriptor) { + return descriptor.value; + } + + if ('get' in descriptor) { + return descriptor.get; + } + + if ('set' in descriptor) { + return descriptor.set; + } + } + }, { + key: "_extractTopicSignature", + value: function _extractTopicSignature(topic) { + switch (_typeof(topic)) { + case 'function': + return this._extractFunctionSignature(topic); + + default: + return this.key; + } + } + }, { + key: "_extractFunctionSignature", + value: function _extractFunctionSignature(fn) { + var _this = this; + + return fn.toString().replace(FUNCTION_REGEXP, function (match) { + var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this.key; + var params = arguments.length > 2 ? arguments[2] : undefined; + return name + params; + }); + } + }, { + key: "key", + get: function get() { + return this.childDescriptor.key; + } + }, { + key: "parentNotation", + get: function get() { + return "".concat(this.parentKlass.constructor.name, "#").concat(this.parentPropertySignature); + } + }, { + key: "childNotation", + get: function get() { + return "".concat(this.childKlass.constructor.name, "#").concat(this.childPropertySignature); + } + }, { + key: "parentTopic", + get: function get() { + return this._getTopic(this.parentDescriptor); + } + }, { + key: "childTopic", + get: function get() { + return this._getTopic(this.childDescriptor); + } + }, { + key: "parentPropertySignature", + get: function get() { + return this._extractTopicSignature(this.parentTopic); + } + }, { + key: "childPropertySignature", + get: function get() { + return this._extractTopicSignature(this.childTopic); + } + }]); + + function SyntaxErrorReporter(parentKlass, childKlass, parentDescriptor, childDescriptor) { + _classCallCheck(this, SyntaxErrorReporter); + + this.parentKlass = void 0; + this.childKlass = void 0; + this.parentDescriptor = void 0; + this.childDescriptor = void 0; + this.parentKlass = parentKlass; + this.childKlass = childKlass; + this.parentDescriptor = parentDescriptor; + this.childDescriptor = childDescriptor; + } + + _createClass(SyntaxErrorReporter, [{ + key: "assert", + value: function assert(condition) { + var msg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + + if (condition !== true) { + this.error(GENERIC_FUNCTION_ERROR + msg); + } + } + }, { + key: "error", + value: function error(msg) { + var _this2 = this; + + msg = msg // Replace lazily, because they actually might not + // be available in all cases + .replace('{parent}', function (m) { + return _this2.parentNotation; + }).replace('{child}', function (m) { + return _this2.childNotation; + }); + throw new SyntaxError(msg); + } + }]); + + return SyntaxErrorReporter; +}(); + +function getDescriptorType(descriptor) { + if (descriptor.hasOwnProperty('value')) { + return 'data'; + } + + if (descriptor.hasOwnProperty('get') || descriptor.hasOwnProperty('set')) { + return 'accessor'; + } // If none of them exist, browsers treat it as + // a data descriptor with a value of `undefined` + + + return 'data'; +} + +function checkFunctionSignatures(parent, child, reporter) { + reporter.assert(parent.length === child.length); +} + +function checkDataDescriptors(parent, child, reporter) { + var parentValueType = _typeof(parent.value); + + var childValueType = _typeof(child.value); + + if (parentValueType === 'undefined' && childValueType === 'undefined') { + // class properties can be any expression, which isn't ran until the + // the instance is created, so we can't reliably get type information + // for them yet (per spec). Perhaps when Babel includes flow-type info + // in runtime? Tried regex solutions, but super hacky and only feasible + // on primitives, which is confusing for usage... + reporter.error("descriptor values are both undefined. (class properties are are not currently supported)'"); + } + + if (parentValueType !== childValueType) { + var isFunctionOverUndefined = childValueType === 'function' && parentValueType === undefined; // Even though we don't support class properties, this + // will still handle more than just functions, just in case. + // Shadowing an undefined value is an error if the inherited + // value was undefined (usually a class property, not a method) + + if (isFunctionOverUndefined || parentValueType !== undefined) { + reporter.error("value types do not match. {parent} is \"".concat(parentValueType, "\", {child} is \"").concat(childValueType, "\"")); + } + } // Switch, in preparation for supporting more types + + + switch (childValueType) { + case 'function': + checkFunctionSignatures(parent.value, child.value, reporter); + break; + + default: + reporter.error("Unexpected error. Please file a bug with: {parent} is \"".concat(parentValueType, "\", {child} is \"").concat(childValueType, "\"")); + break; + } +} + +function checkAccessorDescriptors(parent, child, reporter) { + var parentHasGetter = typeof parent.get === 'function'; + var childHasGetter = typeof child.get === 'function'; + var parentHasSetter = typeof parent.set === 'function'; + var childHasSetter = typeof child.set === 'function'; + + if (parentHasGetter || childHasGetter) { + if (!parentHasGetter && parentHasSetter) { + reporter.error("{parent} is setter but {child} is getter"); + } + + if (!childHasGetter && childHasSetter) { + reporter.error("{parent} is getter but {child} is setter"); + } + + checkFunctionSignatures(parent.get, child.get, reporter); + } + + if (parentHasSetter || childHasSetter) { + if (!parentHasSetter && parentHasGetter) { + reporter.error("{parent} is getter but {child} is setter"); + } + + if (!childHasSetter && childHasGetter) { + reporter.error("{parent} is setter but {child} is getter"); + } + + checkFunctionSignatures(parent.set, child.set, reporter); + } +} + +function checkDescriptors(parent, child, reporter) { + var parentType = getDescriptorType(parent); + var childType = getDescriptorType(child); + + if (parentType !== childType) { + reporter.error("descriptor types do not match. {parent} is \"".concat(parentType, "\", {child} is \"").concat(childType, "\"")); + } + + switch (childType) { + case 'data': + checkDataDescriptors(parent, child, reporter); + break; + + case 'accessor': + checkAccessorDescriptors(parent, child, reporter); + break; + } +} + +var suggestionTransforms = [function (key) { + return key.toLowerCase(); +}, function (key) { + return key.toUpperCase(); +}, function (key) { + return key + 's'; +}, function (key) { + return key.slice(0, -1); +}, function (key) { + return key.slice(1, key.length); +}]; + +function findPossibleAlternatives(superKlass, key) { + for (var i = 0, l = suggestionTransforms.length; i < l; i++) { + var fn = suggestionTransforms[i]; + var suggestion = fn(key); + + if (suggestion in superKlass) { + return suggestion; + } + } + + return null; +} + +function handleDescriptor(target, key, descriptor) { + descriptor.key = key; + var superKlass = Object.getPrototypeOf(target); + var superDescriptor = Object.getOwnPropertyDescriptor(superKlass, key); + var reporter = new SyntaxErrorReporter(superKlass, target, superDescriptor, descriptor); + + if (superDescriptor === undefined) { + var suggestedKey = findPossibleAlternatives(superKlass, key); + var suggestion = suggestedKey ? "\n\n Did you mean \"".concat(suggestedKey, "\"?") : ''; + reporter.error("No descriptor matching {child} was found on the prototype chain.".concat(suggestion)); + } + + checkDescriptors(superDescriptor, descriptor, reporter); + return descriptor; +} + +function override() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return Object(__WEBPACK_IMPORTED_MODULE_0__private_utils__["c" /* decorate */])(handleDescriptor, args); +} + +/***/ }), +/* 3 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Symbol_js__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getRawTag_js__ = __webpack_require__(72); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__objectToString_js__ = __webpack_require__(73); + + + +/** `Object#toString` result references. */ + +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; +/** Built-in value references. */ + +var symToStringTag = __WEBPACK_IMPORTED_MODULE_0__Symbol_js__["a" /* default */] ? __WEBPACK_IMPORTED_MODULE_0__Symbol_js__["a" /* default */].toStringTag : undefined; +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + + return symToStringTag && symToStringTag in Object(value) ? Object(__WEBPACK_IMPORTED_MODULE_1__getRawTag_js__["a" /* default */])(value) : Object(__WEBPACK_IMPORTED_MODULE_2__objectToString_js__["a" /* default */])(value); +} + +/* harmony default export */ __webpack_exports__["a"] = (baseGetTag); + +/***/ }), +/* 4 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && _typeof(value) == 'object'; +} + +/* harmony default export */ __webpack_exports__["a"] = (isObjectLike); + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +module.exports = function (useSourceMap) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + + if (item[2]) { + return "@media " + item[2] + "{" + content + "}"; + } else { + return content; + } + }).join(""); + }; // import a list of modules into the list + + + list.i = function (modules, mediaQuery) { + if (typeof modules === "string") modules = [[null, modules, ""]]; + var alreadyImportedModules = {}; + + for (var i = 0; i < this.length; i++) { + var id = this[i][0]; + if (typeof id === "number") alreadyImportedModules[id] = true; + } + + for (i = 0; i < modules.length; i++) { + var item = modules[i]; // skip already imported module + // this implementation is not 100% perfect for weird media query combinations + // when a module is imported multiple times with different media queries. + // I hope this will never occur (Hey this way we have smaller bundles) + + if (typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { + if (mediaQuery && !item[2]) { + item[2] = mediaQuery; + } else if (mediaQuery) { + item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; + } + + list.push(item); + } + } + }; + + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; + var cssMapping = item[3]; + + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; + }); + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} // Adapted from convert-source-map (MIT) + + +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + return '/*# ' + data + ' */'; +} + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var stylesInDom = {}; + +var memoize = function (fn) { + var memo; + + return function () { + if (typeof memo === "undefined") memo = fn.apply(this, arguments); + return memo; + }; +}; + +var isOldIE = memoize(function () { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + return window && document && document.all && !window.atob; +}); + +var getTarget = function (target) { + return document.querySelector(target); +}; + +var getElement = (function (fn) { + var memo = {}; + + return function(target) { + // If passing function in options, then use it for resolve "head" element. + // Useful for Shadow Root style i.e + // { + // insertInto: function () { return document.querySelector("#foo").shadowRoot } + // } + if (typeof target === 'function') { + return target(); + } + if (typeof memo[target] === "undefined") { + var styleTarget = getTarget.call(this, target); + // Special case to return head of iframe instead of iframe itself + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch(e) { + styleTarget = null; + } + } + memo[target] = styleTarget; + } + return memo[target] + }; +})(); + +var singleton = null; +var singletonCounter = 0; +var stylesInsertedAtTop = []; + +var fixUrls = __webpack_require__(50); + +module.exports = function(list, options) { + if (typeof DEBUG !== "undefined" && DEBUG) { + if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); + } + + options = options || {}; + + options.attrs = typeof options.attrs === "object" ? options.attrs : {}; + + // Force single-tag solution on IE6-9, which has a hard limit on the # of