vue-dropdown-datepicker
Version:
A simple and customizable dropdown datepicker vue component
899 lines (796 loc) • 30.8 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.DropdownDatepicker = {}));
}(this, function (exports) { 'use strict';
//
//
//
//
//
//
var script = {
props:{
name: String,
idName: String,
className: String,
value: Number,
values: Array,
options: Array,
onChange: {type: Function, default: null},
required: {type: Boolean, default: false}
},
data: function data () {
return {
items: [],
fieldValue: this.value
}
},
created: function created (){
this.processItems();
},
watch: {
values: function(newVal, oldVal) {
this.processItems();
},
value: function(newVal, oldVal){
this.fieldValue = this.value;
}
},
methods: {
processItems: function processItems () {
this.items = [];
// console.log(this.values, this.options, this.name);
for (var index = 0; index < this.values.length; index++) {
this.items.push({value: this.values[index], text: this.options[index]});
}
},
onChangeCallback: function onChangeCallback () {
if(this.onChange != null){
this.onChange(this.fieldValue);
}
}
}
};
function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier
/* server only */
, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {
if (typeof shadowMode !== 'boolean') {
createInjectorSSR = createInjector;
createInjector = shadowMode;
shadowMode = false;
} // Vue.extend constructor export interop.
var options = typeof script === 'function' ? script.options : script; // render functions
if (template && template.render) {
options.render = template.render;
options.staticRenderFns = template.staticRenderFns;
options._compiled = true; // functional template
if (isFunctionalTemplate) {
options.functional = true;
}
} // scopedId
if (scopeId) {
options._scopeId = scopeId;
}
var hook;
if (moduleIdentifier) {
// server build
hook = function hook(context) {
// 2.3 injection
context = context || // cached call
this.$vnode && this.$vnode.ssrContext || // stateful
this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__;
} // inject component styles
if (style) {
style.call(this, createInjectorSSR(context));
} // register component module identifier for async chunk inference
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier);
}
}; // used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook;
} else if (style) {
hook = shadowMode ? function () {
style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));
} : function (context) {
style.call(this, createInjector(context));
};
}
if (hook) {
if (options.functional) {
// register for functional component in vue file
var originalRender = options.render;
options.render = function renderWithStyleInjection(h, context) {
hook.call(context);
return originalRender(h, context);
};
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate;
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
}
}
return script;
}
var normalizeComponent_1 = normalizeComponent;
var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());
function createInjector(context) {
return function (id, style) {
return addStyle(id, style);
};
}
var HEAD = document.head || document.getElementsByTagName('head')[0];
var styles = {};
function addStyle(id, css) {
var group = isOldIE ? css.media || 'default' : id;
var style = styles[group] || (styles[group] = {
ids: new Set(),
styles: []
});
if (!style.ids.has(id)) {
style.ids.add(id);
var code = css.source;
if (css.map) {
// https://developer.chrome.com/devtools/docs/javascript-debugging
// this makes source maps inside style tags work properly in Chrome
code += '\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875
code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';
}
if (!style.element) {
style.element = document.createElement('style');
style.element.type = 'text/css';
if (css.media) { style.element.setAttribute('media', css.media); }
HEAD.appendChild(style.element);
}
if ('styleSheet' in style.element) {
style.styles.push(code);
style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\n');
} else {
var index = style.ids.size - 1;
var textNode = document.createTextNode(code);
var nodes = style.element.childNodes;
if (nodes[index]) { style.element.removeChild(nodes[index]); }
if (nodes.length) { style.element.insertBefore(textNode, nodes[index]); }else { style.element.appendChild(textNode); }
}
}
}
var browser = createInjector;
/* script */
var __vue_script__ = script;
/* template */
var __vue_render__ = function() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c(
"select",
{
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.fieldValue,
expression: "fieldValue"
}
],
class: _vm.className,
attrs: { name: _vm.name, id: _vm.idName, required: _vm.required },
on: {
change: [
function($event) {
var $$selectedVal = Array.prototype.filter
.call($event.target.options, function(o) {
return o.selected
})
.map(function(o) {
var val = "_value" in o ? o._value : o.value;
return val
});
_vm.fieldValue = $event.target.multiple
? $$selectedVal
: $$selectedVal[0];
},
_vm.onChangeCallback
]
}
},
_vm._l(_vm.items, function(item) {
return _c(
"option",
{ key: item.value, domProps: { value: item.value } },
[_vm._v(_vm._s(item.text))]
)
}),
0
)
};
var __vue_staticRenderFns__ = [];
__vue_render__._withStripped = true;
/* style */
var __vue_inject_styles__ = function (inject) {
if (!inject) { return }
inject("data-v-3d95bbae_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: {"version":3,"sources":[],"names":[],"mappings":"","file":"select.vue"}, media: undefined });
};
/* scoped */
var __vue_scope_id__ = undefined;
/* module identifier */
var __vue_module_identifier__ = undefined;
/* functional template */
var __vue_is_functional_template__ = false;
/* style inject SSR */
var Select = normalizeComponent_1(
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
__vue_inject_styles__,
__vue_script__,
__vue_scope_id__,
__vue_is_functional_template__,
__vue_module_identifier__,
browser,
undefined
);
//
var script$1 = {
props: {
defaultDate: {type: String, default: null},
defaultDateFormat: {type: String, default:'yyyy-mm-dd'},
displayFormat: {type: String, default:'ymd'},
submitId: {type: String, default: ''},
submitFormat: {type: String, default:'yyyy-mm-dd'},
minAge: {type: Number, default:null},
maxAge: {type: Number, default:null},
minYear: {type: Number, default:null},
maxYear: {type: Number, default:null},
minDate: {type: String, default:null},
maxDate: {type: String, default:null},
allowPast: {type: Boolean, default:true},
allowFuture: {type: Boolean, default:true},
wrapperClass: {type: String, default:'date-dropdowns'},
dropdownClass: {type: String, default:null},
daySuffixes: {type: Boolean, default:true},
monthSuffixes: {type: Boolean, default:true},
monthFormat: {type: String, default:'long'},
required: {type: Boolean, default:false},
dayLabel: {type: String, default:'Day'},
monthLabel: {type: String, default:'Month'},
yearLabel: {type: String, default:'Year'},
sortYear: {type: String, default: 'desc'},
monthLongValues: {type: Array, default: function () { return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; }},
monthShortValues: {type: Array, default: function () { return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; }},
initialDayMonthYearValues: {type: Array, default: function () { return ['Day', 'Month', 'Year']; }},
daySuffixValues: {type: Array, default: function () { return ['st', 'nd', 'rd', 'th']; }},
onDayChange: {type: Function, default:null},
onMonthChange: {type: Function, default:null},
onYearChange: {type: Function, default:null},
onChange: {type: Function, default: null},
value: {type: String, default:null}
},
components: {
Select: Select
},
data: function data () {
return {
day: null,month: null,year: null,
days: [],
dayOptions: [],
months: [],
monthOptions: [],
years: [],
yearOptions: [],
currentDay: new Date().getDate(),
currentMonth: new Date().getMonth()+1,
currentYear: new Date().getFullYear(),
minDateValue: this.minDate,
maxDateValue: this.maxDate
}
},
created: function created(){
this.init();
},
methods: {
init: function init(){
this.populateYear();
this.populateMonth();
this.populateDay();
this.populateDefaultDate();
},
populateDefaultDate: function populateDefaultDate() {
// console.log(this.day, this.month, this.year);
if (isNaN(Date.parse(this.defaultDate)) === true) {
return;
}
if(!this.allowPast && new Date().getTime() > new Date(this.defaultDate).getTime()) {
return;
}
// if future date is disallowed and default is a future date then no default date is selected
if(!this.allowFuture && new Date().getTime() < new Date(this.defaultDate).getTime()){
return;
}
// console.log(this.day, this.month, this.year);
var parts = this.processDefaultDate();
this.day = parseInt(parts[0]);
this.month = parseInt(parts[1]);
this.year = parseInt(parts[2]);
},
populateYear: function populateYear() {
// console.log('populate year');
var minYear = this.minYear, maxYear = this.maxYear;
if(this.minAge != null){
maxYear = this.currentYear - this.minAge;
}
if(this.maxAge != null){
minYear = this.currentYear - this.maxAge;
}
if (!minYear) {
minYear = this.allowPast ? 1970 : this.currentYear;
}else{
minYear = this.allowPast ? minYear : this.currentYear;
}
if(this.minDateValue !== null){
minYear = new Date(this.minDateValue).getFullYear();
}
if (!maxYear) {
maxYear = this.currentYear+20;
}
if(!this.allowFuture){
maxYear = this.currentYear;
}
if(this.maxDateValue !== null){
maxYear = new Date(this.maxDateValue).getFullYear();
}
this.years = [];
this.yearOptions = [];
if(this.yearLabel){
this.years.push(null);
this.yearOptions.push(this.yearLabel);
}
if(this.sortYear == 'desc'){
for (var i = maxYear; i >= minYear; i--) {
this.years.push(i);
this.yearOptions.push(i);
}
}else{
for (var i = minYear; i <= maxYear; i++) {
this.years.push(i);
this.yearOptions.push(i);
}
}
// console.log(this.years);
},
populateMonth: function populateMonth(){
// console.log('populate month');
var start = 1,end = 12, year = this.year;
year = parseInt(year);
if(!this.allowPast && year === this.currentYear) {
start = this.currentMonth;
}
if(!this.allowFuture && year === this.currentYear) {
end = this.currentMonth;
}
if(this.minAge != null){
if(year === this.currentYear - this.minAge){
end = this.currentMonth;
}
}
if(this.maxAge != null){
if(year === this.currentYear - this.maxAge){
start = this.currentMonth;
}
}
if(this.minDateValue !== null && new Date(this.minDateValue).getFullYear() === year){
start = start < new Date(this.minDateValue).getMonth()+1?new Date(this.minDateValue).getMonth()+1:start;
}
if(this.maxDateValue !== null && new Date(this.maxDateValue).getFullYear() === year){
end = end > new Date(this.maxDateValue).getMonth()+1?new Date(this.maxDateValue).getMonth()+1:end;
}
this.months = [];
this.monthOptions = [];
if(this.monthLabel){
this.months.push(null);
this.monthOptions.push(this.monthLabel);
}
for (var monthNo = start; monthNo <= end; monthNo++) {
this.months.push(monthNo);
this.monthOptions.push(this.monthFormat == 'long'?this.monthLongValues[monthNo-1]:this.monthShortValues[monthNo-1]);
}
},
populateDay: function populateDay(){
// console.log('populate day');
var day,start1=1,start2=10,end1=9,end2=31,
month = parseInt(this.month),
year = parseInt(this.year);
// console.log(this.allowPast , year , this.currentYear , month , this.currentMonth ,start1 , this.currentDay);
if(!this.allowPast && year === this.currentYear && month === this.currentMonth && start1 < this.currentDay) {
start1 = this.currentDay;
}
if(this.maxAge != null){
if(year === this.currentYear - this.maxAge && month === this.currentMonth){
start1 = this.currentDay;
}
}
if(this.minDateValue !== null && new Date(this.minDateValue).getFullYear() === year && new Date(this.minDateValue).getMonth() + 1 === month){
start1 = start1 < new Date(this.minDateValue).getDate()?new Date(this.minDateValue).getDate():start1;
}
if(start2 < start1){
start2 = start1;
}
var numDaysInMonth = (new Date(year, month, 0).getDate());
if(end2 > numDaysInMonth) {
end2 = numDaysInMonth;
}
if(!this.allowFuture && year === this.currentYear && month === this.currentMonth && end2 > this.currentDay) {
end2 = this.currentDay;
}
if(this.minAge != null){
if(year === this.currentYear - this.minAge && month === this.currentMonth){
end2 = this.currentDay;
}
}
if(this.maxDateValue !== null && new Date(this.maxDateValue).getFullYear() === year && new Date(this.maxDateValue).getMonth() + 1 === month){
end2 = end2 > new Date(this.maxDateValue).getDate()?new Date(this.maxDateValue).getDate():end2;
}
if(end1 > start2){
start2 = end1;
}
if(start2 > end2){
end2 = start2;
}
this.days = [];
this.dayOptions = [];
if(this.dayLabel){
this.dayOptions.push(this.dayLabel);
this.days.push(null);
}
// Days 1-9
for (var i = start1; i <= end1; i++) {
if (this.daySuffixes) {
day = i + this.getSuffix(i);
} else {
day = '0' + i;
}
this.days.push(i);
this.dayOptions.push(day);
}
// Days 10-31
for (var j = start2; j <= end2; j++) {
day = j;
if (this.daySuffixes) {
day = j + this.getSuffix(j);
}
this.days.push(j);
this.dayOptions.push(day);
}
},
getSuffix: function (number) {
var suffix = '';
var st = this.daySuffixValues[0];
var nd = this.daySuffixValues[1];
var rd = this.daySuffixValues[2];
var th = this.daySuffixValues[3];
switch (number % 10) {
case 1:
suffix = (number % 100 === 11) ? th : st;
break;
case 2:
suffix = (number % 100 === 12) ? th : nd;
break;
case 3:
suffix = (number % 100 === 13) ? th : rd;
break;
default:
suffix = th;
break;
}
return suffix;
},
processDefaultDate: function(){
var date = this.defaultDate,
parts = [],
day = '',
month = '',
year = '';
switch (this.defaultDateFormat) {
case 'yyyy-mm-dd':
default:
parts = date.split('-');
day = parts[2];
month = parts[1];
year = parts[0];
break;
case 'dd/mm/yyyy':
parts = date.split('/');
day = parts[0];
month = parts[1];
year = parts[2];
break;
case 'mm/dd/yyyy':
parts = date.split('/');
day = parts[1];
month = parts[0];
year = parts[2];
break;
case 'unix':
parts = new Date();
parts.setTime(date * 1000);
day = parts.getDate() + '';
month = (parts.getMonth() + 1) + '';
year = parts.getFullYear();
if (day.length < 2) {
day = '0' + day;
}
if (month.length < 2) {
month = '0' + month;
}
break;
}
return [day, month, year];
},
yearChangeCallback: function yearChangeCallback(value) {
this.year = value;
this.populateMonth();
this.populateDay();
if (this.months.indexOf(this.month) < 0) {
this.month = null;
}
if (this.days.indexOf(this.day) < 0) {
this.day = null;
}
// console.log(this.year, this.month, this.day);
if(this.onYearChange != null){
this.onYearChange(value);
}
this.changeCallback();
},
monthChangeCallback: function monthChangeCallback(value) {
this.month = value;
this.populateDay();
if (this.days.indexOf(this.day) < 0) {
this.day = null;
}
if(this.onMonthChange != null){
this.onMonthChange(value);
}
this.changeCallback();
},
formatSubmitDate: function (day, month, year) {
var formattedDate,
_date;
switch (this.submitFormat) {
case 'unix':
_date = new Date();
_date.setDate(day);
_date.setMonth(month - 1);
_date.setYear(year);
formattedDate = Math.round(_date.getTime() / 1000);
break;
default:
formattedDate = this.submitFormat
.replace('dd', ('0' + day).slice(-2))
.replace('mm', ('0' + month).slice(-2))
.replace('yyyy', year);
break;
}
return formattedDate;
},
dayChangeCallback: function dayChangeCallback(value){
this.day = value;
if(this.onDayChange != null){
this.onDayChange(value);
}
this.changeCallback();
},
changeCallback: function changeCallback(){
if(this.day != null && this.month != null && this.year != null){
var formattedDate = this.formatSubmitDate(this.day, this.month, this.year);
if (this.submitId != '') {
document.getElementById(this.submitId).value = formattedDate;
}
this.$emit('input', formattedDate);
}
if(this.onChange != null){
this.onChange(('0' + this.day).slice(-2), ('0' + this.month).slice(-2), this.year);
}
}
}
};
/* script */
var __vue_script__$1 = script$1;
/* template */
var __vue_render__$1 = function() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c(
"div",
{ class: _vm.wrapperClass },
[
_vm.displayFormat == "dmy"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "day",
"id-name": "day",
values: _vm.days,
options: _vm.dayOptions,
"on-change": _vm.dayChangeCallback,
value: _vm.day,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "dmy"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "month",
"id-name": "month",
values: _vm.months,
options: _vm.monthOptions,
"on-change": _vm.monthChangeCallback,
value: _vm.month,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "dmy"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "year",
"id-name": "year",
values: _vm.years,
options: _vm.yearOptions,
"on-change": _vm.yearChangeCallback,
value: _vm.year,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "ymd"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "year",
"id-name": "year",
values: _vm.years,
options: _vm.yearOptions,
"on-change": _vm.yearChangeCallback,
value: _vm.year,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "ymd"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "month",
"id-name": "month",
values: _vm.months,
options: _vm.monthOptions,
"on-change": _vm.monthChangeCallback,
value: _vm.month,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "ymd"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "day",
"id-name": "day",
values: _vm.days,
options: _vm.dayOptions,
"on-change": _vm.dayChangeCallback,
value: _vm.day,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "mdy"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "month",
"id-name": "month",
values: _vm.months,
options: _vm.monthOptions,
"on-change": _vm.monthChangeCallback,
value: _vm.month,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "mdy"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "day",
"id-name": "day",
values: _vm.days,
options: _vm.dayOptions,
"on-change": _vm.dayChangeCallback,
value: _vm.day,
required: _vm.required
}
})
: _vm._e(),
_vm._v(" "),
_vm.displayFormat == "mdy"
? _c("Select", {
class: _vm.dropdownClass,
attrs: {
name: "year",
"id-name": "year",
values: _vm.years,
options: _vm.yearOptions,
"on-change": _vm.yearChangeCallback,
value: _vm.year,
required: _vm.required
}
})
: _vm._e()
],
1
)
};
var __vue_staticRenderFns__$1 = [];
__vue_render__$1._withStripped = true;
/* style */
var __vue_inject_styles__$1 = function (inject) {
if (!inject) { return }
inject("data-v-2d591ac5_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: {"version":3,"sources":[],"names":[],"mappings":"","file":"dropdown-datepicker.vue"}, media: undefined });
};
/* scoped */
var __vue_scope_id__$1 = undefined;
/* module identifier */
var __vue_module_identifier__$1 = undefined;
/* functional template */
var __vue_is_functional_template__$1 = false;
/* style inject SSR */
var component = normalizeComponent_1(
{ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },
__vue_inject_styles__$1,
__vue_script__$1,
__vue_scope_id__$1,
__vue_is_functional_template__$1,
__vue_module_identifier__$1,
browser,
undefined
);
// Import vue component
// Declare install function executed by Vue.use()
function install(Vue) {
if (install.installed) { return; }
install.installed = true;
Vue.component('DropdownDatepicker', component);
}
// Create module definition for Vue.use()
var plugin = {
install: install,
};
// Auto-install when vue is found (eg. in browser via <script> tag)
var GlobalVue = null;
if (typeof window !== 'undefined') {
GlobalVue = window.Vue;
} else if (typeof global !== 'undefined') {
GlobalVue = global.Vue;
}
if (GlobalVue) {
GlobalVue.use(plugin);
}
exports.default = component;
exports.install = install;
Object.defineProperty(exports, '__esModule', { value: true });
}));