vue-ethiopian-calendar
Version:
A Vue 2 component for Ethiopian (Amete Alem) calendar with Gregorian date conversion
742 lines (650 loc) • 26.7 kB
JavaScript
module.exports =
/******/ (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 = "fb15");
/******/ })
/************************************************************************/
/******/ ({
/***/ "37aa":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "c0f2":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_EthiopianCalendar_vue_vue_type_style_index_0_id_eb020fd4_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("37aa");
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_EthiopianCalendar_vue_vue_type_style_index_0_id_eb020fd4_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_EthiopianCalendar_vue_vue_type_style_index_0_id_eb020fd4_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/***/ }),
/***/ "fb15":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
if (typeof window !== 'undefined') {
var currentScript = window.document.currentScript
if (false) { var getCurrentScript; }
var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
if (src) {
__webpack_require__.p = src[1] // eslint-disable-line
}
}
// Indicate to webpack that this file can be concatenated
/* harmony default export */ var setPublicPath = (null);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"65cc4017-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/EthiopianCalendar.vue?vue&type=template&id=eb020fd4&scoped=true
var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"calendar-container",style:(_vm.cssVariables)},[_c('div',{staticClass:"calendar-header"},[_c('button',{on:{"click":_vm.prevYear}},[_vm._v("«")]),(_vm.scope !== 'yyyy')?_c('button',{on:{"click":_vm.prevMonth}},[_vm._v("◀")]):_vm._e(),(_vm.scope === 'yyyy')?_c('span',[_vm._v(_vm._s(_vm.visibleYears[0])+" - "+_vm._s(_vm.visibleYears[_vm.visibleYears.length - 1]))]):(_vm.scope === 'yyyy-mm')?_c('span',[_vm._v(_vm._s(_vm.monthNames[_vm.selectedMonth - 1])+" "+_vm._s(_vm.selectedYear))]):_c('span',[_vm._v(_vm._s(_vm.monthNames[_vm.selectedMonth - 1])+" "+_vm._s(_vm.selectedYear))]),(_vm.scope !== 'yyyy')?_c('button',{on:{"click":_vm.nextMonth}},[_vm._v("▶")]):_vm._e(),_c('button',{on:{"click":_vm.nextYear}},[_vm._v("»")])]),(_vm.scope === 'yyyy')?_c('div',{staticClass:"calendar-years"},_vm._l((_vm.visibleYears),function(year){return _c('div',{key:year,staticClass:"calendar-year",class:{ selected: year === _vm.selectedYear },on:{"click":function($event){return _vm.selectYear(year)}}},[_vm._v(" "+_vm._s(year)+" ")])}),0):(_vm.scope === 'yyyy-mm')?_c('div',{staticClass:"calendar-months"},_vm._l((_vm.monthNames),function(month,index){return _c('div',{key:month,staticClass:"calendar-month",class:{ selected: index + 1 === _vm.selectedMonth },on:{"click":function($event){return _vm.selectMonth(index + 1)}}},[_vm._v(" "+_vm._s(month)+" ")])}),0):[_c('div',{staticClass:"calendar-weekdays"},_vm._l((_vm.weekdayNames),function(day){return _c('div',{key:day},[_vm._v(_vm._s(day))])}),0),_c('div',{staticClass:"calendar-days"},[_vm._l((_vm.firstDayOffset),function(blank){return _c('div',{key:'blank' + blank,staticClass:"calendar-day empty"})}),_vm._l((_vm.daysInMonth),function(day){return _c('div',{key:day,staticClass:"calendar-day",class:{ selected: day === _vm.selectedDay},on:{"click":function($event){return _vm.selectDate(day)}}},[_vm._v(" "+_vm._s(day)+" ")])})],2)],(_vm.scope === 'yyyy-mm')?_c('div',{staticClass:"calendar-footer"},[_vm._v(" "+_vm._s(_vm.monthNames[_vm.selectedMonth - 1])+" "+_vm._s(_vm.selectedYear)+" ")]):(_vm.scope === 'yyyy')?_c('div',{staticClass:"calendar-footer"},[_vm._v(" "+_vm._s(_vm.selectedYear)+" ")]):_c('div',{staticClass:"calendar-footer"},[_vm._v(" "+_vm._s(_vm.selectedDay)+" "+_vm._s(_vm.monthNames[_vm.selectedMonth - 1])+" "+_vm._s(_vm.selectedYear)+" ")])],2)
}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/EthiopianCalendar.vue?vue&type=template&id=eb020fd4&scoped=true
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/EthiopianCalendar.vue?vue&type=script&lang=js
/* harmony default export */ var EthiopianCalendarvue_type_script_lang_js = ({
props: {
language: {
type: String,
default: "am",
validator: value => ["am", "en"].includes(value),
},
primaryColor: {
type: String,
default: '#ffffff'
},
hoverColor: {
type: String,
default: '#ffe08a'
},
todayColor: {
type: String,
default: '#1fe08a'
},
selectedColor: {
type: String,
default: '#ccdefe'
},
textColor: {
type: String,
default: '#2d3748'
},
backgroundColor: {
type: String,
default: '#ffffff'
},
borderColor: {
type: String,
default: '#ffffff'
},
headerBg: {
type: String,
default: '#f7fafc'
},
weekdayColor: {
type: String,
default: '#718096'
},
fontStack: {
type: String,
default: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Noto Sans Ethiopic', sans-serif"
},
scope: {
type: String,
default: 'yyyy-mm-dd',
validator: value => ['yyyy', 'yyyy-mm', 'yyyy-mm-dd'].includes(value)
},
// yearRange: {
// type: Number,
// default: 12
// },
value: {
type: [String, Object],
default: null,
validator: function(value) {
if (!value) return true
if (typeof value === 'string') {
// yyyy
if (/^\d{4}$/.test(value)) return true
// yyyy-mm
if (/^\d{4}-\d{2}$/.test(value)) return true
// yyyy-mm-dd
return /^\d{4}-\d{2}-\d{2}$/.test(value)
}
if (typeof value === 'object') {
const hasYear = !!value.year
const hasMonth = value.month !== undefined
const hasDay = value.day !== undefined
return hasYear || hasMonth || hasDay
}
return false
// return (
// typeof value === 'object' &&
// value.year &&
// value.month &&
// value.day
// )
}
},
},
data() {
// Initialize with current Ethiopian date
const today = new Date()
const defaultEthiopianDate = this.gregorianToEthiopian(
today.getFullYear(),
today.getMonth() + 1,
today.getDate()
)
// Initialize with prop value or today's date
let initialDate
if (this.value) {
if (typeof this.value === 'string') {
const parts = this.value.split('-')
initialDate = {
year: parseInt(parts[0]),
month: parts[1] ? parseInt(parts[1]) : 1,
day: parts[2] ? parseInt(parts[2]) : 1
}
} else {
initialDate = {...this.value}
}
} else {
initialDate = defaultEthiopianDate
}
return {
selectedYear: initialDate.year,
selectedMonth: initialDate.month,
selectedDay: initialDate.day,
internalValue: {...initialDate},
defaultDate: defaultEthiopianDate,
months: {
am: ["መስከረም", "ጥቅምት", "ኅዳር", "ታኅሳስ", "ጥር", "የካቲት", "መጋቢት", "ሚያዝያ", "ግንቦት", "ሰኔ", "ሀምሌ", "ነሐሴ", "ጳጉሜ"],
en: ["Meskerem", "Tikimt", "Hidar", "Tahsas", "Tir", "Yekatit", "Megabit", "Miyazya", "Ginbot", "Sene", "Hamle", "Nehase", "Pagume"]
},
weekdays: {
am: ["እሑድ", "ሰኞ", "ማክሰኞ", "ረቡዕ", "ሐሙስ", "ዓርብ", "ቅዳሜ"],
en: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
}
};
},
computed: {
monthNames() {
return this.months[this.language];
},
weekdayNames() {
return this.weekdays[this.language];
},
daysInMonth() {
if (this.selectedMonth === 13) {
return this.isEthiopianLeapYear(this.selectedYear) ? 6 : 5;
}
return 30;
},
firstDayOffset() {
const gregDate = this.ethiopianToGregorian(this.selectedYear, this.selectedMonth, 1);
return gregDate.getDay(); // 0=Sunday, 1=Monday, etc.
},
cssVariables() {
return {
'--primary-color': this.primaryColor,
'--hover-color': this.hoverColor,
'--today-color': this.todayColor,
'--selected-color': this.selectedColor,
'--text-color': this.textColor,
'--background-color': this.backgroundColor,
'--border-color': this.borderColor,
'--header-bg': this.headerBg,
'--weekday-color': this.weekdayColor,
'--font-stack': this.fontStack
};
},
visibleYears() {
const startYear = this.scope === 'yyyy'
? Math.floor(this.selectedYear / 12) * 12
: this.selectedYear - Math.floor(12 / 2);
return Array.from({ length: 12 }, (_, i) => startYear + i);
}
},
methods: {
startDayOfEthiopian(year) {
let newYearDay = Math.floor(year / 100) - Math.floor(year / 400) - 4;
if ((year - 1) % 4 === 3) {
newYearDay += 1;
}
return newYearDay;
},
isEthiopianLeapYear(year) {
return (year) % 4 === 3;
},
ethiopianToGregorian(eYear, eMonth, eDay) {
// Prevent incorrect input
if (eYear <= 0 || eMonth <= 0 || eDay <= 0) {
throw new Error("Malformed input can't be converted.");
}
// Ethiopian new year in Gregorian calendar
const newYearDay = this.startDayOfEthiopian(eYear);
// September (Ethiopian) sees 7y difference
let gregorianYear = eYear + 7;
// Number of days in gregorian months starting with September (index 1)
const gregorianMonths = [0, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30];
// Check if next Gregorian year is leap year
const nextYear = gregorianYear + 1;
if ((nextYear % 4 === 0 && nextYear % 100 !== 0) || nextYear % 400 === 0) {
gregorianMonths[6] = 29; // February has 29 days
}
// Calculate number of days up to that date
let until = ((eMonth - 1) * 30) + eDay;
if (until <= 37 && eYear <= 1575) { // mysterious rule
until += 28;
gregorianMonths[0] = 31;
} else {
until += newYearDay - 1;
}
// If Ethiopian year is leap year, paguemain has six days
if (eYear - 1 % 4 === 3) {
until += 1;
}
// Calculate month and date incremently
let m = 0;
let gregorianDate = 0;
for (m = 0; m < gregorianMonths.length; m++) {
if (until <= gregorianMonths[m]) {
gregorianDate = until;
break;
} else {
until -= gregorianMonths[m];
}
}
// If m > 4, we're already on next Gregorian year
if (m > 4) {
gregorianYear += 1;
}
// Gregorian months ordered according to Ethiopian
const order = [8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const gregorianMonth = order[m];
return new Date(gregorianYear, gregorianMonth - 1, gregorianDate);
},
gregorianToEthiopian(gYear, gMonth, gDay) {
// Prevent incorrect input
if (gYear <= 0 || gMonth <= 0 || gDay <= 0) {
throw new Error("Malformed input can't be converted.");
}
// Date between 5 and 14 of May 1582 are invalid
if (gMonth === 5 && gDay >= 5 && gDay <= 14 && gYear === 1582) {
throw new Error("Invalid Date between 5-14 May 1582.");
}
// Number of days in gregorian months starting with January (index 1)
const gregorianMonths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Check for Gregorian leap year
if ((gYear % 4 === 0 && gYear % 100 !== 0) || gYear % 400 === 0) {
gregorianMonths[2] = 29;
}
// September sees 8y difference
let ethiopianYear = gYear - 8;
// Number of days in ethiopian months starting with January (index 1)
const ethiopianMonths = [0, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5, 30, 30, 30, 30];
// Check if Ethiopian leap year (pagume has 6 days)
if (ethiopianYear % 4 === 3) {
ethiopianMonths[10] = 6;
} else {
ethiopianMonths[10] = 5;
}
// Ethiopian new year in Gregorian calendar
const newYearDay = this.startDayOfEthiopian(ethiopianYear);
// Calculate number of days up to that date
let until = 0;
for (let i = 1; i < gMonth; i++) {
until += gregorianMonths[i];
}
until += gDay;
// Update tahissas (december) to match january 1st
let tahissas;
if (ethiopianYear % 4 === 0) {
tahissas = 26;
} else {
tahissas = 25;
}
// Take into account the 1582 change
if (gYear < 1582) {
ethiopianMonths[1] = 0;
ethiopianMonths[2] = tahissas;
} else if (until <= 277 && gYear === 1582) {
ethiopianMonths[1] = 0;
ethiopianMonths[2] = tahissas;
} else {
tahissas = newYearDay - 3;
ethiopianMonths[1] = tahissas;
}
// Calculate month and date incremently
let m = 0;
let ethiopianDate = 0;
for (m = 1; m < ethiopianMonths.length; m++) {
if (until <= ethiopianMonths[m]) {
if (m === 1 || ethiopianMonths[m] === 0) {
ethiopianDate = until + (30 - tahissas);
} else {
ethiopianDate = until;
}
break;
} else {
until -= ethiopianMonths[m];
}
}
// }
// If m > 10, we're already on next Ethiopian year
if (m > 10) {
ethiopianYear += 1;
}
// Ethiopian months ordered according to Gregorian
const order = [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4];
const ethiopianMonth = order[m];
return { year: ethiopianYear, month: ethiopianMonth, day: ethiopianDate };
},
selectDate(day) {
this.selectedDay = day;
this.emitSelectedDate();
},
selectMonth(month) {
this.selectedMonth = month;
if (this.scope === 'yyyy-mm') {
this.emitSelectedDate();
}
},
selectYear(year) {
this.selectedYear = year;
if (this.scope === 'yyyy') {
this.emitSelectedDate();
}
},
emitSelectedDate() {
// Get default values from the component's data
const defaultDate = this.defaultDate || {
year: this.selectedYear,
month: 1,
day: 1
};
let ethiopianDate;
switch(this.scope) {
case 'yyyy':
ethiopianDate = {
year: this.selectedYear || defaultDate.year,
month: 1, // Default to first month
day: 1 // Default to first day
};
break;
case 'yyyy-mm':
ethiopianDate = {
year: this.selectedYear || defaultDate.year,
month: this.selectedMonth || defaultDate.month,
day: 1 // Default to first day
};
break;
default:
ethiopianDate = {
year: this.selectedYear || defaultDate.year,
month: this.selectedMonth || defaultDate.month,
day: this.selectedDay || defaultDate.day
};
}
// Ensure we have valid values for all fields
ethiopianDate.year = ethiopianDate.year || defaultDate.year;
ethiopianDate.month = ethiopianDate.month || defaultDate.month;
ethiopianDate.day = ethiopianDate.day || defaultDate.day;
const gregDate = this.ethiopianToGregorian(
ethiopianDate.year,
ethiopianDate.month,
ethiopianDate.day
);
const gregorianDate = {
year: gregDate.getFullYear(),
month: gregDate.getMonth() + 1, // JS months are 0-based
day: gregDate.getDate()
};
this.$emit("date-selected", {
ethiopianDate,
gregorianDate,
formatted: this.formatDateString(ethiopianDate)
});
},
formatDateString(date) {
const year = date.year;
const month = date.month.toString().padStart(2, '0');
const day = date.day.toString().padStart(2, '0');
switch(this.scope) {
case 'yyyy': return `${year}`;
case 'yyyy-mm': return `${year}-${month}`;
default: return `${year}-${month}-${day}`;
}
},
prevMonth(event) {
event.preventDefault(); // Prevent default action of the button
this.selectedDay = null;
if (this.selectedMonth === 1) {
this.selectedMonth = 13;
this.selectedYear -= 1;
} else {
this.selectedMonth -= 1;
}
},
nextMonth(event) {
event.preventDefault(); // Prevent default action of the button
this.selectedDay = null;
if (this.selectedMonth === 13) {
this.selectedMonth = 1;
this.selectedYear += 1;
} else {
this.selectedMonth += 1;
}
},
prevYear(event) {
event.preventDefault(); // Prevent default action of the button
this.selectedDay = null;
if (this.scope === 'yyyy') {
this.selectedYear -= 12;
} else if (this.scope === 'yyyy-mm') {
this.selectedYear -= 1;
} else {
this.selectedYear -= 1;
}
},
nextYear(event) {
event.preventDefault(); // Prevent default action of the button
this.selectedDay = null;
if (this.scope === 'yyyy') {
this.selectedYear += 12;
} else if (this.scope === 'yyyy-mm') {
this.selectedYear += 1;
} else {
this.selectedYear += 1;
}
},
}
});
// CONCATENATED MODULE: ./src/EthiopianCalendar.vue?vue&type=script&lang=js
/* harmony default export */ var src_EthiopianCalendarvue_type_script_lang_js = (EthiopianCalendarvue_type_script_lang_js);
// EXTERNAL MODULE: ./src/EthiopianCalendar.vue?vue&type=style&index=0&id=eb020fd4&prod&scoped=true&lang=css
var EthiopianCalendarvue_type_style_index_0_id_eb020fd4_prod_scoped_true_lang_css = __webpack_require__("c0f2");
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent(
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier /* server only */,
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options =
typeof scriptExports === 'function' ? scriptExports.options : scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) {
// server build
hook = function (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 (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
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 (injectStyles) {
hook = shadowMode
? function () {
injectStyles.call(
this,
(options.functional ? this.parent : this).$root.$options.shadowRoot
)
}
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// 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 {
exports: scriptExports,
options: options
}
}
// CONCATENATED MODULE: ./src/EthiopianCalendar.vue
/* normalize component */
var component = normalizeComponent(
src_EthiopianCalendarvue_type_script_lang_js,
render,
staticRenderFns,
false,
null,
"eb020fd4",
null
)
/* harmony default export */ var EthiopianCalendar = (component.exports);
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
/* harmony default export */ var entry_lib = __webpack_exports__["default"] = (EthiopianCalendar);
/***/ })
/******/ })["default"];
//# sourceMappingURL=EthiopianCalendar.common.js.map