@ajf/calendars 12.1.6 → 12.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/calendars-ethiopian.umd.js +14 -4
- package/bundles/calendars-ethiopian.umd.js.map +1 -1
- package/bundles/calendars.umd.js +1 -1
- package/bundles/calendars.umd.js.map +1 -1
- package/esm2015/ethiopian/calendar-service.js +2 -2
- package/esm2015/ethiopian/ethiopian-date-pipe.js +2 -2
- package/esm2015/ethiopian/ethiopian-date.js +13 -3
- package/esm2015/version.js +1 -1
- package/ethiopian/ethiopian-date.d.ts +11 -1
- package/fesm2015/calendars.js +1 -1
- package/fesm2015/calendars.js.map +1 -1
- package/fesm2015/ethiopian.js +14 -4
- package/fesm2015/ethiopian.js.map +1 -1
- package/package.json +2 -2
|
@@ -579,7 +579,7 @@
|
|
|
579
579
|
this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);
|
|
580
580
|
}
|
|
581
581
|
else if (typeof val === 'object' && val instanceof Date) {
|
|
582
|
-
var result = EthiopianDate.gregorianToEthiopian(val
|
|
582
|
+
var result = EthiopianDate.gregorianToEthiopian(val);
|
|
583
583
|
_c = __read([
|
|
584
584
|
result.getFullYear(),
|
|
585
585
|
result.getMonth(),
|
|
@@ -649,7 +649,7 @@
|
|
|
649
649
|
* @param val - A numeric year value if the second and third parameters are
|
|
650
650
|
* provided, it should be a date string if not
|
|
651
651
|
* @param month A zero-based numeric value for the month
|
|
652
|
-
* (0 for
|
|
652
|
+
* (0 for መስከረም, 12 for ጳጉሜን)
|
|
653
653
|
* @param day A numeric value equal for the day of the month.
|
|
654
654
|
*
|
|
655
655
|
* @api public
|
|
@@ -678,6 +678,16 @@
|
|
|
678
678
|
var gc = toGC(ec);
|
|
679
679
|
return new Date(gc[0], gc[1] - 1, gc[2]);
|
|
680
680
|
};
|
|
681
|
+
/**
|
|
682
|
+
*
|
|
683
|
+
* @param val - A numeric year value if the second and third parameters are
|
|
684
|
+
* provided, it should be a date string if not
|
|
685
|
+
* @param month A zero-based numeric value for the month
|
|
686
|
+
* (0 for January, 11 for December)
|
|
687
|
+
* @param day A numeric value equal for the day of the month.
|
|
688
|
+
*
|
|
689
|
+
* @api public
|
|
690
|
+
*/
|
|
681
691
|
EthiopianDate.gregorianToEthiopian = function (val, month, day) {
|
|
682
692
|
var gc;
|
|
683
693
|
if (val != null && month == null && day == null && typeof val !== 'number') {
|
|
@@ -891,7 +901,7 @@
|
|
|
891
901
|
var ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
|
|
892
902
|
var curYear = ecDate.getFullYear();
|
|
893
903
|
var firstYear = curYear - (curYear % 10) + 1;
|
|
894
|
-
var curDate = EthiopianDate.ethiopianToGregorian(firstYear,
|
|
904
|
+
var curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
|
|
895
905
|
var rows = [];
|
|
896
906
|
for (var i = 0; i < 4; i++) {
|
|
897
907
|
var row = [];
|
|
@@ -941,7 +951,7 @@
|
|
|
941
951
|
try {
|
|
942
952
|
var ed = EthiopianDate.gregorianToEthiopian(value);
|
|
943
953
|
var date = ("0" + ed.getDate()).slice(-2);
|
|
944
|
-
var month = ("0" + ed.getMonth()).slice(-2);
|
|
954
|
+
var month = ("0" + (ed.getMonth() + 1)).slice(-2);
|
|
945
955
|
return date + "/" + month + "/" + ed.getFullYear();
|
|
946
956
|
}
|
|
947
957
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendars-ethiopian.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/calendars/ethiopian/converter.ts","../../../../../src/calendars/ethiopian/utils.ts","../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../src/calendars/ethiopian/public-api.ts","../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(\n val.getFullYear(),\n val.getMonth() + 1,\n val.getDate(),\n );\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth()}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getISODay","startOfISOWeek","endOfISOWeek","addWeeks","subWeeks","setISODay","startOfWeek","addDays","addYears","AjfCalendarService","Injectable","Pipe","NgModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendars-ethiopian.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/calendars/ethiopian/converter.ts","../../../../../src/calendars/ethiopian/utils.ts","../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../src/calendars/ethiopian/public-api.ts","../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(val);\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n /**\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth() + 1}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getISODay","startOfISOWeek","endOfISOWeek","addWeeks","subWeeks","setISODay","startOfWeek","addDays","addYears","AjfCalendarService","Injectable","Pipe","NgModule"],"mappings":"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"}
|
package/bundles/calendars.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendars.umd.js","sources":["../../../../../src/calendars/version.ts","../../../../../src/calendars/public-api.ts","../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.
|
|
1
|
+
{"version":3,"file":"calendars.umd.js","sources":["../../../../../src/calendars/version.ts","../../../../../src/calendars/public-api.ts","../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.7');\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './public-api';\n"],"names":["Version"],"mappings":";;;;;;CAAA;;;;;;;;;;;;;;;;;;;;;CAwBA;KACa,OAAO,GAAG,IAAIA,YAAO,CAAC,mBAAmB;;CCzBtD;;;;;;;;;;;;;;;;;;;;;;CCAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -187,7 +187,7 @@ export class AjfEthiopianCalendarService extends AjfCalendarService {
|
|
|
187
187
|
const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
|
|
188
188
|
let curYear = ecDate.getFullYear();
|
|
189
189
|
let firstYear = curYear - (curYear % 10) + 1;
|
|
190
|
-
let curDate = EthiopianDate.ethiopianToGregorian(firstYear,
|
|
190
|
+
let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
|
|
191
191
|
let rows = [];
|
|
192
192
|
for (let i = 0; i < 4; i++) {
|
|
193
193
|
let row = [];
|
|
@@ -207,4 +207,4 @@ AjfEthiopianCalendarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function
|
|
|
207
207
|
AjfEthiopianCalendarService.decorators = [
|
|
208
208
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
209
209
|
];
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2NhbGVuZGFyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUdMLGtCQUFrQixHQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0MsU0FBUyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDL0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQjtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FB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QzdDLElBQUksT0FBTyxHQUFTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsR0FBcUIsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUExS0YsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2FsZW5kYXJFbnRyeSxcbiAgQWpmQ2FsZW5kYXJQYXJhbXMsXG4gIEFqZkNhbGVuZGFyU2VydmljZSxcbiAgQWpmQ2FsZW5kYXJWaWV3LFxuICBBamZDYWxlbmRhclZpZXdNb2RlLFxufSBmcm9tICdAYWpmL2NvcmUvY2FsZW5kYXInO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZERheXMsXG4gIGFkZFdlZWtzLFxuICBhZGRZZWFycyxcbiAgZW5kT2ZJU09XZWVrLFxuICBnZXRJU09EYXksXG4gIHNldElTT0RheSxcbiAgc3RhcnRPZklTT1dlZWssXG4gIHN0YXJ0T2ZXZWVrLFxuICBzdWJXZWVrcyxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5mdW5jdGlvbiBnZXRNb250aERheXMobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1vbnRoIDwgMTIpIHtcbiAgICByZXR1cm4gMzA7XG4gIH1cbiAgcmV0dXJuIHllYXIgJSA0ID09PSAzID8gNiA6IDU7XG59XG5cbmZ1bmN0aW9uIGdldE1vbnRoQm91bmRzKGRhdGU6IEV0aGlvcGlhbkRhdGUpOiB7c3RhcnQ6IEV0aGlvcGlhbkRhdGU7IGVuZDogRXRoaW9waWFuRGF0ZX0ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRXRoaW9waWFuRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gIGNvbnN0IGVuZERheSA9IGdldE1vbnRoRGF5cyhtb250aCwgeWVhcik7XG4gIGNvbnN0IGVuZCA9IG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCBlbmREYXkpO1xuICByZXR1cm4ge3N0YXJ0LCBlbmR9O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5DYWxlbmRhclNlcnZpY2UgZXh0ZW5kcyBBamZDYWxlbmRhclNlcnZpY2Uge1xuICBvdmVycmlkZSBidWlsZFZpZXcocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyVmlldyB7XG4gICAgY29uc3Qge3ZpZXdNb2RlfSA9IHBhcmFtcztcbiAgICBjb25zdCB2aWV3RGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4ocGFyYW1zLnZpZXdEYXRlKTtcbiAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7XG4gICAgICBjYXNlICdkZWNhZGUnOlxuICAgICAgICBsZXQgY3VyWWVhcjogbnVtYmVyID0gdmlld0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgbGV0IGZpcnN0WWVhciA9IGN1clllYXIgLSAoY3VyWWVhciAlIDEwKSArIDE7XG4gICAgICAgIGxldCBsYXN0WWVhciA9IGZpcnN0WWVhciArIDExO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlYWRlcjogYCR7Zmlyc3RZZWFyfSAtICR7bGFzdFllYXJ9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjRGVjYWRlQ2FsZW5kYXJSb3dzKHBhcmFtcyksXG4gICAgICAgIH07XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXI6IGAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXMpLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjb25zdCB2aWV3ID0gc3VwZXIuYnVpbGRWaWV3KHBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyOiBgJHt2aWV3RGF0ZS5nZXRTaG9ydE1vbnRoTmFtZSgpfSAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IHRoaXMuX2VjTW9udGhIZWFkZXJSb3cocGFyYW1zKSxcbiAgICAgICAgICByb3dzOiB2aWV3LnJvd3MsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5idWlsZFZpZXcocGFyYW1zKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVudHJ5TGFiZWwoZW50cnk6IEFqZkNhbGVuZGFyRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZW50cnkuZGF0ZSk7XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdkYXknKSB7XG4gICAgICByZXR1cm4gYCR7ZWNEYXRlLmdldERhdGUoKX1gO1xuICAgIH1cbiAgICBpZiAoZW50cnkudHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgcmV0dXJuIGAke2VjRGF0ZS5nZXRNb250aE5hbWUoKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7ZWNEYXRlLmdldEZ1bGxZZWFyKCl9YDtcbiAgfVxuXG4gIG92ZXJyaWRlIG1vbnRoQm91bmRzKGRhdGU6IERhdGUsIGlzb01vZGU6IGJvb2xlYW4pOiB7c3RhcnQ6IERhdGU7IGVuZDogRGF0ZX0ge1xuICAgIGlmICghaXNvTW9kZSkge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihkYXRlKTtcbiAgICAgIGNvbnN0IHtzdGFydCwgZW5kfSA9IGdldE1vbnRoQm91bmRzKGVjRGF0ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihzdGFydCksXG4gICAgICAgIGVuZDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihlbmQpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzb0RheSA9IGdldElTT0RheShkYXRlKTtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZGF0ZSk7XG4gICAgICBsZXQge3N0YXJ0LCBlbmR9ID0gZ2V0TW9udGhCb3VuZHMoZWNEYXRlKTtcbiAgICAgIGlmIChlY0RhdGUuZ2V0TW9udGgoKSA9PT0gMTIpIHtcbiAgICAgICAgc3RhcnQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHN0YXJ0T2ZJU09XZWVrKHN0YXJ0LmdldEdyZWdvcmlhbkRhdGUoKSkpO1xuICAgICAgICBlbmQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlID0gaXNvRGF5IDwgNCA/IGVuZE9mSVNPV2VlayhkYXRlKSA6IHN0YXJ0T2ZJU09XZWVrKGRhdGUpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtEYXkgPSBzdGFydC5nZXREYXkoKTtcbiAgICAgICAgY29uc3QgZW5kV2Vla0RheSA9IGVuZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKHN0YXJ0V2Vla0RheSA9PSAwIHx8IHN0YXJ0V2Vla0RheSA+IDQpIHtcbiAgICAgICAgICBzdGFydCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oYWRkV2Vla3Moc3RhcnQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZFdlZWtEYXkgPiAwICYmIGVuZFdlZWtEYXkgPCA0KSB7XG4gICAgICAgICAgZW5kID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihzdWJXZWVrcyhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0OiBzdGFydE9mSVNPV2VlayhzdGFydC5nZXRHcmVnb3JpYW5EYXRlKCkpLFxuICAgICAgICBlbmQ6IGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmV4dFZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMTIpIHtcbiAgICAgICAgbW9udGggPSAwO1xuICAgICAgICB5ZWFyICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCArPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLm5leHRWaWV3KHZpZXdEYXRlLCB2aWV3TW9kZSk7XG4gIH1cblxuICBvdmVycmlkZSBwcmV2aW91c1ZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMCkge1xuICAgICAgICBtb250aCA9IDEyO1xuICAgICAgICB5ZWFyIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCAtPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnByZXZpb3VzVmlldyh2aWV3RGF0ZSwgdmlld01vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNNb250aEhlYWRlclJvdyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHtpc29Nb2RlLCB2aWV3RGF0ZX0gPSBwYXJhbXM7XG4gICAgbGV0IGN1ckRhdGU6IERhdGU7XG4gICAgaWYgKGlzb01vZGUpIHtcbiAgICAgIGN1ckRhdGUgPSBzZXRJU09EYXkoc3RhcnRPZldlZWsodmlld0RhdGUpLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyRGF0ZSA9IHN0YXJ0T2ZXZWVrKHZpZXdEYXRlKTtcbiAgICB9XG4gICAgbGV0IHdlZWtEYXlOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihjdXJEYXRlKTtcbiAgICAgIHdlZWtEYXlOYW1lcy5wdXNoKGVjRGF0ZS5nZXREYXlPZldlZWsoKSk7XG4gICAgICBjdXJEYXRlID0gYWRkRGF5cyhjdXJEYXRlLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHdlZWtEYXlOYW1lcztcbiAgfVxuXG4gIHByaXZhdGUgX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogQWpmQ2FsZW5kYXJFbnRyeVtdW10ge1xuICAgIGNvbnN0IHt2aWV3RGF0ZSwgc2VsZWN0aW9ufSA9IHBhcmFtcztcbiAgICBjb25zdCB5ZWFyID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSkuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgY3VyRGF0ZTogRXRoaW9waWFuRGF0ZTtcblxuICAgIGxldCByb3dzOiBBamZDYWxlbmRhckVudHJ5W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDQ7IGkrKykge1xuICAgICAgbGV0IHJvdzogQWpmQ2FsZW5kYXJFbnRyeVtdID0gW107XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgICBjb25zdCBjdXJNb250aCA9IGkgKiAzICsgajtcbiAgICAgICAgaWYgKGN1ck1vbnRoIDwgMTMpIHtcbiAgICAgICAgICBjdXJEYXRlID0gbmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgY3VyTW9udGgsIDEpO1xuICAgICAgICAgIGxldCBkYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihjdXJEYXRlKTtcbiAgICAgICAgICBsZXQgbmV3RW50cnk6IEFqZkNhbGVuZGFyRW50cnkgPSB7dHlwZTogJ21vbnRoJywgZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgICAgbmV3RW50cnkuc2VsZWN0ZWQgPSB0aGlzLmlzRW50cnlTZWxlY3RlZChuZXdFbnRyeSwgc2VsZWN0aW9uKTtcbiAgICAgICAgICByb3cucHVzaChuZXdFbnRyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNEZWNhZGVDYWxlbmRhclJvd3MocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyRW50cnlbXVtdIHtcbiAgICBjb25zdCB7dmlld0RhdGUsIHNlbGVjdGlvbn0gPSBwYXJhbXM7XG4gICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgbGV0IGN1clllYXI6IG51bWJlciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGxldCBmaXJzdFllYXIgPSBjdXJZZWFyIC0gKGN1clllYXIgJSAxMCkgKyAxO1xuICAgIGxldCBjdXJEYXRlOiBEYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihmaXJzdFllYXIsIDEsIDEpO1xuXG4gICAgbGV0IHJvd3M6IEFqZkNhbGVuZGFyRW50cnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGxldCByb3c6IEFqZkNhbGVuZGFyRW50cnlbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShjdXJEYXRlKTtcbiAgICAgICAgbGV0IG5ld0VudHJ5OiBBamZDYWxlbmRhckVudHJ5ID0ge3R5cGU6ICd5ZWFyJywgZGF0ZTogZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgIG5ld0VudHJ5LnNlbGVjdGVkID0gdGhpcy5pc0VudHJ5U2VsZWN0ZWQobmV3RW50cnksIHNlbGVjdGlvbik7XG4gICAgICAgIHJvdy5wdXNoKG5ld0VudHJ5KTtcbiAgICAgICAgY3VyRGF0ZSA9IGFkZFllYXJzKGN1ckRhdGUsIDEpO1xuICAgICAgfVxuICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cbn1cbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2NhbGVuZGFyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUdMLGtCQUFrQixHQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0MsU0FBUyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDL0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQjtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FB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QzdDLElBQUksT0FBTyxHQUFTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsR0FBcUIsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUExS0YsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2FsZW5kYXJFbnRyeSxcbiAgQWpmQ2FsZW5kYXJQYXJhbXMsXG4gIEFqZkNhbGVuZGFyU2VydmljZSxcbiAgQWpmQ2FsZW5kYXJWaWV3LFxuICBBamZDYWxlbmRhclZpZXdNb2RlLFxufSBmcm9tICdAYWpmL2NvcmUvY2FsZW5kYXInO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZERheXMsXG4gIGFkZFdlZWtzLFxuICBhZGRZZWFycyxcbiAgZW5kT2ZJU09XZWVrLFxuICBnZXRJU09EYXksXG4gIHNldElTT0RheSxcbiAgc3RhcnRPZklTT1dlZWssXG4gIHN0YXJ0T2ZXZWVrLFxuICBzdWJXZWVrcyxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5mdW5jdGlvbiBnZXRNb250aERheXMobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1vbnRoIDwgMTIpIHtcbiAgICByZXR1cm4gMzA7XG4gIH1cbiAgcmV0dXJuIHllYXIgJSA0ID09PSAzID8gNiA6IDU7XG59XG5cbmZ1bmN0aW9uIGdldE1vbnRoQm91bmRzKGRhdGU6IEV0aGlvcGlhbkRhdGUpOiB7c3RhcnQ6IEV0aGlvcGlhbkRhdGU7IGVuZDogRXRoaW9waWFuRGF0ZX0ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRXRoaW9waWFuRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gIGNvbnN0IGVuZERheSA9IGdldE1vbnRoRGF5cyhtb250aCwgeWVhcik7XG4gIGNvbnN0IGVuZCA9IG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCBlbmREYXkpO1xuICByZXR1cm4ge3N0YXJ0LCBlbmR9O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5DYWxlbmRhclNlcnZpY2UgZXh0ZW5kcyBBamZDYWxlbmRhclNlcnZpY2Uge1xuICBvdmVycmlkZSBidWlsZFZpZXcocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyVmlldyB7XG4gICAgY29uc3Qge3ZpZXdNb2RlfSA9IHBhcmFtcztcbiAgICBjb25zdCB2aWV3RGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4ocGFyYW1zLnZpZXdEYXRlKTtcbiAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7XG4gICAgICBjYXNlICdkZWNhZGUnOlxuICAgICAgICBsZXQgY3VyWWVhcjogbnVtYmVyID0gdmlld0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgbGV0IGZpcnN0WWVhciA9IGN1clllYXIgLSAoY3VyWWVhciAlIDEwKSArIDE7XG4gICAgICAgIGxldCBsYXN0WWVhciA9IGZpcnN0WWVhciArIDExO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlYWRlcjogYCR7Zmlyc3RZZWFyfSAtICR7bGFzdFllYXJ9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjRGVjYWRlQ2FsZW5kYXJSb3dzKHBhcmFtcyksXG4gICAgICAgIH07XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXI6IGAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXMpLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjb25zdCB2aWV3ID0gc3VwZXIuYnVpbGRWaWV3KHBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyOiBgJHt2aWV3RGF0ZS5nZXRTaG9ydE1vbnRoTmFtZSgpfSAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IHRoaXMuX2VjTW9udGhIZWFkZXJSb3cocGFyYW1zKSxcbiAgICAgICAgICByb3dzOiB2aWV3LnJvd3MsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5idWlsZFZpZXcocGFyYW1zKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVudHJ5TGFiZWwoZW50cnk6IEFqZkNhbGVuZGFyRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZW50cnkuZGF0ZSk7XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdkYXknKSB7XG4gICAgICByZXR1cm4gYCR7ZWNEYXRlLmdldERhdGUoKX1gO1xuICAgIH1cbiAgICBpZiAoZW50cnkudHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgcmV0dXJuIGAke2VjRGF0ZS5nZXRNb250aE5hbWUoKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7ZWNEYXRlLmdldEZ1bGxZZWFyKCl9YDtcbiAgfVxuXG4gIG92ZXJyaWRlIG1vbnRoQm91bmRzKGRhdGU6IERhdGUsIGlzb01vZGU6IGJvb2xlYW4pOiB7c3RhcnQ6IERhdGU7IGVuZDogRGF0ZX0ge1xuICAgIGlmICghaXNvTW9kZSkge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihkYXRlKTtcbiAgICAgIGNvbnN0IHtzdGFydCwgZW5kfSA9IGdldE1vbnRoQm91bmRzKGVjRGF0ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihzdGFydCksXG4gICAgICAgIGVuZDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihlbmQpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzb0RheSA9IGdldElTT0RheShkYXRlKTtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZGF0ZSk7XG4gICAgICBsZXQge3N0YXJ0LCBlbmR9ID0gZ2V0TW9udGhCb3VuZHMoZWNEYXRlKTtcbiAgICAgIGlmIChlY0RhdGUuZ2V0TW9udGgoKSA9PT0gMTIpIHtcbiAgICAgICAgc3RhcnQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHN0YXJ0T2ZJU09XZWVrKHN0YXJ0LmdldEdyZWdvcmlhbkRhdGUoKSkpO1xuICAgICAgICBlbmQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlID0gaXNvRGF5IDwgNCA/IGVuZE9mSVNPV2VlayhkYXRlKSA6IHN0YXJ0T2ZJU09XZWVrKGRhdGUpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtEYXkgPSBzdGFydC5nZXREYXkoKTtcbiAgICAgICAgY29uc3QgZW5kV2Vla0RheSA9IGVuZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKHN0YXJ0V2Vla0RheSA9PSAwIHx8IHN0YXJ0V2Vla0RheSA+IDQpIHtcbiAgICAgICAgICBzdGFydCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oYWRkV2Vla3Moc3RhcnQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZFdlZWtEYXkgPiAwICYmIGVuZFdlZWtEYXkgPCA0KSB7XG4gICAgICAgICAgZW5kID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihzdWJXZWVrcyhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0OiBzdGFydE9mSVNPV2VlayhzdGFydC5nZXRHcmVnb3JpYW5EYXRlKCkpLFxuICAgICAgICBlbmQ6IGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmV4dFZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMTIpIHtcbiAgICAgICAgbW9udGggPSAwO1xuICAgICAgICB5ZWFyICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCArPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLm5leHRWaWV3KHZpZXdEYXRlLCB2aWV3TW9kZSk7XG4gIH1cblxuICBvdmVycmlkZSBwcmV2aW91c1ZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMCkge1xuICAgICAgICBtb250aCA9IDEyO1xuICAgICAgICB5ZWFyIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCAtPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnByZXZpb3VzVmlldyh2aWV3RGF0ZSwgdmlld01vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNNb250aEhlYWRlclJvdyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHtpc29Nb2RlLCB2aWV3RGF0ZX0gPSBwYXJhbXM7XG4gICAgbGV0IGN1ckRhdGU6IERhdGU7XG4gICAgaWYgKGlzb01vZGUpIHtcbiAgICAgIGN1ckRhdGUgPSBzZXRJU09EYXkoc3RhcnRPZldlZWsodmlld0RhdGUpLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyRGF0ZSA9IHN0YXJ0T2ZXZWVrKHZpZXdEYXRlKTtcbiAgICB9XG4gICAgbGV0IHdlZWtEYXlOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihjdXJEYXRlKTtcbiAgICAgIHdlZWtEYXlOYW1lcy5wdXNoKGVjRGF0ZS5nZXREYXlPZldlZWsoKSk7XG4gICAgICBjdXJEYXRlID0gYWRkRGF5cyhjdXJEYXRlLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHdlZWtEYXlOYW1lcztcbiAgfVxuXG4gIHByaXZhdGUgX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogQWpmQ2FsZW5kYXJFbnRyeVtdW10ge1xuICAgIGNvbnN0IHt2aWV3RGF0ZSwgc2VsZWN0aW9ufSA9IHBhcmFtcztcbiAgICBjb25zdCB5ZWFyID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSkuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgY3VyRGF0ZTogRXRoaW9waWFuRGF0ZTtcblxuICAgIGxldCByb3dzOiBBamZDYWxlbmRhckVudHJ5W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDQ7IGkrKykge1xuICAgICAgbGV0IHJvdzogQWpmQ2FsZW5kYXJFbnRyeVtdID0gW107XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgICBjb25zdCBjdXJNb250aCA9IGkgKiAzICsgajtcbiAgICAgICAgaWYgKGN1ck1vbnRoIDwgMTMpIHtcbiAgICAgICAgICBjdXJEYXRlID0gbmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgY3VyTW9udGgsIDEpO1xuICAgICAgICAgIGxldCBkYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihjdXJEYXRlKTtcbiAgICAgICAgICBsZXQgbmV3RW50cnk6IEFqZkNhbGVuZGFyRW50cnkgPSB7dHlwZTogJ21vbnRoJywgZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgICAgbmV3RW50cnkuc2VsZWN0ZWQgPSB0aGlzLmlzRW50cnlTZWxlY3RlZChuZXdFbnRyeSwgc2VsZWN0aW9uKTtcbiAgICAgICAgICByb3cucHVzaChuZXdFbnRyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNEZWNhZGVDYWxlbmRhclJvd3MocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyRW50cnlbXVtdIHtcbiAgICBjb25zdCB7dmlld0RhdGUsIHNlbGVjdGlvbn0gPSBwYXJhbXM7XG4gICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgbGV0IGN1clllYXI6IG51bWJlciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGxldCBmaXJzdFllYXIgPSBjdXJZZWFyIC0gKGN1clllYXIgJSAxMCkgKyAxO1xuICAgIGxldCBjdXJEYXRlOiBEYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihmaXJzdFllYXIsIDAsIDEpO1xuXG4gICAgbGV0IHJvd3M6IEFqZkNhbGVuZGFyRW50cnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGxldCByb3c6IEFqZkNhbGVuZGFyRW50cnlbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShjdXJEYXRlKTtcbiAgICAgICAgbGV0IG5ld0VudHJ5OiBBamZDYWxlbmRhckVudHJ5ID0ge3R5cGU6ICd5ZWFyJywgZGF0ZTogZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgIG5ld0VudHJ5LnNlbGVjdGVkID0gdGhpcy5pc0VudHJ5U2VsZWN0ZWQobmV3RW50cnksIHNlbGVjdGlvbik7XG4gICAgICAgIHJvdy5wdXNoKG5ld0VudHJ5KTtcbiAgICAgICAgY3VyRGF0ZSA9IGFkZFllYXJzKGN1ckRhdGUsIDEpO1xuICAgICAgfVxuICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -26,7 +26,7 @@ export class AjfEthiopianDatePipe {
|
|
|
26
26
|
try {
|
|
27
27
|
const ed = EthiopianDate.gregorianToEthiopian(value);
|
|
28
28
|
const date = `0${ed.getDate()}`.slice(-2);
|
|
29
|
-
const month = `0${ed.getMonth()}`.slice(-2);
|
|
29
|
+
const month = `0${ed.getMonth() + 1}`.slice(-2);
|
|
30
30
|
return `${date}/${month}/${ed.getFullYear()}`;
|
|
31
31
|
}
|
|
32
32
|
catch (e) {
|
|
@@ -38,4 +38,4 @@ AjfEthiopianDatePipe.decorators = [
|
|
|
38
38
|
{ type: Injectable },
|
|
39
39
|
{ type: Pipe, args: [{ name: 'ajfEthiopianDate' },] }
|
|
40
40
|
];
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUtcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2V0aGlvcGlhbi1kYXRlLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkvQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLElBQUk7WUFDRixNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztTQUMvQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7OztZQVpGLFVBQVU7WUFDVixJQUFJLFNBQUMsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5AUGlwZSh7bmFtZTogJ2FqZkV0aGlvcGlhbkRhdGUnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5EYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlZCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmFsdWUpO1xuICAgICAgY29uc3QgZGF0ZSA9IGAwJHtlZC5nZXREYXRlKCl9YC5zbGljZSgtMik7XG4gICAgICBjb25zdCBtb250aCA9IGAwJHtlZC5nZXRNb250aCgpICsgMX1gLnNsaWNlKC0yKTtcbiAgICAgIHJldHVybiBgJHtkYXRlfS8ke21vbnRofS8ke2VkLmdldEZ1bGxZZWFyKCl9YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -48,7 +48,7 @@ export class EthiopianDate {
|
|
|
48
48
|
this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);
|
|
49
49
|
}
|
|
50
50
|
else if (typeof val === 'object' && val instanceof Date) {
|
|
51
|
-
const result = EthiopianDate.gregorianToEthiopian(val
|
|
51
|
+
const result = EthiopianDate.gregorianToEthiopian(val);
|
|
52
52
|
[this._year, this._month, this._date] = [
|
|
53
53
|
result.getFullYear(),
|
|
54
54
|
result.getMonth(),
|
|
@@ -118,7 +118,7 @@ export class EthiopianDate {
|
|
|
118
118
|
* @param val - A numeric year value if the second and third parameters are
|
|
119
119
|
* provided, it should be a date string if not
|
|
120
120
|
* @param month A zero-based numeric value for the month
|
|
121
|
-
* (0 for
|
|
121
|
+
* (0 for መስከረም, 12 for ጳጉሜን)
|
|
122
122
|
* @param day A numeric value equal for the day of the month.
|
|
123
123
|
*
|
|
124
124
|
* @api public
|
|
@@ -147,6 +147,16 @@ export class EthiopianDate {
|
|
|
147
147
|
const gc = toGC(ec);
|
|
148
148
|
return new Date(gc[0], gc[1] - 1, gc[2]);
|
|
149
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
*
|
|
152
|
+
* @param val - A numeric year value if the second and third parameters are
|
|
153
|
+
* provided, it should be a date string if not
|
|
154
|
+
* @param month A zero-based numeric value for the month
|
|
155
|
+
* (0 for January, 11 for December)
|
|
156
|
+
* @param day A numeric value equal for the day of the month.
|
|
157
|
+
*
|
|
158
|
+
* @api public
|
|
159
|
+
*/
|
|
150
160
|
static gregorianToEthiopian(val, month, day) {
|
|
151
161
|
let gc;
|
|
152
162
|
if (val != null && month == null && day == null && typeof val !== 'number') {
|
|
@@ -191,4 +201,4 @@ export class EthiopianDate {
|
|
|
191
201
|
throw new Error(`ParsingError: Can't parse ${dateString}`);
|
|
192
202
|
}
|
|
193
203
|
}
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2FsZW5kYXJzL2V0aGlvcGlhbi9ldGhpb3BpYW4tZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVyRSxNQUFNLE9BQU8sYUFBYTtJQU14Qjs7Ozs7T0FLRztJQUNILFlBQVksR0FBNEIsRUFBRSxLQUFjLEVBQUUsR0FBWTtRQUNwRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQy9DLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BGO2FBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDakYsSUFBSSxPQUFPLEdB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QUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUN6QixPQUFPLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7dG9FQywgdG9HQ30gZnJvbSAnLi9jb252ZXJ0ZXInO1xuaW1wb3J0IHtNT05USFNfTkFNRVMsIFNIT1JUX01PTlRIU19OQU1FUywgV0VFS19OQU1FU30gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBFdGhpb3BpYW5EYXRlIHtcbiAgcHJpdmF0ZSBfeWVhcjogbnVtYmVyO1xuICBwcml2YXRlIF9tb250aDogbnVtYmVyO1xuICBwcml2YXRlIF9kYXRlOiBudW1iZXI7XG4gIHByaXZhdGUgX2djOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsIC0gQSBudW1lcmljIHllYXIgdmFsdWUgaWYgdGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhciBwcm92aWRlZCxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgc2hvdWxkIGJlIGEgZGF0ZSBzdHJpbmcgaWYgbm90XG4gICAqIEBwYXJhbSBtb250aCBBIHplcm8tYmFzZWQgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIG1vbnRoICgwIGZvciDhiJjhiLXhiqjhiKjhiJ0sIDEyIGZvciDhjLPhjInhiJzhipUpXG4gICAqIEBwYXJhbSBkYXkgQSBudW1lcmljIHZhbHVlIGVxdWFsIGZvciB0aGUgZGF5IG9mIHRoZSBtb250aC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHZhbD86IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsIG1vbnRoPzogbnVtYmVyLCBkYXk/OiBudW1iZXIpIHtcbiAgICBpZiAodmFsID09IG51bGwgJiYgbW9udGggPT0gbnVsbCAmJiBkYXkgPT0gbnVsbCkge1xuICAgICAgY29uc3QgYWh1biA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4obmV3IERhdGUoKSk7XG4gICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW2FodW4uZ2V0RnVsbFllYXIoKSwgYWh1bi5nZXRNb250aCgpLCBhaHVuLmdldERhdGUoKV07XG4gICAgICB0aGlzLl9nYyA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4odGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsICE9IG51bGwgJiYgbW9udGggPT0gbnVsbCAmJiBkYXkgPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEV0aGlvcGlhbkRhdGUucGFyc2UodmFsKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIFt0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZV0gPSBbXG4gICAgICAgICAgcmVzdWx0LmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgcmVzdWx0LmdldE1vbnRoKCksXG4gICAgICAgICAgcmVzdWx0LmdldERhdGUoKSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5fZ2MgPSBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKHRoaXMuX3llYXIsIHRoaXMuX21vbnRoLCB0aGlzLl9kYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKFxuICAgICAgICAgIHZhbC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHZhbC5nZXRNb250aCgpICsgMSxcbiAgICAgICAgICB2YWwuZ2V0RGF0ZSgpLFxuICAgICAgICApO1xuICAgICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW1xuICAgICAgICAgIHJlc3VsdC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHJlc3VsdC5nZXRNb250aCgpLFxuICAgICAgICAgIHJlc3VsdC5nZXREYXRlKCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX2djID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbih0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCAhPSBudWxsICYmIGRheSAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl95ZWFyID0gdmFsO1xuICAgICAgdGhpcy5fbW9udGggPSBtb250aDtcbiAgICAgIHRoaXMuX2RhdGUgPSBkYXk7XG4gICAgICB0aGlzLl9nYyA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4odGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIGdldERheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldERheU9mV2VlaygpIHtcbiAgICBjb25zdCB3ZWVrRGF5ID0gdGhpcy5nZXRHQ1dlZWtEYXkoKTtcbiAgICByZXR1cm4gV0VFS19OQU1FU1t3ZWVrRGF5XTtcbiAgfVxuXG4gIGdldEZ1bGxZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3llYXI7XG4gIH1cblxuICBnZXRHcmVnb3JpYW5EYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9nYztcbiAgfVxuXG4gIGdldEdDV2Vla0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldE1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoO1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb250aCA+PSAwICYmIHRoaXMuX21vbnRoIDwgTU9OVEhTX05BTUVTLmxlbmd0aCA/IE1PTlRIU19OQU1FU1t0aGlzLl9tb250aF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0U2hvcnRNb250aE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoID49IDAgJiYgdGhpcy5fbW9udGggPCBTSE9SVF9NT05USFNfTkFNRVMubGVuZ3RoXG4gICAgICA/IFNIT1JUX01PTlRIU19OQU1FU1t0aGlzLl9tb250aF1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldEhvdXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaW51dGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3llYXJ9LSR7dGhpcy5fbW9udGggKyAxfS0ke3RoaXMuX2RhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIEV0aGlvcGlhbiBkYXRlIHRvIEdyZWdvcmlhbiBhbmQgcmV0dXJucyBEYXRlIGluc3RhbmNlIHJlcHJlc2VudGluZyBHcmVnb3JpYW4gRGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbCAtIEEgbnVtZXJpYyB5ZWFyIHZhbHVlIGlmIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCwgaXQgc2hvdWxkIGJlIGEgZGF0ZSBzdHJpbmcgaWYgbm90XG4gICAqIEBwYXJhbSBtb250aCBBIHplcm8tYmFzZWQgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIG1vbnRoXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICgwIGZvciBKYW51YXJ5LCAxMSBmb3IgRGVjZW1iZXIpXG4gICAqIEBwYXJhbSBkYXkgQSBudW1lcmljIHZhbHVlIGVxdWFsIGZvciB0aGUgZGF5IG9mIHRoZSBtb250aC5cbiAgICpcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG4gIHN0YXRpYyBldGhpb3BpYW5Ub0dyZWdvcmlhbihcbiAgICB2YWw/OiBFdGhpb3BpYW5EYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vbnRoPzogbnVtYmVyLFxuICAgIGRheT86IG51bWJlcixcbiAgKTogRGF0ZSB7XG4gICAgbGV0IGVjOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBldERhdGUgPSBuZXcgRXRoaW9waWFuRGF0ZSh2YWwpO1xuICAgICAgICBlYyA9IFtldERhdGUuZ2V0RnVsbFllYXIoKSwgZXREYXRlLmdldE1vbnRoKCkgKyAxLCBldERhdGUuZ2V0RGF0ZSgpXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsIGluc3RhbmNlb2YgRXRoaW9waWFuRGF0ZSkge1xuICAgICAgICBjb25zdCBbeSwgbSwgZF0gPSBbdmFsLmdldEZ1bGxZZWFyKCksIHZhbC5nZXRNb250aCgpICsgMSwgdmFsLmdldERhdGUoKV07XG4gICAgICAgIGVjID0gW3ksIG0sIGRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsICE9IG51bGwgJiYgbW9udGggIT0gbnVsbCAmJiBkYXkgIT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgZWMgPSBbdmFsLCBtb250aCArIDEsIGRheV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZ2MgPSB0b0dDKGVjKTtcbiAgICByZXR1cm4gbmV3IERhdGUoZ2NbMF0sIGdjWzFdIC0gMSwgZ2NbMl0pO1xuICB9XG5cbiAgc3RhdGljIGdyZWdvcmlhblRvRXRoaW9waWFuKFxuICAgIHZhbD86IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9udGg/OiBudW1iZXIsXG4gICAgZGF5PzogbnVtYmVyLFxuICApOiBFdGhpb3BpYW5EYXRlIHtcbiAgICBsZXQgZ2M6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgICBpZiAodmFsICE9IG51bGwgJiYgbW9udGggPT0gbnVsbCAmJiBkYXkgPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGdjRGF0ZSA9IG5ldyBEYXRlKHZhbCk7XG4gICAgICAgIGdjID0gW2djRGF0ZS5nZXRGdWxsWWVhcigpLCBnY0RhdGUuZ2V0TW9udGgoKSArIDEsIGdjRGF0ZS5nZXREYXRlKCldO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGNvbnN0IFt5LCBtLCBkXSA9IFt2YWwuZ2V0RnVsbFllYXIoKSwgdmFsLmdldE1vbnRoKCkgKyAxLCB2YWwuZ2V0RGF0ZSgpXTtcbiAgICAgICAgZ2MgPSBbeSwgbSwgZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCAhPSBudWxsICYmIGRheSAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICBnYyA9IFt2YWwsIG1vbnRoICsgMSwgZGF5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBlYyA9IHRvRUMoZ2MpO1xuICAgIHJldHVybiBuZXcgRXRoaW9waWFuRGF0ZShlY1swXSwgZWNbMV0gLSAxLCBlY1syXSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgRXRoaW9waWFuIGRhdGUgZnJvbSBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIGRhdGVTdHJpbmcgYSBkYXRlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0gcGF0dGVybiBhIHBhcnNpbmcgcGF0dGVyblxuICAgKlxuICAgKiBAcmV0dXJucyBFdGhpb3BpYW5EYXRlXG4gICAqL1xuICBzdGF0aWMgcGFyc2UoZGF0ZVN0cmluZzogc3RyaW5nKTogRXRoaW9waWFuRGF0ZSB8IG51bGwge1xuICAgIGlmICghZGF0ZVN0cmluZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGRhdGVTdHJpbmcuc3BsaXQoJy0nKTtcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMykge1xuICAgICAgY29uc3QgW3ksIG0sIGRdID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIG5ldyBFdGhpb3BpYW5EYXRlKHBhcnNlSW50KHksIDEwKSwgcGFyc2VJbnQobSwgMTApIC0gMSwgcGFyc2VJbnQoZCwgMTApKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXJzaW5nRXJyb3I6IENhbid0IHBhcnNlICR7ZGF0ZVN0cmluZ31gKTtcbiAgfVxufVxuIl19
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2FsZW5kYXJzL2V0aGlvcGlhbi9ldGhpb3BpYW4tZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVyRSxNQUFNLE9BQU8sYUFBYTtJQU14Qjs7Ozs7T0FLRztJQUNILFlBQVksR0FBNEIsRUFBRSxLQUFjLEVBQUUsR0FBWTtRQUNwRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQy9DLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BGO2FBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDakYsSUFBSSxPQUFPLEdB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Q0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDekIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge3RvRUMsIHRvR0N9IGZyb20gJy4vY29udmVydGVyJztcbmltcG9ydCB7TU9OVEhTX05BTUVTLCBTSE9SVF9NT05USFNfTkFNRVMsIFdFRUtfTkFNRVN9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRXRoaW9waWFuRGF0ZSB7XG4gIHByaXZhdGUgX3llYXI6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbW9udGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGF0ZTogbnVtYmVyO1xuICBwcml2YXRlIF9nYzogRGF0ZTtcblxuICAvKipcbiAgICogQHBhcmFtIHZhbCAtIEEgbnVtZXJpYyB5ZWFyIHZhbHVlIGlmIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXIgcHJvdmlkZWQsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IHNob3VsZCBiZSBhIGRhdGUgc3RyaW5nIGlmIG5vdFxuICAgKiBAcGFyYW0gbW9udGggQSB6ZXJvLWJhc2VkIG51bWVyaWMgdmFsdWUgZm9yIHRoZSBtb250aCAoMCBmb3Ig4YiY4Yi14Yqo4Yio4YidLCAxMiBmb3Ig4Yyz4YyJ4Yic4YqVKVxuICAgKiBAcGFyYW0gZGF5IEEgbnVtZXJpYyB2YWx1ZSBlcXVhbCBmb3IgdGhlIGRheSBvZiB0aGUgbW9udGguXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih2YWw/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLCBtb250aD86IG51bWJlciwgZGF5PzogbnVtYmVyKSB7XG4gICAgaWYgKHZhbCA9PSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFodW4gPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKG5ldyBEYXRlKCkpO1xuICAgICAgW3RoaXMuX3llYXIsIHRoaXMuX21vbnRoLCB0aGlzLl9kYXRlXSA9IFthaHVuLmdldEZ1bGxZZWFyKCksIGFodW4uZ2V0TW9udGgoKSwgYWh1bi5nZXREYXRlKCldO1xuICAgICAgdGhpcy5fZ2MgPSBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKHRoaXMuX3llYXIsIHRoaXMuX21vbnRoLCB0aGlzLl9kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBFdGhpb3BpYW5EYXRlLnBhcnNlKHZhbCk7XG4gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICAgICAgfVxuICAgICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW1xuICAgICAgICAgIHJlc3VsdC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHJlc3VsdC5nZXRNb250aCgpLFxuICAgICAgICAgIHJlc3VsdC5nZXREYXRlKCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX2djID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbih0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2YWwpO1xuICAgICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW1xuICAgICAgICAgIHJlc3VsdC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHJlc3VsdC5nZXRNb250aCgpLFxuICAgICAgICAgIHJlc3VsdC5nZXREYXRlKCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX2djID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbih0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCAhPSBudWxsICYmIGRheSAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl95ZWFyID0gdmFsO1xuICAgICAgdGhpcy5fbW9udGggPSBtb250aDtcbiAgICAgIHRoaXMuX2RhdGUgPSBkYXk7XG4gICAgICB0aGlzLl9nYyA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4odGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIGdldERheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldERheU9mV2VlaygpIHtcbiAgICBjb25zdCB3ZWVrRGF5ID0gdGhpcy5nZXRHQ1dlZWtEYXkoKTtcbiAgICByZXR1cm4gV0VFS19OQU1FU1t3ZWVrRGF5XTtcbiAgfVxuXG4gIGdldEZ1bGxZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3llYXI7XG4gIH1cblxuICBnZXRHcmVnb3JpYW5EYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9nYztcbiAgfVxuXG4gIGdldEdDV2Vla0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldE1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoO1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb250aCA+PSAwICYmIHRoaXMuX21vbnRoIDwgTU9OVEhTX05BTUVTLmxlbmd0aCA/IE1PTlRIU19OQU1FU1t0aGlzLl9tb250aF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0U2hvcnRNb250aE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoID49IDAgJiYgdGhpcy5fbW9udGggPCBTSE9SVF9NT05USFNfTkFNRVMubGVuZ3RoXG4gICAgICA/IFNIT1JUX01PTlRIU19OQU1FU1t0aGlzLl9tb250aF1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldEhvdXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaW51dGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3llYXJ9LSR7dGhpcy5fbW9udGggKyAxfS0ke3RoaXMuX2RhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIEV0aGlvcGlhbiBkYXRlIHRvIEdyZWdvcmlhbiBhbmQgcmV0dXJucyBEYXRlIGluc3RhbmNlIHJlcHJlc2VudGluZyBHcmVnb3JpYW4gRGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbCAtIEEgbnVtZXJpYyB5ZWFyIHZhbHVlIGlmIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCwgaXQgc2hvdWxkIGJlIGEgZGF0ZSBzdHJpbmcgaWYgbm90XG4gICAqIEBwYXJhbSBtb250aCBBIHplcm8tYmFzZWQgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIG1vbnRoXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICgwIGZvciDhiJjhiLXhiqjhiKjhiJ0sIDEyIGZvciDhjLPhjInhiJzhipUpXG4gICAqIEBwYXJhbSBkYXkgQSBudW1lcmljIHZhbHVlIGVxdWFsIGZvciB0aGUgZGF5IG9mIHRoZSBtb250aC5cbiAgICpcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG4gIHN0YXRpYyBldGhpb3BpYW5Ub0dyZWdvcmlhbihcbiAgICB2YWw/OiBFdGhpb3BpYW5EYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vbnRoPzogbnVtYmVyLFxuICAgIGRheT86IG51bWJlcixcbiAgKTogRGF0ZSB7XG4gICAgbGV0IGVjOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBldERhdGUgPSBuZXcgRXRoaW9waWFuRGF0ZSh2YWwpO1xuICAgICAgICBlYyA9IFtldERhdGUuZ2V0RnVsbFllYXIoKSwgZXREYXRlLmdldE1vbnRoKCkgKyAxLCBldERhdGUuZ2V0RGF0ZSgpXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsIGluc3RhbmNlb2YgRXRoaW9waWFuRGF0ZSkge1xuICAgICAgICBjb25zdCBbeSwgbSwgZF0gPSBbdmFsLmdldEZ1bGxZZWFyKCksIHZhbC5nZXRNb250aCgpICsgMSwgdmFsLmdldERhdGUoKV07XG4gICAgICAgIGVjID0gW3ksIG0sIGRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsICE9IG51bGwgJiYgbW9udGggIT0gbnVsbCAmJiBkYXkgIT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgZWMgPSBbdmFsLCBtb250aCArIDEsIGRheV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZ2MgPSB0b0dDKGVjKTtcbiAgICByZXR1cm4gbmV3IERhdGUoZ2NbMF0sIGdjWzFdIC0gMSwgZ2NbMl0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB2YWwgLSBBIG51bWVyaWMgeWVhciB2YWx1ZSBpZiB0aGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGFyZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQsIGl0IHNob3VsZCBiZSBhIGRhdGUgc3RyaW5nIGlmIG5vdFxuICAgKiBAcGFyYW0gbW9udGggQSB6ZXJvLWJhc2VkIG51bWVyaWMgdmFsdWUgZm9yIHRoZSBtb250aFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAoMCBmb3IgSmFudWFyeSwgMTEgZm9yIERlY2VtYmVyKVxuICAgKiBAcGFyYW0gZGF5IEEgbnVtZXJpYyB2YWx1ZSBlcXVhbCBmb3IgdGhlIGRheSBvZiB0aGUgbW9udGguXG4gICAqXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuICBzdGF0aWMgZ3JlZ29yaWFuVG9FdGhpb3BpYW4oXG4gICAgdmFsPzogRGF0ZSB8IHN0cmluZyB8IG51bWJlcixcbiAgICBtb250aD86IG51bWJlcixcbiAgICBkYXk/OiBudW1iZXIsXG4gICk6IEV0aGlvcGlhbkRhdGUge1xuICAgIGxldCBnYzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCA9PSBudWxsICYmIGRheSA9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgZ2NEYXRlID0gbmV3IERhdGUodmFsKTtcbiAgICAgICAgZ2MgPSBbZ2NEYXRlLmdldEZ1bGxZZWFyKCksIGdjRGF0ZS5nZXRNb250aCgpICsgMSwgZ2NEYXRlLmdldERhdGUoKV07XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29uc3QgW3ksIG0sIGRdID0gW3ZhbC5nZXRGdWxsWWVhcigpLCB2YWwuZ2V0TW9udGgoKSArIDEsIHZhbC5nZXREYXRlKCldO1xuICAgICAgICBnYyA9IFt5LCBtLCBkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoICE9IG51bGwgJiYgZGF5ICE9IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGdjID0gW3ZhbCwgbW9udGggKyAxLCBkYXldO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGVjID0gdG9FQyhnYyk7XG4gICAgcmV0dXJuIG5ldyBFdGhpb3BpYW5EYXRlKGVjWzBdLCBlY1sxXSAtIDEsIGVjWzJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBFdGhpb3BpYW4gZGF0ZSBmcm9tIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0gZGF0ZVN0cmluZyBhIGRhdGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSBwYXR0ZXJuIGEgcGFyc2luZyBwYXR0ZXJuXG4gICAqXG4gICAqIEByZXR1cm5zIEV0aGlvcGlhbkRhdGVcbiAgICovXG4gIHN0YXRpYyBwYXJzZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBFdGhpb3BpYW5EYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gZGF0ZVN0cmluZy5zcGxpdCgnLScpO1xuICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBbeSwgbSwgZF0gPSByZXN1bHQ7XG4gICAgICByZXR1cm4gbmV3IEV0aGlvcGlhbkRhdGUocGFyc2VJbnQoeSwgMTApLCBwYXJzZUludChtLCAxMCkgLSAxLCBwYXJzZUludChkLCAxMCkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBhcnNpbmdFcnJvcjogQ2FuJ3QgcGFyc2UgJHtkYXRlU3RyaW5nfWApO1xuICB9XG59XG4iXX0=
|
package/esm2015/version.js
CHANGED
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { Version } from '@angular/core';
|
|
23
23
|
/** Current version of Ajf. */
|
|
24
|
-
export const VERSION = new Version('12.1.
|
|
24
|
+
export const VERSION = new Version('12.1.7');
|
|
25
25
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRDLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIEN1cnJlbnQgdmVyc2lvbiBvZiBBamYuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcwLjAuMC1QTEFDRUhPTERFUicpO1xuIl19
|
|
@@ -51,12 +51,22 @@ export declare class EthiopianDate {
|
|
|
51
51
|
* @param val - A numeric year value if the second and third parameters are
|
|
52
52
|
* provided, it should be a date string if not
|
|
53
53
|
* @param month A zero-based numeric value for the month
|
|
54
|
-
* (0 for
|
|
54
|
+
* (0 for መስከረም, 12 for ጳጉሜን)
|
|
55
55
|
* @param day A numeric value equal for the day of the month.
|
|
56
56
|
*
|
|
57
57
|
* @api public
|
|
58
58
|
*/
|
|
59
59
|
static ethiopianToGregorian(val?: EthiopianDate | string | number, month?: number, day?: number): Date;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @param val - A numeric year value if the second and third parameters are
|
|
63
|
+
* provided, it should be a date string if not
|
|
64
|
+
* @param month A zero-based numeric value for the month
|
|
65
|
+
* (0 for January, 11 for December)
|
|
66
|
+
* @param day A numeric value equal for the day of the month.
|
|
67
|
+
*
|
|
68
|
+
* @api public
|
|
69
|
+
*/
|
|
60
70
|
static gregorianToEthiopian(val?: Date | string | number, month?: number, day?: number): EthiopianDate;
|
|
61
71
|
/**
|
|
62
72
|
* Parse Ethiopian date from string
|
package/fesm2015/calendars.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendars.js","sources":["../../../../../../src/calendars/version.ts","../../../../../../src/calendars/public-api.ts","../../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.
|
|
1
|
+
{"version":3,"file":"calendars.js","sources":["../../../../../../src/calendars/version.ts","../../../../../../src/calendars/public-api.ts","../../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.7');\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;AAwBA;MACa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACzBtD;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/fesm2015/ethiopian.js
CHANGED
|
@@ -258,7 +258,7 @@ class EthiopianDate {
|
|
|
258
258
|
this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);
|
|
259
259
|
}
|
|
260
260
|
else if (typeof val === 'object' && val instanceof Date) {
|
|
261
|
-
const result = EthiopianDate.gregorianToEthiopian(val
|
|
261
|
+
const result = EthiopianDate.gregorianToEthiopian(val);
|
|
262
262
|
[this._year, this._month, this._date] = [
|
|
263
263
|
result.getFullYear(),
|
|
264
264
|
result.getMonth(),
|
|
@@ -328,7 +328,7 @@ class EthiopianDate {
|
|
|
328
328
|
* @param val - A numeric year value if the second and third parameters are
|
|
329
329
|
* provided, it should be a date string if not
|
|
330
330
|
* @param month A zero-based numeric value for the month
|
|
331
|
-
* (0 for
|
|
331
|
+
* (0 for መስከረም, 12 for ጳጉሜን)
|
|
332
332
|
* @param day A numeric value equal for the day of the month.
|
|
333
333
|
*
|
|
334
334
|
* @api public
|
|
@@ -357,6 +357,16 @@ class EthiopianDate {
|
|
|
357
357
|
const gc = toGC(ec);
|
|
358
358
|
return new Date(gc[0], gc[1] - 1, gc[2]);
|
|
359
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
*
|
|
362
|
+
* @param val - A numeric year value if the second and third parameters are
|
|
363
|
+
* provided, it should be a date string if not
|
|
364
|
+
* @param month A zero-based numeric value for the month
|
|
365
|
+
* (0 for January, 11 for December)
|
|
366
|
+
* @param day A numeric value equal for the day of the month.
|
|
367
|
+
*
|
|
368
|
+
* @api public
|
|
369
|
+
*/
|
|
360
370
|
static gregorianToEthiopian(val, month, day) {
|
|
361
371
|
let gc;
|
|
362
372
|
if (val != null && month == null && day == null && typeof val !== 'number') {
|
|
@@ -586,7 +596,7 @@ class AjfEthiopianCalendarService extends AjfCalendarService {
|
|
|
586
596
|
const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
|
|
587
597
|
let curYear = ecDate.getFullYear();
|
|
588
598
|
let firstYear = curYear - (curYear % 10) + 1;
|
|
589
|
-
let curDate = EthiopianDate.ethiopianToGregorian(firstYear,
|
|
599
|
+
let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
|
|
590
600
|
let rows = [];
|
|
591
601
|
for (let i = 0; i < 4; i++) {
|
|
592
602
|
let row = [];
|
|
@@ -633,7 +643,7 @@ class AjfEthiopianDatePipe {
|
|
|
633
643
|
try {
|
|
634
644
|
const ed = EthiopianDate.gregorianToEthiopian(value);
|
|
635
645
|
const date = `0${ed.getDate()}`.slice(-2);
|
|
636
|
-
const month = `0${ed.getMonth()}`.slice(-2);
|
|
646
|
+
const month = `0${ed.getMonth() + 1}`.slice(-2);
|
|
637
647
|
return `${date}/${month}/${ed.getFullYear()}`;
|
|
638
648
|
}
|
|
639
649
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethiopian.js","sources":["../../../../../../src/calendars/ethiopian/converter.ts","../../../../../../src/calendars/ethiopian/utils.ts","../../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../../src/calendars/ethiopian/public-api.ts","../../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(\n val.getFullYear(),\n val.getMonth() + 1,\n val.getDate(),\n );\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth()}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ethiopian.js","sources":["../../../../../../src/calendars/ethiopian/converter.ts","../../../../../../src/calendars/ethiopian/utils.ts","../../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../../src/calendars/ethiopian/public-api.ts","../../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(val);\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n /**\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth() + 1}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ajf/calendars",
|
|
3
|
-
"version": "12.1.
|
|
3
|
+
"version": "12.1.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/gnucoop/ajf#readme",
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"@ajf/core": "12.1.
|
|
16
|
+
"@ajf/core": "12.1.7",
|
|
17
17
|
"rxjs": "^6.5.3"
|
|
18
18
|
},
|
|
19
19
|
"sideEffects": false,
|