@acorex/core 4.0.24 → 4.1.2

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.
Files changed (128) hide show
  1. package/README.md +2 -23
  2. package/acorex-core.d.ts +1 -0
  3. package/{esm2015/acorex-core.js → esm2020/acorex-core.mjs} +1 -1
  4. package/esm2020/lib/classes/base-page.class.mjs +28 -0
  5. package/esm2020/lib/classes/color.class.mjs +49 -0
  6. package/esm2020/lib/classes/datetime.class.mjs +314 -0
  7. package/esm2020/lib/classes/menu.class.mjs +27 -0
  8. package/esm2020/lib/classes/navigator.class.mjs +2 -0
  9. package/esm2020/lib/classes/popup.class.mjs +2 -0
  10. package/esm2020/lib/classes/promise.class.mjs +19 -0
  11. package/esm2020/lib/classes/sectionlist.class.mjs +2 -0
  12. package/esm2020/lib/classes/select.class.mjs +3 -0
  13. package/esm2020/lib/core.module.mjs +27 -0
  14. package/esm2020/lib/error/error.class.mjs +2 -0
  15. package/esm2020/lib/error/error.module.mjs +19 -0
  16. package/esm2020/lib/error/error.service.mjs +21 -0
  17. package/esm2020/lib/events/keyboard.mjs +2 -0
  18. package/esm2020/lib/http/http-error.class.mjs +2 -0
  19. package/esm2020/lib/http/http-events.interceptor.mjs +3 -0
  20. package/esm2020/lib/http/http-request.class.mjs +2 -0
  21. package/esm2020/lib/http/http-result.class.mjs +21 -0
  22. package/esm2020/lib/http/http.module.mjs +37 -0
  23. package/esm2020/lib/http/http.service.mjs +145 -0
  24. package/esm2020/lib/locale/en.json +253 -0
  25. package/esm2020/lib/locale/fa.json +242 -0
  26. package/esm2020/lib/pipe/datetime.pipe.mjs +25 -0
  27. package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -0
  28. package/esm2020/lib/services/config.mjs +29 -0
  29. package/esm2020/lib/services/event.service.mjs +36 -0
  30. package/esm2020/lib/services/navigator.service.mjs +10 -0
  31. package/esm2020/lib/services/storage.service.mjs +16 -0
  32. package/esm2020/lib/translator/translator.mjs +26 -0
  33. package/esm2020/lib/translator/translator.module.mjs +25 -0
  34. package/esm2020/lib/translator/translator.pipe.mjs +24 -0
  35. package/esm2020/lib/translator/translator.service.mjs +21 -0
  36. package/esm2020/lib/utils/array/array-util.mjs +133 -0
  37. package/esm2020/lib/utils/html/html-util.mjs +192 -0
  38. package/esm2020/lib/utils/html/html.module.mjs +19 -0
  39. package/esm2020/lib/utils/math/math-util.mjs +6 -0
  40. package/esm2020/lib/utils/object/object-util.mjs +83 -0
  41. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +21 -0
  42. package/esm2020/lib/utils/render/render.service.mjs +103 -0
  43. package/esm2020/lib/utils/render/rendering.module.mjs +35 -0
  44. package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -0
  45. package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -0
  46. package/esm2020/lib/utils/separator/separator.module.mjs +19 -0
  47. package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -0
  48. package/esm2020/public-api.mjs +43 -0
  49. package/fesm2015/acorex-core.mjs +2123 -0
  50. package/fesm2015/acorex-core.mjs.map +1 -0
  51. package/fesm2020/acorex-core.mjs +2119 -0
  52. package/fesm2020/acorex-core.mjs.map +1 -0
  53. package/lib/classes/base-page.class.d.ts +13 -0
  54. package/lib/classes/color.class.d.ts +17 -0
  55. package/lib/classes/datetime.class.d.ts +63 -0
  56. package/lib/classes/menu.class.d.ts +34 -0
  57. package/lib/classes/navigator.class.d.ts +5 -0
  58. package/lib/classes/popup.class.d.ts +12 -0
  59. package/lib/classes/promise.class.d.ts +7 -0
  60. package/lib/classes/sectionlist.class.d.ts +8 -0
  61. package/lib/classes/select.class.d.ts +7 -0
  62. package/lib/core.module.d.ts +9 -0
  63. package/lib/error/error.class.d.ts +4 -0
  64. package/lib/error/error.module.d.ts +7 -0
  65. package/lib/error/error.service.d.ts +13 -0
  66. package/lib/events/keyboard.d.ts +2 -0
  67. package/lib/http/http-error.class.d.ts +7 -0
  68. package/lib/http/http-events.interceptor.d.ts +10 -0
  69. package/lib/http/http-request.class.d.ts +14 -0
  70. package/lib/http/http-result.class.d.ts +11 -0
  71. package/lib/http/http.module.d.ts +10 -0
  72. package/lib/http/http.service.d.ts +23 -0
  73. package/lib/pipe/datetime.pipe.d.ts +8 -0
  74. package/lib/pipe/htmlToText.pipe.d.ts +7 -0
  75. package/lib/{config/configs.d.ts → services/config.d.ts} +1 -1
  76. package/lib/services/event.service.d.ts +9 -0
  77. package/lib/services/navigator.service.d.ts +8 -0
  78. package/lib/services/storage.service.d.ts +7 -0
  79. package/lib/{translation → translator}/translator.d.ts +0 -0
  80. package/lib/translator/translator.module.d.ts +8 -0
  81. package/lib/translator/translator.pipe.d.ts +8 -0
  82. package/lib/translator/translator.service.d.ts +8 -0
  83. package/lib/utils/array/array-util.d.ts +6 -0
  84. package/lib/utils/html/html-util.d.ts +62 -0
  85. package/lib/utils/html/html.module.d.ts +8 -0
  86. package/lib/utils/math/math-util.d.ts +3 -0
  87. package/lib/utils/object/object-util.d.ts +7 -0
  88. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -0
  89. package/lib/utils/render/render.service.d.ts +18 -0
  90. package/lib/utils/render/rendering.module.d.ts +8 -0
  91. package/lib/utils/scroll/scroll.directive.d.ts +18 -0
  92. package/lib/utils/scroll/scroll.module.d.ts +8 -0
  93. package/lib/utils/separator/separator.module.d.ts +8 -0
  94. package/lib/utils/separator/separator.pipe.d.ts +8 -0
  95. package/package.json +24 -12
  96. package/public-api.d.ts +42 -5
  97. package/acorex-core.metadata.json +0 -1
  98. package/bundles/acorex-core.umd.js +0 -831
  99. package/bundles/acorex-core.umd.js.map +0 -1
  100. package/bundles/acorex-core.umd.min.js +0 -2
  101. package/bundles/acorex-core.umd.min.js.map +0 -1
  102. package/esm2015/lib/config/configs.js +0 -29
  103. package/esm2015/lib/dateTime/datetime.class.js +0 -226
  104. package/esm2015/lib/dateTime/datetime.module.js +0 -13
  105. package/esm2015/lib/dateTime/datetime.pipe.js +0 -22
  106. package/esm2015/lib/dateTime/georgian.calendar.js +0 -145
  107. package/esm2015/lib/dateTime/index.js +0 -5
  108. package/esm2015/lib/platform/index.js +0 -2
  109. package/esm2015/lib/platform/platform.service.js +0 -127
  110. package/esm2015/lib/translation/index.js +0 -4
  111. package/esm2015/lib/translation/translation.module.js +0 -13
  112. package/esm2015/lib/translation/translator.js +0 -26
  113. package/esm2015/lib/translation/translator.pipe.js +0 -11
  114. package/esm2015/lib/utils/object-util.js +0 -83
  115. package/esm2015/public-api.js +0 -6
  116. package/fesm2015/acorex-core.js +0 -686
  117. package/fesm2015/acorex-core.js.map +0 -1
  118. package/lib/dateTime/datetime.class.d.ts +0 -83
  119. package/lib/dateTime/datetime.module.d.ts +0 -2
  120. package/lib/dateTime/datetime.pipe.d.ts +0 -5
  121. package/lib/dateTime/georgian.calendar.d.ts +0 -17
  122. package/lib/dateTime/index.d.ts +0 -4
  123. package/lib/platform/index.d.ts +0 -1
  124. package/lib/platform/platform.service.d.ts +0 -17
  125. package/lib/translation/index.d.ts +0 -3
  126. package/lib/translation/translation.module.d.ts +0 -2
  127. package/lib/translation/translator.pipe.d.ts +0 -4
  128. package/lib/utils/object-util.d.ts +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-core.umd.js","sources":["../../projects/acorex/core/src/lib/utils/object-util.ts","../../projects/acorex/core/src/lib/config/configs.ts","../../projects/acorex/core/src/lib/dateTime/datetime.class.ts","../../projects/acorex/core/src/lib/dateTime/datetime.pipe.ts","../../projects/acorex/core/src/lib/dateTime/datetime.module.ts","../../projects/acorex/core/src/lib/dateTime/georgian.calendar.ts","../../projects/acorex/core/src/lib/translation/translator.ts","../../projects/acorex/core/src/lib/translation/translator.pipe.ts","../../projects/acorex/core/src/lib/translation/translation.module.ts","../../projects/acorex/core/src/lib/platform/platform.service.ts","../../../../projects/acorex/core/src/acorex-core.ts"],"sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n static fetchProp(obj, prop: string) {\r\n if (typeof obj === 'undefined') {\r\n return false;\r\n }\r\n const index = prop.indexOf('.');\r\n\r\n if (index > -1) {\r\n return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n }\r\n\r\n return obj[prop];\r\n }\r\n\r\n static getPropByPath(obj, path, defaultVal?) {\r\n path = path\r\n .replace(/\\[/g, '.')\r\n .replace(/]/g, '')\r\n .split('.');\r\n\r\n path.forEach((level) => {\r\n if (obj) {\r\n obj = obj[level];\r\n }\r\n });\r\n\r\n if (obj === undefined) {\r\n return defaultVal;\r\n }\r\n return obj;\r\n }\r\n\r\n static setPropByPath(obj, path, value) {\r\n if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // If not yet an array, get the keys from the string-path\r\n if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // Yes: then follow that path\r\n ? a[c]\r\n // No: create the key. Is the next key a potential array-index?\r\n : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n ? [] // Yes: assign a new array object\r\n : {}, // No: assign a new plain object\r\n obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n return obj; // Return the top-level object to allow chaining\r\n }\r\n}","import { Subject, Observable } from 'rxjs';\r\nimport { AXObjectUtil } from '../utils/object-util';\r\n\r\n// @dynamic\r\nexport class AXConfig {\r\n private static dataModel: any = {};\r\n private static dataChangeSubject = new Subject<any>();\r\n\r\n\r\n static get onChange(): Observable<any> {\r\n return AXConfig.dataChangeSubject.asObservable();\r\n }\r\n\r\n static set(config: any): any;\r\n static set(path: string, value?: any): void;\r\n static set(arg1?: any, arg2?: any) {\r\n\r\n if (arg1 && typeof arg1 == 'string') {\r\n AXObjectUtil.setPropByPath(AXConfig.dataModel, arg1, arg2);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n return;\r\n }\r\n if (arg1 && typeof arg1 == 'object') {\r\n Object.assign(AXConfig.dataModel, arg1);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n return;\r\n }\r\n if (!arg1 && !arg2) {\r\n return AXConfig.dataChangeSubject.asObservable();\r\n }\r\n }\r\n\r\n static get(path: string, defaultValue?: any): any {\r\n return AXObjectUtil.getPropByPath(AXConfig.dataModel, path) || defaultValue;\r\n }\r\n}","import { AXConfig } from '../config/configs';\r\n\r\n\r\nexport const AX_CALENDARS: any[] = [\r\n {\r\n name: 'gregorian',\r\n type: 'GeorgianCalendar'\r\n },\r\n {\r\n name: 'jalali',\r\n type: 'JalaliCalendar'\r\n }\r\n];\r\nexport type TimeUnit =\r\n | 'second'\r\n | 'minute'\r\n | 'hour'\r\n | 'day'\r\n | 'month'\r\n | 'year'\r\n | 'week';\r\n\r\nexport interface AXCalendar {\r\n monthNames: string[];\r\n\r\n monthShortNames: string[];\r\n\r\n dayNames: string[];\r\n\r\n dayShortNames: string[];\r\n\r\n name(): string;\r\n\r\n dayInMonth(date: Date): number;\r\n\r\n dayOfYear(date: Date): number;\r\n\r\n dayInWeek(date: Date): number;\r\n\r\n year(date: Date): number;\r\n\r\n monthOfYear(date: Date): number;\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime;\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime;\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime;\r\n}\r\n\r\n// @dynamic\r\nexport class AXDateTime {\r\n static convert(\r\n value: any,\r\n calendar: string = AXConfig.get('dateTime.type') || 'gregorian'\r\n ): AXDateTime {\r\n let date: AXDateTime;\r\n if (typeof value === 'string' || value instanceof String) {\r\n date = new AXDateTime(value as string, calendar);\r\n } else if (value instanceof Date) {\r\n date = new AXDateTime(value as Date, calendar);\r\n } else if (value instanceof AXDateTime) {\r\n date = new AXDateTime(value.date, calendar);\r\n }\r\n return date;\r\n }\r\n\r\n private _date: Date;\r\n get date(): Date {\r\n return this._date;\r\n }\r\n\r\n private _calendar: AXCalendar;\r\n get calendar(): AXCalendar {\r\n return this._calendar;\r\n }\r\n\r\n constructor(\r\n value: Date | string = new Date(),\r\n calendar: string | AXCalendar = AXConfig.get('dateTime.type') || 'gregorian'\r\n ) {\r\n this._calendar =\r\n typeof calendar == 'string'\r\n ? eval(`new ${AX_CALENDARS.find((c) => c.name == calendar).type}()`)\r\n : calendar;\r\n if (value instanceof Date) {\r\n this._date = value as Date;\r\n } else {\r\n this._date = new Date(value);\r\n }\r\n }\r\n\r\n clone(): AXDateTime {\r\n return new AXDateTime(this.date, this.calendar.name());\r\n }\r\n\r\n get dayInMonth(): number {\r\n return this._calendar.dayInMonth(this.date);\r\n }\r\n\r\n get dayOfYear(): number {\r\n return this._calendar.dayOfYear(this.date);\r\n }\r\n\r\n get dayInWeek(): number {\r\n return this._calendar.dayInWeek(this.date);\r\n }\r\n\r\n get hour(): number {\r\n return this._date.getHours();\r\n }\r\n\r\n get minute(): number {\r\n return this._date.getMinutes();\r\n }\r\n\r\n get second(): number {\r\n return this._date.getSeconds();\r\n }\r\n\r\n get year(): number {\r\n return this._calendar.year(this.date);\r\n }\r\n\r\n get monthOfYear(): number {\r\n return this._calendar.monthOfYear(this.date);\r\n }\r\n\r\n get month(): AXCalendarMonth {\r\n return new AXCalendarMonth(this);\r\n }\r\n\r\n add(unit: TimeUnit, amount: number): AXDateTime {\r\n return this._calendar.add(this.date, unit, amount);\r\n }\r\n\r\n set(unit: TimeUnit = 'day', value: number): AXDateTime {\r\n return this._calendar.set(this.date, unit, value);\r\n }\r\n\r\n duration(\r\n end: AXDateTime | Date | string,\r\n unit: TimeUnit = 'day'\r\n ): AXTimeSpan {\r\n const range = new AXDateTimeRange(\r\n this,\r\n AXDateTime.convert(end, this.calendar.name())\r\n );\r\n return range.duration();\r\n }\r\n\r\n startOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.startOf(this.date, unit);\r\n }\r\n\r\n endOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.endOf(this.date, unit);\r\n }\r\n\r\n format(\r\n format: string = AXConfig.get('dateTime.shortDateFormat') ||\r\n 'DDD, dd MMM yyyy'\r\n ): string {\r\n format = format.replace('ss', this.pad(this.date.getSeconds(), 2));\r\n format = format.replace('s', this.date.getSeconds().toString());\r\n format = format.replace(\r\n 'dd',\r\n this.pad(this.calendar.dayInMonth(this.date), 2)\r\n );\r\n format = format.replace(\r\n 'd',\r\n this.calendar.dayInMonth(this.date).toString()\r\n );\r\n format = format.replace('mm', this.pad(this.date.getMinutes(), 2));\r\n format = format.replace('m', this.date.getMinutes().toString());\r\n format = format.replace(\r\n 'MMMM',\r\n this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1]\r\n );\r\n format = format.replace(\r\n 'MMM',\r\n this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1]\r\n );\r\n format = format.replace(\r\n 'MM',\r\n this.pad(this.calendar.monthOfYear(this.date), 2)\r\n );\r\n format = format.replace(\r\n /M(?![ao])/,\r\n this.calendar.monthOfYear(this.date).toString()\r\n );\r\n format = format.replace(\r\n 'DDDD',\r\n this.calendar.dayNames[this.calendar.dayInWeek(this.date) - 1]\r\n );\r\n format = format.replace(\r\n 'DDD',\r\n this.calendar.dayShortNames[this.calendar.dayInWeek(this.date) - 1]\r\n );\r\n format = format.replace(\r\n /D(?!e)/,\r\n this.calendar.dayNames[this.calendar.dayInWeek(this.date) - 1].substring(\r\n 0,\r\n 3\r\n )\r\n );\r\n format = format.replace('yyyy', this.calendar.year(this.date).toString());\r\n format = format.replace('YYYY', this.calendar.year(this.date).toString());\r\n format = format.replace(\r\n 'yy',\r\n this.calendar.year(this.date).toString().substring(2)\r\n );\r\n format = format.replace(\r\n 'YY',\r\n this.calendar.year(this.date).toString().substring(2)\r\n );\r\n format = format.replace('HH', this.pad(this.date.getHours(), 2));\r\n format = format.replace('H', this.date.getHours().toString());\r\n return format;\r\n }\r\n\r\n private pad(n, width, z = '0') {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n toString(): string {\r\n return this.format();\r\n }\r\n\r\n equal(value: any, unit: TimeUnit = 'day') {\r\n return this.compaire(value, unit) == 0;\r\n }\r\n\r\n compaire(value: any, unit: TimeUnit = 'day') {\r\n // TODO:\r\n const val = AXDateTime.convert(value);\r\n if (this.date == val.date) {\r\n return 0;\r\n } else if (this.date > val.date) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n\r\n convert(calendar: string) {\r\n return AXDateTime.convert(this, calendar);\r\n }\r\n}\r\n\r\nexport class AXCalendarMonth {\r\n private _range: AXDateTimeRange;\r\n public get range(): AXDateTimeRange {\r\n return this._range;\r\n }\r\n public set range(v: AXDateTimeRange) {\r\n this._range = v;\r\n }\r\n\r\n constructor(date: AXDateTime) {\r\n this.index = date.date.getMonth();\r\n this.name = date.format('MMMM');\r\n this.range = new AXDateTimeRange(\r\n new AXDateTime(date.startOf('month').date, date.calendar),\r\n new AXDateTime(date.endOf('month').date, date.calendar)\r\n );\r\n }\r\n\r\n private readonly index: number;\r\n private readonly name: string;\r\n}\r\n\r\nexport interface AXTimeSpanTotal {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n weeks: number;\r\n months: number;\r\n years: number;\r\n}\r\n\r\nexport interface AXTimeSpan {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n months: number;\r\n years: number;\r\n total: AXTimeSpanTotal;\r\n}\r\n\r\nexport class AXDateTimeRange {\r\n constructor(public startTime: AXDateTime, public endTime: AXDateTime) {}\r\n\r\n duration(): AXTimeSpan {\r\n const result: AXTimeSpan = {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n months: 0,\r\n years: 0,\r\n total: {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n weeks: 0,\r\n months: 0,\r\n years: 0,\r\n },\r\n };\r\n\r\n const one_second = 1000;\r\n const one_min = one_second * 60;\r\n const one_hour = one_min * 60;\r\n const one_day = one_hour * 24;\r\n const one_week = one_day * 7;\r\n const one_year = 365.25 * one_day;\r\n const one_month = one_year / 12;\r\n const startTime = this.startTime.date.getTime();\r\n const endTime = this.endTime.date.getTime();\r\n const diff = Math.abs(endTime - startTime);\r\n //\r\n result.total.miliseconds = diff;\r\n result.total.seconds = Number((diff / one_second).toFixed(2));\r\n result.total.minutes = Number((diff / one_min).toFixed(2));\r\n result.total.hours = Number((diff / one_hour).toFixed(2));\r\n result.total.days = Number((diff / one_day).toFixed(2));\r\n result.total.weeks = Number((diff / one_week).toFixed(2));\r\n //\r\n // let months = (this.endTime.year - this.startTime.year) * 12;\r\n // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;\r\n // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {\r\n // months--;\r\n // }\r\n // result.total.months = Math.abs(months);\r\n // TODO: review\r\n result.total.months = Number((diff / one_month).toFixed(2));\r\n result.total.years = Number((diff / one_year).toFixed(2));\r\n //\r\n result.miliseconds = result.total.miliseconds % 1000;\r\n result.seconds = Number((result.total.seconds % 60).toFixed(0));\r\n result.minutes = Number((result.total.minutes % 60).toFixed(0));\r\n result.hours = Number((result.total.hours % 24).toFixed(0));\r\n // TODO: review\r\n result.days = Number((result.total.days % 30.4).toFixed(0));\r\n result.months = Number((result.total.months % 12).toFixed(0));\r\n result.years = Number(result.total.years.toFixed(0));\r\n return result;\r\n }\r\n\r\n enumurate(unit: TimeUnit = 'day'): AXDateTime[] {\r\n // TODO: ??\r\n return [];\r\n }\r\n\r\n includes(value: AXDateTime, unit: TimeUnit = 'day'): boolean {\r\n // TODO: ??\r\n return true;\r\n }\r\n\r\n // getViewCompaire(view) {\r\n // switch (view) {\r\n // case 'day':\r\n // return 'YMD';\r\n // case 'month':\r\n // return 'YM';\r\n // case 'year':\r\n // return 'Y';\r\n // }\r\n // }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { AXDateTime } from './datetime.class';\r\n\r\n@Pipe({ name: 'axDate' })\r\nexport class AXDateTimePipe implements PipeTransform {\r\n constructor() { }\r\n\r\n transform(value: any, format?: string, calendar?: string): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n const date: AXDateTime = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);\r\n if (!format) {\r\n return date.toString();\r\n }\r\n else {\r\n return date.format(format);\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXDateTimePipe } from './datetime.pipe';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXDateTimePipe],\r\n declarations: [AXDateTimePipe],\r\n providers: [],\r\n})\r\nexport class AXDateTimeModule { }\r\n","import { AXCalendar, AXDateTime, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class GeorgianCalendar implements AXCalendar {\r\n\r\n monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n\r\n monthShortNames = [\r\n \"Jan\", \"Feb\", \"Mar\",\r\n \"Apr\", \"May\", \"Jun\", \"Jul\",\r\n \"Aug\", \"Sep\", \"Oct\",\r\n \"Nov\", \"Dec\"\r\n ];\r\n\r\n dayNames = [\r\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n \"Thursday\", \"Friday\", \"Saturday\"\r\n ];\r\n\r\n dayShortNames = [\r\n \"Sun\", \"Mon\", \"Tue\", \"Wed\",\r\n \"Thu\", \"Fri\", \"Sat\"\r\n ];\r\n\r\n name(): string {\r\n return 'gregorian'\r\n }\r\n\r\n dayInMonth(date: Date): number {\r\n return date.getDate();\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n const start = +new Date(date.getFullYear(), 0, 0);\r\n const diff = +date - start;\r\n const oneDay = 1000 * 60 * 60 * 24;\r\n return Math.floor(diff / oneDay);\r\n }\r\n\r\n dayInWeek(date: Date): number {\r\n return date.getDay() + 1;\r\n }\r\n\r\n year(date: Date): number {\r\n return date.getFullYear();\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return date.getMonth() + 1;\r\n }\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n const v = new Date(value);\r\n var mo = date.getMonth();\r\n var yr = date.getFullYear();\r\n mo = (mo + amount) % 12;\r\n if (0 > mo) {\r\n yr += (date.getMonth() + amount - mo - 12) / 12;\r\n mo += 12;\r\n }\r\n else\r\n yr += ((date.getMonth() + amount - mo) / 12);\r\n v.setMonth(mo);\r\n v.setFullYear(yr);\r\n value = v.valueOf();\r\n break\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n const yv = new Date(value);\r\n yv.setFullYear(yv.getFullYear() + amount);\r\n value = v.valueOf();\r\n break\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n const diff = clone.getDate() - clone.getDay() + (clone.getDay() === 0 ? -6 : 1);\r\n clone.setDate(diff)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"month\":\r\n clone.setDate(1)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"year\":\r\n clone.setMonth(0);\r\n clone.setDate(1);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n case 'month':\r\n return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');\r\n case \"year\":\r\n clone.setMonth(11);\r\n return new AXDateTime(clone, this.name()).endOf('month');\r\n }\r\n }\r\n}","import { Subject, Observable } from 'rxjs';\r\nimport merge from 'lodash-es/merge';\r\nimport { AXObjectUtil } from '../utils/object-util';\r\n\r\n// @dynamic\r\nexport class AXTranslator {\r\n private static lang: string = 'en';\r\n private static dataChangeSubject = new Subject<any>();\r\n\r\n\r\n static get onChange(): Observable<any> {\r\n return AXTranslator.dataChangeSubject.asObservable();\r\n }\r\n\r\n public static load(lang: string, value: any) {\r\n if (typeof value === 'object') {\r\n if (!AXTranslator[`__data__${lang}`]) {\r\n AXTranslator[`__data__${lang}`] = {};\r\n }\r\n AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);\r\n }\r\n }\r\n\r\n public static use(lang: string) {\r\n AXTranslator.lang = lang;\r\n }\r\n\r\n public static get(key: string, lang?: string): string {\r\n return AXObjectUtil.getPropByPath(AXTranslator[`__data__${lang || AXTranslator.lang}`], key) || key;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AXTranslator } from './translator';\r\n\r\n@Pipe({ name: 'trans', pure: true })\r\nexport class AXTranslatorPipe implements PipeTransform {\r\n transform(value: string, lang?: string): string {\r\n return AXTranslator.get(value, lang);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTranslatorPipe } from './translator.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXTranslatorPipe],\r\n declarations: [AXTranslatorPipe],\r\n providers: [],\r\n})\r\nexport class AXTranslationModule {\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n\r\nexport type AXPlatforms = 'Android' | 'Desktop' | 'iOS' | 'Mobile';\r\nexport type AXBrowsers = 'Chrome' | 'Safari' | 'Edge' | 'Firefox' | 'Opera' | 'MSIE';\r\nexport type AXTechnologies = 'PWA' | 'Hybrid' | 'Electron';\r\n\r\n\r\n\r\n\r\nconst isChrome = (win: Window): boolean =>\r\n testUserAgent(win, /Chrome/i);\r\n\r\nconst isFirefox = (win: Window): boolean =>\r\n testUserAgent(win, /Firefox/i);\r\n\r\nconst isEdge = (win: Window): boolean =>\r\n testUserAgent(win, /Edge/i);\r\n\r\nconst isSafari = (win: Window): boolean =>\r\n testUserAgent(win, /Safari/i);\r\n\r\nconst isOpera = (win: Window): boolean =>\r\n testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\r\n\r\nconst isMSIE = (win: Window): boolean =>\r\n testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\r\n\r\n\r\nconst isMobileWeb = (win: Window): boolean =>\r\n isMobile(win) && !isHybrid(win);\r\n\r\nconst isIpad = (win: Window) => {\r\n // iOS 12 and below\r\n if (testUserAgent(win, /iPad/i)) {\r\n return true;\r\n }\r\n\r\n // iOS 13+\r\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst isIphone = (win: Window) =>\r\n testUserAgent(win, /iPhone/i);\r\n\r\nconst isIOS = (win: Window) =>\r\n testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\r\n\r\nconst isAndroid = (win: Window) =>\r\n testUserAgent(win, /android|sink/i);\r\n\r\nconst isAndroidTablet = (win: Window) => {\r\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\r\n};\r\n\r\nconst isPhablet = (win: Window) => {\r\n const width = win.innerWidth;\r\n const height = win.innerHeight;\r\n const smallest = Math.min(width, height);\r\n const largest = Math.max(width, height);\r\n\r\n return (smallest > 390 && smallest < 520) &&\r\n (largest > 620 && largest < 800);\r\n};\r\n\r\nconst isTablet = (win: Window) => {\r\n const width = win.innerWidth;\r\n const height = win.innerHeight;\r\n const smallest = Math.min(width, height);\r\n const largest = Math.max(width, height);\r\n\r\n return (\r\n isIpad(win) ||\r\n isAndroidTablet(win) ||\r\n (\r\n (smallest > 460 && smallest < 820) &&\r\n (largest > 780 && largest < 1400)\r\n )\r\n );\r\n};\r\n\r\nconst isMobile = (win: Window) =>\r\n matchMedia(win, '(any-pointer:coarse)');\r\n\r\nconst isDesktop = (win: Window) =>\r\n !isMobile(win);\r\n\r\nconst isHybrid = (win: Window) =>\r\n isCordova(win) || isCapacitorNative(win);\r\n\r\nconst isCordova = (win: any): boolean =>\r\n !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\r\n\r\nconst isCapacitorNative = (win: any): boolean => {\r\n const capacitor = win['Capacitor'];\r\n return !!(capacitor && capacitor.isNative);\r\n};\r\n\r\nconst isElectron = (win: Window): boolean =>\r\n testUserAgent(win, /electron/i);\r\n\r\nconst isPWA = (win: Window): boolean =>\r\n !!(win.matchMedia('(display-mode: standalone)').matches || (win.navigator as any).standalone);\r\n\r\nexport const testUserAgent = (win: Window, expr: RegExp) =>\r\n expr.test(win.navigator.userAgent);\r\n\r\nconst matchMedia = (win: Window, query: string): boolean =>\r\n win.matchMedia(query).matches;\r\n\r\n\r\nconst PLATFORMS_MAP = {\r\n 'Android': isAndroid,\r\n 'iOS': isIOS,\r\n 'Desktop': isDesktop,\r\n 'Mobile': isMobile,\r\n 'Chrome': isChrome,\r\n 'Firefox': isFirefox,\r\n 'Safari': isSafari,\r\n 'Edge': isEdge,\r\n 'Opera': isOpera,\r\n 'Hybrid': isHybrid,\r\n 'PWA': isPWA,\r\n 'Electron': isElectron,\r\n};\r\n\r\n\r\nexport class AXPlatformEvent {\r\n nativeEvent: UIEvent;\r\n source: AXPlatform\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'platform',\r\n})\r\nexport class AXPlatform {\r\n resize: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\r\n\r\n isRtl(): boolean {\r\n return document.dir == 'rtl' || document.body.dir == 'rtl' || document.body.style.direction == 'rtl';\r\n }\r\n\r\n\r\n isLandscape(): boolean {\r\n return window.innerHeight < window.innerWidth;\r\n }\r\n\r\n isPortrate(): boolean {\r\n return !this.isLandscape()\r\n }\r\n\r\n is(name: AXPlatforms | AXBrowsers | AXTechnologies): boolean {\r\n return PLATFORMS_MAP[name](window) || false;\r\n }\r\n\r\n constructor() {\r\n window.addEventListener('resize', (e) => {\r\n this.resize.next({\r\n nativeEvent: e,\r\n source: this\r\n });\r\n })\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Subject","Pipe","NgModule","merge","Injectable"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("@angular/core"),require("lodash-es/merge")):"function"==typeof define&&define.amd?define("@acorex/core",["exports","rxjs","@angular/core","lodash-es/merge"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).acorex=e.acorex||{},e.acorex.core={}),e.rxjs,e.ng.core,e["lodash-es/merge"])}(this,(function(exports,rxjs,i0,merge){"use strict";function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var merge__default=_interopDefaultLegacy(merge),AXObjectUtil=function(){function e(){}return e.deepJSONClone=function(e){return e?JSON.parse(JSON.stringify(e)):null},e.deepCopy=function(t){var r;if(null==t||"object"!=typeof t)return t;if(t instanceof Date)return(r=new Date).setTime(t.getTime()),r;if(t instanceof Array){r=[];for(var n=0,a=t.length;n<a;n++)r[n]=e.deepCopy(t[n]);return r}if(t instanceof Object){for(var i in r={},t)t.hasOwnProperty(i)&&(r[i]=e.deepCopy(t[i]));return r}throw new Error("Unable to copy obj! Its type isn't supported.")},e.fetchProp=function(t,r){if(void 0===t)return!1;var n=r.indexOf(".");return n>-1?e.fetchProp(t[r.substring(0,n)],r.substr(n+1)):t[r]},e.getPropByPath=function(e,t,r){return(t=t.replace(/\[/g,".").replace(/]/g,"").split(".")).forEach((function(t){e&&(e=e[t])})),void 0===e?r:e},e.setPropByPath=function(e,t,r){return Object(e)!==e||(Array.isArray(t)||(t=t.toString().match(/[^.[\]]+/g)||[]),t.slice(0,-1).reduce((function(e,r,n){return Object(e[r])===e[r]?e[r]:e[r]=Math.abs(t[n+1])>>0==+t[n+1]?[]:{}}),e)[t[t.length-1]]=r),e},e}(),AXConfig=function(){function e(){}return Object.defineProperty(e,"onChange",{get:function(){return e.dataChangeSubject.asObservable()},enumerable:!1,configurable:!0}),e.set=function(t,r){return t&&"string"==typeof t?(AXObjectUtil.setPropByPath(e.dataModel,t,r),void e.dataChangeSubject.next(e.dataModel)):t&&"object"==typeof t?(Object.assign(e.dataModel,t),void e.dataChangeSubject.next(e.dataModel)):t||r?void 0:e.dataChangeSubject.asObservable()},e.get=function(t,r){return AXObjectUtil.getPropByPath(e.dataModel,t)||r},e}();AXConfig.dataModel={},AXConfig.dataChangeSubject=new rxjs.Subject;var AX_CALENDARS=[{name:"gregorian",type:"GeorgianCalendar"},{name:"jalali",type:"JalaliCalendar"}],AXDateTime=function(){function AXDateTime(value,calendar){void 0===value&&(value=new Date),void 0===calendar&&(calendar=AXConfig.get("dateTime.type")||"gregorian"),this._calendar="string"==typeof calendar?eval("new "+AX_CALENDARS.find((function(e){return e.name==calendar})).type+"()"):calendar,value instanceof Date?this._date=value:this._date=new Date(value)}return AXDateTime.convert=function(e,t){var r;return void 0===t&&(t=AXConfig.get("dateTime.type")||"gregorian"),"string"==typeof e||e instanceof String||e instanceof Date?r=new AXDateTime(e,t):e instanceof AXDateTime&&(r=new AXDateTime(e.date,t)),r},Object.defineProperty(AXDateTime.prototype,"date",{get:function(){return this._date},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"calendar",{get:function(){return this._calendar},enumerable:!1,configurable:!0}),AXDateTime.prototype.clone=function(){return new AXDateTime(this.date,this.calendar.name())},Object.defineProperty(AXDateTime.prototype,"dayInMonth",{get:function(){return this._calendar.dayInMonth(this.date)},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"dayOfYear",{get:function(){return this._calendar.dayOfYear(this.date)},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"dayInWeek",{get:function(){return this._calendar.dayInWeek(this.date)},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"hour",{get:function(){return this._date.getHours()},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"minute",{get:function(){return this._date.getMinutes()},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"second",{get:function(){return this._date.getSeconds()},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"year",{get:function(){return this._calendar.year(this.date)},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"monthOfYear",{get:function(){return this._calendar.monthOfYear(this.date)},enumerable:!1,configurable:!0}),Object.defineProperty(AXDateTime.prototype,"month",{get:function(){return new AXCalendarMonth(this)},enumerable:!1,configurable:!0}),AXDateTime.prototype.add=function(e,t){return this._calendar.add(this.date,e,t)},AXDateTime.prototype.set=function(e,t){return void 0===e&&(e="day"),this._calendar.set(this.date,e,t)},AXDateTime.prototype.duration=function(e,t){return void 0===t&&(t="day"),new AXDateTimeRange(this,AXDateTime.convert(e,this.calendar.name())).duration()},AXDateTime.prototype.startOf=function(e){return void 0===e&&(e="day"),this._calendar.startOf(this.date,e)},AXDateTime.prototype.endOf=function(e){return void 0===e&&(e="day"),this._calendar.endOf(this.date,e)},AXDateTime.prototype.format=function(e){return void 0===e&&(e=AXConfig.get("dateTime.shortDateFormat")||"DDD, dd MMM yyyy"),e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace("ss",this.pad(this.date.getSeconds(),2))).replace("s",this.date.getSeconds().toString())).replace("dd",this.pad(this.calendar.dayInMonth(this.date),2))).replace("d",this.calendar.dayInMonth(this.date).toString())).replace("mm",this.pad(this.date.getMinutes(),2))).replace("m",this.date.getMinutes().toString())).replace("MMMM",this.calendar.monthNames[this.calendar.monthOfYear(this.date)-1])).replace("MMM",this.calendar.monthShortNames[this.calendar.monthOfYear(this.date)-1])).replace("MM",this.pad(this.calendar.monthOfYear(this.date),2))).replace(/M(?![ao])/,this.calendar.monthOfYear(this.date).toString())).replace("DDDD",this.calendar.dayNames[this.calendar.dayInWeek(this.date)-1])).replace("DDD",this.calendar.dayShortNames[this.calendar.dayInWeek(this.date)-1])).replace(/D(?!e)/,this.calendar.dayNames[this.calendar.dayInWeek(this.date)-1].substring(0,3))).replace("yyyy",this.calendar.year(this.date).toString())).replace("YYYY",this.calendar.year(this.date).toString())).replace("yy",this.calendar.year(this.date).toString().substring(2))).replace("YY",this.calendar.year(this.date).toString().substring(2))).replace("HH",this.pad(this.date.getHours(),2))).replace("H",this.date.getHours().toString())},AXDateTime.prototype.pad=function(e,t,r){return void 0===r&&(r="0"),(e+="").length>=t?e:new Array(t-e.length+1).join(r)+e},AXDateTime.prototype.toString=function(){return this.format()},AXDateTime.prototype.equal=function(e,t){return void 0===t&&(t="day"),0==this.compaire(e,t)},AXDateTime.prototype.compaire=function(e,t){void 0===t&&(t="day");var r=AXDateTime.convert(e);return this.date==r.date?0:this.date>r.date?1:-1},AXDateTime.prototype.convert=function(e){return AXDateTime.convert(this,e)},AXDateTime}(),AXCalendarMonth=function(){function e(e){this.index=e.date.getMonth(),this.name=e.format("MMMM"),this.range=new AXDateTimeRange(new AXDateTime(e.startOf("month").date,e.calendar),new AXDateTime(e.endOf("month").date,e.calendar))}return Object.defineProperty(e.prototype,"range",{get:function(){return this._range},set:function(e){this._range=e},enumerable:!1,configurable:!0}),e}(),AXDateTimeRange=function(){function e(e,t){this.startTime=e,this.endTime=t}return e.prototype.duration=function(){var e={miliseconds:0,seconds:0,minutes:0,hours:0,days:0,months:0,years:0,total:{miliseconds:0,seconds:0,minutes:0,hours:0,days:0,weeks:0,months:0,years:0}},t=36e5,r=864e5,n=315576e5,a=this.startTime.date.getTime(),i=this.endTime.date.getTime(),o=Math.abs(i-a);return e.total.miliseconds=o,e.total.seconds=Number((o/1e3).toFixed(2)),e.total.minutes=Number((o/6e4).toFixed(2)),e.total.hours=Number((o/t).toFixed(2)),e.total.days=Number((o/r).toFixed(2)),e.total.weeks=Number((o/6048e5).toFixed(2)),e.total.months=Number((o/26298e5).toFixed(2)),e.total.years=Number((o/n).toFixed(2)),e.miliseconds=e.total.miliseconds%1e3,e.seconds=Number((e.total.seconds%60).toFixed(0)),e.minutes=Number((e.total.minutes%60).toFixed(0)),e.hours=Number((e.total.hours%24).toFixed(0)),e.days=Number((e.total.days%30.4).toFixed(0)),e.months=Number((e.total.months%12).toFixed(0)),e.years=Number(e.total.years.toFixed(0)),e},e.prototype.enumurate=function(e){return void 0===e&&(e="day"),[]},e.prototype.includes=function(e,t){return void 0===t&&(t="day"),!0},e}(),AXDateTimePipe=function(){function e(){}return e.prototype.transform=function(e,t,r){if(null==e)return"";var n=e instanceof AXDateTime?e.clone():AXDateTime.convert(e,r);return t?n.format(t):n.toString()},e}();AXDateTimePipe.decorators=[{type:i0.Pipe,args:[{name:"axDate"}]}],AXDateTimePipe.ctorParameters=function(){return[]};var AXDateTimeModule=function(){};AXDateTimeModule.decorators=[{type:i0.NgModule,args:[{imports:[],exports:[AXDateTimePipe],declarations:[AXDateTimePipe],providers:[]}]}];var GeorgianCalendar=function(){function e(){this.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"],this.monthShortNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],this.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],this.dayShortNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}return e.prototype.name=function(){return"gregorian"},e.prototype.dayInMonth=function(e){return e.getDate()},e.prototype.dayOfYear=function(e){var t=+new Date(e.getFullYear(),0,0),r=+e-t;return Math.floor(r/864e5)},e.prototype.dayInWeek=function(e){return e.getDay()+1},e.prototype.year=function(e){return e.getFullYear()},e.prototype.monthOfYear=function(e){return e.getMonth()+1},e.prototype.add=function(e,t,r){var n=e.valueOf();switch(t){case"second":n+=1e3*r;break;case"minute":n+=6e4*r;break;case"hour":n+=36e5*r;break;case"month":var a=new Date(n),i=e.getMonth(),o=e.getFullYear();0>(i=(i+r)%12)?(o+=(e.getMonth()+r-i-12)/12,i+=12):o+=(e.getMonth()+r-i)/12,a.setMonth(i),a.setFullYear(o),n=a.valueOf();break;case"week":n+=6048e5*r;break;case"year":var s=new Date(n);s.setFullYear(s.getFullYear()+r),n=a.valueOf();break;case"day":default:n+=864e5*r}return new AXDateTime(new Date(n),this.name())},e.prototype.set=function(e,t,r){throw new Error("Method not implemented.")},e.prototype.startOf=function(e,t){var r=new Date(e.valueOf());switch(t){case"second":return r.setHours(r.getHours(),r.getMinutes(),r.getSeconds(),0),new AXDateTime(r,this.name());case"minute":return r.setHours(r.getHours(),r.getMinutes(),0,0),new AXDateTime(r,this.name());case"hour":return r.setHours(r.getHours(),0,0,0),new AXDateTime(r,this.name());default:case"day":return r.setHours(0,0,0,0),new AXDateTime(r,this.name());case"week":var n=r.getDate()-r.getDay()+(0===r.getDay()?-6:1);return r.setDate(n),new AXDateTime(r,this.name()).startOf("day");case"month":return r.setDate(1),new AXDateTime(r,this.name()).startOf("day");case"year":return r.setMonth(0),r.setDate(1),new AXDateTime(r,this.name()).startOf("day")}},e.prototype.endOf=function(e,t){var r=new Date(e.valueOf());switch(t){case"second":return r.setHours(r.getHours(),r.getMinutes(),r.getSeconds(),999),new AXDateTime(r,this.name());case"minute":return r.setHours(r.getHours(),r.getMinutes(),59,999),new AXDateTime(r,this.name());case"hour":return r.setHours(r.getHours(),59,59,999),new AXDateTime(r,this.name());default:case"day":return r.setHours(23,59,59,999),new AXDateTime(r,this.name());case"week":return this.startOf(e,"week").add("day",6).endOf("day");case"month":return new AXDateTime(new Date(e.getFullYear(),e.getMonth()+1,0),this.name()).endOf("day");case"year":return r.setMonth(11),new AXDateTime(r,this.name()).endOf("month")}},e}(),AXTranslator=function(){function e(){}return Object.defineProperty(e,"onChange",{get:function(){return e.dataChangeSubject.asObservable()},enumerable:!1,configurable:!0}),e.load=function(t,r){"object"==typeof r&&(e["__data__"+t]||(e["__data__"+t]={}),e["__data__"+t]=merge__default.default(e["__data__"+t],r))},e.use=function(t){e.lang=t},e.get=function(t,r){return AXObjectUtil.getPropByPath(e["__data__"+(r||e.lang)],t)||t},e}();AXTranslator.lang="en",AXTranslator.dataChangeSubject=new rxjs.Subject;var AXTranslatorPipe=function(){function e(){}return e.prototype.transform=function(e,t){return AXTranslator.get(e,t)},e}();AXTranslatorPipe.decorators=[{type:i0.Pipe,args:[{name:"trans",pure:!0}]}];var AXTranslationModule=function(){};AXTranslationModule.decorators=[{type:i0.NgModule,args:[{imports:[],exports:[AXTranslatorPipe],declarations:[AXTranslatorPipe],providers:[]}]}];var isChrome=function(e){return testUserAgent(e,/Chrome/i)},ɵ0=isChrome,isFirefox=function(e){return testUserAgent(e,/Firefox/i)},ɵ1=isFirefox,isEdge=function(e){return testUserAgent(e,/Edge/i)},ɵ2=isEdge,isSafari=function(e){return testUserAgent(e,/Safari/i)},ɵ3=isSafari,isOpera=function(e){return testUserAgent(e,/Opera/i)||testUserAgent(e,/OPR/i)},ɵ4=isOpera,isMSIE=function(e){return testUserAgent(e,/MSIE/i)||testUserAgent(e,/Trident/i)},ɵ5=isMSIE,isMobileWeb=function(e){return isMobile(e)&&!isHybrid(e)},ɵ6=isMobileWeb,isIpad=function(e){return!!testUserAgent(e,/iPad/i)||!(!testUserAgent(e,/Macintosh/i)||!isMobile(e))},ɵ7=isIpad,isIphone=function(e){return testUserAgent(e,/iPhone/i)},ɵ8=isIphone,isIOS=function(e){return testUserAgent(e,/iPhone|iPod/i)||isIpad(e)},ɵ9=isIOS,isAndroid=function(e){return testUserAgent(e,/android|sink/i)},ɵ10=isAndroid,isAndroidTablet=function(e){return isAndroid(e)&&!testUserAgent(e,/mobile/i)},ɵ11=isAndroidTablet,isPhablet=function(e){var t=e.innerWidth,r=e.innerHeight,n=Math.min(t,r),a=Math.max(t,r);return n>390&&n<520&&a>620&&a<800},ɵ12=isPhablet,isTablet=function(e){var t=e.innerWidth,r=e.innerHeight,n=Math.min(t,r),a=Math.max(t,r);return isIpad(e)||isAndroidTablet(e)||n>460&&n<820&&a>780&&a<1400},ɵ13=isTablet,isMobile=function(e){return matchMedia(e,"(any-pointer:coarse)")},ɵ14=isMobile,isDesktop=function(e){return!isMobile(e)},ɵ15=isDesktop,isHybrid=function(e){return isCordova(e)||isCapacitorNative(e)},ɵ16=isHybrid,isCordova=function(e){return!!(e.cordova||e.phonegap||e.PhoneGap)},ɵ17=isCordova,isCapacitorNative=function(e){var t=e.Capacitor;return!(!t||!t.isNative)},ɵ18=isCapacitorNative,isElectron=function(e){return testUserAgent(e,/electron/i)},ɵ19=isElectron,isPWA=function(e){return!(!e.matchMedia("(display-mode: standalone)").matches&&!e.navigator.standalone)},ɵ20=isPWA,testUserAgent=function(e,t){return t.test(e.navigator.userAgent)},matchMedia=function(e,t){return e.matchMedia(t).matches},ɵ21=matchMedia,PLATFORMS_MAP={Android:isAndroid,iOS:isIOS,Desktop:isDesktop,Mobile:isMobile,Chrome:isChrome,Firefox:isFirefox,Safari:isSafari,Edge:isEdge,Opera:isOpera,Hybrid:isHybrid,PWA:isPWA,Electron:isElectron},AXPlatformEvent=function(){},AXPlatform=function(){function e(){var e=this;this.resize=new rxjs.Subject,window.addEventListener("resize",(function(t){e.resize.next({nativeEvent:t,source:e})}))}return e.prototype.isRtl=function(){return"rtl"==document.dir||"rtl"==document.body.dir||"rtl"==document.body.style.direction},e.prototype.isLandscape=function(){return window.innerHeight<window.innerWidth},e.prototype.isPortrate=function(){return!this.isLandscape()},e.prototype.is=function(e){return PLATFORMS_MAP[e](window)||!1},e}();AXPlatform.ɵprov=i0.ɵɵdefineInjectable({factory:function(){return new AXPlatform},token:AXPlatform,providedIn:"platform"}),AXPlatform.decorators=[{type:i0.Injectable,args:[{providedIn:"platform"}]}],AXPlatform.ctorParameters=function(){return[]},exports.AXCalendarMonth=AXCalendarMonth,exports.AXConfig=AXConfig,exports.AXDateTime=AXDateTime,exports.AXDateTimeModule=AXDateTimeModule,exports.AXDateTimePipe=AXDateTimePipe,exports.AXDateTimeRange=AXDateTimeRange,exports.AXObjectUtil=AXObjectUtil,exports.AXPlatform=AXPlatform,exports.AXPlatformEvent=AXPlatformEvent,exports.AXTranslationModule=AXTranslationModule,exports.AXTranslator=AXTranslator,exports.AXTranslatorPipe=AXTranslatorPipe,exports.AX_CALENDARS=AX_CALENDARS,exports.GeorgianCalendar=GeorgianCalendar,exports.testUserAgent=testUserAgent,exports.ɵ0=ɵ0,exports.ɵ1=ɵ1,exports.ɵ10=ɵ10,exports.ɵ11=ɵ11,exports.ɵ12=ɵ12,exports.ɵ13=ɵ13,exports.ɵ14=ɵ14,exports.ɵ15=ɵ15,exports.ɵ16=ɵ16,exports.ɵ17=ɵ17,exports.ɵ18=ɵ18,exports.ɵ19=ɵ19,exports.ɵ2=ɵ2,exports.ɵ20=ɵ20,exports.ɵ21=ɵ21,exports.ɵ3=ɵ3,exports.ɵ4=ɵ4,exports.ɵ5=ɵ5,exports.ɵ6=ɵ6,exports.ɵ7=ɵ7,exports.ɵ8=ɵ8,exports.ɵ9=ɵ9,Object.defineProperty(exports,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=acorex-core.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../projects/acorex/core/src/lib/utils/object-util.ts","../../projects/acorex/core/src/lib/config/configs.ts","../../projects/acorex/core/src/lib/dateTime/datetime.class.ts","../../projects/acorex/core/src/lib/dateTime/datetime.pipe.ts","../../projects/acorex/core/src/lib/dateTime/datetime.module.ts","../../projects/acorex/core/src/lib/dateTime/georgian.calendar.ts","../../projects/acorex/core/src/lib/translation/translator.ts","../../projects/acorex/core/src/lib/translation/translator.pipe.ts","../../projects/acorex/core/src/lib/translation/translation.module.ts","../../projects/acorex/core/src/lib/platform/platform.service.ts"],"names":["AXObjectUtil","deepJSONClone","obj","JSON","parse","stringify","deepCopy","copy","Date","setTime","getTime","Array","i","len","length","Object","attr","hasOwnProperty","Error","fetchProp","prop","index","indexOf","substring","substr","getPropByPath","path","defaultVal","replace","split","forEach","level","undefined","setPropByPath","value","isArray","toString","match","slice","reduce","a","c","Math","abs","AXConfig","defineProperty","dataChangeSubject","asObservable","set","arg1","arg2","dataModel","next","assign","get","defaultValue","Subject","AX_CALENDARS","name","type","AXDateTime","calendar","this","_calendar","eval","find","_date","convert","date","String","prototype","clone","dayInMonth","dayOfYear","dayInWeek","getHours","getMinutes","getSeconds","year","monthOfYear","AXCalendarMonth","add","unit","amount","duration","end","AXDateTimeRange","startOf","endOf","format","pad","monthNames","monthShortNames","dayNames","dayShortNames","n","width","z","join","equal","compaire","val","getMonth","range","_range","v","startTime","endTime","result","miliseconds","seconds","minutes","hours","days","months","years","total","weeks","one_hour","one_min","one_day","one_year","diff","Number","toFixed","one_second","enumurate","includes","AXDateTimePipe","transform","Pipe","args","NgModule","imports","exports","declarations","providers","GeorgianCalendar","getDate","start","getFullYear","floor","getDay","valueOf","mo","yr","setMonth","setFullYear","yv","setHours","setDate","AXTranslator","load","lang","merge","use","key","AXTranslatorPipe","pure","isChrome","win","testUserAgent","isFirefox","isEdge","isSafari","isOpera","isMSIE","isMobileWeb","isMobile","isHybrid","isIpad","isIphone","isIOS","isAndroid","isAndroidTablet","isPhablet","innerWidth","height","innerHeight","smallest","min","largest","max","isTablet","matchMedia","isDesktop","isCordova","isCapacitorNative","capacitor","isNative","isElectron","isPWA","matches","navigator","standalone","expr","test","userAgent","query","PLATFORMS_MAP","Android","iOS","Desktop","Mobile","Chrome","Firefox","Safari","Edge","Opera","Hybrid","PWA","Electron","AXPlatform","_this","resize","window","addEventListener","e","nativeEvent","source","isRtl","document","dir","body","style","direction","isLandscape","isPortrate","is","Injectable","providedIn"],"mappings":"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","sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n static fetchProp(obj, prop: string) {\r\n if (typeof obj === 'undefined') {\r\n return false;\r\n }\r\n const index = prop.indexOf('.');\r\n\r\n if (index > -1) {\r\n return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n }\r\n\r\n return obj[prop];\r\n }\r\n\r\n static getPropByPath(obj, path, defaultVal?) {\r\n path = path\r\n .replace(/\\[/g, '.')\r\n .replace(/]/g, '')\r\n .split('.');\r\n\r\n path.forEach((level) => {\r\n if (obj) {\r\n obj = obj[level];\r\n }\r\n });\r\n\r\n if (obj === undefined) {\r\n return defaultVal;\r\n }\r\n return obj;\r\n }\r\n\r\n static setPropByPath(obj, path, value) {\r\n if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // If not yet an array, get the keys from the string-path\r\n if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // Yes: then follow that path\r\n ? a[c]\r\n // No: create the key. Is the next key a potential array-index?\r\n : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n ? [] // Yes: assign a new array object\r\n : {}, // No: assign a new plain object\r\n obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n return obj; // Return the top-level object to allow chaining\r\n }\r\n}","import { Subject, Observable } from 'rxjs';\r\nimport { AXObjectUtil } from '../utils/object-util';\r\n\r\n// @dynamic\r\nexport class AXConfig {\r\n private static dataModel: any = {};\r\n private static dataChangeSubject = new Subject<any>();\r\n\r\n\r\n static get onChange(): Observable<any> {\r\n return AXConfig.dataChangeSubject.asObservable();\r\n }\r\n\r\n static set(config: any): any;\r\n static set(path: string, value?: any): void;\r\n static set(arg1?: any, arg2?: any) {\r\n\r\n if (arg1 && typeof arg1 == 'string') {\r\n AXObjectUtil.setPropByPath(AXConfig.dataModel, arg1, arg2);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n return;\r\n }\r\n if (arg1 && typeof arg1 == 'object') {\r\n Object.assign(AXConfig.dataModel, arg1);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n return;\r\n }\r\n if (!arg1 && !arg2) {\r\n return AXConfig.dataChangeSubject.asObservable();\r\n }\r\n }\r\n\r\n static get(path: string, defaultValue?: any): any {\r\n return AXObjectUtil.getPropByPath(AXConfig.dataModel, path) || defaultValue;\r\n }\r\n}","import { AXConfig } from '../config/configs';\r\n\r\n\r\nexport const AX_CALENDARS: any[] = [\r\n {\r\n name: 'gregorian',\r\n type: 'GeorgianCalendar'\r\n },\r\n {\r\n name: 'jalali',\r\n type: 'JalaliCalendar'\r\n }\r\n];\r\nexport type TimeUnit =\r\n | 'second'\r\n | 'minute'\r\n | 'hour'\r\n | 'day'\r\n | 'month'\r\n | 'year'\r\n | 'week';\r\n\r\nexport interface AXCalendar {\r\n monthNames: string[];\r\n\r\n monthShortNames: string[];\r\n\r\n dayNames: string[];\r\n\r\n dayShortNames: string[];\r\n\r\n name(): string;\r\n\r\n dayInMonth(date: Date): number;\r\n\r\n dayOfYear(date: Date): number;\r\n\r\n dayInWeek(date: Date): number;\r\n\r\n year(date: Date): number;\r\n\r\n monthOfYear(date: Date): number;\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime;\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime;\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime;\r\n}\r\n\r\n// @dynamic\r\nexport class AXDateTime {\r\n static convert(\r\n value: any,\r\n calendar: string = AXConfig.get('dateTime.type') || 'gregorian'\r\n ): AXDateTime {\r\n let date: AXDateTime;\r\n if (typeof value === 'string' || value instanceof String) {\r\n date = new AXDateTime(value as string, calendar);\r\n } else if (value instanceof Date) {\r\n date = new AXDateTime(value as Date, calendar);\r\n } else if (value instanceof AXDateTime) {\r\n date = new AXDateTime(value.date, calendar);\r\n }\r\n return date;\r\n }\r\n\r\n private _date: Date;\r\n get date(): Date {\r\n return this._date;\r\n }\r\n\r\n private _calendar: AXCalendar;\r\n get calendar(): AXCalendar {\r\n return this._calendar;\r\n }\r\n\r\n constructor(\r\n value: Date | string = new Date(),\r\n calendar: string | AXCalendar = AXConfig.get('dateTime.type') || 'gregorian'\r\n ) {\r\n this._calendar =\r\n typeof calendar == 'string'\r\n ? eval(`new ${AX_CALENDARS.find((c) => c.name == calendar).type}()`)\r\n : calendar;\r\n if (value instanceof Date) {\r\n this._date = value as Date;\r\n } else {\r\n this._date = new Date(value);\r\n }\r\n }\r\n\r\n clone(): AXDateTime {\r\n return new AXDateTime(this.date, this.calendar.name());\r\n }\r\n\r\n get dayInMonth(): number {\r\n return this._calendar.dayInMonth(this.date);\r\n }\r\n\r\n get dayOfYear(): number {\r\n return this._calendar.dayOfYear(this.date);\r\n }\r\n\r\n get dayInWeek(): number {\r\n return this._calendar.dayInWeek(this.date);\r\n }\r\n\r\n get hour(): number {\r\n return this._date.getHours();\r\n }\r\n\r\n get minute(): number {\r\n return this._date.getMinutes();\r\n }\r\n\r\n get second(): number {\r\n return this._date.getSeconds();\r\n }\r\n\r\n get year(): number {\r\n return this._calendar.year(this.date);\r\n }\r\n\r\n get monthOfYear(): number {\r\n return this._calendar.monthOfYear(this.date);\r\n }\r\n\r\n get month(): AXCalendarMonth {\r\n return new AXCalendarMonth(this);\r\n }\r\n\r\n add(unit: TimeUnit, amount: number): AXDateTime {\r\n return this._calendar.add(this.date, unit, amount);\r\n }\r\n\r\n set(unit: TimeUnit = 'day', value: number): AXDateTime {\r\n return this._calendar.set(this.date, unit, value);\r\n }\r\n\r\n duration(\r\n end: AXDateTime | Date | string,\r\n unit: TimeUnit = 'day'\r\n ): AXTimeSpan {\r\n const range = new AXDateTimeRange(\r\n this,\r\n AXDateTime.convert(end, this.calendar.name())\r\n );\r\n return range.duration();\r\n }\r\n\r\n startOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.startOf(this.date, unit);\r\n }\r\n\r\n endOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.endOf(this.date, unit);\r\n }\r\n\r\n format(\r\n format: string = AXConfig.get('dateTime.shortDateFormat') ||\r\n 'DDD, dd MMM yyyy'\r\n ): string {\r\n format = format.replace('ss', this.pad(this.date.getSeconds(), 2));\r\n format = format.replace('s', this.date.getSeconds().toString());\r\n format = format.replace(\r\n 'dd',\r\n this.pad(this.calendar.dayInMonth(this.date), 2)\r\n );\r\n format = format.replace(\r\n 'd',\r\n this.calendar.dayInMonth(this.date).toString()\r\n );\r\n format = format.replace('mm', this.pad(this.date.getMinutes(), 2));\r\n format = format.replace('m', this.date.getMinutes().toString());\r\n format = format.replace(\r\n 'MMMM',\r\n this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1]\r\n );\r\n format = format.replace(\r\n 'MMM',\r\n this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1]\r\n );\r\n format = format.replace(\r\n 'MM',\r\n this.pad(this.calendar.monthOfYear(this.date), 2)\r\n );\r\n format = format.replace(\r\n /M(?![ao])/,\r\n this.calendar.monthOfYear(this.date).toString()\r\n );\r\n format = format.replace(\r\n 'DDDD',\r\n this.calendar.dayNames[this.calendar.dayInWeek(this.date) - 1]\r\n );\r\n format = format.replace(\r\n 'DDD',\r\n this.calendar.dayShortNames[this.calendar.dayInWeek(this.date) - 1]\r\n );\r\n format = format.replace(\r\n /D(?!e)/,\r\n this.calendar.dayNames[this.calendar.dayInWeek(this.date) - 1].substring(\r\n 0,\r\n 3\r\n )\r\n );\r\n format = format.replace('yyyy', this.calendar.year(this.date).toString());\r\n format = format.replace('YYYY', this.calendar.year(this.date).toString());\r\n format = format.replace(\r\n 'yy',\r\n this.calendar.year(this.date).toString().substring(2)\r\n );\r\n format = format.replace(\r\n 'YY',\r\n this.calendar.year(this.date).toString().substring(2)\r\n );\r\n format = format.replace('HH', this.pad(this.date.getHours(), 2));\r\n format = format.replace('H', this.date.getHours().toString());\r\n return format;\r\n }\r\n\r\n private pad(n, width, z = '0') {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n toString(): string {\r\n return this.format();\r\n }\r\n\r\n equal(value: any, unit: TimeUnit = 'day') {\r\n return this.compaire(value, unit) == 0;\r\n }\r\n\r\n compaire(value: any, unit: TimeUnit = 'day') {\r\n // TODO:\r\n const val = AXDateTime.convert(value);\r\n if (this.date == val.date) {\r\n return 0;\r\n } else if (this.date > val.date) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n\r\n convert(calendar: string) {\r\n return AXDateTime.convert(this, calendar);\r\n }\r\n}\r\n\r\nexport class AXCalendarMonth {\r\n private _range: AXDateTimeRange;\r\n public get range(): AXDateTimeRange {\r\n return this._range;\r\n }\r\n public set range(v: AXDateTimeRange) {\r\n this._range = v;\r\n }\r\n\r\n constructor(date: AXDateTime) {\r\n this.index = date.date.getMonth();\r\n this.name = date.format('MMMM');\r\n this.range = new AXDateTimeRange(\r\n new AXDateTime(date.startOf('month').date, date.calendar),\r\n new AXDateTime(date.endOf('month').date, date.calendar)\r\n );\r\n }\r\n\r\n private readonly index: number;\r\n private readonly name: string;\r\n}\r\n\r\nexport interface AXTimeSpanTotal {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n weeks: number;\r\n months: number;\r\n years: number;\r\n}\r\n\r\nexport interface AXTimeSpan {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n months: number;\r\n years: number;\r\n total: AXTimeSpanTotal;\r\n}\r\n\r\nexport class AXDateTimeRange {\r\n constructor(public startTime: AXDateTime, public endTime: AXDateTime) {}\r\n\r\n duration(): AXTimeSpan {\r\n const result: AXTimeSpan = {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n months: 0,\r\n years: 0,\r\n total: {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n weeks: 0,\r\n months: 0,\r\n years: 0,\r\n },\r\n };\r\n\r\n const one_second = 1000;\r\n const one_min = one_second * 60;\r\n const one_hour = one_min * 60;\r\n const one_day = one_hour * 24;\r\n const one_week = one_day * 7;\r\n const one_year = 365.25 * one_day;\r\n const one_month = one_year / 12;\r\n const startTime = this.startTime.date.getTime();\r\n const endTime = this.endTime.date.getTime();\r\n const diff = Math.abs(endTime - startTime);\r\n //\r\n result.total.miliseconds = diff;\r\n result.total.seconds = Number((diff / one_second).toFixed(2));\r\n result.total.minutes = Number((diff / one_min).toFixed(2));\r\n result.total.hours = Number((diff / one_hour).toFixed(2));\r\n result.total.days = Number((diff / one_day).toFixed(2));\r\n result.total.weeks = Number((diff / one_week).toFixed(2));\r\n //\r\n // let months = (this.endTime.year - this.startTime.year) * 12;\r\n // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;\r\n // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {\r\n // months--;\r\n // }\r\n // result.total.months = Math.abs(months);\r\n // TODO: review\r\n result.total.months = Number((diff / one_month).toFixed(2));\r\n result.total.years = Number((diff / one_year).toFixed(2));\r\n //\r\n result.miliseconds = result.total.miliseconds % 1000;\r\n result.seconds = Number((result.total.seconds % 60).toFixed(0));\r\n result.minutes = Number((result.total.minutes % 60).toFixed(0));\r\n result.hours = Number((result.total.hours % 24).toFixed(0));\r\n // TODO: review\r\n result.days = Number((result.total.days % 30.4).toFixed(0));\r\n result.months = Number((result.total.months % 12).toFixed(0));\r\n result.years = Number(result.total.years.toFixed(0));\r\n return result;\r\n }\r\n\r\n enumurate(unit: TimeUnit = 'day'): AXDateTime[] {\r\n // TODO: ??\r\n return [];\r\n }\r\n\r\n includes(value: AXDateTime, unit: TimeUnit = 'day'): boolean {\r\n // TODO: ??\r\n return true;\r\n }\r\n\r\n // getViewCompaire(view) {\r\n // switch (view) {\r\n // case 'day':\r\n // return 'YMD';\r\n // case 'month':\r\n // return 'YM';\r\n // case 'year':\r\n // return 'Y';\r\n // }\r\n // }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { AXDateTime } from './datetime.class';\r\n\r\n@Pipe({ name: 'axDate' })\r\nexport class AXDateTimePipe implements PipeTransform {\r\n constructor() { }\r\n\r\n transform(value: any, format?: string, calendar?: string): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n const date: AXDateTime = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);\r\n if (!format) {\r\n return date.toString();\r\n }\r\n else {\r\n return date.format(format);\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXDateTimePipe } from './datetime.pipe';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXDateTimePipe],\r\n declarations: [AXDateTimePipe],\r\n providers: [],\r\n})\r\nexport class AXDateTimeModule { }\r\n","import { AXCalendar, AXDateTime, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class GeorgianCalendar implements AXCalendar {\r\n\r\n monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n\r\n monthShortNames = [\r\n \"Jan\", \"Feb\", \"Mar\",\r\n \"Apr\", \"May\", \"Jun\", \"Jul\",\r\n \"Aug\", \"Sep\", \"Oct\",\r\n \"Nov\", \"Dec\"\r\n ];\r\n\r\n dayNames = [\r\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n \"Thursday\", \"Friday\", \"Saturday\"\r\n ];\r\n\r\n dayShortNames = [\r\n \"Sun\", \"Mon\", \"Tue\", \"Wed\",\r\n \"Thu\", \"Fri\", \"Sat\"\r\n ];\r\n\r\n name(): string {\r\n return 'gregorian'\r\n }\r\n\r\n dayInMonth(date: Date): number {\r\n return date.getDate();\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n const start = +new Date(date.getFullYear(), 0, 0);\r\n const diff = +date - start;\r\n const oneDay = 1000 * 60 * 60 * 24;\r\n return Math.floor(diff / oneDay);\r\n }\r\n\r\n dayInWeek(date: Date): number {\r\n return date.getDay() + 1;\r\n }\r\n\r\n year(date: Date): number {\r\n return date.getFullYear();\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return date.getMonth() + 1;\r\n }\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n const v = new Date(value);\r\n var mo = date.getMonth();\r\n var yr = date.getFullYear();\r\n mo = (mo + amount) % 12;\r\n if (0 > mo) {\r\n yr += (date.getMonth() + amount - mo - 12) / 12;\r\n mo += 12;\r\n }\r\n else\r\n yr += ((date.getMonth() + amount - mo) / 12);\r\n v.setMonth(mo);\r\n v.setFullYear(yr);\r\n value = v.valueOf();\r\n break\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n const yv = new Date(value);\r\n yv.setFullYear(yv.getFullYear() + amount);\r\n value = v.valueOf();\r\n break\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n const diff = clone.getDate() - clone.getDay() + (clone.getDay() === 0 ? -6 : 1);\r\n clone.setDate(diff)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"month\":\r\n clone.setDate(1)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"year\":\r\n clone.setMonth(0);\r\n clone.setDate(1);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n case 'month':\r\n return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');\r\n case \"year\":\r\n clone.setMonth(11);\r\n return new AXDateTime(clone, this.name()).endOf('month');\r\n }\r\n }\r\n}","import { Subject, Observable } from 'rxjs';\r\nimport merge from 'lodash-es/merge';\r\nimport { AXObjectUtil } from '../utils/object-util';\r\n\r\n// @dynamic\r\nexport class AXTranslator {\r\n private static lang: string = 'en';\r\n private static dataChangeSubject = new Subject<any>();\r\n\r\n\r\n static get onChange(): Observable<any> {\r\n return AXTranslator.dataChangeSubject.asObservable();\r\n }\r\n\r\n public static load(lang: string, value: any) {\r\n if (typeof value === 'object') {\r\n if (!AXTranslator[`__data__${lang}`]) {\r\n AXTranslator[`__data__${lang}`] = {};\r\n }\r\n AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);\r\n }\r\n }\r\n\r\n public static use(lang: string) {\r\n AXTranslator.lang = lang;\r\n }\r\n\r\n public static get(key: string, lang?: string): string {\r\n return AXObjectUtil.getPropByPath(AXTranslator[`__data__${lang || AXTranslator.lang}`], key) || key;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AXTranslator } from './translator';\r\n\r\n@Pipe({ name: 'trans', pure: true })\r\nexport class AXTranslatorPipe implements PipeTransform {\r\n transform(value: string, lang?: string): string {\r\n return AXTranslator.get(value, lang);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTranslatorPipe } from './translator.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXTranslatorPipe],\r\n declarations: [AXTranslatorPipe],\r\n providers: [],\r\n})\r\nexport class AXTranslationModule {\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n\r\nexport type AXPlatforms = 'Android' | 'Desktop' | 'iOS' | 'Mobile';\r\nexport type AXBrowsers = 'Chrome' | 'Safari' | 'Edge' | 'Firefox' | 'Opera' | 'MSIE';\r\nexport type AXTechnologies = 'PWA' | 'Hybrid' | 'Electron';\r\n\r\n\r\n\r\n\r\nconst isChrome = (win: Window): boolean =>\r\n testUserAgent(win, /Chrome/i);\r\n\r\nconst isFirefox = (win: Window): boolean =>\r\n testUserAgent(win, /Firefox/i);\r\n\r\nconst isEdge = (win: Window): boolean =>\r\n testUserAgent(win, /Edge/i);\r\n\r\nconst isSafari = (win: Window): boolean =>\r\n testUserAgent(win, /Safari/i);\r\n\r\nconst isOpera = (win: Window): boolean =>\r\n testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\r\n\r\nconst isMSIE = (win: Window): boolean =>\r\n testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\r\n\r\n\r\nconst isMobileWeb = (win: Window): boolean =>\r\n isMobile(win) && !isHybrid(win);\r\n\r\nconst isIpad = (win: Window) => {\r\n // iOS 12 and below\r\n if (testUserAgent(win, /iPad/i)) {\r\n return true;\r\n }\r\n\r\n // iOS 13+\r\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst isIphone = (win: Window) =>\r\n testUserAgent(win, /iPhone/i);\r\n\r\nconst isIOS = (win: Window) =>\r\n testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\r\n\r\nconst isAndroid = (win: Window) =>\r\n testUserAgent(win, /android|sink/i);\r\n\r\nconst isAndroidTablet = (win: Window) => {\r\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\r\n};\r\n\r\nconst isPhablet = (win: Window) => {\r\n const width = win.innerWidth;\r\n const height = win.innerHeight;\r\n const smallest = Math.min(width, height);\r\n const largest = Math.max(width, height);\r\n\r\n return (smallest > 390 && smallest < 520) &&\r\n (largest > 620 && largest < 800);\r\n};\r\n\r\nconst isTablet = (win: Window) => {\r\n const width = win.innerWidth;\r\n const height = win.innerHeight;\r\n const smallest = Math.min(width, height);\r\n const largest = Math.max(width, height);\r\n\r\n return (\r\n isIpad(win) ||\r\n isAndroidTablet(win) ||\r\n (\r\n (smallest > 460 && smallest < 820) &&\r\n (largest > 780 && largest < 1400)\r\n )\r\n );\r\n};\r\n\r\nconst isMobile = (win: Window) =>\r\n matchMedia(win, '(any-pointer:coarse)');\r\n\r\nconst isDesktop = (win: Window) =>\r\n !isMobile(win);\r\n\r\nconst isHybrid = (win: Window) =>\r\n isCordova(win) || isCapacitorNative(win);\r\n\r\nconst isCordova = (win: any): boolean =>\r\n !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\r\n\r\nconst isCapacitorNative = (win: any): boolean => {\r\n const capacitor = win['Capacitor'];\r\n return !!(capacitor && capacitor.isNative);\r\n};\r\n\r\nconst isElectron = (win: Window): boolean =>\r\n testUserAgent(win, /electron/i);\r\n\r\nconst isPWA = (win: Window): boolean =>\r\n !!(win.matchMedia('(display-mode: standalone)').matches || (win.navigator as any).standalone);\r\n\r\nexport const testUserAgent = (win: Window, expr: RegExp) =>\r\n expr.test(win.navigator.userAgent);\r\n\r\nconst matchMedia = (win: Window, query: string): boolean =>\r\n win.matchMedia(query).matches;\r\n\r\n\r\nconst PLATFORMS_MAP = {\r\n 'Android': isAndroid,\r\n 'iOS': isIOS,\r\n 'Desktop': isDesktop,\r\n 'Mobile': isMobile,\r\n 'Chrome': isChrome,\r\n 'Firefox': isFirefox,\r\n 'Safari': isSafari,\r\n 'Edge': isEdge,\r\n 'Opera': isOpera,\r\n 'Hybrid': isHybrid,\r\n 'PWA': isPWA,\r\n 'Electron': isElectron,\r\n};\r\n\r\n\r\nexport class AXPlatformEvent {\r\n nativeEvent: UIEvent;\r\n source: AXPlatform\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'platform',\r\n})\r\nexport class AXPlatform {\r\n resize: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\r\n\r\n isRtl(): boolean {\r\n return document.dir == 'rtl' || document.body.dir == 'rtl' || document.body.style.direction == 'rtl';\r\n }\r\n\r\n\r\n isLandscape(): boolean {\r\n return window.innerHeight < window.innerWidth;\r\n }\r\n\r\n isPortrate(): boolean {\r\n return !this.isLandscape()\r\n }\r\n\r\n is(name: AXPlatforms | AXBrowsers | AXTechnologies): boolean {\r\n return PLATFORMS_MAP[name](window) || false;\r\n }\r\n\r\n constructor() {\r\n window.addEventListener('resize', (e) => {\r\n this.resize.next({\r\n nativeEvent: e,\r\n source: this\r\n });\r\n })\r\n }\r\n}"]}
@@ -1,29 +0,0 @@
1
- import { Subject } from 'rxjs';
2
- import { AXObjectUtil } from '../utils/object-util';
3
- // @dynamic
4
- export class AXConfig {
5
- static get onChange() {
6
- return AXConfig.dataChangeSubject.asObservable();
7
- }
8
- static set(arg1, arg2) {
9
- if (arg1 && typeof arg1 == 'string') {
10
- AXObjectUtil.setPropByPath(AXConfig.dataModel, arg1, arg2);
11
- AXConfig.dataChangeSubject.next(AXConfig.dataModel);
12
- return;
13
- }
14
- if (arg1 && typeof arg1 == 'object') {
15
- Object.assign(AXConfig.dataModel, arg1);
16
- AXConfig.dataChangeSubject.next(AXConfig.dataModel);
17
- return;
18
- }
19
- if (!arg1 && !arg2) {
20
- return AXConfig.dataChangeSubject.asObservable();
21
- }
22
- }
23
- static get(path, defaultValue) {
24
- return AXObjectUtil.getPropByPath(AXConfig.dataModel, path) || defaultValue;
25
- }
26
- }
27
- AXConfig.dataModel = {};
28
- AXConfig.dataChangeSubject = new Subject();
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlncy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29uZmlnL2NvbmZpZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEQsV0FBVztBQUNYLE1BQU0sT0FBTyxRQUFRO0lBS2pCLE1BQU0sS0FBSyxRQUFRO1FBQ2YsT0FBTyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUlELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBVSxFQUFFLElBQVU7UUFFN0IsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ2pDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0QsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWSxFQUFFLFlBQWtCO1FBQ3ZDLE9BQU8sWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUNoRixDQUFDOztBQTdCYyxrQkFBUyxHQUFRLEVBQUUsQ0FBQztBQUNwQiwwQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBWE9iamVjdFV0aWwgfSBmcm9tICcuLi91dGlscy9vYmplY3QtdXRpbCc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQVhDb25maWcge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YU1vZGVsOiBhbnkgPSB7fTtcclxuICAgIHByaXZhdGUgc3RhdGljIGRhdGFDaGFuZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuXHJcbiAgICBzdGF0aWMgZ2V0IG9uQ2hhbmdlKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzZXQoY29uZmlnOiBhbnkpOiBhbnk7XHJcbiAgICBzdGF0aWMgc2V0KHBhdGg6IHN0cmluZywgdmFsdWU/OiBhbnkpOiB2b2lkO1xyXG4gICAgc3RhdGljIHNldChhcmcxPzogYW55LCBhcmcyPzogYW55KSB7XHJcblxyXG4gICAgICAgIGlmIChhcmcxICYmIHR5cGVvZiBhcmcxID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIEFYT2JqZWN0VXRpbC5zZXRQcm9wQnlQYXRoKEFYQ29uZmlnLmRhdGFNb2RlbCwgYXJnMSwgYXJnMik7XHJcbiAgICAgICAgICAgIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0Lm5leHQoQVhDb25maWcuZGF0YU1vZGVsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEFYQ29uZmlnLmRhdGFNb2RlbCwgYXJnMSk7XHJcbiAgICAgICAgICAgIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0Lm5leHQoQVhDb25maWcuZGF0YU1vZGVsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZzEgJiYgIWFyZzIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0KHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gQVhPYmplY3RVdGlsLmdldFByb3BCeVBhdGgoQVhDb25maWcuZGF0YU1vZGVsLCBwYXRoKSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,226 +0,0 @@
1
- import { AXConfig } from '../config/configs';
2
- export const AX_CALENDARS = [
3
- {
4
- name: 'gregorian',
5
- type: 'GeorgianCalendar'
6
- },
7
- {
8
- name: 'jalali',
9
- type: 'JalaliCalendar'
10
- }
11
- ];
12
- // @dynamic
13
- export class AXDateTime {
14
- constructor(value = new Date(), calendar = AXConfig.get('dateTime.type') || 'gregorian') {
15
- this._calendar =
16
- typeof calendar == 'string'
17
- ? eval(`new ${AX_CALENDARS.find((c) => c.name == calendar).type}()`)
18
- : calendar;
19
- if (value instanceof Date) {
20
- this._date = value;
21
- }
22
- else {
23
- this._date = new Date(value);
24
- }
25
- }
26
- static convert(value, calendar = AXConfig.get('dateTime.type') || 'gregorian') {
27
- let date;
28
- if (typeof value === 'string' || value instanceof String) {
29
- date = new AXDateTime(value, calendar);
30
- }
31
- else if (value instanceof Date) {
32
- date = new AXDateTime(value, calendar);
33
- }
34
- else if (value instanceof AXDateTime) {
35
- date = new AXDateTime(value.date, calendar);
36
- }
37
- return date;
38
- }
39
- get date() {
40
- return this._date;
41
- }
42
- get calendar() {
43
- return this._calendar;
44
- }
45
- clone() {
46
- return new AXDateTime(this.date, this.calendar.name());
47
- }
48
- get dayInMonth() {
49
- return this._calendar.dayInMonth(this.date);
50
- }
51
- get dayOfYear() {
52
- return this._calendar.dayOfYear(this.date);
53
- }
54
- get dayInWeek() {
55
- return this._calendar.dayInWeek(this.date);
56
- }
57
- get hour() {
58
- return this._date.getHours();
59
- }
60
- get minute() {
61
- return this._date.getMinutes();
62
- }
63
- get second() {
64
- return this._date.getSeconds();
65
- }
66
- get year() {
67
- return this._calendar.year(this.date);
68
- }
69
- get monthOfYear() {
70
- return this._calendar.monthOfYear(this.date);
71
- }
72
- get month() {
73
- return new AXCalendarMonth(this);
74
- }
75
- add(unit, amount) {
76
- return this._calendar.add(this.date, unit, amount);
77
- }
78
- set(unit = 'day', value) {
79
- return this._calendar.set(this.date, unit, value);
80
- }
81
- duration(end, unit = 'day') {
82
- const range = new AXDateTimeRange(this, AXDateTime.convert(end, this.calendar.name()));
83
- return range.duration();
84
- }
85
- startOf(unit = 'day') {
86
- return this._calendar.startOf(this.date, unit);
87
- }
88
- endOf(unit = 'day') {
89
- return this._calendar.endOf(this.date, unit);
90
- }
91
- format(format = AXConfig.get('dateTime.shortDateFormat') ||
92
- 'DDD, dd MMM yyyy') {
93
- format = format.replace('ss', this.pad(this.date.getSeconds(), 2));
94
- format = format.replace('s', this.date.getSeconds().toString());
95
- format = format.replace('dd', this.pad(this.calendar.dayInMonth(this.date), 2));
96
- format = format.replace('d', this.calendar.dayInMonth(this.date).toString());
97
- format = format.replace('mm', this.pad(this.date.getMinutes(), 2));
98
- format = format.replace('m', this.date.getMinutes().toString());
99
- format = format.replace('MMMM', this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1]);
100
- format = format.replace('MMM', this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1]);
101
- format = format.replace('MM', this.pad(this.calendar.monthOfYear(this.date), 2));
102
- format = format.replace(/M(?![ao])/, this.calendar.monthOfYear(this.date).toString());
103
- format = format.replace('DDDD', this.calendar.dayNames[this.calendar.dayInWeek(this.date) - 1]);
104
- format = format.replace('DDD', this.calendar.dayShortNames[this.calendar.dayInWeek(this.date) - 1]);
105
- format = format.replace(/D(?!e)/, this.calendar.dayNames[this.calendar.dayInWeek(this.date) - 1].substring(0, 3));
106
- format = format.replace('yyyy', this.calendar.year(this.date).toString());
107
- format = format.replace('YYYY', this.calendar.year(this.date).toString());
108
- format = format.replace('yy', this.calendar.year(this.date).toString().substring(2));
109
- format = format.replace('YY', this.calendar.year(this.date).toString().substring(2));
110
- format = format.replace('HH', this.pad(this.date.getHours(), 2));
111
- format = format.replace('H', this.date.getHours().toString());
112
- return format;
113
- }
114
- pad(n, width, z = '0') {
115
- n = n + '';
116
- return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
117
- }
118
- toString() {
119
- return this.format();
120
- }
121
- equal(value, unit = 'day') {
122
- return this.compaire(value, unit) == 0;
123
- }
124
- compaire(value, unit = 'day') {
125
- // TODO:
126
- const val = AXDateTime.convert(value);
127
- if (this.date == val.date) {
128
- return 0;
129
- }
130
- else if (this.date > val.date) {
131
- return 1;
132
- }
133
- else {
134
- return -1;
135
- }
136
- }
137
- convert(calendar) {
138
- return AXDateTime.convert(this, calendar);
139
- }
140
- }
141
- export class AXCalendarMonth {
142
- constructor(date) {
143
- this.index = date.date.getMonth();
144
- this.name = date.format('MMMM');
145
- this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));
146
- }
147
- get range() {
148
- return this._range;
149
- }
150
- set range(v) {
151
- this._range = v;
152
- }
153
- }
154
- export class AXDateTimeRange {
155
- constructor(startTime, endTime) {
156
- this.startTime = startTime;
157
- this.endTime = endTime;
158
- }
159
- duration() {
160
- const result = {
161
- miliseconds: 0,
162
- seconds: 0,
163
- minutes: 0,
164
- hours: 0,
165
- days: 0,
166
- months: 0,
167
- years: 0,
168
- total: {
169
- miliseconds: 0,
170
- seconds: 0,
171
- minutes: 0,
172
- hours: 0,
173
- days: 0,
174
- weeks: 0,
175
- months: 0,
176
- years: 0,
177
- },
178
- };
179
- const one_second = 1000;
180
- const one_min = one_second * 60;
181
- const one_hour = one_min * 60;
182
- const one_day = one_hour * 24;
183
- const one_week = one_day * 7;
184
- const one_year = 365.25 * one_day;
185
- const one_month = one_year / 12;
186
- const startTime = this.startTime.date.getTime();
187
- const endTime = this.endTime.date.getTime();
188
- const diff = Math.abs(endTime - startTime);
189
- //
190
- result.total.miliseconds = diff;
191
- result.total.seconds = Number((diff / one_second).toFixed(2));
192
- result.total.minutes = Number((diff / one_min).toFixed(2));
193
- result.total.hours = Number((diff / one_hour).toFixed(2));
194
- result.total.days = Number((diff / one_day).toFixed(2));
195
- result.total.weeks = Number((diff / one_week).toFixed(2));
196
- //
197
- // let months = (this.endTime.year - this.startTime.year) * 12;
198
- // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;
199
- // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {
200
- // months--;
201
- // }
202
- // result.total.months = Math.abs(months);
203
- // TODO: review
204
- result.total.months = Number((diff / one_month).toFixed(2));
205
- result.total.years = Number((diff / one_year).toFixed(2));
206
- //
207
- result.miliseconds = result.total.miliseconds % 1000;
208
- result.seconds = Number((result.total.seconds % 60).toFixed(0));
209
- result.minutes = Number((result.total.minutes % 60).toFixed(0));
210
- result.hours = Number((result.total.hours % 24).toFixed(0));
211
- // TODO: review
212
- result.days = Number((result.total.days % 30.4).toFixed(0));
213
- result.months = Number((result.total.months % 12).toFixed(0));
214
- result.years = Number(result.total.years.toFixed(0));
215
- return result;
216
- }
217
- enumurate(unit = 'day') {
218
- // TODO: ??
219
- return [];
220
- }
221
- includes(value, unit = 'day') {
222
- // TODO: ??
223
- return true;
224
- }
225
- }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2RhdGVUaW1lL2RhdGV0aW1lLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc3QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQVU7SUFDL0I7UUFDSSxJQUFJLEVBQUUsV0FBVztRQUNqQixJQUFJLEVBQUUsa0JBQWtCO0tBQzNCO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxnQkFBZ0I7S0FDekI7Q0FDSixDQUFDO0FBd0NGLFdBQVc7QUFDWCxNQUFNLE9BQU8sVUFBVTtJQTBCckIsWUFDRSxRQUF1QixJQUFJLElBQUksRUFBRSxFQUNqQyxXQUFnQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVc7UUFFNUUsSUFBSSxDQUFDLFNBQVM7WUFDWixPQUFPLFFBQVEsSUFBSSxRQUFRO2dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztnQkFDcEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQWEsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUF0Q0QsTUFBTSxDQUFDLE9BQU8sQ0FDWixLQUFVLEVBQ1YsV0FBbUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxXQUFXO1FB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QUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwRSxDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JCLFFBQVEsRUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUN0RSxDQUFDLEVBQ0QsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUNGLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JCLElBQUksRUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JCLElBQUksRUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FB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QUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxlQUFlO1FBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBaUIsS0FBSztRQUM5QixXQUFXO1FBQ1gsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWlCLEVBQUUsT0FBaUIsS0FBSztRQUNoRCxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBWUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9jb25maWdzJztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgQVhfQ0FMRU5EQVJTOiBhbnlbXSA9IFtcclxuICAgIHtcclxuICAgICAgICBuYW1lOiAnZ3JlZ29yaWFuJyxcclxuICAgICAgICB0eXBlOiAnR2VvcmdpYW5DYWxlbmRhcidcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogJ2phbGFsaScsXHJcbiAgICAgICAgdHlwZTogJ0phbGFsaUNhbGVuZGFyJ1xyXG4gICAgfVxyXG5dO1xyXG5leHBvcnQgdHlwZSBUaW1lVW5pdCA9XHJcbiAgfCAnc2Vjb25kJ1xyXG4gIHwgJ21pbnV0ZSdcclxuICB8ICdob3VyJ1xyXG4gIHwgJ2RheSdcclxuICB8ICdtb250aCdcclxuICB8ICd5ZWFyJ1xyXG4gIHwgJ3dlZWsnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyIHtcclxuICBtb250aE5hbWVzOiBzdHJpbmdbXTtcclxuXHJcbiAgbW9udGhTaG9ydE5hbWVzOiBzdHJpbmdbXTtcclxuXHJcbiAgZGF5TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBkYXlTaG9ydE5hbWVzOiBzdHJpbmdbXTtcclxuXHJcbiAgbmFtZSgpOiBzdHJpbmc7XHJcblxyXG4gIGRheUluTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgZGF5T2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIGRheUluV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuICB5ZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIGFkZChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lO1xyXG5cclxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lO1xyXG5cclxuICBzdGFydE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcclxuXHJcbiAgZW5kT2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xyXG59XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZSB7XHJcbiAgc3RhdGljIGNvbnZlcnQoXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgY2FsZW5kYXI6IHN0cmluZyA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUudHlwZScpIHx8ICdncmVnb3JpYW4nXHJcbiAgKTogQVhEYXRlVGltZSB7XHJcbiAgICBsZXQgZGF0ZTogQVhEYXRlVGltZTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgQVhEYXRlVGltZSh2YWx1ZSBhcyBzdHJpbmcsIGNhbGVuZGFyKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgQVhEYXRlVGltZSh2YWx1ZSBhcyBEYXRlLCBjYWxlbmRhcik7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xyXG4gICAgICBkYXRlID0gbmV3IEFYRGF0ZVRpbWUodmFsdWUuZGF0ZSwgY2FsZW5kYXIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kYXRlOiBEYXRlO1xyXG4gIGdldCBkYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcclxuICBnZXQgY2FsZW5kYXIoKTogQVhDYWxlbmRhciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHZhbHVlOiBEYXRlIHwgc3RyaW5nID0gbmV3IERhdGUoKSxcclxuICAgIGNhbGVuZGFyOiBzdHJpbmcgfCBBWENhbGVuZGFyID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbidcclxuICApIHtcclxuICAgIHRoaXMuX2NhbGVuZGFyID1cclxuICAgICAgdHlwZW9mIGNhbGVuZGFyID09ICdzdHJpbmcnXHJcbiAgICAgICAgPyBldmFsKGBuZXcgJHtBWF9DQUxFTkRBUlMuZmluZCgoYykgPT4gYy5uYW1lID09IGNhbGVuZGFyKS50eXBlfSgpYClcclxuICAgICAgICA6IGNhbGVuZGFyO1xyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLl9kYXRlID0gdmFsdWUgYXMgRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIubmFtZSgpKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXlJbk1vbnRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5SW5Nb250aCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheU9mWWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mWWVhcih0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheUluV2VlaygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheUluV2Vlayh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldEhvdXJzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbWludXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2Vjb25kKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgeWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnllYXIodGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aE9mWWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgbW9udGgoKTogQVhDYWxlbmRhck1vbnRoIHtcclxuICAgIHJldHVybiBuZXcgQVhDYWxlbmRhck1vbnRoKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkKHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmFkZCh0aGlzLmRhdGUsIHVuaXQsIGFtb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXQodW5pdDogVGltZVVuaXQgPSAnZGF5JywgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnNldCh0aGlzLmRhdGUsIHVuaXQsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGR1cmF0aW9uKFxyXG4gICAgZW5kOiBBWERhdGVUaW1lIHwgRGF0ZSB8IHN0cmluZyxcclxuICAgIHVuaXQ6IFRpbWVVbml0ID0gJ2RheSdcclxuICApOiBBWFRpbWVTcGFuIHtcclxuICAgIGNvbnN0IHJhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgdGhpcyxcclxuICAgICAgQVhEYXRlVGltZS5jb252ZXJ0KGVuZCwgdGhpcy5jYWxlbmRhci5uYW1lKCkpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHJhbmdlLmR1cmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydE9mKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zdGFydE9mKHRoaXMuZGF0ZSwgdW5pdCk7XHJcbiAgfVxyXG5cclxuICBlbmRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZW5kT2YodGhpcy5kYXRlLCB1bml0KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdChcclxuICAgIGZvcm1hdDogc3RyaW5nID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS5zaG9ydERhdGVGb3JtYXQnKSB8fFxyXG4gICAgICAnRERELCBkZCBNTU0geXl5eSdcclxuICApOiBzdHJpbmcge1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoJ3NzJywgdGhpcy5wYWQodGhpcy5kYXRlLmdldFNlY29uZHMoKSwgMikpO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoJ3MnLCB0aGlzLmRhdGUuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCkpO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXHJcbiAgICAgICdkZCcsXHJcbiAgICAgIHRoaXMucGFkKHRoaXMuY2FsZW5kYXIuZGF5SW5Nb250aCh0aGlzLmRhdGUpLCAyKVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxyXG4gICAgICAnZCcsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIuZGF5SW5Nb250aCh0aGlzLmRhdGUpLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgnbW0nLCB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0TWludXRlcygpLCAyKSk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgnbScsIHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ01NTU0nLFxyXG4gICAgICB0aGlzLmNhbGVuZGFyLm1vbnRoTmFtZXNbdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpIC0gMV1cclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ01NTScsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIubW9udGhTaG9ydE5hbWVzW3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDFdXHJcbiAgICApO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXHJcbiAgICAgICdNTScsXHJcbiAgICAgIHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMilcclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgL00oPyFbYW9dKS8sXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKS50b1N0cmluZygpXHJcbiAgICApO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXHJcbiAgICAgICdEREREJyxcclxuICAgICAgdGhpcy5jYWxlbmRhci5kYXlOYW1lc1t0aGlzLmNhbGVuZGFyLmRheUluV2Vlayh0aGlzLmRhdGUpIC0gMV1cclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ0RERCcsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIuZGF5U2hvcnROYW1lc1t0aGlzLmNhbGVuZGFyLmRheUluV2Vlayh0aGlzLmRhdGUpIC0gMV1cclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgL0QoPyFlKS8sXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIuZGF5TmFtZXNbdGhpcy5jYWxlbmRhci5kYXlJbldlZWsodGhpcy5kYXRlKSAtIDFdLnN1YnN0cmluZyhcclxuICAgICAgICAwLFxyXG4gICAgICAgIDNcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKCd5eXl5JywgdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgnWVlZWScsIHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCkpO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXHJcbiAgICAgICd5eScsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpXHJcbiAgICApO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXHJcbiAgICAgICdZWScsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpXHJcbiAgICApO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoJ0hIJywgdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCksIDIpKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKCdIJywgdGhpcy5kYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKSk7XHJcbiAgICByZXR1cm4gZm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYWQobiwgd2lkdGgsIHogPSAnMCcpIHtcclxuICAgIG4gPSBuICsgJyc7XHJcbiAgICByZXR1cm4gbi5sZW5ndGggPj0gd2lkdGggPyBuIDogbmV3IEFycmF5KHdpZHRoIC0gbi5sZW5ndGggKyAxKS5qb2luKHopICsgbjtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQoKTtcclxuICB9XHJcblxyXG4gIGVxdWFsKHZhbHVlOiBhbnksIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBhaXJlKHZhbHVlLCB1bml0KSA9PSAwO1xyXG4gIH1cclxuXHJcbiAgY29tcGFpcmUodmFsdWU6IGFueSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xyXG4gICAgLy8gVE9ETzpcclxuICAgIGNvbnN0IHZhbCA9IEFYRGF0ZVRpbWUuY29udmVydCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5kYXRlID09IHZhbC5kYXRlKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGUgPiB2YWwuZGF0ZSkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnZlcnQoY2FsZW5kYXI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFYRGF0ZVRpbWUuY29udmVydCh0aGlzLCBjYWxlbmRhcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck1vbnRoIHtcclxuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xyXG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcbiAgcHVibGljIHNldCByYW5nZSh2OiBBWERhdGVUaW1lUmFuZ2UpIHtcclxuICAgIHRoaXMuX3JhbmdlID0gdjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuaW5kZXggPSBkYXRlLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XHJcbiAgICB0aGlzLnJhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgbmV3IEFYRGF0ZVRpbWUoZGF0ZS5zdGFydE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxyXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XHJcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcclxuICBzZWNvbmRzOiBudW1iZXI7XHJcbiAgbWludXRlczogbnVtYmVyO1xyXG4gIGhvdXJzOiBudW1iZXI7XHJcbiAgZGF5czogbnVtYmVyO1xyXG4gIHdlZWtzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVTcGFuIHtcclxuICBtaWxpc2Vjb25kczogbnVtYmVyO1xyXG4gIHNlY29uZHM6IG51bWJlcjtcclxuICBtaW51dGVzOiBudW1iZXI7XHJcbiAgaG91cnM6IG51bWJlcjtcclxuICBkYXlzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxuICB0b3RhbDogQVhUaW1lU3BhblRvdGFsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnRUaW1lOiBBWERhdGVUaW1lLCBwdWJsaWMgZW5kVGltZTogQVhEYXRlVGltZSkge31cclxuXHJcbiAgZHVyYXRpb24oKTogQVhUaW1lU3BhbiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYVGltZVNwYW4gPSB7XHJcbiAgICAgIG1pbGlzZWNvbmRzOiAwLFxyXG4gICAgICBzZWNvbmRzOiAwLFxyXG4gICAgICBtaW51dGVzOiAwLFxyXG4gICAgICBob3VyczogMCxcclxuICAgICAgZGF5czogMCxcclxuICAgICAgbW9udGhzOiAwLFxyXG4gICAgICB5ZWFyczogMCxcclxuICAgICAgdG90YWw6IHtcclxuICAgICAgICBtaWxpc2Vjb25kczogMCxcclxuICAgICAgICBzZWNvbmRzOiAwLFxyXG4gICAgICAgIG1pbnV0ZXM6IDAsXHJcbiAgICAgICAgaG91cnM6IDAsXHJcbiAgICAgICAgZGF5czogMCxcclxuICAgICAgICB3ZWVrczogMCxcclxuICAgICAgICBtb250aHM6IDAsXHJcbiAgICAgICAgeWVhcnM6IDAsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uZV9zZWNvbmQgPSAxMDAwO1xyXG4gICAgY29uc3Qgb25lX21pbiA9IG9uZV9zZWNvbmQgKiA2MDtcclxuICAgIGNvbnN0IG9uZV9ob3VyID0gb25lX21pbiAqIDYwO1xyXG4gICAgY29uc3Qgb25lX2RheSA9IG9uZV9ob3VyICogMjQ7XHJcbiAgICBjb25zdCBvbmVfd2VlayA9IG9uZV9kYXkgKiA3O1xyXG4gICAgY29uc3Qgb25lX3llYXIgPSAzNjUuMjUgKiBvbmVfZGF5O1xyXG4gICAgY29uc3Qgb25lX21vbnRoID0gb25lX3llYXIgLyAxMjtcclxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1lLmRhdGUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgZW5kVGltZSA9IHRoaXMuZW5kVGltZS5kYXRlLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhlbmRUaW1lIC0gc3RhcnRUaW1lKTtcclxuICAgIC8vXHJcbiAgICByZXN1bHQudG90YWwubWlsaXNlY29uZHMgPSBkaWZmO1xyXG4gICAgcmVzdWx0LnRvdGFsLnNlY29uZHMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfc2Vjb25kKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC5taW51dGVzID0gTnVtYmVyKChkaWZmIC8gb25lX21pbikudG9GaXhlZCgyKSk7XHJcbiAgICByZXN1bHQudG90YWwuaG91cnMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfaG91cikudG9GaXhlZCgyKSk7XHJcbiAgICByZXN1bHQudG90YWwuZGF5cyA9IE51bWJlcigoZGlmZiAvIG9uZV9kYXkpLnRvRml4ZWQoMikpO1xyXG4gICAgcmVzdWx0LnRvdGFsLndlZWtzID0gTnVtYmVyKChkaWZmIC8gb25lX3dlZWspLnRvRml4ZWQoMikpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBtb250aHMgPSAodGhpcy5lbmRUaW1lLnllYXIgLSB0aGlzLnN0YXJ0VGltZS55ZWFyKSAqIDEyO1xyXG4gICAgLy8gbW9udGhzICs9IHRoaXMuZW5kVGltZS5tb250aE9mWWVhciAtIHRoaXMuc3RhcnRUaW1lLm1vbnRoT2ZZZWFyICsgMTtcclxuICAgIC8vIGlmICh0aGlzLmVuZFRpbWUuZGF5T2ZZZWFyIDwgdGhpcy5zdGFydFRpbWUuZGF5T2ZZZWFyKSB7XHJcbiAgICAvLyAgICAgbW9udGhzLS07XHJcbiAgICAvLyB9XHJcbiAgICAvLyByZXN1bHQudG90YWwubW9udGhzID0gTWF0aC5hYnMobW9udGhzKTtcclxuICAgIC8vIFRPRE86IHJldmlld1xyXG4gICAgcmVzdWx0LnRvdGFsLm1vbnRocyA9IE51bWJlcigoZGlmZiAvIG9uZV9tb250aCkudG9GaXhlZCgyKSk7XHJcbiAgICByZXN1bHQudG90YWwueWVhcnMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfeWVhcikudG9GaXhlZCgyKSk7XHJcbiAgICAvL1xyXG4gICAgcmVzdWx0Lm1pbGlzZWNvbmRzID0gcmVzdWx0LnRvdGFsLm1pbGlzZWNvbmRzICUgMTAwMDtcclxuICAgIHJlc3VsdC5zZWNvbmRzID0gTnVtYmVyKChyZXN1bHQudG90YWwuc2Vjb25kcyAlIDYwKS50b0ZpeGVkKDApKTtcclxuICAgIHJlc3VsdC5taW51dGVzID0gTnVtYmVyKChyZXN1bHQudG90YWwubWludXRlcyAlIDYwKS50b0ZpeGVkKDApKTtcclxuICAgIHJlc3VsdC5ob3VycyA9IE51bWJlcigocmVzdWx0LnRvdGFsLmhvdXJzICUgMjQpLnRvRml4ZWQoMCkpO1xyXG4gICAgLy8gVE9ETzogcmV2aWV3XHJcbiAgICByZXN1bHQuZGF5cyA9IE51bWJlcigocmVzdWx0LnRvdGFsLmRheXMgJSAzMC40KS50b0ZpeGVkKDApKTtcclxuICAgIHJlc3VsdC5tb250aHMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5tb250aHMgJSAxMikudG9GaXhlZCgwKSk7XHJcbiAgICByZXN1bHQueWVhcnMgPSBOdW1iZXIocmVzdWx0LnRvdGFsLnllYXJzLnRvRml4ZWQoMCkpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGVudW11cmF0ZSh1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZVtdIHtcclxuICAgIC8vIFRPRE86ID8/XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlcyh2YWx1ZTogQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVE9ETzogPz9cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0Vmlld0NvbXBhaXJlKHZpZXcpIHtcclxuICAvLyAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgLy8gICAgICAgICBjYXNlICdkYXknOlxyXG4gIC8vICAgICAgICAgICAgIHJldHVybiAnWU1EJztcclxuICAvLyAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1lNJztcclxuICAvLyAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gIC8vICAgICAgICAgICAgIHJldHVybiAnWSc7XHJcbiAgLy8gICAgIH1cclxuICAvLyB9XHJcbn1cclxuIl19