@frxjs/ngx-timeline 1.0.3 → 1.0.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/README.md +136 -127
- package/bundles/frxjs-ngx-timeline.umd.js +696 -0
- package/bundles/frxjs-ngx-timeline.umd.js.map +1 -0
- package/bundles/frxjs-ngx-timeline.umd.min.js +2 -0
- package/bundles/frxjs-ngx-timeline.umd.min.js.map +1 -0
- package/esm2015/frxjs-ngx-timeline.js +8 -0
- package/esm2015/lib/components/index.js +3 -0
- package/esm2015/lib/components/ngx-timeline-event/ngx-timeline-event.component.js +55 -0
- package/esm2015/lib/components/ngx-timeline.component.js +147 -0
- package/esm2015/lib/models/NgxConfigObj.js +93 -0
- package/esm2015/lib/models/NgxTimelineEvent.js +6 -0
- package/esm2015/lib/models/index.js +3 -0
- package/esm2015/lib/ngx-timeline.module.js +23 -0
- package/esm2015/lib/pipes/index.js +2 -0
- package/esm2015/lib/pipes/ngx-date-pipe.js +28 -0
- package/esm2015/public-api.js +8 -0
- package/fesm2015/frxjs-ngx-timeline.js +350 -0
- package/fesm2015/frxjs-ngx-timeline.js.map +1 -0
- package/frxjs-ngx-timeline.d.ts +7 -0
- package/frxjs-ngx-timeline.metadata.json +1 -0
- package/{projects/ngx-timeline/src/lib/components/index.ts → lib/components/index.d.ts} +2 -2
- package/lib/components/ngx-timeline-event/ngx-timeline-event.component.d.ts +35 -0
- package/lib/components/ngx-timeline.component.d.ts +76 -0
- package/lib/models/NgxConfigObj.d.ts +59 -0
- package/lib/models/NgxTimelineEvent.d.ts +29 -0
- package/{projects/ngx-timeline/src/lib/models/index.ts → lib/models/index.d.ts} +2 -2
- package/lib/ngx-timeline.module.d.ts +2 -0
- package/{projects/ngx-timeline/src/lib/pipes/index.ts → lib/pipes/index.d.ts} +1 -1
- package/lib/pipes/ngx-date-pipe.d.ts +7 -0
- package/package.json +21 -50
- package/{projects/ngx-timeline/src/public-api.ts → public-api.d.ts} +4 -7
- package/.editorconfig +0 -16
- package/.github/workflows/main.yml +0 -25
- package/angular.json +0 -169
- package/docs/3rdpartylicenses.txt +0 -268
- package/docs/assets/inter.png +0 -0
- package/docs/favicon.ico +0 -0
- package/docs/index.html +0 -13
- package/docs/main.6005a10000c87d7095d3.js +0 -1
- package/docs/polyfills.f8ddde825b13760c1743.js +0 -1
- package/docs/runtime.0e49e2b53282f40c8925.js +0 -1
- package/docs/styles.09e2c710755c8867a460.css +0 -0
- package/package-lock.json +0 -14400
- package/projects/demo-app/.browserslistrc +0 -17
- package/projects/demo-app/e2e/protractor.conf.js +0 -37
- package/projects/demo-app/e2e/src/app.e2e-spec.ts +0 -23
- package/projects/demo-app/e2e/src/app.po.ts +0 -11
- package/projects/demo-app/e2e/tsconfig.json +0 -13
- package/projects/demo-app/karma.conf.js +0 -44
- package/projects/demo-app/src/app/app.component.html +0 -90
- package/projects/demo-app/src/app/app.component.scss +0 -417
- package/projects/demo-app/src/app/app.component.ts +0 -147
- package/projects/demo-app/src/app/app.module.ts +0 -20
- package/projects/demo-app/src/assets/.gitkeep +0 -0
- package/projects/demo-app/src/assets/inter.png +0 -0
- package/projects/demo-app/src/environments/environment.prod.ts +0 -3
- package/projects/demo-app/src/environments/environment.ts +0 -16
- package/projects/demo-app/src/favicon.ico +0 -0
- package/projects/demo-app/src/index.html +0 -13
- package/projects/demo-app/src/main.ts +0 -12
- package/projects/demo-app/src/polyfills.ts +0 -63
- package/projects/demo-app/src/styles.scss +0 -1
- package/projects/demo-app/src/test.ts +0 -25
- package/projects/demo-app/tsconfig.app.json +0 -26
- package/projects/demo-app/tsconfig.spec.json +0 -18
- package/projects/demo-app/tslint.json +0 -17
- package/projects/ngx-timeline/README.md +0 -127
- package/projects/ngx-timeline/karma.conf.js +0 -44
- package/projects/ngx-timeline/ng-package.json +0 -7
- package/projects/ngx-timeline/package.json +0 -17
- package/projects/ngx-timeline/src/lib/components/ngx-timeline-event/ngx-timeline-event.component.html +0 -37
- package/projects/ngx-timeline/src/lib/components/ngx-timeline-event/ngx-timeline-event.component.scss +0 -197
- package/projects/ngx-timeline/src/lib/components/ngx-timeline-event/ngx-timeline-event.component.spec.ts +0 -89
- package/projects/ngx-timeline/src/lib/components/ngx-timeline-event/ngx-timeline-event.component.ts +0 -66
- package/projects/ngx-timeline/src/lib/components/ngx-timeline.component.html +0 -98
- package/projects/ngx-timeline/src/lib/components/ngx-timeline.component.spec.ts +0 -160
- package/projects/ngx-timeline/src/lib/components/ngx-timeline.component.ts +0 -187
- package/projects/ngx-timeline/src/lib/components/ngx-timeline.scss +0 -226
- package/projects/ngx-timeline/src/lib/models/NgxConfigObj.ts +0 -110
- package/projects/ngx-timeline/src/lib/models/NgxTimelineEvent.ts +0 -32
- package/projects/ngx-timeline/src/lib/ngx-timeline.module.ts +0 -21
- package/projects/ngx-timeline/src/lib/pipes/ngx-date-pipe.ts +0 -29
- package/projects/ngx-timeline/src/test.ts +0 -26
- package/projects/ngx-timeline/tsconfig.lib.json +0 -25
- package/projects/ngx-timeline/tsconfig.lib.prod.json +0 -10
- package/projects/ngx-timeline/tsconfig.spec.json +0 -17
- package/projects/ngx-timeline/tslint.json +0 -17
- package/tsconfig.json +0 -35
- package/tslint.json +0 -140
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frxjs-ngx-timeline.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-timeline/src/lib/models/NgxConfigObj.ts","../../../projects/ngx-timeline/src/lib/models/NgxTimelineEvent.ts","../../../projects/ngx-timeline/src/lib/components/ngx-timeline.component.ts","../../../projects/ngx-timeline/src/lib/components/ngx-timeline-event/ngx-timeline-event.component.ts","../../../projects/ngx-timeline/src/lib/pipes/ngx-date-pipe.ts","../../../projects/ngx-timeline/src/lib/ngx-timeline.module.ts","../../../projects/ngx-timeline/src/public-api.ts","../../../projects/ngx-timeline/src/frxjs-ngx-timeline.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) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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","export let supportedLanguageCodes = ['en', 'it', 'fr', 'de', 'es'];\r\n\r\nexport interface NgxConfigDate {\r\n code: string;\r\n dayMonthYear: string;\r\n fullDate: string;\r\n hoursMinutes: string;\r\n monthYear: string;\r\n year: string;\r\n}\r\n\r\nexport interface NgxDateObjMap {\r\n [key: string]: NgxConfigDate;\r\n}\r\n\r\nexport let dateConfigMap: NgxDateObjMap = {\r\n en: {\r\n code: 'en-US',\r\n fullDate: 'MM/dd/yyyy h:mm a',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'hh:mm a'\r\n },\r\n it: {\r\n code: 'it-IT',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n },\r\n fr: {\r\n code: 'fr-FR',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n },\r\n de: {\r\n code: 'de',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n },\r\n es: {\r\n code: 'es',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n }\r\n};\r\n\r\nexport enum NgxDateFormat {\r\n DAY_MONTH_YEAR = 'DAY_MONTH_YEAR',\r\n FULL_DATE = 'FULL_DATE',\r\n MONTH_YEAR = 'MONTH_YEAR',\r\n HOURS_MINUTES = 'HOURS_MINUTES',\r\n YEAR = 'YEAR'\r\n}\r\n\r\nexport let fieldConfigDate = {\r\n MONTH_YEAR: 'monthYear',\r\n YEAR: 'year',\r\n HOURS_MINUTES: 'hoursMinutes',\r\n FULL_DATE: 'fullDate',\r\n DAY_MONTH_YEAR: 'dayMonthYear'\r\n}\r\n\r\n/**\r\n * Enum used to set the group event logic\r\n */\r\nexport enum NgxTimelineEventGroup {\r\n YEAR = 'YEAR',\r\n MONTH_YEAR = 'MONTH_YEAR',\r\n DAY_MONTH_YEAR = 'DAY_MONTH_YEAR'\r\n}\r\n\r\nexport let fieldsToAddEventGroup = {\r\n YEAR: ['getFullYear'],\r\n MONTH_YEAR: ['getFullYear', 'getMonth'],\r\n DAY_MONTH_YEAR: ['getFullYear', 'getMonth', 'getDate']\r\n};\r\n\r\nexport let periodKeyDateFormat = {\r\n YEAR: NgxDateFormat.YEAR,\r\n MONTH_YEAR: NgxDateFormat.MONTH_YEAR,\r\n DAY_MONTH_YEAR: NgxDateFormat.DAY_MONTH_YEAR,\r\n};\r\n\r\n/**\r\n * Enum used to set the change side event logic\r\n */\r\nexport enum NgxTimelineEventChangeSideInGroup {\r\n ALL = 'ALL',\r\n ON_DIFFERENT_HMS = 'ON_DIFFERENT_HMS',\r\n ON_DIFFERENT_DAY = 'ON_DIFFERENT_DAY',\r\n ON_DIFFERENT_MONTH = 'ON_DIFFERENT_MONTH'\r\n}\r\n\r\nexport let fieldsToCheckEventChangeSideInGroup = {\r\n ON_DIFFERENT_MONTH: ['getFullYear', 'getMonth'],\r\n ON_DIFFERENT_DAY: ['getFullYear', 'getMonth', 'getDate'],\r\n ON_DIFFERENT_HMS: ['getFullYear', 'getMonth', 'getDate', 'getHours', 'getMinutes', 'getSeconds']\r\n};\r\n","/**\r\n * Event to be provided from outside the timeline\r\n */\r\nexport interface NgxTimelineEvent {\r\n timestamp?: Date;\r\n title?: string;\r\n description?: string;\r\n id?: any;\r\n}\r\n\r\nexport interface NgxTimelinePeriodInfo {\r\n periodKey?: string;\r\n year?: number;\r\n month?: number;\r\n day?: number;\r\n firstDate?: any;\r\n}\r\n\r\n/**\r\n * Item used inside the timeline\r\n */\r\nexport interface NgxTimelineItem {\r\n type?: string;\r\n position?: NgxTimelineItemPosition.ON_LEFT | NgxTimelineItemPosition.ON_RIGHT;\r\n periodInfo?: NgxTimelinePeriodInfo;\r\n eventInfo?: NgxTimelineEvent;\r\n}\r\n\r\nexport enum NgxTimelineItemPosition {\r\n ON_LEFT = 'ON_LEFT',\r\n ON_RIGHT = 'ON_RIGHT'\r\n}\r\n","import { Component, OnInit, Input, TemplateRef, OnChanges, SimpleChanges, Output } from '@angular/core';\nimport {\n NgxTimelineEvent,\n NgxTimelineItem,\n NgxTimelineItemPosition,\n NgxTimelinePeriodInfo,\n NgxDateFormat,\n NgxTimelineEventGroup,\n NgxTimelineEventChangeSideInGroup,\n periodKeyDateFormat,\n fieldsToCheckEventChangeSideInGroup,\n fieldsToAddEventGroup } from '../models';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'ngx-timeline',\n templateUrl: './ngx-timeline.component.html',\n styleUrls: ['./ngx-timeline.scss'],\n})\nexport class NgxTimelineComponent implements OnInit, OnChanges {\n /**\n * List of events to be displayed\n */\n @Input() events: NgxTimelineEvent[];\n /**\n * Language code used to show the date formatted\n */\n @Input() langCode?: string;\n /**\n * Boolean used to enable or disable the animations\n */\n @Input() enableAnimation = true;\n /**\n * Logic to be applied in order to group events\n */\n @Input() groupEvent?: NgxTimelineEventGroup = NgxTimelineEventGroup.MONTH_YEAR;\n /**\n * Logic to be applied in order to put evetns on LEFT or RIGHT\n */\n @Input() changeSideInGroup?: NgxTimelineEventChangeSideInGroup = NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY;\n /**\n * Custom Template displayed before a group of events\n */\n @Input() periodCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show a single event\n */\n @Input() eventCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show an separator icon\n */\n @Input() centerIconCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show the side date\n */\n @Input() dateInstantCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show the inner event\n */\n @Input() innerEventCustomTemplate: TemplateRef<any>;\n /**\n * Output click event emitter\n */\n @Output()\n clickEmitter: BehaviorSubject<NgxTimelineItem> = new BehaviorSubject(null);\n\n groups: { [key: string]: NgxTimelineEvent[] } = {};\n periods: NgxTimelineItem[] = [];\n items: NgxTimelineItem[] = [];\n ngxTimelineItemPosition = NgxTimelineItemPosition;\n ngxDateFormat = NgxDateFormat;\n\n private readonly separator = '/';\n\n constructor() {}\n\n\n ngOnInit(): void {\n this.groupEvents(this.events);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.groupEvents(this.events);\n }\n\n getPeriodKeyDateFormat(): string {\n return periodKeyDateFormat[this.groupEvent];\n }\n\n protected clear(): void {\n this.groups = {};\n this.periods = [];\n this.items = [];\n }\n\n protected groupEvents(events: NgxTimelineEvent[]): void {\n if (events) {\n this.clear();\n this.sortEvents(events);\n this.setGroups(events);\n this.setPeriods();\n this.setItems();\n }\n }\n\n protected sortEvents(events: NgxTimelineEvent[]): void {\n events.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n }\n\n protected setGroups(events: NgxTimelineEvent[]): void {\n events.forEach((event) => {\n // conversion from string to actual Date\n event.timestamp = new Date(event.timestamp);\n const periodKey = this.getPeriodKeyFromEvent(event);\n if (!this.groups[periodKey]) {\n this.groups[periodKey] = [];\n }\n this.groups[periodKey].push(event);\n });\n }\n\n protected setItems(): void {\n this.periods.forEach((p) => {\n // insert first the period\n this.items.push(p);\n // in each period putting items on left\n const onLeft = true;\n const periodInfo = p.periodInfo;\n // insert then all the events in this period\n this.addPeriodEvents(periodInfo, onLeft);\n // onLeft = this.addEventItemsAndGetIfOnLeft(periodInfo, onLeft);\n });\n }\n\n protected addPeriodEvents(periodInfo: NgxTimelinePeriodInfo, onLeft: boolean): void {\n this.groups[periodInfo.periodKey].forEach((event, index) => {\n const prevEvent = this.groups[periodInfo.periodKey][index - 1];\n if (index > 0 && this.compareEvents(prevEvent, event)) {\n onLeft = !onLeft;\n }\n this.pushEventOnItems(event, onLeft);\n });\n // return onLeft;\n }\n\n protected pushEventOnItems(event: NgxTimelineEvent, onLeft: boolean): void {\n this.items.push({\n eventInfo: { ...event }, position: onLeft ?\n this.ngxTimelineItemPosition.ON_LEFT : this.ngxTimelineItemPosition.ON_RIGHT\n });\n }\n\n /**\n * Compare the events inside the same group\n */\n protected compareEvents(prevEvent: NgxTimelineEvent, event: NgxTimelineEvent): boolean {\n return this.changeSideInGroup === NgxTimelineEventChangeSideInGroup.ALL ||\n this.compareEventsField(prevEvent, event, ...fieldsToCheckEventChangeSideInGroup[this.changeSideInGroup]);\n }\n\n protected compareEventsField(prevEvent: NgxTimelineEvent, event: NgxTimelineEvent, ...fields: string[]): boolean {\n return fields.reduce((res, field) => res = res || prevEvent.timestamp[field]() !== event.timestamp[field](), !!false);\n }\n\n protected setPeriods(): void {\n this.periods = Object.keys(this.groups).map((periodKey) => {\n const split = periodKey.split(this.separator);\n return this.getPeriodInfo(split, periodKey);\n });\n }\n\n private getPeriodInfo(split: string[], periodKey: string): { periodInfo: NgxTimelinePeriodInfo } {\n return {\n periodInfo: {\n year: Number(split[0]),\n month: Number(split[1]),\n day: Number(split[2]),\n periodKey,\n firstDate: this.groups[periodKey][0].timestamp as Date,\n },\n };\n }\n\n protected getPeriodKeyFromEvent(event: NgxTimelineEvent): string {\n return fieldsToAddEventGroup[this.groupEvent].map(field => event.timestamp[field]()).join(this.separator);\n }\n}\n","import { Component, Input, Output, TemplateRef } from '@angular/core';\nimport { NgxTimelineItem, NgxTimelineItemPosition } from '../../models/NgxTimelineEvent';\nimport { DatePipe } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { supportedLanguageCodes } from '../../models';\n\n@Component({\n selector: 'ngx-timeline-event',\n templateUrl: './ngx-timeline-event.component.html',\n styleUrls: ['./ngx-timeline-event.component.scss']\n})\nexport class NgxTimelineEventComponent {\n\n /**\n * Event to be displayed\n */\n @Input() event: NgxTimelineItem;\n /**\n * Event position respect to the vertical line (LEFT or RIGHT)\n */\n @Input() colSidePosition: NgxTimelineItemPosition;\n /**\n * Language code used to format the dates\n */\n @Input() langCode?: string;\n /**\n * Inner custom template used to display the event detail\n */\n @Input() innerEventCustomTemplate?: TemplateRef<any>;\n /**\n * Boolean used to enable or disable the animations\n */\n @Input() enableAnimation = true;\n /**\n * Output click event emitter\n */\n @Output() clickEmitter: BehaviorSubject<NgxTimelineItem> = new BehaviorSubject(null);\n\n ngxTimelineItemPosition = NgxTimelineItemPosition;\n\n private readonly monthAbbr = 'MMM';\n private readonly dayFormat = 'dd';\n\n constructor() { }\n\n getDateObj(): any {\n let day;\n let month;\n let year;\n const dateTimestamp = this.event?.eventInfo?.timestamp;\n if (dateTimestamp) {\n const timestamp = new Date(dateTimestamp);\n const langCode = this.getLangCode();\n month = new DatePipe(langCode).transform(timestamp, this.monthAbbr);\n day = new DatePipe(langCode).transform(timestamp, this.dayFormat);\n year = timestamp.getFullYear();\n }\n\n return {day, month, year};\n }\n\n protected getLangCode(): string {\n return this.langCode && supportedLanguageCodes.includes(this.langCode) ? this.langCode : supportedLanguageCodes[0];\n }\n\n}\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { NgxConfigDate, NgxDateObjMap, NgxDateFormat, supportedLanguageCodes, fieldConfigDate, dateConfigMap } from '../models';\r\n\r\n@Pipe({ name: 'ngxdate', pure: false })\r\nexport class NgxDatePipe implements PipeTransform {\r\n\r\n constructor() {\r\n }\r\n\r\n transform(date: Date | string, dateFormat?: string, langCode?: string): string {\r\n let transformedDate = null;\r\n if (date) {\r\n const objDate = this.getDateConfig(langCode);\r\n transformedDate = new DatePipe(objDate.code).transform(new Date(date), this.dateFormat(dateFormat, objDate));\r\n }\r\n return transformedDate;\r\n }\r\n\r\n private dateFormat(dateFormat: string, configDate: NgxConfigDate): string {\r\n return configDate[fieldConfigDate[dateFormat]];\r\n }\r\n\r\n private getDateConfig(langCode: string): NgxConfigDate {\r\n const code = langCode || supportedLanguageCodes[0];\r\n const configDate = dateConfigMap[code] || dateConfigMap[supportedLanguageCodes[0]];\r\n return configDate;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { NgxTimelineComponent } from './components/ngx-timeline.component';\nimport { NgxTimelineEventComponent } from './components/ngx-timeline-event/ngx-timeline-event.component';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport { NgxDatePipe } from './pipes/ngx-date-pipe';\nimport localeIt from '@angular/common/locales/it';\nimport localeFr from '@angular/common/locales/fr';\nimport localeDe from '@angular/common/locales/de';\nimport localeEs from '@angular/common/locales/es';\n\nregisterLocaleData(localeIt);\nregisterLocaleData(localeFr);\nregisterLocaleData(localeDe);\nregisterLocaleData(localeEs);\n\n@NgModule({\n declarations: [NgxTimelineComponent, NgxTimelineEventComponent, NgxDatePipe],\n imports: [CommonModule],\n exports: [NgxTimelineComponent, NgxDatePipe]\n})\nexport class NgxTimelineModule { }\n","/*\n * Public API Surface of ngx-timeline\n */\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/pipes/';\nexport * from './lib/ngx-timeline.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {NgxTimelineEventComponent as ɵb} from './lib/components/ngx-timeline-event/ngx-timeline-event.component';\nexport {NgxTimelineComponent as ɵa} from './lib/components/ngx-timeline.component';\nexport {NgxDatePipe as ɵc} from './lib/pipes/ngx-date-pipe';"],"names":["NgxDateFormat","NgxTimelineEventGroup","NgxTimelineEventChangeSideInGroup","NgxTimelineItemPosition","BehaviorSubject","Component","Input","Output","DatePipe","Pipe","registerLocaleData","localeIt","localeFr","localeDe","localeEs","NgModule","CommonModule"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("rxjs"),require("@angular/common"),require("@angular/common/locales/it"),require("@angular/common/locales/fr"),require("@angular/common/locales/de"),require("@angular/common/locales/es")):"function"==typeof define&&define.amd?define("@frxjs/ngx-timeline",["exports","@angular/core","rxjs","@angular/common","@angular/common/locales/it","@angular/common/locales/fr","@angular/common/locales/de","@angular/common/locales/es"],n):n(((e="undefined"!=typeof globalThis?globalThis:e||self).frxjs=e.frxjs||{},e.frxjs["ngx-timeline"]={}),e.ng.core,e.rxjs,e.ng.common,e.ng.common.locales.it,e.ng.common.locales.fr,e.ng.common.locales.de,e.ng.common.locales.es)}(this,(function(e,n,t,i,o,r,a,l){"use strict";function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=c(o),d=c(r),m=c(a),p=c(l);Object.create;function g(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var i,o,r=t.call(e),a=[];try{for(;(void 0===n||n-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(o)throw o.error}}return a}Object.create;var v,f=["en","it","fr","de","es"],u={en:{code:"en-US",fullDate:"MM/dd/yyyy h:mm a",dayMonthYear:"dd MMMM yyyy",monthYear:"MMMM yyyy",year:"yyyy",hoursMinutes:"hh:mm a"},it:{code:"it-IT",fullDate:"dd/MM/yyyy H:mm",dayMonthYear:"dd MMMM yyyy",monthYear:"MMMM yyyy",year:"yyyy",hoursMinutes:"HH:mm"},fr:{code:"fr-FR",fullDate:"dd/MM/yyyy H:mm",dayMonthYear:"dd MMMM yyyy",monthYear:"MMMM yyyy",year:"yyyy",hoursMinutes:"HH:mm"},de:{code:"de",fullDate:"dd/MM/yyyy H:mm",dayMonthYear:"dd MMMM yyyy",monthYear:"MMMM yyyy",year:"yyyy",hoursMinutes:"HH:mm"},es:{code:"es",fullDate:"dd/MM/yyyy H:mm",dayMonthYear:"dd MMMM yyyy",monthYear:"MMMM yyyy",year:"yyyy",hoursMinutes:"HH:mm"}};e.NgxDateFormat=void 0,(v=e.NgxDateFormat||(e.NgxDateFormat={})).DAY_MONTH_YEAR="DAY_MONTH_YEAR",v.FULL_DATE="FULL_DATE",v.MONTH_YEAR="MONTH_YEAR",v.HOURS_MINUTES="HOURS_MINUTES",v.YEAR="YEAR";var y,h={MONTH_YEAR:"monthYear",YEAR:"year",HOURS_MINUTES:"hoursMinutes",FULL_DATE:"fullDate",DAY_MONTH_YEAR:"dayMonthYear"};e.NgxTimelineEventGroup=void 0,(y=e.NgxTimelineEventGroup||(e.NgxTimelineEventGroup={})).YEAR="YEAR",y.MONTH_YEAR="MONTH_YEAR",y.DAY_MONTH_YEAR="DAY_MONTH_YEAR";var x,T={YEAR:["getFullYear"],MONTH_YEAR:["getFullYear","getMonth"],DAY_MONTH_YEAR:["getFullYear","getMonth","getDate"]},I={YEAR:e.NgxDateFormat.YEAR,MONTH_YEAR:e.NgxDateFormat.MONTH_YEAR,DAY_MONTH_YEAR:e.NgxDateFormat.DAY_MONTH_YEAR};e.NgxTimelineEventChangeSideInGroup=void 0,(x=e.NgxTimelineEventChangeSideInGroup||(e.NgxTimelineEventChangeSideInGroup={})).ALL="ALL",x.ON_DIFFERENT_HMS="ON_DIFFERENT_HMS",x.ON_DIFFERENT_DAY="ON_DIFFERENT_DAY",x.ON_DIFFERENT_MONTH="ON_DIFFERENT_MONTH";var E,M={ON_DIFFERENT_MONTH:["getFullYear","getMonth"],ON_DIFFERENT_DAY:["getFullYear","getMonth","getDate"],ON_DIFFERENT_HMS:["getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds"]};e.NgxTimelineItemPosition=void 0,(E=e.NgxTimelineItemPosition||(e.NgxTimelineItemPosition={})).ON_LEFT="ON_LEFT",E.ON_RIGHT="ON_RIGHT";var b=function(){function n(){this.enableAnimation=!0,this.groupEvent=e.NgxTimelineEventGroup.MONTH_YEAR,this.changeSideInGroup=e.NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY,this.clickEmitter=new t.BehaviorSubject(null),this.groups={},this.periods=[],this.items=[],this.ngxTimelineItemPosition=e.NgxTimelineItemPosition,this.ngxDateFormat=e.NgxDateFormat,this.separator="/"}return n.prototype.ngOnInit=function(){this.groupEvents(this.events)},n.prototype.ngOnChanges=function(e){this.groupEvents(this.events)},n.prototype.getPeriodKeyDateFormat=function(){return I[this.groupEvent]},n.prototype.clear=function(){this.groups={},this.periods=[],this.items=[]},n.prototype.groupEvents=function(e){e&&(this.clear(),this.sortEvents(e),this.setGroups(e),this.setPeriods(),this.setItems())},n.prototype.sortEvents=function(e){e.sort((function(e,n){return e.timestamp.getTime()-n.timestamp.getTime()}))},n.prototype.setGroups=function(e){var n=this;e.forEach((function(e){e.timestamp=new Date(e.timestamp);var t=n.getPeriodKeyFromEvent(e);n.groups[t]||(n.groups[t]=[]),n.groups[t].push(e)}))},n.prototype.setItems=function(){var e=this;this.periods.forEach((function(n){e.items.push(n);var t=n.periodInfo;e.addPeriodEvents(t,!0)}))},n.prototype.addPeriodEvents=function(e,n){var t=this;this.groups[e.periodKey].forEach((function(i,o){var r=t.groups[e.periodKey][o-1];o>0&&t.compareEvents(r,i)&&(n=!n),t.pushEventOnItems(i,n)}))},n.prototype.pushEventOnItems=function(e,n){this.items.push({eventInfo:Object.assign({},e),position:n?this.ngxTimelineItemPosition.ON_LEFT:this.ngxTimelineItemPosition.ON_RIGHT})},n.prototype.compareEvents=function(n,t){return this.changeSideInGroup===e.NgxTimelineEventChangeSideInGroup.ALL||this.compareEventsField.apply(this,function(){for(var e=[],n=0;n<arguments.length;n++)e=e.concat(g(arguments[n]));return e}([n,t],M[this.changeSideInGroup]))},n.prototype.compareEventsField=function(e,n){for(var t=[],i=2;i<arguments.length;i++)t[i-2]=arguments[i];return t.reduce((function(t,i){return t||e.timestamp[i]()!==n.timestamp[i]()}),!1)},n.prototype.setPeriods=function(){var e=this;this.periods=Object.keys(this.groups).map((function(n){var t=n.split(e.separator);return e.getPeriodInfo(t,n)}))},n.prototype.getPeriodInfo=function(e,n){return{periodInfo:{year:Number(e[0]),month:Number(e[1]),day:Number(e[2]),periodKey:n,firstDate:this.groups[n][0].timestamp}}},n.prototype.getPeriodKeyFromEvent=function(e){return T[this.groupEvent].map((function(n){return e.timestamp[n]()})).join(this.separator)},n}();b.decorators=[{type:n.Component,args:[{selector:"ngx-timeline",template:'<div class="main-container">\r\n <div class="items-container">\r\n <div *ngFor="let item of items; let index = index;" class="row">\r\n \x3c!-- DESKTOP --\x3e\r\n <div class="col col-left desktop" [ngClass]="item.periodInfo ? \'col-period\' : \'col-event\'">\r\n <div class="event-outer-container" *ngIf="item.eventInfo && item.position === ngxTimelineItemPosition.ON_LEFT">\r\n <ng-container *ngTemplateOutlet="eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_LEFT}"></ng-container>\r\n </div>\r\n <div class="hour left" *ngIf="item.eventInfo && item.position === ngxTimelineItemPosition.ON_RIGHT">\r\n <ng-container *ngTemplateOutlet="dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}" ></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class="col col-center desktop" [ngClass]="item.periodInfo ? \'col-period\' : \'col-event\'">\r\n <div class="center-inner" *ngIf="item.periodInfo">\r\n <ng-container *ngTemplateOutlet="periodCustomTemplate || periodTemplate; context: {period: item.periodInfo, index: index}"></ng-container>\r\n </div>\r\n <div class="center-inner no-period-key" *ngIf="!item.periodInfo">\r\n <ng-container *ngTemplateOutlet="centerLinesIconTemplate; context: {index: index}"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class="col col-right desktop" [ngClass]="item.periodInfo ? \'col-period\' : \'col-event\'">\r\n <div class="event-outer-container" *ngIf="item.eventInfo && item.position === ngxTimelineItemPosition.ON_RIGHT">\r\n <ng-container *ngTemplateOutlet="eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_RIGHT}"></ng-container>\r\n </div>\r\n <div class="hour right" *ngIf="item.eventInfo && item.position === ngxTimelineItemPosition.ON_LEFT">\r\n <ng-container *ngTemplateOutlet="dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}" ></ng-container>\r\n </div>\r\n </div>\r\n\r\n \x3c!-- MOBILE --\x3e\r\n <div class="col col-left mobile" [ngClass]="item.periodInfo ? \'col-period\' : \'col-event\'">\r\n <div class="hour left" *ngIf="item.eventInfo">\r\n <div class="hour-inner-container">\r\n <ng-container *ngTemplateOutlet="dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}" ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="col col-center mobile" [ngClass]="item.periodInfo ? \'col-period\' : \'col-event\'">\r\n <div class="center-inner" *ngIf="item.periodInfo;">\r\n <ng-container *ngTemplateOutlet="periodCustomTemplate || periodTemplate; context: {period: item.periodInfo, index: index}"></ng-container>\r\n </div>\r\n <div class="center-inner no-period-key" *ngIf="!item.periodInfo;">\r\n <ng-container *ngTemplateOutlet="centerLinesIconTemplate;context: {index: index}"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class="col col-right mobile" [ngClass]="item.periodInfo ? \'col-period\' : \'col-event\'">\r\n <div class="event-outer-container" *ngIf="item.eventInfo">\r\n <ng-container *ngTemplateOutlet="eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_RIGHT}"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #centerLinesIconTemplate let-index=index>\r\n <div class="line"></div>\r\n <ng-container *ngTemplateOutlet="centerIconCustomTemplate || centerIconTemplate"></ng-container>\r\n <div [ngClass]="{\'transparent last-line\': index === items.length - 1}" class="line"></div>\r\n</ng-template>\r\n\r\n<ng-template #centerIconTemplate>\r\n <div class="center-icon-container">\r\n <div class="icon"></div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dateInstantTemplate let-item=item>\r\n <span>\r\n {{item?.timestamp | ngxdate : ngxDateFormat.HOURS_MINUTES : langCode}}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #periodTemplate let-period=period let-index=index>\r\n <div [ngClass]="{\'transparent first-line\': !index}" class="line"></div>\r\n <div class="period-container">\r\n <div class="period-inner-container">\r\n <span>{{period?.firstDate | ngxdate : getPeriodKeyDateFormat() : langCode}}</span>\r\n </div>\r\n </div>\r\n <div class="line"></div>\r\n</ng-template>\r\n\r\n<ng-template #eventTemplate let-event=event let-colSidePosition=colSidePosition>\r\n <ngx-timeline-event\r\n [event]="event"\r\n [langCode]="langCode"\r\n [enableAnimation]="enableAnimation"\r\n [innerEventCustomTemplate]="innerEventCustomTemplate"\r\n [colSidePosition]="colSidePosition"\r\n (clickEmitter)="clickEmitter.next($event)">\r\n </ngx-timeline-event>\r\n</ng-template>\r\n\r\n',styles:[".main-container{display:flex;justify-content:center;width:100%}.items-container{padding:1rem 0;min-width:max(20rem,100%)}.row{display:flex;flex-wrap:wrap}.row>[class*=col-]{display:flex;flex-direction:column;justify-content:center}.col-left{align-items:flex-end}.col-left,.col-right{padding:0;flex:49 49 0}.col-right{align-items:flex-start}.col-center{min-height:6rem;padding:0;flex:2 2 0}.center-inner{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-inner .line{min-height:50%;max-height:50%;height:50%;background:#464646;width:.1rem}.center-inner .line.transparent{background:transparent}.period-container{background:orange;color:#fff;margin:0;padding:.2rem .5rem}.period-container .period-inner-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:.2rem .5rem;z-index:10}.center-icon-container{padding:.8rem 0;display:flex;justify-content:center;align-items:center;position:absolute;height:10px;width:10px;background:#fff}.center-icon-container .icon{height:1rem;width:1rem;border-radius:50%;background:orange;margin:0;position:absolute}.event-outer-container{margin:0 .5rem;width:100%}.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.hour.right{justify-content:flex-start}.hour.left{justify-content:flex-end}.hour .hour-inner-container{margin:0}.desktop{display:flex!important}.mobile{display:none!important}@media (max-width:900px){.desktop{display:none!important}.mobile{display:flex!important}.event-outer-container{margin:.5rem .3rem}.col-left{align-items:flex-start}.col-left .hour{font-size:12px;padding:0;margin-right:.3rem}.col-left.col-period{flex:18 18 0}.col-left.col-event{flex:18 18 0;padding:0;align-items:flex-end}.col-right{align-items:flex-start}.col-right.col-period{flex:77 77 0}.col-right.col-event{flex:77 77 0;padding:0}.col-center{min-height:6rem;justify-content:center;margin:0}.col-center.col-period{flex:5 5 0;min-height:3rem}.col-center.col-event{flex:5 5 0}.center-inner,.period-container{align-items:center}.period-container{min-height:20%;height:20%;max-height:20%;background:transparent;display:flex;justify-content:center;border-radius:6px}.period-container .period-inner-container{position:absolute;background:orange;color:#fff;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:.2rem .5rem;z-index:10}.center-icon-container{align-items:center;justify-content:center}.center-icon-container .icon{height:1rem;width:1rem;position:absolute}}"]}]}],b.ctorParameters=function(){return[]},b.propDecorators={events:[{type:n.Input}],langCode:[{type:n.Input}],enableAnimation:[{type:n.Input}],groupEvent:[{type:n.Input}],changeSideInGroup:[{type:n.Input}],periodCustomTemplate:[{type:n.Input}],eventCustomTemplate:[{type:n.Input}],centerIconCustomTemplate:[{type:n.Input}],dateInstantCustomTemplate:[{type:n.Input}],innerEventCustomTemplate:[{type:n.Input}],clickEmitter:[{type:n.Output}]};var N=function(){function n(){this.enableAnimation=!0,this.clickEmitter=new t.BehaviorSubject(null),this.ngxTimelineItemPosition=e.NgxTimelineItemPosition,this.monthAbbr="MMM",this.dayFormat="dd"}return n.prototype.getDateObj=function(){var e,n,t,o,r,a=null===(n=null===(e=this.event)||void 0===e?void 0:e.eventInfo)||void 0===n?void 0:n.timestamp;if(a){var l=new Date(a),c=this.getLangCode();o=new i.DatePipe(c).transform(l,this.monthAbbr),t=new i.DatePipe(c).transform(l,this.dayFormat),r=l.getFullYear()}return{day:t,month:o,year:r}},n.prototype.getLangCode=function(){return this.langCode&&f.includes(this.langCode)?this.langCode:f[0]},n}();N.decorators=[{type:n.Component,args:[{selector:"ngx-timeline-event",template:'<div class="event-wrapper-container" (click)="clickEmitter.next(event)">\n <div *ngIf="colSidePosition===ngxTimelineItemPosition.ON_RIGHT" class="arrow left"></div>\n <div class="event" [ngClass]="{\'enableAnimation\': enableAnimation}">\n <ng-container *ngTemplateOutlet="innerEventCustomTemplate || innerEventContainer; context: {event: event}">\n </ng-container>\n </div>\n <div *ngIf="colSidePosition===ngxTimelineItemPosition.ON_LEFT" class="arrow right"></div>\n</div>\n\n<ng-template #innerEventContainer let-event=event>\n <div class="event-container" [ngClass]="{\'reverse\': colSidePosition === ngxTimelineItemPosition.ON_LEFT}">\n <div class="event-info-container">\n <div class="event-info-header">\n <div class="title-container">{{event?.eventInfo?.title | titlecase}}</div>\n </div>\n <div class="event-info-body">\n <p class="event-info-description">{{event?.eventInfo?.description}}</p>\n </div>\n </div>\n\n <div class="event-divider-container">\n <hr/>\n </div>\n\n <div class="event-date-container" *ngIf="getDateObj() as dateObj">\n <div>\n <p>{{dateObj?.month}}</p>\n </div>\n <div>\n <p class="day">{{dateObj?.day}}</p>\n </div>\n <div>\n <p>{{dateObj?.year}}</p>\n </div>\n </div>\n </div>\n</ng-template>\n',styles:[".event-wrapper-container{display:flex;justify-content:center;align-items:center;cursor:pointer}.arrow{width:0;height:0;border-top:.5rem solid transparent;border-bottom:.5rem solid transparent;border-radius:6px;z-index:10}.arrow.right{filter:drop-shadow(2px 0 0 #244a6e22);border-left:.5rem solid #fff}.arrow.left{filter:drop-shadow(-1px 0 0 #244a6e22);border-right:.5rem solid #fff}.event{background:#fff;border-radius:.8rem;padding:1rem;width:100%;margin:1rem 0}.event.enableAnimation:hover{padding:2rem;transition:all .5s ease-in-out}.event.enableAnimation:not(:hover){padding:1rem;transition:all .5s ease-in-out}.event:not(.hour){background:#fff 0 0 no-repeat padding-box;box-shadow:0 3px 6px rgba(36,74,110,.3215686274509804)}.event.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.event.hour.right{justify-content:flex-start}.event.hour.left{justify-content:flex-end}.event .hour-inner-container{margin:0}.event-container{display:flex}.event-container.reverse{flex-direction:row-reverse}.event-container .event-info-container{display:flex;flex-direction:column;align-items:flex-start;padding:.1rem;flex:88 88 0}.event-container .event-info-container .event-info-header{display:flex;align-items:center;width:100%}.event-container .event-info-container .event-info-header .icon-container{margin-right:.3rem}.event-container .event-info-container .event-info-header .icon-container nb-icon{color:orange;width:1.5rem;height:1.5rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-header .title-container{font-weight:700;font-size:15px}.event-container .event-info-container .event-info-body{padding:.5rem 0;display:flex;flex-direction:column;justify-content:flex-start;overflow-wrap:anywhere}.event-container .event-info-container .event-info-body .event-info-description{margin-bottom:.5rem;font-size:13px}.event-container .event-info-container .event-info-body .category-container,.event-container .event-info-container .event-info-body .expiration-container{display:flex;font-size:13px;justify-content:flex-start;align-items:center}.event-container .event-info-container .event-info-body .category-container p,.event-container .event-info-container .event-info-body .expiration-container p{font-size:13px;margin:0}.event-container .event-info-container .event-info-body .category-container .category-label,.event-container .event-info-container .event-info-body .category-container .expiration-label,.event-container .event-info-container .event-info-body .expiration-container .category-label,.event-container .event-info-container .event-info-body .expiration-container .expiration-label{margin-right:.5rem}.event-container .event-info-container .event-info-body .category-container .category-value,.event-container .event-info-container .event-info-body .category-container .expiration-value,.event-container .event-info-container .event-info-body .expiration-container .category-value,.event-container .event-info-container .event-info-body .expiration-container .expiration-value{font-weight:700}.event-container .event-info-container .event-info-footer{font-size:15px;cursor:pointer;padding-top:1rem}.event-container .event-info-container .event-info-footer .footer-inner-container{display:flex;justify-content:flex-start;align-items:flex-end}.event-container .event-info-container .event-info-footer .footer-inner-container nb-icon{color:#006cb4;width:1rem;height:1rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-footer p{margin:0;color:#006cb4}.event-container .event-divider-container{display:flex;justify-content:center;align-items:center;padding:.1rem;flex:5 5 0}.event-container .event-divider-container hr{height:100%;width:1px;background:#e9e9e9}.event-container .event-date-container{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:.1rem;flex:15 15 0}.event-container .event-date-container p{margin:0;text-align:center}.event-container .event-date-container p.day{font-size:32px;font-weight:700;padding:.5rem 0}"]}]}],N.ctorParameters=function(){return[]},N.propDecorators={event:[{type:n.Input}],colSidePosition:[{type:n.Input}],langCode:[{type:n.Input}],innerEventCustomTemplate:[{type:n.Input}],enableAnimation:[{type:n.Input}],clickEmitter:[{type:n.Output}]};var O=function(){function e(){}return e.prototype.transform=function(e,n,t){var o=null;if(e){var r=this.getDateConfig(t);o=new i.DatePipe(r.code).transform(new Date(e),this.dateFormat(n,r))}return o},e.prototype.dateFormat=function(e,n){return n[h[e]]},e.prototype.getDateConfig=function(e){var n=e||f[0];return u[n]||u[f[0]]},e}();O.decorators=[{type:n.Pipe,args:[{name:"ngxdate",pure:!1}]}],O.ctorParameters=function(){return[]},i.registerLocaleData(s.default),i.registerLocaleData(d.default),i.registerLocaleData(m.default),i.registerLocaleData(p.default);var _=function(){};_.decorators=[{type:n.NgModule,args:[{declarations:[b,N,O],imports:[i.CommonModule],exports:[b,O]}]}],e.NgxDatePipe=O,e.NgxTimelineComponent=b,e.NgxTimelineEventComponent=N,e.NgxTimelineModule=_,e.dateConfigMap=u,e.fieldConfigDate=h,e.fieldsToAddEventGroup=T,e.fieldsToCheckEventChangeSideInGroup=M,e.periodKeyDateFormat=I,e.supportedLanguageCodes=f,e.ɵa=b,e.ɵb=N,e.ɵc=O,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=frxjs-ngx-timeline.umd.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-timeline/src/lib/models/NgxConfigObj.ts","../../../projects/ngx-timeline/src/lib/models/NgxTimelineEvent.ts","../../../projects/ngx-timeline/src/lib/components/ngx-timeline.component.ts","../../../projects/ngx-timeline/src/lib/components/ngx-timeline-event/ngx-timeline-event.component.ts","../../../projects/ngx-timeline/src/lib/pipes/ngx-date-pipe.ts","../../../projects/ngx-timeline/src/lib/ngx-timeline.module.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","NgxDateFormat","supportedLanguageCodes","dateConfigMap","en","code","fullDate","dayMonthYear","monthYear","year","hoursMinutes","it","fr","de","es","NgxTimelineEventGroup","fieldConfigDate","MONTH_YEAR","YEAR","HOURS_MINUTES","FULL_DATE","DAY_MONTH_YEAR","NgxTimelineEventChangeSideInGroup","fieldsToAddEventGroup","periodKeyDateFormat","NgxTimelineItemPosition","fieldsToCheckEventChangeSideInGroup","ON_DIFFERENT_MONTH","ON_DIFFERENT_DAY","ON_DIFFERENT_HMS","NgxTimelineComponent","this","enableAnimation","groupEvent","changeSideInGroup","clickEmitter","BehaviorSubject","groups","periods","items","ngxTimelineItemPosition","ngxDateFormat","separator","prototype","ngOnInit","groupEvents","events","ngOnChanges","changes","getPeriodKeyDateFormat","clear","sortEvents","setGroups","setPeriods","setItems","sort","a","b","timestamp","getTime","_this","forEach","event","Date","periodKey","getPeriodKeyFromEvent","p","periodInfo","addPeriodEvents","onLeft","index","prevEvent","compareEvents","pushEventOnItems","eventInfo","assign","position","ON_LEFT","ON_RIGHT","ALL","compareEventsField","apply","arguments","length","concat","__spread","fields","_i","reduce","res","field","keys","map","split","getPeriodInfo","Number","month","day","firstDate","join","Component","args","selector","template","Input","Output","NgxTimelineEventComponent","monthAbbr","dayFormat","getDateObj","dateTimestamp","_b","_a","langCode","getLangCode","DatePipe","transform","getFullYear","includes","NgxDatePipe","date","dateFormat","transformedDate","objDate","getDateConfig","configDate","Pipe","name","pure","registerLocaleData","localeIt","localeFr","localeDe","localeEs","NgModule","declarations","imports","CommonModule","exports"],"mappings":"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","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) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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","export let supportedLanguageCodes = ['en', 'it', 'fr', 'de', 'es'];\r\n\r\nexport interface NgxConfigDate {\r\n code: string;\r\n dayMonthYear: string;\r\n fullDate: string;\r\n hoursMinutes: string;\r\n monthYear: string;\r\n year: string;\r\n}\r\n\r\nexport interface NgxDateObjMap {\r\n [key: string]: NgxConfigDate;\r\n}\r\n\r\nexport let dateConfigMap: NgxDateObjMap = {\r\n en: {\r\n code: 'en-US',\r\n fullDate: 'MM/dd/yyyy h:mm a',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'hh:mm a'\r\n },\r\n it: {\r\n code: 'it-IT',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n },\r\n fr: {\r\n code: 'fr-FR',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n },\r\n de: {\r\n code: 'de',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n },\r\n es: {\r\n code: 'es',\r\n fullDate: 'dd/MM/yyyy H:mm',\r\n dayMonthYear: 'dd MMMM yyyy',\r\n monthYear: 'MMMM yyyy',\r\n year: 'yyyy',\r\n hoursMinutes: 'HH:mm'\r\n }\r\n};\r\n\r\nexport enum NgxDateFormat {\r\n DAY_MONTH_YEAR = 'DAY_MONTH_YEAR',\r\n FULL_DATE = 'FULL_DATE',\r\n MONTH_YEAR = 'MONTH_YEAR',\r\n HOURS_MINUTES = 'HOURS_MINUTES',\r\n YEAR = 'YEAR'\r\n}\r\n\r\nexport let fieldConfigDate = {\r\n MONTH_YEAR: 'monthYear',\r\n YEAR: 'year',\r\n HOURS_MINUTES: 'hoursMinutes',\r\n FULL_DATE: 'fullDate',\r\n DAY_MONTH_YEAR: 'dayMonthYear'\r\n}\r\n\r\n/**\r\n * Enum used to set the group event logic\r\n */\r\nexport enum NgxTimelineEventGroup {\r\n YEAR = 'YEAR',\r\n MONTH_YEAR = 'MONTH_YEAR',\r\n DAY_MONTH_YEAR = 'DAY_MONTH_YEAR'\r\n}\r\n\r\nexport let fieldsToAddEventGroup = {\r\n YEAR: ['getFullYear'],\r\n MONTH_YEAR: ['getFullYear', 'getMonth'],\r\n DAY_MONTH_YEAR: ['getFullYear', 'getMonth', 'getDate']\r\n};\r\n\r\nexport let periodKeyDateFormat = {\r\n YEAR: NgxDateFormat.YEAR,\r\n MONTH_YEAR: NgxDateFormat.MONTH_YEAR,\r\n DAY_MONTH_YEAR: NgxDateFormat.DAY_MONTH_YEAR,\r\n};\r\n\r\n/**\r\n * Enum used to set the change side event logic\r\n */\r\nexport enum NgxTimelineEventChangeSideInGroup {\r\n ALL = 'ALL',\r\n ON_DIFFERENT_HMS = 'ON_DIFFERENT_HMS',\r\n ON_DIFFERENT_DAY = 'ON_DIFFERENT_DAY',\r\n ON_DIFFERENT_MONTH = 'ON_DIFFERENT_MONTH'\r\n}\r\n\r\nexport let fieldsToCheckEventChangeSideInGroup = {\r\n ON_DIFFERENT_MONTH: ['getFullYear', 'getMonth'],\r\n ON_DIFFERENT_DAY: ['getFullYear', 'getMonth', 'getDate'],\r\n ON_DIFFERENT_HMS: ['getFullYear', 'getMonth', 'getDate', 'getHours', 'getMinutes', 'getSeconds']\r\n};\r\n","/**\r\n * Event to be provided from outside the timeline\r\n */\r\nexport interface NgxTimelineEvent {\r\n timestamp?: Date;\r\n title?: string;\r\n description?: string;\r\n id?: any;\r\n}\r\n\r\nexport interface NgxTimelinePeriodInfo {\r\n periodKey?: string;\r\n year?: number;\r\n month?: number;\r\n day?: number;\r\n firstDate?: any;\r\n}\r\n\r\n/**\r\n * Item used inside the timeline\r\n */\r\nexport interface NgxTimelineItem {\r\n type?: string;\r\n position?: NgxTimelineItemPosition.ON_LEFT | NgxTimelineItemPosition.ON_RIGHT;\r\n periodInfo?: NgxTimelinePeriodInfo;\r\n eventInfo?: NgxTimelineEvent;\r\n}\r\n\r\nexport enum NgxTimelineItemPosition {\r\n ON_LEFT = 'ON_LEFT',\r\n ON_RIGHT = 'ON_RIGHT'\r\n}\r\n","import { Component, OnInit, Input, TemplateRef, OnChanges, SimpleChanges, Output } from '@angular/core';\nimport {\n NgxTimelineEvent,\n NgxTimelineItem,\n NgxTimelineItemPosition,\n NgxTimelinePeriodInfo,\n NgxDateFormat,\n NgxTimelineEventGroup,\n NgxTimelineEventChangeSideInGroup,\n periodKeyDateFormat,\n fieldsToCheckEventChangeSideInGroup,\n fieldsToAddEventGroup } from '../models';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'ngx-timeline',\n templateUrl: './ngx-timeline.component.html',\n styleUrls: ['./ngx-timeline.scss'],\n})\nexport class NgxTimelineComponent implements OnInit, OnChanges {\n /**\n * List of events to be displayed\n */\n @Input() events: NgxTimelineEvent[];\n /**\n * Language code used to show the date formatted\n */\n @Input() langCode?: string;\n /**\n * Boolean used to enable or disable the animations\n */\n @Input() enableAnimation = true;\n /**\n * Logic to be applied in order to group events\n */\n @Input() groupEvent?: NgxTimelineEventGroup = NgxTimelineEventGroup.MONTH_YEAR;\n /**\n * Logic to be applied in order to put evetns on LEFT or RIGHT\n */\n @Input() changeSideInGroup?: NgxTimelineEventChangeSideInGroup = NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY;\n /**\n * Custom Template displayed before a group of events\n */\n @Input() periodCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show a single event\n */\n @Input() eventCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show an separator icon\n */\n @Input() centerIconCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show the side date\n */\n @Input() dateInstantCustomTemplate: TemplateRef<any>;\n /**\n * Custom Template displayed to show the inner event\n */\n @Input() innerEventCustomTemplate: TemplateRef<any>;\n /**\n * Output click event emitter\n */\n @Output()\n clickEmitter: BehaviorSubject<NgxTimelineItem> = new BehaviorSubject(null);\n\n groups: { [key: string]: NgxTimelineEvent[] } = {};\n periods: NgxTimelineItem[] = [];\n items: NgxTimelineItem[] = [];\n ngxTimelineItemPosition = NgxTimelineItemPosition;\n ngxDateFormat = NgxDateFormat;\n\n private readonly separator = '/';\n\n constructor() {}\n\n\n ngOnInit(): void {\n this.groupEvents(this.events);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.groupEvents(this.events);\n }\n\n getPeriodKeyDateFormat(): string {\n return periodKeyDateFormat[this.groupEvent];\n }\n\n protected clear(): void {\n this.groups = {};\n this.periods = [];\n this.items = [];\n }\n\n protected groupEvents(events: NgxTimelineEvent[]): void {\n if (events) {\n this.clear();\n this.sortEvents(events);\n this.setGroups(events);\n this.setPeriods();\n this.setItems();\n }\n }\n\n protected sortEvents(events: NgxTimelineEvent[]): void {\n events.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n }\n\n protected setGroups(events: NgxTimelineEvent[]): void {\n events.forEach((event) => {\n // conversion from string to actual Date\n event.timestamp = new Date(event.timestamp);\n const periodKey = this.getPeriodKeyFromEvent(event);\n if (!this.groups[periodKey]) {\n this.groups[periodKey] = [];\n }\n this.groups[periodKey].push(event);\n });\n }\n\n protected setItems(): void {\n this.periods.forEach((p) => {\n // insert first the period\n this.items.push(p);\n // in each period putting items on left\n const onLeft = true;\n const periodInfo = p.periodInfo;\n // insert then all the events in this period\n this.addPeriodEvents(periodInfo, onLeft);\n // onLeft = this.addEventItemsAndGetIfOnLeft(periodInfo, onLeft);\n });\n }\n\n protected addPeriodEvents(periodInfo: NgxTimelinePeriodInfo, onLeft: boolean): void {\n this.groups[periodInfo.periodKey].forEach((event, index) => {\n const prevEvent = this.groups[periodInfo.periodKey][index - 1];\n if (index > 0 && this.compareEvents(prevEvent, event)) {\n onLeft = !onLeft;\n }\n this.pushEventOnItems(event, onLeft);\n });\n // return onLeft;\n }\n\n protected pushEventOnItems(event: NgxTimelineEvent, onLeft: boolean): void {\n this.items.push({\n eventInfo: { ...event }, position: onLeft ?\n this.ngxTimelineItemPosition.ON_LEFT : this.ngxTimelineItemPosition.ON_RIGHT\n });\n }\n\n /**\n * Compare the events inside the same group\n */\n protected compareEvents(prevEvent: NgxTimelineEvent, event: NgxTimelineEvent): boolean {\n return this.changeSideInGroup === NgxTimelineEventChangeSideInGroup.ALL ||\n this.compareEventsField(prevEvent, event, ...fieldsToCheckEventChangeSideInGroup[this.changeSideInGroup]);\n }\n\n protected compareEventsField(prevEvent: NgxTimelineEvent, event: NgxTimelineEvent, ...fields: string[]): boolean {\n return fields.reduce((res, field) => res = res || prevEvent.timestamp[field]() !== event.timestamp[field](), !!false);\n }\n\n protected setPeriods(): void {\n this.periods = Object.keys(this.groups).map((periodKey) => {\n const split = periodKey.split(this.separator);\n return this.getPeriodInfo(split, periodKey);\n });\n }\n\n private getPeriodInfo(split: string[], periodKey: string): { periodInfo: NgxTimelinePeriodInfo } {\n return {\n periodInfo: {\n year: Number(split[0]),\n month: Number(split[1]),\n day: Number(split[2]),\n periodKey,\n firstDate: this.groups[periodKey][0].timestamp as Date,\n },\n };\n }\n\n protected getPeriodKeyFromEvent(event: NgxTimelineEvent): string {\n return fieldsToAddEventGroup[this.groupEvent].map(field => event.timestamp[field]()).join(this.separator);\n }\n}\n","import { Component, Input, Output, TemplateRef } from '@angular/core';\nimport { NgxTimelineItem, NgxTimelineItemPosition } from '../../models/NgxTimelineEvent';\nimport { DatePipe } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { supportedLanguageCodes } from '../../models';\n\n@Component({\n selector: 'ngx-timeline-event',\n templateUrl: './ngx-timeline-event.component.html',\n styleUrls: ['./ngx-timeline-event.component.scss']\n})\nexport class NgxTimelineEventComponent {\n\n /**\n * Event to be displayed\n */\n @Input() event: NgxTimelineItem;\n /**\n * Event position respect to the vertical line (LEFT or RIGHT)\n */\n @Input() colSidePosition: NgxTimelineItemPosition;\n /**\n * Language code used to format the dates\n */\n @Input() langCode?: string;\n /**\n * Inner custom template used to display the event detail\n */\n @Input() innerEventCustomTemplate?: TemplateRef<any>;\n /**\n * Boolean used to enable or disable the animations\n */\n @Input() enableAnimation = true;\n /**\n * Output click event emitter\n */\n @Output() clickEmitter: BehaviorSubject<NgxTimelineItem> = new BehaviorSubject(null);\n\n ngxTimelineItemPosition = NgxTimelineItemPosition;\n\n private readonly monthAbbr = 'MMM';\n private readonly dayFormat = 'dd';\n\n constructor() { }\n\n getDateObj(): any {\n let day;\n let month;\n let year;\n const dateTimestamp = this.event?.eventInfo?.timestamp;\n if (dateTimestamp) {\n const timestamp = new Date(dateTimestamp);\n const langCode = this.getLangCode();\n month = new DatePipe(langCode).transform(timestamp, this.monthAbbr);\n day = new DatePipe(langCode).transform(timestamp, this.dayFormat);\n year = timestamp.getFullYear();\n }\n\n return {day, month, year};\n }\n\n protected getLangCode(): string {\n return this.langCode && supportedLanguageCodes.includes(this.langCode) ? this.langCode : supportedLanguageCodes[0];\n }\n\n}\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { NgxConfigDate, NgxDateObjMap, NgxDateFormat, supportedLanguageCodes, fieldConfigDate, dateConfigMap } from '../models';\r\n\r\n@Pipe({ name: 'ngxdate', pure: false })\r\nexport class NgxDatePipe implements PipeTransform {\r\n\r\n constructor() {\r\n }\r\n\r\n transform(date: Date | string, dateFormat?: string, langCode?: string): string {\r\n let transformedDate = null;\r\n if (date) {\r\n const objDate = this.getDateConfig(langCode);\r\n transformedDate = new DatePipe(objDate.code).transform(new Date(date), this.dateFormat(dateFormat, objDate));\r\n }\r\n return transformedDate;\r\n }\r\n\r\n private dateFormat(dateFormat: string, configDate: NgxConfigDate): string {\r\n return configDate[fieldConfigDate[dateFormat]];\r\n }\r\n\r\n private getDateConfig(langCode: string): NgxConfigDate {\r\n const code = langCode || supportedLanguageCodes[0];\r\n const configDate = dateConfigMap[code] || dateConfigMap[supportedLanguageCodes[0]];\r\n return configDate;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { NgxTimelineComponent } from './components/ngx-timeline.component';\nimport { NgxTimelineEventComponent } from './components/ngx-timeline-event/ngx-timeline-event.component';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport { NgxDatePipe } from './pipes/ngx-date-pipe';\nimport localeIt from '@angular/common/locales/it';\nimport localeFr from '@angular/common/locales/fr';\nimport localeDe from '@angular/common/locales/de';\nimport localeEs from '@angular/common/locales/es';\n\nregisterLocaleData(localeIt);\nregisterLocaleData(localeFr);\nregisterLocaleData(localeDe);\nregisterLocaleData(localeEs);\n\n@NgModule({\n declarations: [NgxTimelineComponent, NgxTimelineEventComponent, NgxDatePipe],\n imports: [CommonModule],\n exports: [NgxTimelineComponent, NgxDatePipe]\n})\nexport class NgxTimelineModule { }\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
export { NgxTimelineEventComponent as ɵb } from './lib/components/ngx-timeline-event/ngx-timeline-event.component';
|
|
6
|
+
export { NgxTimelineComponent as ɵa } from './lib/components/ngx-timeline.component';
|
|
7
|
+
export { NgxDatePipe as ɵc } from './lib/pipes/ngx-date-pipe';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJ4anMtbmd4LXRpbWVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRpbWVsaW5lL3NyYy9mcnhqcy1uZ3gtdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDakgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7Tmd4VGltZWxpbmVFdmVudENvbXBvbmVudCBhcyDJtWJ9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmd4LXRpbWVsaW5lLWV2ZW50L25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQnO1xuZXhwb3J0IHtOZ3hUaW1lbGluZUNvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmd4LXRpbWVsaW5lLmNvbXBvbmVudCc7XG5leHBvcnQge05neERhdGVQaXBlIGFzIMm1Y30gZnJvbSAnLi9saWIvcGlwZXMvbmd4LWRhdGUtcGlwZSc7Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './ngx-timeline.component';
|
|
2
|
+
export * from './ngx-timeline-event/ngx-timeline-event.component';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGltZWxpbmUvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmd4LXRpbWVsaW5lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmd4LXRpbWVsaW5lLWV2ZW50L25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQnO1xyXG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component, Input, Output } from '@angular/core';
|
|
2
|
+
import { NgxTimelineItemPosition } from '../../models/NgxTimelineEvent';
|
|
3
|
+
import { DatePipe } from '@angular/common';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { supportedLanguageCodes } from '../../models';
|
|
6
|
+
export class NgxTimelineEventComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Boolean used to enable or disable the animations
|
|
10
|
+
*/
|
|
11
|
+
this.enableAnimation = true;
|
|
12
|
+
/**
|
|
13
|
+
* Output click event emitter
|
|
14
|
+
*/
|
|
15
|
+
this.clickEmitter = new BehaviorSubject(null);
|
|
16
|
+
this.ngxTimelineItemPosition = NgxTimelineItemPosition;
|
|
17
|
+
this.monthAbbr = 'MMM';
|
|
18
|
+
this.dayFormat = 'dd';
|
|
19
|
+
}
|
|
20
|
+
getDateObj() {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
let day;
|
|
23
|
+
let month;
|
|
24
|
+
let year;
|
|
25
|
+
const dateTimestamp = (_b = (_a = this.event) === null || _a === void 0 ? void 0 : _a.eventInfo) === null || _b === void 0 ? void 0 : _b.timestamp;
|
|
26
|
+
if (dateTimestamp) {
|
|
27
|
+
const timestamp = new Date(dateTimestamp);
|
|
28
|
+
const langCode = this.getLangCode();
|
|
29
|
+
month = new DatePipe(langCode).transform(timestamp, this.monthAbbr);
|
|
30
|
+
day = new DatePipe(langCode).transform(timestamp, this.dayFormat);
|
|
31
|
+
year = timestamp.getFullYear();
|
|
32
|
+
}
|
|
33
|
+
return { day, month, year };
|
|
34
|
+
}
|
|
35
|
+
getLangCode() {
|
|
36
|
+
return this.langCode && supportedLanguageCodes.includes(this.langCode) ? this.langCode : supportedLanguageCodes[0];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
NgxTimelineEventComponent.decorators = [
|
|
40
|
+
{ type: Component, args: [{
|
|
41
|
+
selector: 'ngx-timeline-event',
|
|
42
|
+
template: "<div class=\"event-wrapper-container\" (click)=\"clickEmitter.next(event)\">\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_RIGHT\" class=\"arrow left\"></div>\n <div class=\"event\" [ngClass]=\"{'enableAnimation': enableAnimation}\">\n <ng-container *ngTemplateOutlet=\"innerEventCustomTemplate || innerEventContainer; context: {event: event}\">\n </ng-container>\n </div>\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_LEFT\" class=\"arrow right\"></div>\n</div>\n\n<ng-template #innerEventContainer let-event=event>\n <div class=\"event-container\" [ngClass]=\"{'reverse': colSidePosition === ngxTimelineItemPosition.ON_LEFT}\">\n <div class=\"event-info-container\">\n <div class=\"event-info-header\">\n <div class=\"title-container\">{{event?.eventInfo?.title | titlecase}}</div>\n </div>\n <div class=\"event-info-body\">\n <p class=\"event-info-description\">{{event?.eventInfo?.description}}</p>\n </div>\n </div>\n\n <div class=\"event-divider-container\">\n <hr/>\n </div>\n\n <div class=\"event-date-container\" *ngIf=\"getDateObj() as dateObj\">\n <div>\n <p>{{dateObj?.month}}</p>\n </div>\n <div>\n <p class=\"day\">{{dateObj?.day}}</p>\n </div>\n <div>\n <p>{{dateObj?.year}}</p>\n </div>\n </div>\n </div>\n</ng-template>\n",
|
|
43
|
+
styles: [".event-wrapper-container{display:flex;justify-content:center;align-items:center;cursor:pointer}.arrow{width:0;height:0;border-top:.5rem solid transparent;border-bottom:.5rem solid transparent;border-radius:6px;z-index:10}.arrow.right{filter:drop-shadow(2px 0 0 #244a6e22);border-left:.5rem solid #fff}.arrow.left{filter:drop-shadow(-1px 0 0 #244a6e22);border-right:.5rem solid #fff}.event{background:#fff;border-radius:.8rem;padding:1rem;width:100%;margin:1rem 0}.event.enableAnimation:hover{padding:2rem;transition:all .5s ease-in-out}.event.enableAnimation:not(:hover){padding:1rem;transition:all .5s ease-in-out}.event:not(.hour){background:#fff 0 0 no-repeat padding-box;box-shadow:0 3px 6px rgba(36,74,110,.3215686274509804)}.event.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.event.hour.right{justify-content:flex-start}.event.hour.left{justify-content:flex-end}.event .hour-inner-container{margin:0}.event-container{display:flex}.event-container.reverse{flex-direction:row-reverse}.event-container .event-info-container{display:flex;flex-direction:column;align-items:flex-start;padding:.1rem;flex:88 88 0}.event-container .event-info-container .event-info-header{display:flex;align-items:center;width:100%}.event-container .event-info-container .event-info-header .icon-container{margin-right:.3rem}.event-container .event-info-container .event-info-header .icon-container nb-icon{color:orange;width:1.5rem;height:1.5rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-header .title-container{font-weight:700;font-size:15px}.event-container .event-info-container .event-info-body{padding:.5rem 0;display:flex;flex-direction:column;justify-content:flex-start;overflow-wrap:anywhere}.event-container .event-info-container .event-info-body .event-info-description{margin-bottom:.5rem;font-size:13px}.event-container .event-info-container .event-info-body .category-container,.event-container .event-info-container .event-info-body .expiration-container{display:flex;font-size:13px;justify-content:flex-start;align-items:center}.event-container .event-info-container .event-info-body .category-container p,.event-container .event-info-container .event-info-body .expiration-container p{font-size:13px;margin:0}.event-container .event-info-container .event-info-body .category-container .category-label,.event-container .event-info-container .event-info-body .category-container .expiration-label,.event-container .event-info-container .event-info-body .expiration-container .category-label,.event-container .event-info-container .event-info-body .expiration-container .expiration-label{margin-right:.5rem}.event-container .event-info-container .event-info-body .category-container .category-value,.event-container .event-info-container .event-info-body .category-container .expiration-value,.event-container .event-info-container .event-info-body .expiration-container .category-value,.event-container .event-info-container .event-info-body .expiration-container .expiration-value{font-weight:700}.event-container .event-info-container .event-info-footer{font-size:15px;cursor:pointer;padding-top:1rem}.event-container .event-info-container .event-info-footer .footer-inner-container{display:flex;justify-content:flex-start;align-items:flex-end}.event-container .event-info-container .event-info-footer .footer-inner-container nb-icon{color:#006cb4;width:1rem;height:1rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-footer p{margin:0;color:#006cb4}.event-container .event-divider-container{display:flex;justify-content:center;align-items:center;padding:.1rem;flex:5 5 0}.event-container .event-divider-container hr{height:100%;width:1px;background:#e9e9e9}.event-container .event-date-container{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:.1rem;flex:15 15 0}.event-container .event-date-container p{margin:0;text-align:center}.event-container .event-date-container p.day{font-size:32px;font-weight:700;padding:.5rem 0}"]
|
|
44
|
+
},] }
|
|
45
|
+
];
|
|
46
|
+
NgxTimelineEventComponent.ctorParameters = () => [];
|
|
47
|
+
NgxTimelineEventComponent.propDecorators = {
|
|
48
|
+
event: [{ type: Input }],
|
|
49
|
+
colSidePosition: [{ type: Input }],
|
|
50
|
+
langCode: [{ type: Input }],
|
|
51
|
+
innerEventCustomTemplate: [{ type: Input }],
|
|
52
|
+
enableAnimation: [{ type: Input }],
|
|
53
|
+
clickEmitter: [{ type: Output }]
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRpbWVsaW5lLWV2ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10aW1lbGluZS9zcmMvbGliL2NvbXBvbmVudHMvbmd4LXRpbWVsaW5lLWV2ZW50L25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBbUIsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPdEQsTUFBTSxPQUFPLHlCQUF5QjtJQWdDcEM7UUFkQTs7V0FFRztRQUNNLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2hDOztXQUVHO1FBQ08saUJBQVksR0FBcUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckYsNEJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFFakMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsSUFBSSxDQUFDO0lBRWxCLENBQUM7SUFFakIsVUFBVTs7UUFDUixJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksS0FBSyxDQUFDO1FBQ1YsSUFBSSxJQUFJLENBQUM7UUFDVCxNQUFNLGFBQWEsZUFBRyxJQUFJLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFNBQVMsQ0FBQztRQUN2RCxJQUFJLGFBQWEsRUFBRTtZQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEMsS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BFLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsRSxJQUFJLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVTLFdBQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JILENBQUM7OztZQXpERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsczNDQUFrRDs7YUFFbkQ7Ozs7b0JBTUUsS0FBSzs4QkFJTCxLQUFLO3VCQUlMLEtBQUs7dUNBSUwsS0FBSzs4QkFJTCxLQUFLOzJCQUlMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hUaW1lbGluZUl0ZW0sIE5neFRpbWVsaW5lSXRlbVBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05neFRpbWVsaW5lRXZlbnQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdXBwb3J0ZWRMYW5ndWFnZUNvZGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXRpbWVsaW5lLWV2ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neFRpbWVsaW5lRXZlbnRDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBFdmVudCB0byBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIGV2ZW50OiBOZ3hUaW1lbGluZUl0ZW07XG4gIC8qKlxuICAgKiBFdmVudCBwb3NpdGlvbiByZXNwZWN0IHRvIHRoZSB2ZXJ0aWNhbCBsaW5lIChMRUZUIG9yIFJJR0hUKVxuICAgKi9cbiAgQElucHV0KCkgY29sU2lkZVBvc2l0aW9uOiBOZ3hUaW1lbGluZUl0ZW1Qb3NpdGlvbjtcbiAgLyoqXG4gICAqIExhbmd1YWdlIGNvZGUgdXNlZCB0byBmb3JtYXQgdGhlIGRhdGVzXG4gICAqL1xuICBASW5wdXQoKSBsYW5nQ29kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIElubmVyIGN1c3RvbSB0ZW1wbGF0ZSB1c2VkIHRvIGRpc3BsYXkgdGhlIGV2ZW50IGRldGFpbFxuICAgKi9cbiAgQElucHV0KCkgaW5uZXJFdmVudEN1c3RvbVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIEJvb2xlYW4gdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlQW5pbWF0aW9uID0gdHJ1ZTtcbiAgLyoqXG4gICAqIE91dHB1dCBjbGljayBldmVudCBlbWl0dGVyXG4gICAqL1xuICBAT3V0cHV0KCkgY2xpY2tFbWl0dGVyOiBCZWhhdmlvclN1YmplY3Q8Tmd4VGltZWxpbmVJdGVtPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgbmd4VGltZWxpbmVJdGVtUG9zaXRpb24gPSBOZ3hUaW1lbGluZUl0ZW1Qb3NpdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1vbnRoQWJiciA9ICdNTU0nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRheUZvcm1hdCA9ICdkZCc7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXREYXRlT2JqKCk6IGFueSB7XG4gICAgbGV0IGRheTtcbiAgICBsZXQgbW9udGg7XG4gICAgbGV0IHllYXI7XG4gICAgY29uc3QgZGF0ZVRpbWVzdGFtcCA9IHRoaXMuZXZlbnQ/LmV2ZW50SW5mbz8udGltZXN0YW1wO1xuICAgIGlmIChkYXRlVGltZXN0YW1wKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZShkYXRlVGltZXN0YW1wKTtcbiAgICAgIGNvbnN0IGxhbmdDb2RlID0gdGhpcy5nZXRMYW5nQ29kZSgpO1xuICAgICAgbW9udGggPSBuZXcgRGF0ZVBpcGUobGFuZ0NvZGUpLnRyYW5zZm9ybSh0aW1lc3RhbXAsIHRoaXMubW9udGhBYmJyKTtcbiAgICAgIGRheSA9IG5ldyBEYXRlUGlwZShsYW5nQ29kZSkudHJhbnNmb3JtKHRpbWVzdGFtcCwgdGhpcy5kYXlGb3JtYXQpO1xuICAgICAgeWVhciA9IHRpbWVzdGFtcC5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIHJldHVybiB7ZGF5LCBtb250aCwgeWVhcn07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFuZ0NvZGUoKTogc3RyaW5nICB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ0NvZGUgJiYgc3VwcG9ydGVkTGFuZ3VhZ2VDb2Rlcy5pbmNsdWRlcyh0aGlzLmxhbmdDb2RlKSA/IHRoaXMubGFuZ0NvZGUgOiBzdXBwb3J0ZWRMYW5ndWFnZUNvZGVzWzBdO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Component, Input, Output } from '@angular/core';
|
|
2
|
+
import { NgxTimelineItemPosition, NgxDateFormat, NgxTimelineEventGroup, NgxTimelineEventChangeSideInGroup, periodKeyDateFormat, fieldsToCheckEventChangeSideInGroup, fieldsToAddEventGroup } from '../models';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
export class NgxTimelineComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* Boolean used to enable or disable the animations
|
|
8
|
+
*/
|
|
9
|
+
this.enableAnimation = true;
|
|
10
|
+
/**
|
|
11
|
+
* Logic to be applied in order to group events
|
|
12
|
+
*/
|
|
13
|
+
this.groupEvent = NgxTimelineEventGroup.MONTH_YEAR;
|
|
14
|
+
/**
|
|
15
|
+
* Logic to be applied in order to put evetns on LEFT or RIGHT
|
|
16
|
+
*/
|
|
17
|
+
this.changeSideInGroup = NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY;
|
|
18
|
+
/**
|
|
19
|
+
* Output click event emitter
|
|
20
|
+
*/
|
|
21
|
+
this.clickEmitter = new BehaviorSubject(null);
|
|
22
|
+
this.groups = {};
|
|
23
|
+
this.periods = [];
|
|
24
|
+
this.items = [];
|
|
25
|
+
this.ngxTimelineItemPosition = NgxTimelineItemPosition;
|
|
26
|
+
this.ngxDateFormat = NgxDateFormat;
|
|
27
|
+
this.separator = '/';
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.groupEvents(this.events);
|
|
31
|
+
}
|
|
32
|
+
ngOnChanges(changes) {
|
|
33
|
+
this.groupEvents(this.events);
|
|
34
|
+
}
|
|
35
|
+
getPeriodKeyDateFormat() {
|
|
36
|
+
return periodKeyDateFormat[this.groupEvent];
|
|
37
|
+
}
|
|
38
|
+
clear() {
|
|
39
|
+
this.groups = {};
|
|
40
|
+
this.periods = [];
|
|
41
|
+
this.items = [];
|
|
42
|
+
}
|
|
43
|
+
groupEvents(events) {
|
|
44
|
+
if (events) {
|
|
45
|
+
this.clear();
|
|
46
|
+
this.sortEvents(events);
|
|
47
|
+
this.setGroups(events);
|
|
48
|
+
this.setPeriods();
|
|
49
|
+
this.setItems();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
sortEvents(events) {
|
|
53
|
+
events.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
|
|
54
|
+
}
|
|
55
|
+
setGroups(events) {
|
|
56
|
+
events.forEach((event) => {
|
|
57
|
+
// conversion from string to actual Date
|
|
58
|
+
event.timestamp = new Date(event.timestamp);
|
|
59
|
+
const periodKey = this.getPeriodKeyFromEvent(event);
|
|
60
|
+
if (!this.groups[periodKey]) {
|
|
61
|
+
this.groups[periodKey] = [];
|
|
62
|
+
}
|
|
63
|
+
this.groups[periodKey].push(event);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
setItems() {
|
|
67
|
+
this.periods.forEach((p) => {
|
|
68
|
+
// insert first the period
|
|
69
|
+
this.items.push(p);
|
|
70
|
+
// in each period putting items on left
|
|
71
|
+
const onLeft = true;
|
|
72
|
+
const periodInfo = p.periodInfo;
|
|
73
|
+
// insert then all the events in this period
|
|
74
|
+
this.addPeriodEvents(periodInfo, onLeft);
|
|
75
|
+
// onLeft = this.addEventItemsAndGetIfOnLeft(periodInfo, onLeft);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
addPeriodEvents(periodInfo, onLeft) {
|
|
79
|
+
this.groups[periodInfo.periodKey].forEach((event, index) => {
|
|
80
|
+
const prevEvent = this.groups[periodInfo.periodKey][index - 1];
|
|
81
|
+
if (index > 0 && this.compareEvents(prevEvent, event)) {
|
|
82
|
+
onLeft = !onLeft;
|
|
83
|
+
}
|
|
84
|
+
this.pushEventOnItems(event, onLeft);
|
|
85
|
+
});
|
|
86
|
+
// return onLeft;
|
|
87
|
+
}
|
|
88
|
+
pushEventOnItems(event, onLeft) {
|
|
89
|
+
this.items.push({
|
|
90
|
+
eventInfo: Object.assign({}, event),
|
|
91
|
+
position: onLeft ?
|
|
92
|
+
this.ngxTimelineItemPosition.ON_LEFT : this.ngxTimelineItemPosition.ON_RIGHT
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Compare the events inside the same group
|
|
97
|
+
*/
|
|
98
|
+
compareEvents(prevEvent, event) {
|
|
99
|
+
return this.changeSideInGroup === NgxTimelineEventChangeSideInGroup.ALL ||
|
|
100
|
+
this.compareEventsField(prevEvent, event, ...fieldsToCheckEventChangeSideInGroup[this.changeSideInGroup]);
|
|
101
|
+
}
|
|
102
|
+
compareEventsField(prevEvent, event, ...fields) {
|
|
103
|
+
return fields.reduce((res, field) => res = res || prevEvent.timestamp[field]() !== event.timestamp[field](), !!false);
|
|
104
|
+
}
|
|
105
|
+
setPeriods() {
|
|
106
|
+
this.periods = Object.keys(this.groups).map((periodKey) => {
|
|
107
|
+
const split = periodKey.split(this.separator);
|
|
108
|
+
return this.getPeriodInfo(split, periodKey);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
getPeriodInfo(split, periodKey) {
|
|
112
|
+
return {
|
|
113
|
+
periodInfo: {
|
|
114
|
+
year: Number(split[0]),
|
|
115
|
+
month: Number(split[1]),
|
|
116
|
+
day: Number(split[2]),
|
|
117
|
+
periodKey,
|
|
118
|
+
firstDate: this.groups[periodKey][0].timestamp,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
getPeriodKeyFromEvent(event) {
|
|
123
|
+
return fieldsToAddEventGroup[this.groupEvent].map(field => event.timestamp[field]()).join(this.separator);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
NgxTimelineComponent.decorators = [
|
|
127
|
+
{ type: Component, args: [{
|
|
128
|
+
selector: 'ngx-timeline',
|
|
129
|
+
template: "<div class=\"main-container\">\r\n <div class=\"items-container\">\r\n <div *ngFor=\"let item of items; let index = index;\" class=\"row\">\r\n <!-- DESKTOP -->\r\n <div class=\"col col-left desktop\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"event-outer-container\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_LEFT\">\r\n <ng-container *ngTemplateOutlet=\"eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_LEFT}\"></ng-container>\r\n </div>\r\n <div class=\"hour left\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_RIGHT\">\r\n <ng-container *ngTemplateOutlet=\"dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}\" ></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-center desktop\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"center-inner\" *ngIf=\"item.periodInfo\">\r\n <ng-container *ngTemplateOutlet=\"periodCustomTemplate || periodTemplate; context: {period: item.periodInfo, index: index}\"></ng-container>\r\n </div>\r\n <div class=\"center-inner no-period-key\" *ngIf=\"!item.periodInfo\">\r\n <ng-container *ngTemplateOutlet=\"centerLinesIconTemplate; context: {index: index}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-right desktop\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"event-outer-container\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_RIGHT\">\r\n <ng-container *ngTemplateOutlet=\"eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_RIGHT}\"></ng-container>\r\n </div>\r\n <div class=\"hour right\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_LEFT\">\r\n <ng-container *ngTemplateOutlet=\"dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}\" ></ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- MOBILE -->\r\n <div class=\"col col-left mobile\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"hour left\" *ngIf=\"item.eventInfo\">\r\n <div class=\"hour-inner-container\">\r\n <ng-container *ngTemplateOutlet=\"dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}\" ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-center mobile\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"center-inner\" *ngIf=\"item.periodInfo;\">\r\n <ng-container *ngTemplateOutlet=\"periodCustomTemplate || periodTemplate; context: {period: item.periodInfo, index: index}\"></ng-container>\r\n </div>\r\n <div class=\"center-inner no-period-key\" *ngIf=\"!item.periodInfo;\">\r\n <ng-container *ngTemplateOutlet=\"centerLinesIconTemplate;context: {index: index}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-right mobile\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"event-outer-container\" *ngIf=\"item.eventInfo\">\r\n <ng-container *ngTemplateOutlet=\"eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_RIGHT}\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #centerLinesIconTemplate let-index=index>\r\n <div class=\"line\"></div>\r\n <ng-container *ngTemplateOutlet=\"centerIconCustomTemplate || centerIconTemplate\"></ng-container>\r\n <div [ngClass]=\"{'transparent last-line': index === items.length - 1}\" class=\"line\"></div>\r\n</ng-template>\r\n\r\n<ng-template #centerIconTemplate>\r\n <div class=\"center-icon-container\">\r\n <div class=\"icon\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dateInstantTemplate let-item=item>\r\n <span>\r\n {{item?.timestamp | ngxdate : ngxDateFormat.HOURS_MINUTES : langCode}}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #periodTemplate let-period=period let-index=index>\r\n <div [ngClass]=\"{'transparent first-line': !index}\" class=\"line\"></div>\r\n <div class=\"period-container\">\r\n <div class=\"period-inner-container\">\r\n <span>{{period?.firstDate | ngxdate : getPeriodKeyDateFormat() : langCode}}</span>\r\n </div>\r\n </div>\r\n <div class=\"line\"></div>\r\n</ng-template>\r\n\r\n<ng-template #eventTemplate let-event=event let-colSidePosition=colSidePosition>\r\n <ngx-timeline-event\r\n [event]=\"event\"\r\n [langCode]=\"langCode\"\r\n [enableAnimation]=\"enableAnimation\"\r\n [innerEventCustomTemplate]=\"innerEventCustomTemplate\"\r\n [colSidePosition]=\"colSidePosition\"\r\n (clickEmitter)=\"clickEmitter.next($event)\">\r\n </ngx-timeline-event>\r\n</ng-template>\r\n\r\n",
|
|
130
|
+
styles: [".main-container{display:flex;justify-content:center;width:100%}.items-container{padding:1rem 0;min-width:max(20rem,100%)}.row{display:flex;flex-wrap:wrap}.row>[class*=col-]{display:flex;flex-direction:column;justify-content:center}.col-left{align-items:flex-end}.col-left,.col-right{padding:0;flex:49 49 0}.col-right{align-items:flex-start}.col-center{min-height:6rem;padding:0;flex:2 2 0}.center-inner{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-inner .line{min-height:50%;max-height:50%;height:50%;background:#464646;width:.1rem}.center-inner .line.transparent{background:transparent}.period-container{background:orange;color:#fff;margin:0;padding:.2rem .5rem}.period-container .period-inner-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:.2rem .5rem;z-index:10}.center-icon-container{padding:.8rem 0;display:flex;justify-content:center;align-items:center;position:absolute;height:10px;width:10px;background:#fff}.center-icon-container .icon{height:1rem;width:1rem;border-radius:50%;background:orange;margin:0;position:absolute}.event-outer-container{margin:0 .5rem;width:100%}.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.hour.right{justify-content:flex-start}.hour.left{justify-content:flex-end}.hour .hour-inner-container{margin:0}.desktop{display:flex!important}.mobile{display:none!important}@media (max-width:900px){.desktop{display:none!important}.mobile{display:flex!important}.event-outer-container{margin:.5rem .3rem}.col-left{align-items:flex-start}.col-left .hour{font-size:12px;padding:0;margin-right:.3rem}.col-left.col-period{flex:18 18 0}.col-left.col-event{flex:18 18 0;padding:0;align-items:flex-end}.col-right{align-items:flex-start}.col-right.col-period{flex:77 77 0}.col-right.col-event{flex:77 77 0;padding:0}.col-center{min-height:6rem;justify-content:center;margin:0}.col-center.col-period{flex:5 5 0;min-height:3rem}.col-center.col-event{flex:5 5 0}.center-inner,.period-container{align-items:center}.period-container{min-height:20%;height:20%;max-height:20%;background:transparent;display:flex;justify-content:center;border-radius:6px}.period-container .period-inner-container{position:absolute;background:orange;color:#fff;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:.2rem .5rem;z-index:10}.center-icon-container{align-items:center;justify-content:center}.center-icon-container .icon{height:1rem;width:1rem;position:absolute}}"]
|
|
131
|
+
},] }
|
|
132
|
+
];
|
|
133
|
+
NgxTimelineComponent.ctorParameters = () => [];
|
|
134
|
+
NgxTimelineComponent.propDecorators = {
|
|
135
|
+
events: [{ type: Input }],
|
|
136
|
+
langCode: [{ type: Input }],
|
|
137
|
+
enableAnimation: [{ type: Input }],
|
|
138
|
+
groupEvent: [{ type: Input }],
|
|
139
|
+
changeSideInGroup: [{ type: Input }],
|
|
140
|
+
periodCustomTemplate: [{ type: Input }],
|
|
141
|
+
eventCustomTemplate: [{ type: Input }],
|
|
142
|
+
centerIconCustomTemplate: [{ type: Input }],
|
|
143
|
+
dateInstantCustomTemplate: [{ type: Input }],
|
|
144
|
+
innerEventCustomTemplate: [{ type: Input }],
|
|
145
|
+
clickEmitter: [{ type: Output }]
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRpbWVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10aW1lbGluZS9zcmMvbGliL2NvbXBvbmVudHMvbmd4LXRpbWVsaW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBeUMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFHTCx1QkFBdUIsRUFFdkIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixpQ0FBaUMsRUFDakMsbUJBQW1CLEVBQ25CLG1DQUFtQyxFQUNuQyxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT3ZDLE1BQU0sT0FBTyxvQkFBb0I7SUF1RC9CO1FBOUNBOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDaEM7O1dBRUc7UUFDTSxlQUFVLEdBQTJCLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztRQUMvRTs7V0FFRztRQUNNLHNCQUFpQixHQUF1QyxpQ0FBaUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQXFCcEg7O1dBRUc7UUFFSCxpQkFBWSxHQUFxQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxXQUFNLEdBQTBDLEVBQUUsQ0FBQztRQUNuRCxZQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNoQyxVQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUM5Qiw0QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUViLGNBQVMsR0FBRyxHQUFHLENBQUM7SUFFbEIsQ0FBQztJQUdoQixRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFz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Q0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWUsRUFBRSxTQUFpQjtRQUN0RCxPQUFPO1lBQ0wsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLFNBQVM7Z0JBQ1QsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBaUI7YUFDdkQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVTLHFCQUFxQixDQUFDLEtBQXVCO1FBQ3JELE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUcsQ0FBQzs7O1lBM0tGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsOGhLQUE0Qzs7YUFFN0M7Ozs7cUJBS0UsS0FBSzt1QkFJTCxLQUFLOzhCQUlMLEtBQUs7eUJBSUwsS0FBSztnQ0FJTCxLQUFLO21DQUlMLEtBQUs7a0NBSUwsS0FBSzt1Q0FJTCxLQUFLO3dDQUlMLEtBQUs7dUNBSUwsS0FBSzsyQkFJTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBUZW1wbGF0ZVJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5neFRpbWVsaW5lRXZlbnQsXG4gIE5neFRpbWVsaW5lSXRlbSxcbiAgTmd4VGltZWxpbmVJdGVtUG9zaXRpb24sXG4gIE5neFRpbWVsaW5lUGVyaW9kSW5mbyxcbiAgTmd4RGF0ZUZvcm1hdCxcbiAgTmd4VGltZWxpbmVFdmVudEdyb3VwLFxuICBOZ3hUaW1lbGluZUV2ZW50Q2hhbmdlU2lkZUluR3JvdXAsXG4gIHBlcmlvZEtleURhdGVGb3JtYXQsXG4gIGZpZWxkc1RvQ2hlY2tFdmVudENoYW5nZVNpZGVJbkdyb3VwLFxuICBmaWVsZHNUb0FkZEV2ZW50R3JvdXAgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC10aW1lbGluZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdGltZWxpbmUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hUaW1lbGluZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZXZlbnRzIHRvIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgZXZlbnRzOiBOZ3hUaW1lbGluZUV2ZW50W107XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBjb2RlIHVzZWQgdG8gc2hvdyB0aGUgZGF0ZSBmb3JtYXR0ZWRcbiAgICovXG4gIEBJbnB1dCgpIGxhbmdDb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogQm9vbGVhbiB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBhbmltYXRpb25zXG4gICAqL1xuICBASW5wdXQoKSBlbmFibGVBbmltYXRpb24gPSB0cnVlO1xuICAvKipcbiAgICogTG9naWMgdG8gYmUgYXBwbGllZCBpbiBvcmRlciB0byBncm91cCBldmVudHNcbiAgICovXG4gIEBJbnB1dCgpIGdyb3VwRXZlbnQ/OiBOZ3hUaW1lbGluZUV2ZW50R3JvdXAgPSBOZ3hUaW1lbGluZUV2ZW50R3JvdXAuTU9OVEhfWUVBUjtcbiAgLyoqXG4gICAqIExvZ2ljIHRvIGJlIGFwcGxpZWQgaW4gb3JkZXIgdG8gcHV0IGV2ZXRucyBvbiBMRUZUIG9yIFJJR0hUXG4gICAqL1xuICBASW5wdXQoKSBjaGFuZ2VTaWRlSW5Hcm91cD86IE5neFRpbWVsaW5lRXZlbnRDaGFuZ2VTaWRlSW5Hcm91cCA9IE5neFRpbWVsaW5lRXZlbnRDaGFuZ2VTaWRlSW5Hcm91cC5PTl9ESUZGRVJFTlRfREFZO1xuICAvKipcbiAgICogQ3VzdG9tIFRlbXBsYXRlIGRpc3BsYXllZCBiZWZvcmUgYSBncm91cCBvZiBldmVudHNcbiAgICovXG4gIEBJbnB1dCgpIHBlcmlvZEN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogQ3VzdG9tIFRlbXBsYXRlIGRpc3BsYXllZCB0byBzaG93IGEgc2luZ2xlIGV2ZW50XG4gICAqL1xuICBASW5wdXQoKSBldmVudEN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogQ3VzdG9tIFRlbXBsYXRlIGRpc3BsYXllZCB0byBzaG93IGFuIHNlcGFyYXRvciBpY29uXG4gICAqL1xuICBASW5wdXQoKSBjZW50ZXJJY29uQ3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBDdXN0b20gVGVtcGxhdGUgZGlzcGxheWVkIHRvIHNob3cgdGhlIHNpZGUgZGF0ZVxuICAgKi9cbiAgQElucHV0KCkgZGF0ZUluc3RhbnRDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIEN1c3RvbSBUZW1wbGF0ZSBkaXNwbGF5ZWQgdG8gc2hvdyB0aGUgaW5uZXIgZXZlbnRcbiAgICovXG4gIEBJbnB1dCgpIGlubmVyRXZlbnRDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIE91dHB1dCBjbGljayBldmVudCBlbWl0dGVyXG4gICAqL1xuICBAT3V0cHV0KClcbiAgY2xpY2tFbWl0dGVyOiBCZWhhdmlvclN1YmplY3Q8Tmd4VGltZWxpbmVJdGVtPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgZ3JvdXBzOiB7IFtrZXk6IHN0cmluZ106IE5neFRpbWVsaW5lRXZlbnRbXSB9ID0ge307XG4gIHBlcmlvZHM6IE5neFRpbWVsaW5lSXRlbVtdID0gW107XG4gIGl0ZW1zOiBOZ3hUaW1lbGluZUl0ZW1bXSA9IFtdO1xuICBuZ3hUaW1lbGluZUl0ZW1Qb3NpdGlvbiA9IE5neFRpbWVsaW5lSXRlbVBvc2l0aW9uO1xuICBuZ3hEYXRlRm9ybWF0ID0gTmd4RGF0ZUZvcm1hdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlcGFyYXRvciA9ICcvJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyb3VwRXZlbnRzKHRoaXMuZXZlbnRzKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmdyb3VwRXZlbnRzKHRoaXMuZXZlbnRzKTtcbiAgfVxuXG4gIGdldFBlcmlvZEtleURhdGVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGVyaW9kS2V5RGF0ZUZvcm1hdFt0aGlzLmdyb3VwRXZlbnRdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JvdXBzID0ge307XG4gICAgdGhpcy5wZXJpb2RzID0gW107XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdyb3VwRXZlbnRzKGV2ZW50czogTmd4VGltZWxpbmVFdmVudFtdKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgdGhpcy5zb3J0RXZlbnRzKGV2ZW50cyk7XG4gICAgICB0aGlzLnNldEdyb3VwcyhldmVudHMpO1xuICAgICAgdGhpcy5zZXRQZXJpb2RzKCk7XG4gICAgICB0aGlzLnNldEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNvcnRFdmVudHMoZXZlbnRzOiBOZ3hUaW1lbGluZUV2ZW50W10pOiB2b2lkIHtcbiAgICBldmVudHMuc29ydCgoYSwgYikgPT4gYS50aW1lc3RhbXAuZ2V0VGltZSgpIC0gYi50aW1lc3RhbXAuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRHcm91cHMoZXZlbnRzOiBOZ3hUaW1lbGluZUV2ZW50W10pOiB2b2lkIHtcbiAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgIC8vIGNvbnZlcnNpb24gZnJvbSBzdHJpbmcgdG8gYWN0dWFsIERhdGVcbiAgICAgIGV2ZW50LnRpbWVzdGFtcCA9IG5ldyBEYXRlKGV2ZW50LnRpbWVzdGFtcCk7XG4gICAgICBjb25zdCBwZXJpb2RLZXkgPSB0aGlzLmdldFBlcmlvZEtleUZyb21FdmVudChldmVudCk7XG4gICAgICBpZiAoIXRoaXMuZ3JvdXBzW3BlcmlvZEtleV0pIHtcbiAgICAgICAgdGhpcy5ncm91cHNbcGVyaW9kS2V5XSA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5ncm91cHNbcGVyaW9kS2V5XS5wdXNoKGV2ZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLnBlcmlvZHMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgLy8gaW5zZXJ0IGZpcnN0IHRoZSBwZXJpb2RcbiAgICAgIHRoaXMuaXRlbXMucHVzaChwKTtcbiAgICAgIC8vIGluIGVhY2ggcGVyaW9kIHB1dHRpbmcgaXRlbXMgb24gbGVmdFxuICAgICAgY29uc3Qgb25MZWZ0ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBlcmlvZEluZm8gPSBwLnBlcmlvZEluZm87XG4gICAgICAvLyBpbnNlcnQgdGhlbiBhbGwgdGhlIGV2ZW50cyBpbiB0aGlzIHBlcmlvZFxuICAgICAgdGhpcy5hZGRQZXJpb2RFdmVudHMocGVyaW9kSW5mbywgb25MZWZ0KTtcbiAgICAgIC8vIG9uTGVmdCA9IHRoaXMuYWRkRXZlbnRJdGVtc0FuZEdldElmT25MZWZ0KHBlcmlvZEluZm8sIG9uTGVmdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkUGVyaW9kRXZlbnRzKHBlcmlvZEluZm86IE5neFRpbWVsaW5lUGVyaW9kSW5mbywgb25MZWZ0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5ncm91cHNbcGVyaW9kSW5mby5wZXJpb2RLZXldLmZvckVhY2goKGV2ZW50LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcHJldkV2ZW50ID0gdGhpcy5ncm91cHNbcGVyaW9kSW5mby5wZXJpb2RLZXldW2luZGV4IC0gMV07XG4gICAgICBpZiAoaW5kZXggPiAwICYmIHRoaXMuY29tcGFyZUV2ZW50cyhwcmV2RXZlbnQsIGV2ZW50KSkge1xuICAgICAgICBvbkxlZnQgPSAhb25MZWZ0O1xuICAgICAgfVxuICAgICAgdGhpcy5wdXNoRXZlbnRPbkl0ZW1zKGV2ZW50LCBvbkxlZnQpO1xuICAgIH0pO1xuICAgIC8vIHJldHVybiBvbkxlZnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHVzaEV2ZW50T25JdGVtcyhldmVudDogTmd4VGltZWxpbmVFdmVudCwgb25MZWZ0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcy5wdXNoKHtcbiAgICAgIGV2ZW50SW5mbzogeyAuLi5ldmVudCB9LCBwb3NpdGlvbjogb25MZWZ0ID9cbiAgICAgICAgdGhpcy5uZ3hUaW1lbGluZUl0ZW1Qb3NpdGlvbi5PTl9MRUZUIDogdGhpcy5uZ3hUaW1lbGluZUl0ZW1Qb3NpdGlvbi5PTl9SSUdIVFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdGhlIGV2ZW50cyBpbnNpZGUgdGhlIHNhbWUgZ3JvdXBcbiAgICovXG4gIHByb3RlY3RlZCBjb21wYXJlRXZlbnRzKHByZXZFdmVudDogTmd4VGltZWxpbmVFdmVudCwgZXZlbnQ6IE5neFRpbWVsaW5lRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VTaWRlSW5Hcm91cCA9PT0gTmd4VGltZWxpbmVFdmVudENoYW5nZVNpZGVJbkdyb3VwLkFMTCB8fFxuICAgICAgdGhpcy5jb21wYXJlRXZlbnRzRmllbGQocHJldkV2ZW50LCBldmVudCwgLi4uZmllbGRzVG9DaGVja0V2ZW50Q2hhbmdlU2lkZUluR3JvdXBbdGhpcy5jaGFuZ2VTaWRlSW5Hcm91cF0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXBhcmVFdmVudHNGaWVsZChwcmV2RXZlbnQ6IE5neFRpbWVsaW5lRXZlbnQsIGV2ZW50OiBOZ3hUaW1lbGluZUV2ZW50LCAuLi5maWVsZHM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoKHJlcywgZmllbGQpID0+IHJlcyA9IHJlcyB8fCBwcmV2RXZlbnQudGltZXN0YW1wW2ZpZWxkXSgpICE9PSBldmVudC50aW1lc3RhbXBbZmllbGRdKCksICEhZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFBlcmlvZHMoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJpb2RzID0gT2JqZWN0LmtleXModGhpcy5ncm91cHMpLm1hcCgocGVyaW9kS2V5KSA9PiB7XG4gICAgICBjb25zdCBzcGxpdCA9IHBlcmlvZEtleS5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQZXJpb2RJbmZvKHNwbGl0LCBwZXJpb2RLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQZXJpb2RJbmZvKHNwbGl0OiBzdHJpbmdbXSwgcGVyaW9kS2V5OiBzdHJpbmcpOiB7IHBlcmlvZEluZm86IE5neFRpbWVsaW5lUGVyaW9kSW5mbyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyaW9kSW5mbzoge1xuICAgICAgICB5ZWFyOiBOdW1iZXIoc3BsaXRbMF0pLFxuICAgICAgICBtb250aDogTnVtYmVyKHNwbGl0WzFdKSxcbiAgICAgICAgZGF5OiBOdW1iZXIoc3BsaXRbMl0pLFxuICAgICAgICBwZXJpb2RLZXksXG4gICAgICAgIGZpcnN0RGF0ZTogdGhpcy5ncm91cHNbcGVyaW9kS2V5XVswXS50aW1lc3RhbXAgYXMgRGF0ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQZXJpb2RLZXlGcm9tRXZlbnQoZXZlbnQ6IE5neFRpbWVsaW5lRXZlbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZHNUb0FkZEV2ZW50R3JvdXBbdGhpcy5ncm91cEV2ZW50XS5tYXAoZmllbGQgPT4gZXZlbnQudGltZXN0YW1wW2ZpZWxkXSgpKS5qb2luKHRoaXMuc2VwYXJhdG9yKTtcbiAgfVxufVxuIl19
|