@e1011/es-kit 1.5.2 → 1.5.4

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 (234) hide show
  1. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/peregrineMQ.js +1 -1
  2. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +1 -1
  3. package/dist/lib/cjs/src/core/utils/array.js +1 -1
  4. package/dist/lib/cjs/src/core/utils/array.js.map +1 -1
  5. package/dist/lib/cjs/src/core/utils/date.js +1 -1
  6. package/dist/lib/cjs/src/core/utils/date.js.map +1 -1
  7. package/dist/lib/cjs/src/core/utils/helpers/other.js +1 -1
  8. package/dist/lib/cjs/src/core/utils/helpers/other.js.map +1 -1
  9. package/dist/lib/cjs/src/core/utils/helpers/textValueOperations.js +1 -1
  10. package/dist/lib/cjs/src/core/utils/helpers/textValueOperations.js.map +1 -1
  11. package/dist/lib/cjs/src/index.js +1 -1
  12. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.js +9 -10
  13. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +1 -1
  14. package/dist/lib/esm/src/core/utils/array.js +2 -18
  15. package/dist/lib/esm/src/core/utils/array.js.map +1 -1
  16. package/dist/lib/esm/src/core/utils/date.js +38 -42
  17. package/dist/lib/esm/src/core/utils/date.js.map +1 -1
  18. package/dist/lib/esm/src/core/utils/helpers/other.js +24 -19
  19. package/dist/lib/esm/src/core/utils/helpers/other.js.map +1 -1
  20. package/dist/lib/esm/src/core/utils/helpers/textValueOperations.js +13 -14
  21. package/dist/lib/esm/src/core/utils/helpers/textValueOperations.js.map +1 -1
  22. package/dist/lib/esm/src/index.js +57 -59
  23. package/dist/lib/esm/src/index.js.map +1 -1
  24. package/dist/lib/tsconfig.tsbuildinfo +1 -1
  25. package/dist/types/src/core/utils/appState/peregrineMQ/index.d.ts +0 -2
  26. package/dist/types/src/core/utils/appState/peregrineMQ/index.d.ts.map +1 -1
  27. package/dist/types/src/core/utils/appState/peregrineMQ/peregrineMQ.d.ts.map +1 -1
  28. package/dist/types/src/core/utils/appState/peregrineMQ/peregrineMQ.stories.d.ts.map +1 -1
  29. package/dist/types/src/core/utils/array.d.ts +2 -10
  30. package/dist/types/src/core/utils/array.d.ts.map +1 -1
  31. package/dist/types/src/core/utils/array.spec.d.ts +1 -1
  32. package/dist/types/src/core/utils/array.spec.d.ts.map +1 -1
  33. package/dist/types/src/core/utils/date.d.ts.map +1 -1
  34. package/dist/types/src/core/utils/helpers/other.d.ts +8 -3
  35. package/dist/types/src/core/utils/helpers/other.d.ts.map +1 -1
  36. package/dist/types/src/core/utils/helpers/textValueOperations.d.ts.map +1 -1
  37. package/dist/types/src/core/utils/keyExtractor.d.ts +1 -1
  38. package/dist/types/src/core/utils/keyExtractor.d.ts.map +1 -1
  39. package/dist/utils/appState/peregrineMQ/peregrineMQ.js +2 -0
  40. package/dist/utils/appState/peregrineMQ/peregrineMQ.js.map +1 -0
  41. package/dist/utils/appState/peregrineMQ/peregrineMQ.types.js.map +1 -0
  42. package/dist/utils/appState/stateMachine/tiny-state-machine.base.js.map +1 -0
  43. package/dist/utils/appState/store/store.vanillajs.js.map +1 -0
  44. package/dist/utils/appState/store/store.vanillajs.templates.js.map +1 -0
  45. package/dist/utils/array.js +2 -0
  46. package/dist/utils/array.js.map +1 -0
  47. package/dist/utils/date.js +2 -0
  48. package/dist/utils/date.js.map +1 -0
  49. package/dist/utils/esm/{src/core/utils/appState → appState}/peregrineMQ/peregrineMQ.js +9 -10
  50. package/dist/utils/esm/appState/peregrineMQ/peregrineMQ.js.map +1 -0
  51. package/dist/utils/esm/appState/peregrineMQ/peregrineMQ.types.js.map +1 -0
  52. package/dist/utils/esm/appState/stateMachine/tiny-state-machine.base.js.map +1 -0
  53. package/dist/utils/esm/appState/store/store.vanillajs.js.map +1 -0
  54. package/dist/utils/esm/appState/store/store.vanillajs.templates.js.map +1 -0
  55. package/dist/utils/esm/array.js +6 -0
  56. package/dist/utils/esm/array.js.map +1 -0
  57. package/dist/utils/esm/date.js +100 -0
  58. package/dist/utils/esm/date.js.map +1 -0
  59. package/dist/utils/esm/helpers/birthnumber.validator.js.map +1 -0
  60. package/dist/utils/esm/helpers/birthnumberCZSKvalidator.js.map +1 -0
  61. package/dist/utils/esm/helpers/cancelableDelayedFunction.js.map +1 -0
  62. package/dist/utils/esm/helpers/date.js.map +1 -0
  63. package/dist/utils/esm/helpers/deviceInfo.js.map +1 -0
  64. package/dist/utils/esm/helpers/emailMatcher.js.map +1 -0
  65. package/dist/utils/esm/helpers/file.js.map +1 -0
  66. package/dist/utils/esm/helpers/fileValidator.js.map +1 -0
  67. package/dist/utils/esm/helpers/objectOperations.js.map +1 -0
  68. package/dist/utils/esm/helpers/other.js +29 -0
  69. package/dist/utils/esm/helpers/other.js.map +1 -0
  70. package/dist/utils/esm/helpers/text.js.map +1 -0
  71. package/dist/utils/esm/helpers/textValueOperations.js +17 -0
  72. package/dist/utils/esm/helpers/textValueOperations.js.map +1 -0
  73. package/dist/utils/esm/helpers/ui.js.map +1 -0
  74. package/dist/utils/esm/helpers/valueOperations.js.map +1 -0
  75. package/dist/utils/esm/index.js +125 -0
  76. package/dist/utils/esm/{src/core/utils/index.js.map → index.js.map} +1 -1
  77. package/dist/utils/esm/keyExtractor.js.map +1 -0
  78. package/dist/utils/esm/webComponents/webComponent.utils.js.map +1 -0
  79. package/dist/utils/helpers/birthnumber.validator.js.map +1 -0
  80. package/dist/utils/helpers/birthnumberCZSKvalidator.js.map +1 -0
  81. package/dist/utils/helpers/cancelableDelayedFunction.js.map +1 -0
  82. package/dist/utils/helpers/date.js.map +1 -0
  83. package/dist/utils/helpers/deviceInfo.js.map +1 -0
  84. package/dist/utils/helpers/emailMatcher.js.map +1 -0
  85. package/dist/utils/helpers/file.js.map +1 -0
  86. package/dist/utils/helpers/fileValidator.js.map +1 -0
  87. package/dist/utils/helpers/objectOperations.js.map +1 -0
  88. package/dist/utils/helpers/other.js +2 -0
  89. package/dist/utils/helpers/other.js.map +1 -0
  90. package/dist/utils/helpers/text.js.map +1 -0
  91. package/dist/utils/helpers/textValueOperations.js +2 -0
  92. package/dist/utils/helpers/textValueOperations.js.map +1 -0
  93. package/dist/utils/helpers/ui.js.map +1 -0
  94. package/dist/utils/helpers/valueOperations.js.map +1 -0
  95. package/dist/utils/index.js +2 -0
  96. package/dist/utils/keyExtractor.js.map +1 -0
  97. package/dist/utils/webComponents/webComponent.utils.js.map +1 -0
  98. package/package.json +21 -5
  99. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/native.js +0 -2
  100. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  101. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/rng.js +0 -2
  102. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  103. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/stringify.js +0 -2
  104. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  105. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/v4.js +0 -2
  106. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  107. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/index.js +0 -2
  108. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  109. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/native.js +0 -7
  110. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  111. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/rng.js +0 -11
  112. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  113. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/stringify.js +0 -10
  114. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  115. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/v4.js +0 -14
  116. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  117. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/index.js +0 -9
  118. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  119. package/dist/ui/styles/generic.anims.css +0 -169
  120. package/dist/ui/styles/generic.anims.css.map +0 -1
  121. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/native.js +0 -7
  122. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  123. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/rng.js +0 -11
  124. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  125. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/stringify.js +0 -10
  126. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  127. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/v4.js +0 -14
  128. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  129. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/index.js +0 -9
  130. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  131. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +0 -1
  132. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.types.js.map +0 -1
  133. package/dist/utils/esm/src/core/utils/appState/stateMachine/tiny-state-machine.base.js.map +0 -1
  134. package/dist/utils/esm/src/core/utils/appState/store/store.vanillajs.js.map +0 -1
  135. package/dist/utils/esm/src/core/utils/appState/store/store.vanillajs.templates.js.map +0 -1
  136. package/dist/utils/esm/src/core/utils/array.js +0 -22
  137. package/dist/utils/esm/src/core/utils/array.js.map +0 -1
  138. package/dist/utils/esm/src/core/utils/date.js +0 -104
  139. package/dist/utils/esm/src/core/utils/date.js.map +0 -1
  140. package/dist/utils/esm/src/core/utils/helpers/birthnumber.validator.js.map +0 -1
  141. package/dist/utils/esm/src/core/utils/helpers/birthnumberCZSKvalidator.js.map +0 -1
  142. package/dist/utils/esm/src/core/utils/helpers/cancelableDelayedFunction.js.map +0 -1
  143. package/dist/utils/esm/src/core/utils/helpers/date.js.map +0 -1
  144. package/dist/utils/esm/src/core/utils/helpers/deviceInfo.js.map +0 -1
  145. package/dist/utils/esm/src/core/utils/helpers/emailMatcher.js.map +0 -1
  146. package/dist/utils/esm/src/core/utils/helpers/file.js.map +0 -1
  147. package/dist/utils/esm/src/core/utils/helpers/fileValidator.js.map +0 -1
  148. package/dist/utils/esm/src/core/utils/helpers/objectOperations.js.map +0 -1
  149. package/dist/utils/esm/src/core/utils/helpers/other.js +0 -24
  150. package/dist/utils/esm/src/core/utils/helpers/other.js.map +0 -1
  151. package/dist/utils/esm/src/core/utils/helpers/text.js.map +0 -1
  152. package/dist/utils/esm/src/core/utils/helpers/textValueOperations.js +0 -18
  153. package/dist/utils/esm/src/core/utils/helpers/textValueOperations.js.map +0 -1
  154. package/dist/utils/esm/src/core/utils/helpers/ui.js.map +0 -1
  155. package/dist/utils/esm/src/core/utils/helpers/valueOperations.js.map +0 -1
  156. package/dist/utils/esm/src/core/utils/index.js +0 -127
  157. package/dist/utils/esm/src/core/utils/keyExtractor.js.map +0 -1
  158. package/dist/utils/esm/src/core/utils/webComponents/webComponent.utils.js.map +0 -1
  159. package/dist/utils/node_modules/uuid/dist/esm-browser/native.js +0 -2
  160. package/dist/utils/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  161. package/dist/utils/node_modules/uuid/dist/esm-browser/rng.js +0 -2
  162. package/dist/utils/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  163. package/dist/utils/node_modules/uuid/dist/esm-browser/stringify.js +0 -2
  164. package/dist/utils/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  165. package/dist/utils/node_modules/uuid/dist/esm-browser/v4.js +0 -2
  166. package/dist/utils/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  167. package/dist/utils/src/core/utils/appState/peregrineMQ/index.js +0 -2
  168. package/dist/utils/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  169. package/dist/utils/src/core/utils/appState/peregrineMQ/peregrineMQ.js +0 -2
  170. package/dist/utils/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +0 -1
  171. package/dist/utils/src/core/utils/appState/peregrineMQ/peregrineMQ.types.js.map +0 -1
  172. package/dist/utils/src/core/utils/appState/stateMachine/tiny-state-machine.base.js.map +0 -1
  173. package/dist/utils/src/core/utils/appState/store/store.vanillajs.js.map +0 -1
  174. package/dist/utils/src/core/utils/appState/store/store.vanillajs.templates.js.map +0 -1
  175. package/dist/utils/src/core/utils/array.js +0 -2
  176. package/dist/utils/src/core/utils/array.js.map +0 -1
  177. package/dist/utils/src/core/utils/date.js +0 -2
  178. package/dist/utils/src/core/utils/date.js.map +0 -1
  179. package/dist/utils/src/core/utils/helpers/birthnumber.validator.js.map +0 -1
  180. package/dist/utils/src/core/utils/helpers/birthnumberCZSKvalidator.js.map +0 -1
  181. package/dist/utils/src/core/utils/helpers/cancelableDelayedFunction.js.map +0 -1
  182. package/dist/utils/src/core/utils/helpers/date.js.map +0 -1
  183. package/dist/utils/src/core/utils/helpers/deviceInfo.js.map +0 -1
  184. package/dist/utils/src/core/utils/helpers/emailMatcher.js.map +0 -1
  185. package/dist/utils/src/core/utils/helpers/file.js.map +0 -1
  186. package/dist/utils/src/core/utils/helpers/fileValidator.js.map +0 -1
  187. package/dist/utils/src/core/utils/helpers/objectOperations.js.map +0 -1
  188. package/dist/utils/src/core/utils/helpers/other.js +0 -2
  189. package/dist/utils/src/core/utils/helpers/other.js.map +0 -1
  190. package/dist/utils/src/core/utils/helpers/text.js.map +0 -1
  191. package/dist/utils/src/core/utils/helpers/textValueOperations.js +0 -2
  192. package/dist/utils/src/core/utils/helpers/textValueOperations.js.map +0 -1
  193. package/dist/utils/src/core/utils/helpers/ui.js.map +0 -1
  194. package/dist/utils/src/core/utils/helpers/valueOperations.js.map +0 -1
  195. package/dist/utils/src/core/utils/index.js +0 -2
  196. package/dist/utils/src/core/utils/keyExtractor.js.map +0 -1
  197. package/dist/utils/src/core/utils/webComponents/webComponent.utils.js.map +0 -1
  198. /package/dist/utils/{src/core/utils/appState → appState}/peregrineMQ/peregrineMQ.types.js +0 -0
  199. /package/dist/utils/{src/core/utils/appState → appState}/stateMachine/tiny-state-machine.base.js +0 -0
  200. /package/dist/utils/{src/core/utils/appState → appState}/store/store.vanillajs.js +0 -0
  201. /package/dist/utils/{src/core/utils/appState → appState}/store/store.vanillajs.templates.js +0 -0
  202. /package/dist/utils/esm/{src/core/utils/appState → appState}/peregrineMQ/peregrineMQ.types.js +0 -0
  203. /package/dist/utils/esm/{src/core/utils/appState → appState}/stateMachine/tiny-state-machine.base.js +0 -0
  204. /package/dist/utils/esm/{src/core/utils/appState → appState}/store/store.vanillajs.js +0 -0
  205. /package/dist/utils/esm/{src/core/utils/appState → appState}/store/store.vanillajs.templates.js +0 -0
  206. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/birthnumber.validator.js +0 -0
  207. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/birthnumberCZSKvalidator.js +0 -0
  208. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/cancelableDelayedFunction.js +0 -0
  209. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/date.js +0 -0
  210. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/deviceInfo.js +0 -0
  211. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/emailMatcher.js +0 -0
  212. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/file.js +0 -0
  213. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/fileValidator.js +0 -0
  214. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/objectOperations.js +0 -0
  215. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/text.js +0 -0
  216. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/ui.js +0 -0
  217. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/valueOperations.js +0 -0
  218. /package/dist/utils/esm/{src/core/utils/keyExtractor.js → keyExtractor.js} +0 -0
  219. /package/dist/utils/esm/{src/core/utils/webComponents → webComponents}/webComponent.utils.js +0 -0
  220. /package/dist/utils/{src/core/utils/helpers → helpers}/birthnumber.validator.js +0 -0
  221. /package/dist/utils/{src/core/utils/helpers → helpers}/birthnumberCZSKvalidator.js +0 -0
  222. /package/dist/utils/{src/core/utils/helpers → helpers}/cancelableDelayedFunction.js +0 -0
  223. /package/dist/utils/{src/core/utils/helpers → helpers}/date.js +0 -0
  224. /package/dist/utils/{src/core/utils/helpers → helpers}/deviceInfo.js +0 -0
  225. /package/dist/utils/{src/core/utils/helpers → helpers}/emailMatcher.js +0 -0
  226. /package/dist/utils/{src/core/utils/helpers → helpers}/file.js +0 -0
  227. /package/dist/utils/{src/core/utils/helpers → helpers}/fileValidator.js +0 -0
  228. /package/dist/utils/{src/core/utils/helpers → helpers}/objectOperations.js +0 -0
  229. /package/dist/utils/{src/core/utils/helpers → helpers}/text.js +0 -0
  230. /package/dist/utils/{src/core/utils/helpers → helpers}/ui.js +0 -0
  231. /package/dist/utils/{src/core/utils/helpers → helpers}/valueOperations.js +0 -0
  232. /package/dist/utils/{src/core/utils/index.js.map → index.js.map} +0 -0
  233. /package/dist/utils/{src/core/utils/keyExtractor.js → keyExtractor.js} +0 -0
  234. /package/dist/utils/{src/core/utils/webComponents → webComponents}/webComponent.utils.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sources":["../../../src/core/utils/date.ts"],"sourcesContent":["import dayjs, { UnitType } from 'dayjs'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport updateLocale from 'dayjs/plugin/updateLocale'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\nexport type DateTimeFormat = {\n value: Date | string | number\n valueFormat?: string\n formatString?: string\n language?: string\n relativeTime?: Record<string, string>\n from?: boolean\n to?: boolean\n shouldSubtractDay?: boolean\n shouldAddDay?: boolean\n showPreffix?: boolean\n}\n\nconst relativeTimeConfig = {\n thresholds: [\n { l: 's', r: 1 },\n { l: 'm', r: 1 },\n { l: 'mm', r: 59, d: 'minute' },\n { l: 'h', r: 1 },\n { l: 'hh', r: 23, d: 'hour' },\n { l: 'd', r: 1 },\n { l: 'dd', r: 29, d: 'day' },\n { l: 'M', r: 1 },\n { l: 'MM', r: 11, d: 'month' },\n { l: 'y', r: 1 },\n { l: 'yy', d: 'year' },\n ],\n}\n\nconst relativeTimeEN = {\n future: 'in %s',\n past: '%s ago',\n s: 'now',\n m: 'now',\n mm: 'now',\n h: '1 hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days', // probably 'a week' instead?\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n}\n\nconst relativeTimeCZ = {\n future: 'za %s',\n past: '%s před',\n s: 'nyní',\n m: 'nyní',\n mm: 'nyní',\n h: '1 hodinu',\n hh: '%d hodiny',\n d: 'den',\n dd: '%d dny',\n M: 'měsíc',\n MM: '%d měsíci',\n y: 'rok',\n yy: '%d roky',\n}\n\nlet _dayjsInitialized = false\nfunction initDayjs() {\n if (_dayjsInitialized) return\n _dayjsInitialized = true\n dayjs.extend(customParseFormat)\n dayjs.extend(relativeTime, relativeTimeConfig)\n dayjs.extend(updateLocale)\n dayjs.updateLocale('cz', {\n relativeTime: { ...relativeTimeCZ },\n })\n dayjs.updateLocale('en', {\n relativeTime: { ...relativeTimeEN },\n })\n}\n\nexport const getTimeFromNowOriginal = (value: string, language: string): string => {\n initDayjs()\n dayjs.updateLocale('en', {\n relativeTime: {\n ...(language === 'cz' ? relativeTimeCZ : relativeTimeEN),\n ...relativeTime,\n },\n })\n return dayjs(value, undefined).fromNow(true)\n}\n\nexport const getTimeFromNow = (\n value: Date | string | number,\n valueFormat?: Partial<DateTimeFormat>,\n): string => getDateTime({ ...valueFormat, from: true, value })\n\nexport const getTimeTo = (\n value: Date | string | number,\n valueFormat?: Partial<DateTimeFormat>,\n): string => getDateTime({ ...valueFormat, to: true, value })\n\nexport const getDateTime = ({\n value,\n valueFormat,\n formatString,\n language = 'en',\n relativeTime,\n from,\n to,\n shouldAddDay = false,\n shouldSubtractDay = false,\n showPreffix = false,\n}: DateTimeFormat): string => {\n initDayjs()\n dayjs.updateLocale('en', {\n relativeTime: {\n ...(language === 'cz' ? relativeTimeCZ : relativeTimeEN),\n ...relativeTime,\n },\n })\n\n dayjs.locale(language)\n\n if (!from && to) {\n const dateTo = dayjs(value, valueFormat || undefined).add(shouldAddDay ? 1 : 0, 'day')\n\n return dayjs(new Date()).locale(language).to(dateTo, !showPreffix)\n }\n\n if (from && !to) {\n const dateTo = dayjs(value, valueFormat || undefined).subtract(shouldSubtractDay ? 1 : 0, 'day')\n\n return dayjs(dateTo, valueFormat || undefined).locale(language).fromNow(!showPreffix)\n }\n\n return dayjs(value, valueFormat || undefined).locale(language).format(formatString)\n}\n\nexport const dateRangeFormat = (\n dateFrom: Date, dateTo: Date, shortFormat: string, longFormat: string,\n delimiter = ' - ', datePeriod: UnitType = 'month',\n) : string => {\n initDayjs()\n const dayJSFrom = dayjs(dateFrom)\n const dayJSTo = dayjs(dateTo)\n\n const diffMonths = dayJSFrom.diff(dayJSTo, datePeriod)\n\n return `${dayJSFrom.format(diffMonths === 0 ? shortFormat : longFormat)}${delimiter}${dayJSTo.format(longFormat)}`\n}\n"],"names":["relativeTimeConfig","relativeTimeEN","relativeTimeCZ","_dayjsInitialized","initDayjs","dayjs","customParseFormat","relativeTime","updateLocale","getTimeFromNowOriginal","value","language","getTimeFromNow","valueFormat","getDateTime","getTimeTo","formatString","from","to","shouldAddDay","shouldSubtractDay","showPreffix","dateTo","dateRangeFormat","dateFrom","shortFormat","longFormat","delimiter","datePeriod","dayJSFrom","dayJSTo","diffMonths"],"mappings":";;;;AAkBA,MAAMA,IAAqB;AAAA,EACzB,YAAY;AAAA,IACV,EAAE,GAAG,KAAK,GAAG,EAAA;AAAA,IACb,EAAE,GAAG,KAAK,GAAG,EAAA;AAAA,IACb,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAA;AAAA,IACrB,EAAE,GAAG,KAAK,GAAG,EAAA;AAAA,IACb,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,OAAA;AAAA,IACrB,EAAE,GAAG,KAAK,GAAG,EAAA;AAAA,IACb,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,MAAA;AAAA,IACrB,EAAE,GAAG,KAAK,GAAG,EAAA;AAAA,IACb,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,QAAA;AAAA,IACrB,EAAE,GAAG,KAAK,GAAG,EAAA;AAAA,IACb,EAAE,GAAG,MAAM,GAAG,OAAA;AAAA,EAAO;AAEzB,GAEMC,IAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AACN,GAEMC,IAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AACN;AAEA,IAAIC,IAAoB;AACxB,SAASC,IAAY;AACnB,EAAID,MACJA,IAAoB,IACpBE,EAAM,OAAOC,CAAiB,GAC9BD,EAAM,OAAOE,GAAcP,CAAkB,GAC7CK,EAAM,OAAOG,CAAY,GACzBH,EAAM,aAAa,MAAM;AAAA,IACvB,cAAc,EAAE,GAAGH,EAAA;AAAA,EAAe,CACnC,GACDG,EAAM,aAAa,MAAM;AAAA,IACvB,cAAc,EAAE,GAAGJ,EAAA;AAAA,EAAe,CACnC;AACH;AAEO,MAAMQ,IAAyB,CAACC,GAAeC,OACpDP,EAAA,GACAC,EAAM,aAAa,MAAM;AAAA,EACvB,cAAc;AAAA,IACZ,GAAIM,MAAa,OAAOT,IAAiBD;AAAA,IACzC,GAAGM;AAAA,EAAA;AACL,CACD,GACMF,EAAMK,GAAO,MAAS,EAAE,QAAQ,EAAI,IAGhCE,IAAiB,CAC5BF,GACAG,MACWC,EAAY,EAAE,GAAGD,GAAa,MAAM,IAAM,OAAAH,EAAA,CAAO,GAEjDK,IAAY,CACvBL,GACAG,MACWC,EAAY,EAAE,GAAGD,GAAa,IAAI,IAAM,OAAAH,EAAA,CAAO,GAE/CI,IAAc,CAAC;AAAA,EAC1B,OAAAJ;AAAA,EACA,aAAAG;AAAA,EACA,cAAAG;AAAA,EACA,UAAAL,IAAW;AAAA,EACX,cAAAJ;AAAAA,EACA,MAAAU;AAAA,EACA,IAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,mBAAAC,IAAoB;AAAA,EACpB,aAAAC,IAAc;AAChB,MAA8B;AAW5B,MAVAjB,EAAA,GACAC,EAAM,aAAa,MAAM;AAAA,IACvB,cAAc;AAAA,MACZ,GAAIM,MAAa,OAAOT,IAAiBD;AAAA,MACzC,GAAGM;AAAAA,IAAA;AAAA,EACL,CACD,GAEDF,EAAM,OAAOM,CAAQ,GAEjB,CAACM,KAAQC,GAAI;AACf,UAAMI,IAASjB,EAAMK,GAAOG,KAAe,MAAS,EAAE,IAAIM,IAAe,IAAI,GAAG,KAAK;AAErF,WAAOd,EAAM,oBAAI,KAAA,CAAM,EAAE,OAAOM,CAAQ,EAAE,GAAGW,GAAQ,CAACD,CAAW;AAAA,EACnE;AAEA,MAAIJ,KAAQ,CAACC,GAAI;AACf,UAAMI,IAASjB,EAAMK,GAAOG,KAAe,MAAS,EAAE,SAASO,IAAoB,IAAI,GAAG,KAAK;AAE/F,WAAOf,EAAMiB,GAAQT,KAAe,MAAS,EAAE,OAAOF,CAAQ,EAAE,QAAQ,CAACU,CAAW;AAAA,EACtF;AAEA,SAAOhB,EAAMK,GAAOG,KAAe,MAAS,EAAE,OAAOF,CAAQ,EAAE,OAAOK,CAAY;AACpF,GAEaO,IAAkB,CAC7BC,GAAgBF,GAAcG,GAAqBC,GACnDC,IAAY,OAAOC,IAAuB,YAC9B;AACZ,EAAAxB,EAAA;AACA,QAAMyB,IAAYxB,EAAMmB,CAAQ,GAC1BM,IAAUzB,EAAMiB,CAAM,GAEtBS,IAAaF,EAAU,KAAKC,GAASF,CAAU;AAErD,SAAO,GAAGC,EAAU,OAAOE,MAAe,IAAIN,IAAcC,CAAU,CAAC,GAAGC,CAAS,GAAGG,EAAQ,OAAOJ,CAAU,CAAC;AAClH;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"birthnumber.validator.js","sources":["../../../../src/core/utils/helpers/birthnumber.validator.ts"],"sourcesContent":["import {\n parse as parseBirthNumber,\n isValidFormat,\n isValidModulo11,\n} from './birthnumberCZSKvalidator'\n\n// TODO Lukas Z, add spec/test for isBirthNumberValid\nexport const isBirthNumberValid = (birthnumber: string, birthdate: string, gender: string): boolean => {\n if (!isValidFormat(birthnumber) || !isValidModulo11(birthnumber)) {\n return false\n }\n\n const parsedBirthNumber = parseBirthNumber(birthnumber)\n\n if (parsedBirthNumber) {\n if (gender !== parsedBirthNumber.gender) {\n return false\n }\n const { year, month, day } = parsedBirthNumber\n\n if (birthdate !== `${String(day).padStart(2, '0')}.${String(month).padStart(2, '0')}.${year}`) {\n return false\n }\n }\n return true\n}\n"],"names":["isBirthNumberValid","birthnumber","birthdate","gender","isValidFormat","isValidModulo11","parsedBirthNumber","parseBirthNumber","year","month","day"],"mappings":";AAOO,MAAMA,IAAqB,CAACC,GAAqBC,GAAmBC,MAA4B;AACrG,MAAI,CAACC,EAAcH,CAAW,KAAK,CAACI,EAAgBJ,CAAW;AAC7D,WAAO;AAGT,QAAMK,IAAoBC,EAAiBN,CAAW;AAEtD,MAAIK,GAAmB;AACrB,QAAIH,MAAWG,EAAkB;AAC/B,aAAO;AAET,UAAM,EAAE,MAAAE,GAAM,OAAAC,GAAO,KAAAC,EAAA,IAAQJ;AAE7B,QAAIJ,MAAc,GAAG,OAAOQ,CAAG,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAOD,CAAK,EAAE,SAAS,GAAG,GAAG,CAAC,IAAID,CAAI;AACzF,aAAO;AAAA,EAEX;AACA,SAAO;AACT;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"birthnumberCZSKvalidator.js","sources":["../../../../src/core/utils/helpers/birthnumberCZSKvalidator.ts"],"sourcesContent":["export const regex = /^\\s*(\\d\\d)(\\d\\d)(\\d\\d)[/]*(\\d\\d\\d)(\\d?)\\s*$/\n\nexport const getMatch: (value: string | number) => null | RegExpMatchArray\n = (value: string | number) => String(value).match(regex)\n\nexport const isValidFormat = (value: string | number): boolean => {\n const match = getMatch(value)\n\n return match !== null && !!match[0] && parse(value) !== null\n}\n\nexport const isValidModulo11 = (value: string | number): boolean => {\n const validFormat = isValidFormat(value)\n\n if (!validFormat) {\n return false\n }\n\n let stringValue: string\n\n if (typeof value === 'string') {\n stringValue = value.replace('/', '')\n } else {\n stringValue = (value as number).toString()\n }\n\n if (stringValue.length < 10) {\n return true\n }\n\n const controlDigit = stringValue.substr(9, 1)\n let mod = parseInt(stringValue.substr(0, 9), 10) % 11\n\n if (mod === 10) {\n mod = 0\n }\n\n return parseInt(controlDigit, 10) === mod\n}\n\ntype RangeTupleType = [number, number, string, number]\n\nconst monthRange = {\n ranges: [\n // M\n [1, 12, 'M', 0],\n // M\n [21, 32, 'M', 20],\n // F\n [51, 62, 'F', 50],\n // F\n [71, 82, 'F', 70],\n ] as RangeTupleType[],\n getRange(monthHint: number): RangeTupleType | undefined {\n return this.ranges.find(([min, max]) => monthHint >= min && monthHint <= max)\n },\n getGender(monthHint: number): string | null {\n const range = this.getRange(monthHint)\n\n return range ? range[2] as string : null\n },\n getMonth(monthHint: number): string {\n const range = this.getRange(monthHint)\n\n return String(range ? monthHint - (range[3] as number) : null).padStart(2, '0')\n },\n}\n\ntype ParsedBirthNumber = {\n day: string | number | null\n month: string | number | null\n year: string | number | null\n gender: string | null\n}\n\nexport const parse = (value: string | number | undefined): ParsedBirthNumber | null => {\n if (!value) {\n return null\n }\n const match = getMatch(value)\n\n if (!match) {\n return null\n }\n\n const controlDigit = match[5]\n\n let year = parseInt(match[1], 10)\n\n // eslint-disable-next-line no-nested-ternary\n year += controlDigit === '' ? (year < 54 ? 1900 : 1800) : (year < 54 ? 2000 : 1900)\n const monthHint = parseInt(match[2], 10)\n const month = monthRange.getMonth(monthHint)\n const gender = monthRange.getGender(monthHint)\n const day = String(parseInt(match[3], 10)).padStart(2, '0')\n\n // console.log('year-month-day')\n // console.log(`${year}-${month}-${day}`)\n\n const date = new Date(`${year}-${month}-${day}`)\n\n if (date instanceof Date && !Number.isNaN(date) && date.getMonth() + 1 === parseInt(month, 10)) {\n return {\n day,\n month,\n year,\n gender,\n }\n }\n return null\n}\n\n// TODO, control digit and year control\n/*\n if ($c === '') {\n $year += $year < 54 ? 1900 : 1800;\n } else {\n // kontrolní číslice\n $mod = ($year . $month . $day . $ext) % 11;\n if ($mod === 10) $mod = 0;\n if ($mod !== (int) $c) {\n return false;\n }\n\n $year += $year < 54 ? 2000 : 1900;\n }\n*/\n"],"names":["regex","getMatch","value","isValidFormat","match","parse","isValidModulo11","stringValue","controlDigit","mod","monthRange","monthHint","min","max","range","year","month","gender","day","date"],"mappings":"AAAO,MAAMA,IAAQ,+CAERC,IACT,CAACC,MAA2B,OAAOA,CAAK,EAAE,MAAMF,CAAK,GAE5CG,IAAgB,CAACD,MAAoC;AAChE,QAAME,IAAQH,EAASC,CAAK;AAE5B,SAAOE,MAAU,QAAQ,CAAC,CAACA,EAAM,CAAC,KAAKC,EAAMH,CAAK,MAAM;AAC1D,GAEaI,IAAkB,CAACJ,MAAoC;AAGlE,MAAI,CAFgBC,EAAcD,CAAK;AAGrC,WAAO;AAGT,MAAIK;AAQJ,MANI,OAAOL,KAAU,WACnBK,IAAcL,EAAM,QAAQ,KAAK,EAAE,IAEnCK,IAAeL,EAAiB,SAAA,GAG9BK,EAAY,SAAS;AACvB,WAAO;AAGT,QAAMC,IAAeD,EAAY,OAAO,GAAG,CAAC;AAC5C,MAAIE,IAAM,SAASF,EAAY,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI;AAEnD,SAAIE,MAAQ,OACVA,IAAM,IAGD,SAASD,GAAc,EAAE,MAAMC;AACxC,GAIMC,IAAa;AAAA,EACjB,QAAQ;AAAA;AAAA,IAEN,CAAC,GAAG,IAAI,KAAK,CAAC;AAAA;AAAA,IAEd,CAAC,IAAI,IAAI,KAAK,EAAE;AAAA;AAAA,IAEhB,CAAC,IAAI,IAAI,KAAK,EAAE;AAAA;AAAA,IAEhB,CAAC,IAAI,IAAI,KAAK,EAAE;AAAA,EAAA;AAAA,EAElB,SAASC,GAA+C;AACtD,WAAO,KAAK,OAAO,KAAK,CAAC,CAACC,GAAKC,CAAG,MAAMF,KAAaC,KAAOD,KAAaE,CAAG;AAAA,EAC9E;AAAA,EACA,UAAUF,GAAkC;AAC1C,UAAMG,IAAQ,KAAK,SAASH,CAAS;AAErC,WAAOG,IAAQA,EAAM,CAAC,IAAc;AAAA,EACtC;AAAA,EACA,SAASH,GAA2B;AAClC,UAAMG,IAAQ,KAAK,SAASH,CAAS;AAErC,WAAO,OAAOG,IAAQH,IAAaG,EAAM,CAAC,IAAe,IAAI,EAAE,SAAS,GAAG,GAAG;AAAA,EAChF;AACF,GASaT,IAAQ,CAACH,MAAiE;AACrF,MAAI,CAACA;AACH,WAAO;AAET,QAAME,IAAQH,EAASC,CAAK;AAE5B,MAAI,CAACE;AACH,WAAO;AAGT,QAAMI,IAAeJ,EAAM,CAAC;AAE5B,MAAIW,IAAO,SAASX,EAAM,CAAC,GAAG,EAAE;AAGhC,EAAAW,KAAQP,MAAiB,KAAMO,IAAO,KAAK,OAAO,OAASA,IAAO,KAAK,MAAO;AAC9E,QAAMJ,IAAY,SAASP,EAAM,CAAC,GAAG,EAAE,GACjCY,IAAQN,EAAW,SAASC,CAAS,GACrCM,IAASP,EAAW,UAAUC,CAAS,GACvCO,IAAM,OAAO,SAASd,EAAM,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG,GAKpDe,wBAAW,KAAK,GAAGJ,CAAI,IAAIC,CAAK,IAAIE,CAAG,EAAE;AAE/C,SAAIC,aAAgB,QAAQ,CAAC,OAAO,MAAMA,CAAI,KAAKA,EAAK,SAAA,IAAa,MAAM,SAASH,GAAO,EAAE,IACpF;AAAA,IACL,KAAAE;AAAA,IACA,OAAAF;AAAA,IACA,MAAAD;AAAA,IACA,QAAAE;AAAA,EAAA,IAGG;AACT;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelableDelayedFunction.js","sources":["../../../../src/core/utils/helpers/cancelableDelayedFunction.ts"],"sourcesContent":["export const cancelableSetInterval = (func: () => void, delay = 100): () => void => {\n const timeoutInterval = setInterval(func, delay)\n\n return (): void => clearInterval(timeoutInterval)\n}\n\nexport const cancelableSetTimeout = (func: () => void, delay = 100): () => void => {\n const timeoutInterval = setTimeout(func, delay)\n\n return (): void => clearTimeout(timeoutInterval)\n}\n"],"names":["cancelableSetInterval","func","delay","timeoutInterval","cancelableSetTimeout"],"mappings":"AAAO,MAAMA,IAAwB,CAACC,GAAkBC,IAAQ,QAAoB;AAClF,QAAMC,IAAkB,YAAYF,GAAMC,CAAK;AAE/C,SAAO,MAAY,cAAcC,CAAe;AAClD,GAEaC,IAAuB,CAACH,GAAkBC,IAAQ,QAAoB;AACjF,QAAMC,IAAkB,WAAWF,GAAMC,CAAK;AAE9C,SAAO,MAAY,aAAaC,CAAe;AACjD;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sources":["../../../../src/core/utils/helpers/date.ts"],"sourcesContent":["import dayjs from 'dayjs'\n\nexport const getDate = (): string => new Date().toString()\n\n\nexport const formatDateToTimestamp = (date = new Date()): string => dayjs(date).format('YYYY-MM-DD HH:mm:ss')\n\nexport const DATE_FORMAT = 'MM-DD-YYYY'\nexport const DATE_TIME_FORMAT = 'MM-DD-YYYY HH-mm-ss'\n\nexport const formatDate = (date: string | Date): string => dayjs(date).format(DATE_FORMAT)\nexport const formatDateTime = (date: string | Date): string => dayjs(date).format(DATE_TIME_FORMAT)\n\n"],"names":["getDate","formatDateToTimestamp","date","dayjs","DATE_FORMAT","DATE_TIME_FORMAT","formatDate","formatDateTime"],"mappings":";AAEO,MAAMA,IAAU,OAAc,oBAAI,KAAA,GAAO,SAAA,GAGnCC,IAAwB,CAACC,IAAO,oBAAI,KAAA,MAAmBC,EAAMD,CAAI,EAAE,OAAO,qBAAqB,GAE/FE,IAAc,cACdC,IAAmB,uBAEnBC,IAAa,CAACJ,MAAgCC,EAAMD,CAAI,EAAE,OAAOE,CAAW,GAC5EG,IAAiB,CAACL,MAAgCC,EAAMD,CAAI,EAAE,OAAOG,CAAgB;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInfo.js","sources":["../../../../src/core/utils/helpers/deviceInfo.ts"],"sourcesContent":["export const getDeviceId = async (): Promise<string | null | undefined> => {\n try {\n const devices = await navigator?.mediaDevices?.enumerateDevices?.()\n const device = devices.find((device) => device.kind === 'videoinput')\n\n return device?.deviceId || device?.groupId\n } catch (error: any) {\n return null\n }\n}\n"],"names":["getDeviceId","_a","_b","device"],"mappings":"AAAO,MAAMA,IAAc,YAAgD;AAApE,MAAAC,GAAAC;AACL,MAAI;AAEF,UAAMC,KADU,QAAMD,KAAAD,IAAA,uCAAW,iBAAX,gBAAAA,EAAyB,qBAAzB,gBAAAC,EAAA,KAAAD,KACC,KAAK,CAACE,MAAWA,EAAO,SAAS,YAAY;AAEpE,YAAOA,KAAA,gBAAAA,EAAQ,cAAYA,KAAA,gBAAAA,EAAQ;AAAA,EACrC,QAAqB;AACnB,WAAO;AAAA,EACT;AACF;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailMatcher.js","sources":["../../../../src/core/utils/helpers/emailMatcher.ts"],"sourcesContent":["export const regexBuilder\n= (domain: string, prefix = '', suffix = ''): RegExp => {\n const normPrefix = prefix.replace('.', '\\\\.')\n const normSuffix = suffix.replace('.', '\\\\.')\n\n if (normPrefix && normSuffix) {\n return new RegExp(\n `^(${normPrefix})+(.+)+(${normSuffix})+@(${domain})$`,\n )\n } if (normPrefix) {\n return new RegExp(\n `^(${normPrefix})+(.+)+@(${domain})$`,\n )\n } if (normSuffix) {\n return new RegExp(\n `^(.+)+(${normSuffix})+@(${domain})$`,\n )\n }\n return new RegExp(\n `^(${domain})$`,\n )\n}\n\nexport const emailMatch = (rgx:RegExp, email:string): boolean => rgx.test(email)\n\n// eslint-disable-next-line default-param-last\nexport const emailMatcher = (domain: string, prefix = '', suffix = '', email:string): boolean => {\n const rgx: RegExp = regexBuilder(domain, prefix, suffix)\n\n return emailMatch(rgx, email)\n}\n\n// const rgx = regexBuilder('gmail.com', 'ext.')\n// const rgx2 = regexBuilder('gmail.com', '', 'ddssds')\n\n// console.log(rgx.test('ddssds@gmail.com'))\n// console.log(rgx.test('extddssds@gmail.com'))\n// console.log(rgx.test('ext.ddssds@gmail.com'))\n\n// console.log(rgx2.test('xddssds@gmail.com'))\n// console.log(rgx2.test('extddssds@gmail.com'))\n// console.log(rgx2.test('ext.ddssds@gmail.com'))\n"],"names":["regexBuilder","domain","prefix","suffix","normPrefix","normSuffix","emailMatch","rgx","email","emailMatcher"],"mappings":"AAAO,MAAMA,IACX,CAACC,GAAgBC,IAAS,IAAIC,IAAS,OAAe;AACtD,QAAMC,IAAaF,EAAO,QAAQ,KAAK,KAAK,GACtCG,IAAaF,EAAO,QAAQ,KAAK,KAAK;AAE5C,SAAIC,KAAcC,IACT,IAAI;AAAA,IACT,KAAKD,CAAU,WAAWC,CAAU,OAAOJ,CAAM;AAAA,EAAA,IAE/CG,IACG,IAAI;AAAA,IACT,KAAKA,CAAU,YAAYH,CAAM;AAAA,EAAA,IAE/BI,IACG,IAAI;AAAA,IACT,UAAUA,CAAU,OAAOJ,CAAM;AAAA,EAAA,IAG9B,IAAI;AAAA,IACT,KAAKA,CAAM;AAAA,EAAA;AAEf,GAEaK,IAAa,CAACC,GAAYC,MAA0BD,EAAI,KAAKC,CAAK,GAGlEC,IAAe,CAACR,GAAgBC,IAAS,IAAIC,IAAS,IAAIK,MAA0B;AAC/F,QAAMD,IAAcP,EAAaC,GAAQC,GAAQC,CAAM;AAEvD,SAAOG,EAAWC,GAAKC,CAAK;AAC9B;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sources":["../../../../src/core/utils/helpers/file.ts"],"sourcesContent":["export const cleanCsvLines = (data:string): string => {\n if (!data || !data.length) {\n return data\n }\n\n let lineDelimiter = '\\r\\n'\n let lines: string[] = data.split(lineDelimiter)\n\n if (lines.length <= 1) {\n lineDelimiter = '\\n'\n lines = data.split(lineDelimiter)\n }\n\n let linesNum = lines.length\n\n // eslint-disable-next-line no-cond-assign\n // eslint-disable-next-line no-plusplus\n while (linesNum--) {\n if (lines[linesNum].trim() === '' || lines[linesNum].split(';').join('').trim() === '') {\n lines.splice(linesNum, 1)\n }\n }\n return lines.join(lineDelimiter)\n}\n\nexport const formatFilePath = (filePath?: string): string | undefined => filePath?.split('/')?.pop()\n"],"names":["cleanCsvLines","data","lineDelimiter","lines","linesNum","formatFilePath","filePath","_a"],"mappings":"AAAO,MAAMA,IAAgB,CAACC,MAAwB;AACpD,MAAI,CAACA,KAAQ,CAACA,EAAK;AACjB,WAAOA;AAGT,MAAIC,IAAgB;AAAA,GAChBC,IAAkBF,EAAK,MAAMC,CAAa;AAE9C,EAAIC,EAAM,UAAU,MAClBD,IAAgB;AAAA,GAChBC,IAAQF,EAAK,MAAMC,CAAa;AAGlC,MAAIE,IAAWD,EAAM;AAIrB,SAAOC;AACL,KAAID,EAAMC,CAAQ,EAAE,KAAA,MAAW,MAAMD,EAAMC,CAAQ,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,KAAA,MAAW,OAClFD,EAAM,OAAOC,GAAU,CAAC;AAG5B,SAAOD,EAAM,KAAKD,CAAa;AACjC,GAEaG,IAAiB,CAACC,MAAA;AAzBxB,MAAAC;AAyBkE,UAAAA,IAAAD,KAAA,gBAAAA,EAAU,MAAM,SAAhB,gBAAAC,EAAsB;AAAA;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileValidator.js","sources":["../../../../src/core/utils/helpers/fileValidator.ts"],"sourcesContent":["import { fileNameExt } from './textValueOperations'\n\nexport const parseCSVdata = (data: string, columnDelimiter = ';'): {\n firstLine: string\n lines: string[]\n columns: null | string[]\n numColumns: number\n} => {\n let lines: string[] = data.split('\\r\\n')\n\n if (lines.length <= 1) {\n lines = data.split('\\n')\n }\n\n const firstLine: string = lines.shift() as string\n const columns: null | string[] = firstLine ? firstLine.split(columnDelimiter) : null\n const numColumns: number = columns ? columns.length : 0\n\n return {\n firstLine,\n lines,\n columns,\n numColumns,\n }\n}\n\nexport const validateLineNumColumns\n = (lineColumns: Array<string>, numColumns: number, line: string, index: number): ErrorMessage | null => {\n if (lineColumns.length !== numColumns) {\n // errors.push(`Line number of cells is not equal to the number of columns: \"${line}, index: ${index}\"`)\n return {\n message: 'errors.uploadInput.file.line.invalid',\n params: { line, index: index + 1 } } as ErrorMessage\n }\n return null\n }\n\nexport const validateLineCellTrimmed\n = (cell: string, line: string, lineIndex: number, cellIndex: number): ErrorMessage | null => {\n if (cell !== cell.trim()) {\n return {\n message: 'errors.uploadInput.file.cell.invalid',\n params: {\n line, cell, lineIndex, cellIndex,\n },\n } as ErrorMessage\n }\n return null\n }\n\nexport const validateCSVlines = (lines: string[], numColumns: number, columnDelimiter = ';'): ErrorMessage[] => {\n const errors: ErrorMessage[] = []\n // lines without first line of columns (hence the index + 1 in error message)\n let linesNum = lines.length\n\n // eslint-disable-next-line no-cond-assign\n // eslint-disable-next-line no-plusplus\n while (linesNum--) {\n if (lines[linesNum].trim() === '' || lines[linesNum].split(';').join('').trim() === '') {\n lines.splice(linesNum, 1)\n }\n }\n\n let lineColumns = null\n let errorLineNumColumns = null\n let errorLineCellNotTrimmed = null\n\n lines.forEach((line, index) => {\n lineColumns = line.split(columnDelimiter)\n\n errorLineNumColumns = validateLineNumColumns(lineColumns, numColumns, line, index)\n errorLineNumColumns && errors.push(errorLineNumColumns)\n\n lineColumns.forEach((cell, cellIndex) => {\n errorLineCellNotTrimmed = validateLineCellTrimmed(cell, line, index, cellIndex)\n errorLineCellNotTrimmed && errors.push(errorLineCellNotTrimmed)\n })\n })\n\n return errors\n}\n\n/*\n// maybe add aditional mime types\nhttp://fileformats.archiveteam.org/wiki/CSV\n['text/csv','application/csv', 'text/x-csv',\n'application/x-csv', 'text/x-comma-separated-values', 'text/comma-separated-values']\n*/\n\nexport type ErrorMessage = {\n message: string\n params: Record<string, string | number>\n}\n\nexport const validateCSVFile\n= (file: File, callBack: (errors?: (ErrorMessage | string)[] | null) => void, columnDelimiter = ';'): void => {\n if (!file) {\n callBack(['errors.uploadInput.file.empty'])\n return\n }\n if (fileNameExt(file.name) !== 'csv' || !['text/csv', 'text/plain', 'application/vnd.ms-excel'].includes(file.type)) {\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n const reader = new FileReader()\n\n reader.readAsText(file)\n reader.onloadend = (): void => {\n const data = reader.result ? reader.result.toString() : ''\n\n const { numColumns, lines } = parseCSVdata(data, columnDelimiter)\n\n if (numColumns < 2) {\n callBack(['errors.uploadInput.file.numColumns'])\n return\n }\n\n if (lines?.length < 1) {\n callBack(['errors.uploadInput.file.numLines'])\n return\n }\n\n const errors: (ErrorMessage | string)[] = validateCSVlines(lines, numColumns, columnDelimiter)\n\n const flatErrors: string[] = errors.map((errorMsg: ErrorMessage | string) => (\n (errorMsg as ErrorMessage)?.message ? JSON.stringify(errorMsg) : String(errorMsg)))\n\n const errorsArray: string[] = [...new Set(flatErrors)].map((serialized: string) => JSON.parse(serialized))\n\n // callBack && callBack(errorsArray.length ? errorsArray?.splice?.(0, 6) : null)\n callBack && callBack(errorsArray.length ? errorsArray : null)\n }\n\n reader.onerror = (error): void => {\n console.error(error)\n }\n}\n\nexport const validateSDFFile\n= (file: File, callBack: (errors?: (ErrorMessage | string)[] | null) => void, columnDelimiter = ';'): void => {\n if (!file) {\n callBack(['errors.uploadInput.file.empty'])\n return\n }\n if (fileNameExt(file.name) !== 'sdf') {\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n const reader = new FileReader()\n\n reader.readAsText(file)\n reader.onloadend = (): void => {\n const data = reader.result ? reader.result.toString() : ''\n\n const { lines } = parseCSVdata(data, columnDelimiter)\n\n if (lines?.length < 1) {\n callBack(['errors.uploadInput.file.numLines'])\n return\n }\n\n callBack && callBack(null)\n }\n\n reader.onerror = (error): void => {\n console.error(error)\n }\n}\n\nexport const validateJSONFile\n= (file: File, callBack: (errors?: (ErrorMessage | string)[] | null) => void, columnDelimiter = ';'): void => {\n if (!file) {\n callBack(['errors.uploadInput.file.empty'])\n return\n }\n if (fileNameExt(file.name) !== 'json') {\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n const reader = new FileReader()\n\n reader.readAsText(file)\n reader.onloadend = (): void => {\n const data = reader.result ? reader.result.toString() : ''\n\n try {\n const parsed = JSON.parse(data)\n\n JSON.stringify(parsed)\n } catch (error) {\n console.error(error)\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n\n const { lines } = parseCSVdata(data, columnDelimiter)\n\n if (lines?.length < 1) {\n callBack(['errors.uploadInput.file.numLines'])\n return\n }\n\n callBack && callBack(null)\n }\n\n reader.onerror = (error): void => {\n console.error(error)\n }\n}\n"],"names":["parseCSVdata","data","columnDelimiter","lines","firstLine","columns","numColumns","validateLineNumColumns","lineColumns","line","index","validateLineCellTrimmed","cell","lineIndex","cellIndex","validateCSVlines","errors","linesNum","errorLineNumColumns","errorLineCellNotTrimmed","validateCSVFile","file","callBack","fileNameExt","reader","flatErrors","errorMsg","errorsArray","serialized","error","validateSDFFile","validateJSONFile","parsed"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectOperations.js","sources":["../../../../src/core/utils/helpers/objectOperations.ts"],"sourcesContent":["export const duplicatesInArray = (arr: unknown[]): null | Record<string, number> => {\n const setFromArr = new Set(arr)\n\n if (Array.from(setFromArr).length !== arr.length) {\n const foundDuplicates: Record<string, number> = {}\n const itemsMap: Record<string, number> = {}\n\n arr.forEach((item: unknown) => {\n if (itemsMap[String(item)] !== undefined) {\n foundDuplicates[String(item)] = itemsMap[String(item)] + 1\n itemsMap[String(item)] += 1\n } else {\n itemsMap[String(item)] = 1\n }\n })\n return foundDuplicates\n }\n return null\n}\n\ntype Replacer = ((this: any, key: string, value: any) => any) | undefined\ntype Options = {\n graphQL?: boolean\n [key: string]: any\n}\n\nexport const formatJsonString = (\n value: any,\n replacer?: Replacer | undefined,\n space?: string | number | undefined,\n { graphQL, ...options }: Options = {},\n): string => {\n if (!graphQL) {\n return JSON.stringify(value, replacer, space)\n }\n const strValues: string[] = []\n\n Object.entries(value).forEach(([key, value]) => {\n let str = `${key}: `\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n str += `${formatJsonString(value, replacer, space, { graphQL, ...options })}`\n } else {\n str += JSON.stringify(value)\n }\n strValues.push(str)\n })\n return `{${strValues.join(', ')}}`\n}\n\nconst simpleIdentiy = (value: string | number): string => `${value}`\n\nexport const formatObj = (\n obj: Record<string, string | number>,\n delimiter = ', ',\n mapValue: ((value: string | number) => string) = simpleIdentiy,\n mapKey: ((value: string | number) => string) = simpleIdentiy,\n): string => (typeof obj === 'object'\n ? Object.entries(obj).map(([key, value]) => `${mapKey(key)}: ${mapValue(value)}`).join(delimiter)\n : '')\n\n\nexport const formatObj2 = (\n obj: Record<string, string | number>,\n delimiter = ', ',\n mapValue: ((value: string | number) => string) = simpleIdentiy,\n mapKey: ((value: string | number) => string) = simpleIdentiy,\n): string => {\n if (typeof obj === 'object' && Array.isArray(obj)) {\n return obj\n .map((objValue) => formatObj2(objValue, delimiter, mapValue, mapKey))\n .join(delimiter)\n }\n\n if (typeof obj === 'object') {\n return Object.entries(obj)\n .map(([key, value]) => {\n const mappedKey = mapKey(key)\n const mappedValue = mapValue(typeof value === 'object' ? formatObj2(value) : value)\n\n return `${mappedKey ? `${mappedKey}: ` : ''}${mappedValue}`\n })\n .join(delimiter)\n }\n return ''\n}\n\n\n\n\n\nexport const chunkArray = (dataArray: any[], chunkSize = 100): (any[])[] => {\n const result = []\n\n const len = dataArray.length\n\n for (let i = 0; i < len; i += chunkSize) {\n const chunk = dataArray.slice(i, i + chunkSize)\n\n result.push(chunk)\n }\n return result\n}\n\nexport type TreeNodeStr = (string | TreeNodeStr)[]\n\ntype TreeNode = {\n name: string\n children?: Record<string, TreeNode>\n}\n\n// ['app', ['user', 'dashboard', ['ui', ['header', 'footer', 'menu'], 'realTime']]]\n\nexport const arrayToObjectTree = (itemsInTree: TreeNodeStr[]): Record<string, TreeNode> => {\n let previousParent: TreeNode\n\n const innerMake = (items: TreeNodeStr[]): Record<string, TreeNode> => {\n const treeObject: Record<string, TreeNode> = items.reduce((tree: Record<string, TreeNode>, item, index, array) => {\n let resolvedTree: Record<string, TreeNode> = { ...tree }\n\n if (typeof item === 'string') {\n resolvedTree[item] = { name: item }\n if (!previousParent) {\n previousParent = resolvedTree[item]\n }\n\n if (index === 0 && Array.isArray(array[1])) {\n previousParent = resolvedTree[item]\n }\n }\n if (Array.isArray(item)) {\n let parent = previousParent\n\n if (index > 1) {\n resolvedTree[item[0] as string] = resolvedTree[item[0] as string] || { name: item[0] }\n parent = resolvedTree[item[0] as string]\n\n resolvedTree = { ...resolvedTree, ...innerMake(item as TreeNodeStr[]) }\n } else {\n parent.children = innerMake(item as TreeNodeStr[])\n }\n }\n return resolvedTree\n }, {})\n\n return treeObject\n }\n\n return innerMake(itemsInTree)\n}\n"],"names":["duplicatesInArray","arr","setFromArr","foundDuplicates","itemsMap","item","formatJsonString","value","replacer","space","graphQL","options","strValues","key","str","simpleIdentiy","formatObj","obj","delimiter","mapValue","mapKey","formatObj2","objValue","mappedKey","mappedValue","chunkArray","dataArray","chunkSize","result","len","i","chunk","arrayToObjectTree","itemsInTree","previousParent","innerMake","items","tree","index","array","resolvedTree","parent"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ const y = (t, o, e) => t ? o : e, s = (t) => (o) => {
2
+ const e = {};
3
+ return (...n) => {
4
+ const c = t(...n);
5
+ return c in e || (e[c] = o(...n)), e[c];
6
+ };
7
+ }, a = s((...t) => String(t[0])), p = s((...t) => JSON.stringify(t)), f = (t = (...o) => JSON.stringify(o)) => s(t), T = (t, o = 100, e = !1) => {
8
+ let n;
9
+ return function(...i) {
10
+ const r = this, u = () => {
11
+ clearTimeout(n), n = null, e || t.apply(r, i);
12
+ }, l = e && !n;
13
+ clearTimeout(n), n = setTimeout(u, o), l && t.apply(r, i);
14
+ };
15
+ }, d = (t) => new Promise((o) => {
16
+ setTimeout(() => o(`delayed: ${t}`), t);
17
+ }), m = (async () => {
18
+ }).constructor, z = (t) => t.constructor === m.prototype.constructor;
19
+ export {
20
+ m as AsyncFunctionTemplate,
21
+ T as debounce,
22
+ d as delay,
23
+ z as isFunctionAsync,
24
+ a as memoize,
25
+ p as memoizeComplex,
26
+ f as memoizer,
27
+ y as nestedTernary
28
+ };
29
+ //# sourceMappingURL=other.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"other.js","sources":["../../../../src/core/utils/helpers/other.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const nestedTernary = (condition: boolean, branchA: any, branchB: any): any => (condition ? branchA : branchB)\n\n/**\n * Creates a memoized version of a function using a custom key function.\n * Replaces ramda's memoizeWith — same API contract.\n */\nconst memoizeWith = (keyFn: (...args: any[]) => string) =>\n <T extends (...args: any[]) => any>(fn: T): T => {\n const cache: Record<string, any> = {}\n return ((...args: any[]) => {\n const key = keyFn(...args)\n if (!(key in cache)) {\n cache[key] = fn(...args)\n }\n return cache[key]\n }) as unknown as T\n }\n\nexport const memoize = memoizeWith((...args) => String(args[0]))\n\n// Beware fellow developer, this is to be used with caution and precison\nexport const memoizeComplex = memoizeWith((...args) => JSON.stringify(args))\n\nexport const memoizer\n= (memoizeFunc = (...args: any[]): string => JSON.stringify(args)) => memoizeWith(memoizeFunc)\n\nexport const debounce = (func: () => void, wait = 100, immediate = false): () => void => {\n let timeout: any\n\n return function debounced(...args) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context: unknown = this\n const later = (): void => {\n clearTimeout(timeout)\n timeout = null\n if (!immediate) {\n func.apply(context, args)\n }\n }\n const callNow = immediate && !timeout\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) {\n func.apply(context, args)\n }\n }\n}\n\nexport const delay = (delay: number): Promise<string> => new Promise((resolve) => {\n setTimeout(() => resolve(`delayed: ${delay}`), delay)\n})\n\nexport const AsyncFunctionTemplate = (async (): Promise<void> => {}).constructor\n\nexport const isFunctionAsync = (\n func: (...args: any[]) => unknown,\n): boolean => func.constructor === AsyncFunctionTemplate.prototype.constructor\n"],"names":["nestedTernary","condition","branchA","branchB","memoizeWith","keyFn","fn","cache","args","key","memoize","memoizeComplex","memoizer","memoizeFunc","debounce","func","wait","immediate","timeout","context","later","callNow","delay","resolve","AsyncFunctionTemplate","isFunctionAsync"],"mappings":"AACO,MAAMA,IAAgB,CAACC,GAAoBC,GAAcC,MAAuBF,IAAYC,IAAUC,GAMvGC,IAAc,CAACC,MACnB,CAAoCC,MAAa;AAC/C,QAAMC,IAA6B,CAAA;AACnC,SAAQ,IAAIC,MAAgB;AAC1B,UAAMC,IAAMJ,EAAM,GAAGG,CAAI;AACzB,WAAMC,KAAOF,MACXA,EAAME,CAAG,IAAIH,EAAG,GAAGE,CAAI,IAElBD,EAAME,CAAG;AAAA,EAClB;AACF,GAEWC,IAAUN,EAAY,IAAII,MAAS,OAAOA,EAAK,CAAC,CAAC,CAAC,GAGlDG,IAAiBP,EAAY,IAAII,MAAS,KAAK,UAAUA,CAAI,CAAC,GAE9DI,IACX,CAACC,IAAc,IAAIL,MAAwB,KAAK,UAAUA,CAAI,MAAMJ,EAAYS,CAAW,GAEhFC,IAAW,CAACC,GAAkBC,IAAO,KAAKC,IAAY,OAAsB;AACvF,MAAIC;AAEJ,SAAO,YAAsBV,GAAM;AAIjC,UAAMW,IAAmB,MACnBC,IAAQ,MAAY;AACxB,mBAAaF,CAAO,GACpBA,IAAU,MACLD,KACHF,EAAK,MAAMI,GAASX,CAAI;AAAA,IAE5B,GACMa,IAAUJ,KAAa,CAACC;AAE9B,iBAAaA,CAAO,GACpBA,IAAU,WAAWE,GAAOJ,CAAI,GAC5BK,KACFN,EAAK,MAAMI,GAASX,CAAI;AAAA,EAE5B;AACF,GAEac,IAAQ,CAACA,MAAmC,IAAI,QAAQ,CAACC,MAAY;AAChF,aAAW,MAAMA,EAAQ,YAAYD,CAAK,EAAE,GAAGA,CAAK;AACtD,CAAC,GAEYE,KAAyB,YAA2B;AAAC,GAAG,aAExDC,IAAkB,CAC7BV,MACYA,EAAK,gBAAgBS,EAAsB,UAAU;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sources":["../../../../src/core/utils/helpers/text.ts"],"sourcesContent":["import _sanitize from 'sanitize-html'\n\nexport const defaultSanitizeConfig = {\n allowedTags: ['b', 'i', 'em', 'strong', 'a', 'p', 'span', 'li', 'ul', 'div', 'h1', 'h2', 'h3', 'h4', 'img'],\n allowedAttributes: {\n a: ['href', 'target', 'style', 'class', 'onclick'],\n '*': ['href', 'target', 'style', 'align', 'alt', 'center', 'bgcolor', 'style', 'src'],\n },\n}\n\nexport const sanitizeHtml\n = (\n text: string,\n sanitizeConfig?: typeof defaultSanitizeConfig,\n ): ReturnType<typeof _sanitize> => _sanitize(text, sanitizeConfig || defaultSanitizeConfig)\n\nexport const composeId = (text: string): string => text?.toLowerCase?.()?.replace(/\\s+/g, '-')\n"],"names":["defaultSanitizeConfig","sanitizeHtml","text","sanitizeConfig","_sanitize","composeId","_b","_a"],"mappings":";AAEO,MAAMA,IAAwB;AAAA,EACnC,aAAa,CAAC,KAAK,KAAK,MAAM,UAAU,KAAK,KAAK,QAAQ,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,EAC1G,mBAAmB;AAAA,IACjB,GAAG,CAAC,QAAQ,UAAU,SAAS,SAAS,SAAS;AAAA,IACjD,KAAK,CAAC,QAAQ,UAAU,SAAS,SAAS,OAAO,UAAU,WAAW,SAAS,KAAK;AAAA,EAAA;AAExF,GAEaC,IACT,CACAC,GACAC,MACiCC,EAAUF,GAAMC,KAAkBH,CAAqB,GAE/EK,IAAY,CAACH;;AAAyB,UAAAI,KAAAC,IAAAL,KAAA,gBAAAA,EAAM,gBAAN,gBAAAK,EAAA,KAAAL,OAAA,gBAAAI,EAAuB,QAAQ,QAAQ;AAAA;"}
@@ -0,0 +1,17 @@
1
+ const a = (e) => e ? e.toLowerCase() : "", l = (e) => e ? e.toUpperCase() : "", s = (e) => e ? e.toString().replace(/ /g, "") : "", i = (e) => e.slice((e.lastIndexOf(".") - 1 >>> 0) + 2), r = (e) => {
2
+ var n, o;
3
+ return (o = (n = e == null ? void 0 : e.normalize("NFD")) == null ? void 0 : n.replace) == null ? void 0 : o.call(n, /[\u0300-\u036f]/g, "");
4
+ }, u = (e, n, o = !0, c = !0) => !n || !e || !n.trim() || !e.trim() ? !1 : o && c ? r(n.toLowerCase()).includes(r(e.toLowerCase())) : o ? n.toLowerCase().includes(e.toLowerCase()) : c ? r(n).includes(r(e)) : n.includes(e), p = (e) => e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), g = (e, n = 0, o = "...") => !n || e.length <= n ? e : `${e.substr(0, n)}${o}`, t = (e) => e && r(e == null ? void 0 : e.toLocaleLowerCase().replaceAll(/\s/g, "-").replaceAll(/["]/g, "")), f = (e) => e && encodeURIComponent(t(e));
5
+ export {
6
+ p as escapeRegExp,
7
+ i as fileNameExt,
8
+ u as findStringInText,
9
+ r as normalizeString,
10
+ s as removeWhitespaces,
11
+ t as sanitizeId,
12
+ f as sanitizePathId,
13
+ a as toLowerCase,
14
+ l as toUpperCase,
15
+ g as truncateText
16
+ };
17
+ //# sourceMappingURL=textValueOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textValueOperations.js","sources":["../../../../src/core/utils/helpers/textValueOperations.ts"],"sourcesContent":["// todo memoize\nexport const toLowerCase = (str: string | number): string | number => (str ? (str as string).toLowerCase() : '')\n\n// todo memoize\nexport const toUpperCase = (str: string): string => (str ? str.toUpperCase() : '')\n\n// todo memoize\nexport const removeWhitespaces = (str: string | number): string | number => (str ? str.toString()\n .replace(/ /g, '') as string : '')\n\n// eslint-disable-next-line no-bitwise\nexport const fileNameExt = (fileName: string): string => fileName.slice((fileName.lastIndexOf('.') - 1 >>> 0) + 2)\n\nexport const normalizeString = (str: string): string => str?.normalize('NFD')?.replace?.(/[\\u0300-\\u036f]/g, '')\n\nexport const findStringInText = (str: string, text: string, ci = true, norm = true): boolean => {\n if (!text || !str || !text.trim() || !str.trim()) {\n return false\n }\n\n if (ci && norm) {\n return normalizeString(text.toLowerCase()).includes(normalizeString(str.toLowerCase()))\n }\n\n if (ci) {\n return text.toLowerCase().includes(str.toLowerCase())\n }\n\n if (norm) {\n return normalizeString(text).includes(normalizeString(str))\n }\n\n return text.includes(str)\n}\n\n// eslint-disable-next-line no-useless-escape\nexport const escapeRegExp = (str: string): string => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\n\nexport const truncateText = (text: string, maxNumChars = 0, indicator = '...'): string => {\n if (!maxNumChars || text.length <= maxNumChars) {\n return text\n }\n return `${text.substr(0, maxNumChars)}${indicator}`\n}\n\nexport const sanitizeId\n = (id: string): string => id && normalizeString(id?.toLocaleLowerCase().replaceAll(/\\s/g, '-').replaceAll(/[\"]/g, ''))\n\nexport const sanitizePathId\n = (id: string): string => id && encodeURIComponent(sanitizeId(id))\n"],"names":["toLowerCase","str","toUpperCase","removeWhitespaces","fileNameExt","fileName","normalizeString","_a","_b","findStringInText","text","ci","norm","escapeRegExp","truncateText","maxNumChars","indicator","sanitizeId","id","sanitizePathId"],"mappings":"AACO,MAAMA,IAAc,CAACC,MAA2CA,IAAOA,EAAe,gBAAgB,IAGhGC,IAAc,CAACD,MAAyBA,IAAMA,EAAI,gBAAgB,IAGlEE,IAAoB,CAACF,MAA2CA,IAAMA,EAAI,WACpF,QAAQ,MAAM,EAAE,IAAc,IAGpBG,IAAc,CAACC,MAA6BA,EAAS,OAAOA,EAAS,YAAY,GAAG,IAAI,MAAM,KAAK,CAAC,GAEpGC,IAAkB,CAACL,MAAA;AAZzB,MAAAM,GAAAC;AAYiD,UAAAA,KAAAD,IAAAN,KAAA,gBAAAA,EAAK,UAAU,WAAf,gBAAAM,EAAuB,YAAvB,gBAAAC,EAAA,KAAAD,GAAiC,oBAAoB;AAAA,GAEhGE,IAAmB,CAACR,GAAaS,GAAcC,IAAK,IAAMC,IAAO,OACxE,CAACF,KAAQ,CAACT,KAAO,CAACS,EAAK,UAAU,CAACT,EAAI,SACjC,KAGLU,KAAMC,IACDN,EAAgBI,EAAK,aAAa,EAAE,SAASJ,EAAgBL,EAAI,YAAA,CAAa,CAAC,IAGpFU,IACKD,EAAK,YAAA,EAAc,SAAST,EAAI,aAAa,IAGlDW,IACKN,EAAgBI,CAAI,EAAE,SAASJ,EAAgBL,CAAG,CAAC,IAGrDS,EAAK,SAAST,CAAG,GAIbY,IAAe,CAACZ,MAAwBA,EAAI,QAAQ,uCAAuC,MAAM,GAEjGa,IAAe,CAACJ,GAAcK,IAAc,GAAGC,IAAY,UAClE,CAACD,KAAeL,EAAK,UAAUK,IAC1BL,IAEF,GAAGA,EAAK,OAAO,GAAGK,CAAW,CAAC,GAAGC,CAAS,IAGtCC,IACT,CAACC,MAAuBA,KAAMZ,EAAgBY,KAAA,gBAAAA,EAAI,oBAAoB,WAAW,OAAO,KAAK,WAAW,QAAQ,GAAG,GAE1GC,IACT,CAACD,MAAuBA,KAAM,mBAAmBD,EAAWC,CAAE,CAAC;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sources":["../../../../src/core/utils/helpers/ui.ts"],"sourcesContent":["export const mapSerReplacer\n= (key: string, value: unknown): unknown | { dataType: string; value: Array<unknown>} => {\n if (value instanceof Map) {\n return {\n dataType: 'Map',\n value: Array.from(value.entries()), // or with spread: value: [...value]\n }\n }\n return value\n}\n\nexport type TClassName = string | boolean | null | undefined\nexport const classNames = (...classes: TClassName[]): string => classes\n .filter((className: TClassName) => (typeof className === 'string' && className !== undefined && className !== null))\n .filter(Boolean).join(' ')\n\n\nexport type PropsCategoriesType = {\n dataProps: Record<string, unknown>\n restProps: Record<string, unknown>\n};\n\nexport const parseProps = (props: Record<string, unknown>):PropsCategoriesType => {\n const dataProps: Record<string, unknown> = {}\n const restProps: Record<string, unknown> = {}\n\n Object.entries(props).forEach(([key, value]) => {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 4) === 'data') {\n dataProps[key] = value\n } else {\n restProps[key] = value\n }\n })\n return { dataProps, restProps }\n}\n\n\n\ntype GeneratorIdCallable = (token: string, increment?: boolean, forcedValue?: number | undefined) => string\ntype GenerateId = { tokens?: Record<string, number | null | undefined> } & GeneratorIdCallable\n\nexport const generateId: GenerateId = (\n token: string,\n increment = true,\n forcedValue: number | undefined = undefined,\n) => {\n generateId.tokens = generateId.tokens || {}\n\n if (forcedValue !== undefined && forcedValue !== null) {\n generateId.tokens[token] = forcedValue\n return `${token}${generateId?.tokens?.[token] as number}`\n }\n\n const noValue = generateId?.tokens[token] === undefined || generateId?.tokens[token] === null\n\n generateId.tokens[token] = generateId.tokens[token] || 0\n\n if (noValue) {\n return `${token}${0}`\n }\n\n if (increment) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n generateId.tokens[token] += 1\n\n return `${token}${generateId?.tokens?.[token] as number}`\n }\n\n return `${token}${generateId?.tokens?.[token] as number}`\n}\n\ntype FAnchorClick = { aElement?: HTMLAnchorElement | null }\n & ((href: string, target?: string, remove?: boolean) => void)\n\nexport const anchorClick: FAnchorClick = (href: string, target = '_top', remove = false): HTMLAnchorElement | null => {\n anchorClick.aElement = anchorClick.aElement || document.createElement('a')\n\n const { aElement } = anchorClick\n\n aElement.setAttribute('href', href)\n aElement.setAttribute('target', target)\n\n aElement.dataset.date = `${Date.now()}`\n aElement.click()\n if (remove) {\n aElement.remove()\n anchorClick.aElement = null\n }\n\n return aElement\n}\n\n\n\nexport type NoopEvent = {\n preventDefault?: () => void\n stopPropagation?: () => void\n stopImmediatePropagation?: () => void\n} | Event\n\nexport const noop = (event?: NoopEvent): void => {\n event?.preventDefault?.()\n event?.stopPropagation?.()\n event?.stopImmediatePropagation?.()\n}\n\n/**\n * Type definition for theme map.\n * @typedef {Object} ThemeMap\n * @property {string} dark - CSS class for the dark theme.\n * @property {string} light - CSS class for the light theme.\n */\nexport type ThemeMap = {\n dark: string\n light: string\n}\n\nconst THEME_PROP = '__eskit_themes__'\n\nconst defaultThemes: ThemeMap = {\n dark: 'theme-dark',\n light: 'theme-light',\n}\n\n/**\n * Reads the theme config stored on the given element.\n * Falls back to defaultThemes when no config has been set.\n * Scoping to the element means different microfrontends (different roots) are isolated,\n * while all bundles targeting the same element share one config.\n * @param {HTMLElement} [element] - The element to read from. Defaults to document.body.\n * @returns {ThemeMap} The current base themes for the element.\n */\nexport const getBaseThemes = (element?: HTMLElement): ThemeMap => {\n const el = element ?? document.body\n\n return (el as unknown as Record<string, unknown>)[THEME_PROP] as ThemeMap ?? defaultThemes\n}\n\n/**\n * Sets the base theme class names on the given element.\n * @param {ThemeMap} themes - CSS classes for dark and light themes.\n * @param {HTMLElement} [element] - The element to store config on. Defaults to document.body.\n */\nexport const setThemeClassNames = (themes: ThemeMap, element?: HTMLElement): void => {\n const el = element ?? document.body\n const store = el as unknown as Record<string, unknown>\n\n store[THEME_PROP] = themes\n}\n\n/**\n * Switches the color theme of the document.\n * @param {boolean} isDark - Flag to determine if the dark theme should be applied.\n * @param {HTMLElement} [htmlElement] - The HTML element to which the theme will be applied.\n * @param {boolean} [findShadows=true] - Flag to determine if shadow DOM elements should also be themed.\n */\nexport const switchColorTheme = (\n isDark: boolean, htmlElement?: HTMLElement, findShadows = true,\n): void => {\n const themes = getBaseThemes(htmlElement)\n const oldClass = isDark ? themes.light : themes.dark\n const newClass = isDark ? themes.dark : themes.light\n\n if (htmlElement) {\n htmlElement.classList.remove(oldClass)\n htmlElement.classList.remove(newClass)\n htmlElement.classList.add(newClass)\n }\n\n if (typeof document !== 'undefined') {\n document.querySelectorAll(`.${oldClass}`).forEach((element) => {\n element.classList.add(`.${newClass}`)\n element.classList.remove(`.${oldClass}`)\n })\n\n if (findShadows) {\n document.querySelectorAll('.shadow-div').forEach((element) => {\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.add(newClass)\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.remove(oldClass)\n })\n\n document.querySelectorAll('esmf-wrapper').forEach((element) => {\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.add(newClass)\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.remove(oldClass)\n\n const firstChild: HTMLElement = element.shadowRoot?.childNodes[0] as HTMLElement\n\n if (firstChild) {\n firstChild.classList.add(newClass)\n firstChild.classList.remove(oldClass)\n }\n })\n }\n }\n}\n\n/**\n * Updates the color theme of the document.\n * @param {boolean} [isDark] - Optional flag to determine if the dark theme should be applied.\n * @param {HTMLElement} [htmlElement] - The HTML element to which the theme will be applied.\n */\nexport const updateColorTheme = (isDark?: boolean, htmlElement?: HTMLElement): void => {\n const el = htmlElement || document.body\n let resolvedIsDark: boolean = isDark || false\n\n if (typeof document !== 'undefined' && isDark === undefined) {\n resolvedIsDark = document.body.classList.contains(getBaseThemes(el).dark)\n }\n switchColorTheme(resolvedIsDark, el)\n}\n\nconst windowMatchMediaChangeEventType = 'change'\n\n/**\n * Observes the user's theme preference and applies the appropriate theme.\n * @param {() => HTMLElement} [getHtmlElement] - Function to get the HTML element to which the theme will be applied.\n * @param {(isDark: boolean) => void} [switchCallback] - Callback function to execute when the theme changes.\n * @returns {() => void} Function to stop observing the theme preference.\n */\nexport const observeThemePreference = (\n getHtmlElement: () => HTMLElement = (): HTMLElement => document.body,\n switchCallback: (isDark: boolean) => void = (isDark: boolean): boolean => isDark,\n): () => void => {\n const switchColorThemeHandler = (isDark: boolean): void => {\n const htmlElement = getHtmlElement()\n\n switchColorTheme?.(isDark, htmlElement)\n switchCallback?.(isDark)\n }\n\n const changeDarkColorThemeHandler = (event: MediaQueryListEvent): void => {\n switchColorThemeHandler(event.matches)\n }\n\n const changeLightColorThemeHandler = (event: MediaQueryListEvent): void => {\n switchColorThemeHandler(!event.matches)\n }\n\n const isDark = window.matchMedia('(prefers-color-scheme: dark)')\n\n try {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener(\n windowMatchMediaChangeEventType, changeDarkColorThemeHandler,\n )\n window.matchMedia('(prefers-color-scheme: light)').removeEventListener(\n windowMatchMediaChangeEventType, changeLightColorThemeHandler,\n )\n } catch (error) {\n console.error(`Error::observeThemePreference::removeEventListener: ${error}`)\n }\n\n switchColorThemeHandler(isDark?.matches)\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener(\n windowMatchMediaChangeEventType, changeDarkColorThemeHandler,\n )\n window.matchMedia('(prefers-color-scheme: light)').addEventListener(\n windowMatchMediaChangeEventType, changeLightColorThemeHandler,\n )\n\n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener(\n windowMatchMediaChangeEventType, changeDarkColorThemeHandler,\n )\n window.matchMedia('(prefers-color-scheme: light)').removeEventListener(\n windowMatchMediaChangeEventType, changeLightColorThemeHandler,\n )\n }\n}\n"],"names":["mapSerReplacer","key","value","classNames","classes","className","parseProps","props","dataProps","restProps","generateId","token","increment","forcedValue","_a","_b","_c","noValue","anchorClick","href","target","remove","aElement","noop","event","THEME_PROP","defaultThemes","getBaseThemes","element","setThemeClassNames","themes","store","switchColorTheme","isDark","htmlElement","findShadows","oldClass","newClass","_d","_e","firstChild","updateColorTheme","el","resolvedIsDark","windowMatchMediaChangeEventType","observeThemePreference","getHtmlElement","switchCallback","switchColorThemeHandler","changeDarkColorThemeHandler","changeLightColorThemeHandler"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valueOperations.js","sources":["../../../../src/core/utils/helpers/valueOperations.ts"],"sourcesContent":["export type Limit = {\n min?: number\n max?: number\n};\n\nexport const numberDefined = (value?: number | undefined | null): boolean => value !== undefined && value !== null\n\nexport const restrictNumberInLimits = (value: number, limit?: Limit): number => Math.max(\n Math.min(value, numberDefined(limit?.max) ? (limit?.max as number) : Infinity),\n numberDefined(limit?.min) ? (limit?.min as number) : -Infinity,\n)\n\nexport enum Operation {\n ADD = 'add',\n SUBTRACT = 'subtract',\n MULTIPLY = 'multiply',\n DIVIDE = 'divide',\n}\n\nexport const numberOperation = (\n value: number,\n operand: number,\n operation: Operation,\n limit?: Limit,\n): number => {\n let result = 0\n\n switch (operation) {\n case Operation.ADD: {\n result = value + operand\n break\n }\n case Operation.SUBTRACT: {\n result = value - operand\n break\n }\n case Operation.MULTIPLY: {\n result = value * operand\n break\n }\n case Operation.DIVIDE: {\n result = operand === 0 ? 0 : value / operand\n break\n }\n default:\n value\n }\n\n return restrictNumberInLimits(result, limit)\n}\n\nexport const incerementValue\n // eslint-disable-next-line default-param-last\n = (value: number, inc = 1, limit?: Limit): number => numberOperation(value, inc, Operation.ADD, limit)\n\nexport const decrementValue\n // eslint-disable-next-line default-param-last\n = (value: number, inc = 1, limit?: Limit): number => numberOperation(value, inc, Operation.SUBTRACT, limit)\n\nexport const setValue = (\n value: number | string | Record<string, unknown> | any,\n limit?: Limit,\n): any => (typeof value === 'number' && limit ? restrictNumberInLimits(value, limit) : value)\n"],"names":["numberDefined","value","restrictNumberInLimits","limit","Operation","numberOperation","operand","operation","result","incerementValue","inc","decrementValue","setValue"],"mappings":"AAKO,MAAMA,IAAgB,CAACC,MAAsEA,KAAU,MAEjGC,IAAyB,CAACD,GAAeE,MAA0B,KAAK;AAAA,EACnF,KAAK,IAAIF,GAAOD,EAAcG,KAAA,gBAAAA,EAAO,GAAG,IAAKA,KAAA,gBAAAA,EAAO,MAAiB,KAAQ;AAAA,EAC7EH,EAAcG,KAAA,gBAAAA,EAAO,GAAG,IAAKA,KAAA,gBAAAA,EAAO,MAAiB;AACvD;AAEO,IAAKC,sBAAAA,OACVA,EAAA,MAAM,OACNA,EAAA,WAAW,YACXA,EAAA,WAAW,YACXA,EAAA,SAAS,UAJCA,IAAAA,KAAA,CAAA,CAAA;AAOL,MAAMC,IAAkB,CAC7BJ,GACAK,GACAC,GACAJ,MACW;AACX,MAAIK,IAAS;AAEb,UAAQD,GAAA;AAAA,IACN,KAAK,OAAe;AAClB,MAAAC,IAASP,IAAQK;AACjB;AAAA,IACF;AAAA,IACA,KAAK,YAAoB;AACvB,MAAAE,IAASP,IAAQK;AACjB;AAAA,IACF;AAAA,IACA,KAAK,YAAoB;AACvB,MAAAE,IAASP,IAAQK;AACjB;AAAA,IACF;AAAA,IACA,KAAK,UAAkB;AACrB,MAAAE,IAASF,MAAY,IAAI,IAAIL,IAAQK;AACrC;AAAA,IACF;AAAA,EAEE;AAGJ,SAAOJ,EAAuBM,GAAQL,CAAK;AAC7C,GAEaM,IAET,CAACR,GAAeS,IAAM,GAAGP,MAA0BE,EAAgBJ,GAAOS,GAAK,OAAeP,CAAK,GAE1FQ,IAET,CAACV,GAAeS,IAAM,GAAGP,MAA0BE,EAAgBJ,GAAOS,GAAK,YAAoBP,CAAK,GAE/FS,IAAW,CACtBX,GACAE,MACS,OAAOF,KAAU,YAAYE,IAAQD,EAAuBD,GAAOE,CAAK,IAAIF;"}
@@ -0,0 +1,125 @@
1
+ import { keyExtractor as r, keyExtractorFunction as a } from "./keyExtractor.js";
2
+ import { dateRangeFormat as i, getDateTime as m, getTimeFromNow as n, getTimeFromNowOriginal as l, getTimeTo as s } from "./date.js";
3
+ import { ArrayFirst as p, ArrayLast as f } from "./array.js";
4
+ import { AsyncFunctionTemplate as x, debounce as d, delay as u, isFunctionAsync as S, memoize as g, memoizeComplex as h, memoizer as y, nestedTernary as C } from "./helpers/other.js";
5
+ import { DATE_FORMAT as E, DATE_TIME_FORMAT as F, formatDate as M, formatDateTime as N, formatDateToTimestamp as b, getDate as A } from "./helpers/date.js";
6
+ import { NON_EXISTENT_CHANNEL as I } from "./appState/peregrineMQ/peregrineMQ.types.js";
7
+ import { Operation as V, decrementValue as z, incerementValue as L, numberDefined as P, numberOperation as R, restrictNumberInLimits as w, setValue as _ } from "./helpers/valueOperations.js";
8
+ import { PeregrineMQ as j, PeregrineMQClearError as B } from "./appState/peregrineMQ/peregrineMQ.js";
9
+ import { TinyStateMachine as J, TinyStateMachineEvent as Q, TinyStateMachineEventType as q, TinyStateMachineState as U, createStates as W, stateIterator as X } from "./appState/stateMachine/tiny-state-machine.base.js";
10
+ import { anchorClick as K, classNames as Y, generateId as Z, getBaseThemes as $, mapSerReplacer as ee, noop as te, observeThemePreference as re, parseProps as ae, setThemeClassNames as oe, switchColorTheme as ie, updateColorTheme as me } from "./helpers/ui.js";
11
+ import { arrayToObjectTree as le, chunkArray as se, duplicatesInArray as ce, formatJsonString as pe, formatObj as fe, formatObj2 as Te } from "./helpers/objectOperations.js";
12
+ import { canSetStateMerge as de, createStore as ue, getSetStateMerge as Se, shallowEqual as ge } from "./appState/store/store.vanillajs.js";
13
+ import { cancelableSetInterval as ye, cancelableSetTimeout as Ce } from "./helpers/cancelableDelayedFunction.js";
14
+ import { ced as Ee, createResolveAttribute as Fe, customElementDefine as Me, resolveAttributes as Ne } from "./webComponents/webComponent.utils.js";
15
+ import { cleanCsvLines as Ae, formatFilePath as De } from "./helpers/file.js";
16
+ import { composeId as Oe, defaultSanitizeConfig as Ve, sanitizeHtml as ze } from "./helpers/text.js";
17
+ import { createDataStore as Pe } from "./appState/store/store.vanillajs.templates.js";
18
+ import { emailMatch as we, emailMatcher as _e, regexBuilder as ke } from "./helpers/emailMatcher.js";
19
+ import { escapeRegExp as Be, fileNameExt as He, findStringInText as Je, normalizeString as Qe, removeWhitespaces as qe, sanitizeId as Ue, sanitizePathId as We, toLowerCase as Xe, toUpperCase as Ge, truncateText as Ke } from "./helpers/textValueOperations.js";
20
+ import { getDeviceId as Ze } from "./helpers/deviceInfo.js";
21
+ import { getMatch as et, isValidFormat as tt, isValidModulo11 as rt, parse as at, regex as ot } from "./helpers/birthnumberCZSKvalidator.js";
22
+ import { isBirthNumberValid as mt } from "./helpers/birthnumber.validator.js";
23
+ import { parseCSVdata as lt, validateCSVFile as st, validateCSVlines as ct, validateJSONFile as pt, validateLineCellTrimmed as ft, validateLineNumColumns as Tt, validateSDFFile as xt } from "./helpers/fileValidator.js";
24
+ export {
25
+ p as ArrayFirst,
26
+ f as ArrayLast,
27
+ x as AsyncFunctionTemplate,
28
+ E as DATE_FORMAT,
29
+ F as DATE_TIME_FORMAT,
30
+ I as NON_EXISTENT_CHANNEL,
31
+ V as Operation,
32
+ j as PeregrineMQ,
33
+ B as PeregrineMQClearError,
34
+ J as TinyStateMachine,
35
+ Q as TinyStateMachineEvent,
36
+ q as TinyStateMachineEventType,
37
+ U as TinyStateMachineState,
38
+ K as anchorClick,
39
+ le as arrayToObjectTree,
40
+ de as canSetStateMerge,
41
+ ye as cancelableSetInterval,
42
+ Ce as cancelableSetTimeout,
43
+ Ee as ced,
44
+ se as chunkArray,
45
+ Y as classNames,
46
+ Ae as cleanCsvLines,
47
+ Oe as composeId,
48
+ Pe as createDataStore,
49
+ Fe as createResolveAttribute,
50
+ W as createStates,
51
+ ue as createStore,
52
+ Me as customElementDefine,
53
+ i as dateRangeFormat,
54
+ d as debounce,
55
+ z as decrementValue,
56
+ Ve as defaultSanitizeConfig,
57
+ u as delay,
58
+ ce as duplicatesInArray,
59
+ we as emailMatch,
60
+ _e as emailMatcher,
61
+ Be as escapeRegExp,
62
+ He as fileNameExt,
63
+ Je as findStringInText,
64
+ M as formatDate,
65
+ N as formatDateTime,
66
+ b as formatDateToTimestamp,
67
+ De as formatFilePath,
68
+ pe as formatJsonString,
69
+ fe as formatObj,
70
+ Te as formatObj2,
71
+ Z as generateId,
72
+ $ as getBaseThemes,
73
+ A as getDate,
74
+ m as getDateTime,
75
+ Ze as getDeviceId,
76
+ et as getMatch,
77
+ Se as getSetStateMerge,
78
+ n as getTimeFromNow,
79
+ l as getTimeFromNowOriginal,
80
+ s as getTimeTo,
81
+ L as incerementValue,
82
+ mt as isBirthNumberValid,
83
+ S as isFunctionAsync,
84
+ tt as isValidFormat,
85
+ rt as isValidModulo11,
86
+ r as keyExtractor,
87
+ a as keyExtractorFunction,
88
+ ee as mapSerReplacer,
89
+ g as memoize,
90
+ h as memoizeComplex,
91
+ y as memoizer,
92
+ C as nestedTernary,
93
+ te as noop,
94
+ Qe as normalizeString,
95
+ P as numberDefined,
96
+ R as numberOperation,
97
+ re as observeThemePreference,
98
+ at as parse,
99
+ lt as parseCSVdata,
100
+ ae as parseProps,
101
+ ot as regex,
102
+ ke as regexBuilder,
103
+ qe as removeWhitespaces,
104
+ Ne as resolveAttributes,
105
+ w as restrictNumberInLimits,
106
+ ze as sanitizeHtml,
107
+ Ue as sanitizeId,
108
+ We as sanitizePathId,
109
+ oe as setThemeClassNames,
110
+ _ as setValue,
111
+ ge as shallowEqual,
112
+ X as stateIterator,
113
+ ie as switchColorTheme,
114
+ Xe as toLowerCase,
115
+ Ge as toUpperCase,
116
+ Ke as truncateText,
117
+ me as updateColorTheme,
118
+ st as validateCSVFile,
119
+ ct as validateCSVlines,
120
+ pt as validateJSONFile,
121
+ ft as validateLineCellTrimmed,
122
+ Tt as validateLineNumColumns,
123
+ xt as validateSDFFile
124
+ };
125
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyExtractor.js","sources":["../../../src/core/utils/keyExtractor.ts"],"sourcesContent":["import { memoizeComplex } from './helpers/other'\n\ntype ItemLikeObject = {\n key?: string\n id?: string | number\n}\n\nexport function keyExtractorFunction<Item extends ItemLikeObject>(item: Item, index: number): string {\n return String(item?.key ?? item?.id ?? index)\n}\n\nexport const keyExtractor = memoizeComplex(keyExtractorFunction)\n"],"names":["keyExtractorFunction","item","index","keyExtractor","memoizeComplex"],"mappings":";AAOO,SAASA,EAAkDC,GAAYC,GAAuB;AACnG,SAAO,QAAOD,KAAA,gBAAAA,EAAM,SAAOA,KAAA,gBAAAA,EAAM,OAAMC,CAAK;AAC9C;AAEO,MAAMC,IAAeC,EAAeJ,CAAoB;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webComponent.utils.js","sources":["../../../../src/core/utils/webComponents/webComponent.utils.ts"],"sourcesContent":["/* custom elements define */\nexport const ced = (name: string): (componentClass: typeof HTMLElement) => void => (\n componentClass: typeof HTMLElement,\n) => {\n customElements.get(name) || customElements.define(name, componentClass)\n}\n\nexport const customElementDefine = ced\n\n\n\nexport const createResolveAttribute = (\n component: Element & Record<string, any>,\n) => (\n attributeName: string,\n // eslint-disable-next-line default-param-last\n overrideProperty = true,\n valueMap?: (value: unknown) => unknown,\n): boolean => {\n const attrValue = component.getAttribute(attributeName)\n const attrValueDefined = attrValue !== undefined\n\n if (overrideProperty && attrValueDefined && component[attributeName] === undefined) {\n // eslint-disable-next-line no-param-reassign\n component[attributeName] = valueMap ? valueMap(attrValue) : attrValue\n }\n\n return attrValueDefined\n}\n\nexport const resolveAttributes = (\n component: Element & Record<string, any>,\n attributes: ({ name: string; override: boolean; valueMap?: (value: unknown) => unknown } | string)[],\n): void => {\n const resolver = createResolveAttribute(component)\n\n attributes.forEach((attribute) => {\n if (typeof attribute === 'string') {\n resolver(attribute)\n } else {\n const { name, override, valueMap } = attribute\n\n resolver(name, override, valueMap)\n }\n })\n}\n"],"names":["ced","name","componentClass","customElementDefine","createResolveAttribute","component","attributeName","overrideProperty","valueMap","attrValue","attrValueDefined","resolveAttributes","attributes","resolver","attribute","override"],"mappings":"AACO,MAAMA,IAAM,CAACC,MAA+D,CACjFC,MACG;AACH,iBAAe,IAAID,CAAI,KAAK,eAAe,OAAOA,GAAMC,CAAc;AACxE,GAEaC,IAAsBH,GAItBI,IAAyB,CACpCC,MACG,CACHC,GAEAC,IAAmB,IACnBC,MACY;AACZ,QAAMC,IAAYJ,EAAU,aAAaC,CAAa,GAChDI,IAAmBD,MAAc;AAEvC,SAAIF,KAAoBG,KAAoBL,EAAUC,CAAa,MAAM,WAEvED,EAAUC,CAAa,IAAIE,IAAWA,EAASC,CAAS,IAAIA,IAGvDC;AACT,GAEaC,IAAoB,CAC/BN,GACAO,MACS;AACT,QAAMC,IAAWT,EAAuBC,CAAS;AAEjD,EAAAO,EAAW,QAAQ,CAACE,MAAc;AAChC,QAAI,OAAOA,KAAc;AACvB,MAAAD,EAASC,CAAS;AAAA,SACb;AACL,YAAM,EAAE,MAAAb,GAAM,UAAAc,GAAU,UAAAP,EAAA,IAAaM;AAErC,MAAAD,EAASZ,GAAMc,GAAUP,CAAQ;AAAA,IACnC;AAAA,EACF,CAAC;AACH;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"birthnumber.validator.js","sources":["../../../src/core/utils/helpers/birthnumber.validator.ts"],"sourcesContent":["import {\n parse as parseBirthNumber,\n isValidFormat,\n isValidModulo11,\n} from './birthnumberCZSKvalidator'\n\n// TODO Lukas Z, add spec/test for isBirthNumberValid\nexport const isBirthNumberValid = (birthnumber: string, birthdate: string, gender: string): boolean => {\n if (!isValidFormat(birthnumber) || !isValidModulo11(birthnumber)) {\n return false\n }\n\n const parsedBirthNumber = parseBirthNumber(birthnumber)\n\n if (parsedBirthNumber) {\n if (gender !== parsedBirthNumber.gender) {\n return false\n }\n const { year, month, day } = parsedBirthNumber\n\n if (birthdate !== `${String(day).padStart(2, '0')}.${String(month).padStart(2, '0')}.${year}`) {\n return false\n }\n }\n return true\n}\n"],"names":["isBirthNumberValid","birthnumber","birthdate","gender","isValidFormat","isValidModulo11","parsedBirthNumber","parseBirthNumber","year","month","day"],"mappings":"iIAOaA,EAAqB,CAACC,EAAqBC,EAAmBC,IAA4B,CACrG,GAAI,CAACC,EAAAA,cAAcH,CAAW,GAAK,CAACI,EAAAA,gBAAgBJ,CAAW,EAC7D,MAAO,GAGT,MAAMK,EAAoBC,EAAAA,MAAiBN,CAAW,EAEtD,GAAIK,EAAmB,CACrB,GAAIH,IAAWG,EAAkB,OAC/B,MAAO,GAET,KAAM,CAAE,KAAAE,EAAM,MAAAC,EAAO,IAAAC,CAAA,EAAQJ,EAE7B,GAAIJ,IAAc,GAAG,OAAOQ,CAAG,EAAE,SAAS,EAAG,GAAG,CAAC,IAAI,OAAOD,CAAK,EAAE,SAAS,EAAG,GAAG,CAAC,IAAID,CAAI,GACzF,MAAO,EAEX,CACA,MAAO,EACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"birthnumberCZSKvalidator.js","sources":["../../../src/core/utils/helpers/birthnumberCZSKvalidator.ts"],"sourcesContent":["export const regex = /^\\s*(\\d\\d)(\\d\\d)(\\d\\d)[/]*(\\d\\d\\d)(\\d?)\\s*$/\n\nexport const getMatch: (value: string | number) => null | RegExpMatchArray\n = (value: string | number) => String(value).match(regex)\n\nexport const isValidFormat = (value: string | number): boolean => {\n const match = getMatch(value)\n\n return match !== null && !!match[0] && parse(value) !== null\n}\n\nexport const isValidModulo11 = (value: string | number): boolean => {\n const validFormat = isValidFormat(value)\n\n if (!validFormat) {\n return false\n }\n\n let stringValue: string\n\n if (typeof value === 'string') {\n stringValue = value.replace('/', '')\n } else {\n stringValue = (value as number).toString()\n }\n\n if (stringValue.length < 10) {\n return true\n }\n\n const controlDigit = stringValue.substr(9, 1)\n let mod = parseInt(stringValue.substr(0, 9), 10) % 11\n\n if (mod === 10) {\n mod = 0\n }\n\n return parseInt(controlDigit, 10) === mod\n}\n\ntype RangeTupleType = [number, number, string, number]\n\nconst monthRange = {\n ranges: [\n // M\n [1, 12, 'M', 0],\n // M\n [21, 32, 'M', 20],\n // F\n [51, 62, 'F', 50],\n // F\n [71, 82, 'F', 70],\n ] as RangeTupleType[],\n getRange(monthHint: number): RangeTupleType | undefined {\n return this.ranges.find(([min, max]) => monthHint >= min && monthHint <= max)\n },\n getGender(monthHint: number): string | null {\n const range = this.getRange(monthHint)\n\n return range ? range[2] as string : null\n },\n getMonth(monthHint: number): string {\n const range = this.getRange(monthHint)\n\n return String(range ? monthHint - (range[3] as number) : null).padStart(2, '0')\n },\n}\n\ntype ParsedBirthNumber = {\n day: string | number | null\n month: string | number | null\n year: string | number | null\n gender: string | null\n}\n\nexport const parse = (value: string | number | undefined): ParsedBirthNumber | null => {\n if (!value) {\n return null\n }\n const match = getMatch(value)\n\n if (!match) {\n return null\n }\n\n const controlDigit = match[5]\n\n let year = parseInt(match[1], 10)\n\n // eslint-disable-next-line no-nested-ternary\n year += controlDigit === '' ? (year < 54 ? 1900 : 1800) : (year < 54 ? 2000 : 1900)\n const monthHint = parseInt(match[2], 10)\n const month = monthRange.getMonth(monthHint)\n const gender = monthRange.getGender(monthHint)\n const day = String(parseInt(match[3], 10)).padStart(2, '0')\n\n // console.log('year-month-day')\n // console.log(`${year}-${month}-${day}`)\n\n const date = new Date(`${year}-${month}-${day}`)\n\n if (date instanceof Date && !Number.isNaN(date) && date.getMonth() + 1 === parseInt(month, 10)) {\n return {\n day,\n month,\n year,\n gender,\n }\n }\n return null\n}\n\n// TODO, control digit and year control\n/*\n if ($c === '') {\n $year += $year < 54 ? 1900 : 1800;\n } else {\n // kontrolní číslice\n $mod = ($year . $month . $day . $ext) % 11;\n if ($mod === 10) $mod = 0;\n if ($mod !== (int) $c) {\n return false;\n }\n\n $year += $year < 54 ? 2000 : 1900;\n }\n*/\n"],"names":["regex","getMatch","value","isValidFormat","match","parse","isValidModulo11","stringValue","controlDigit","mod","monthRange","monthHint","min","max","range","year","month","gender","day","date"],"mappings":"gFAAO,MAAMA,EAAQ,8CAERC,EACRC,GAA2B,OAAOA,CAAK,EAAE,MAAMF,CAAK,EAE5CG,EAAiBD,GAAoC,CAChE,MAAME,EAAQH,EAASC,CAAK,EAE5B,OAAOE,IAAU,MAAQ,CAAC,CAACA,EAAM,CAAC,GAAKC,EAAMH,CAAK,IAAM,IAC1D,EAEaI,EAAmBJ,GAAoC,CAGlE,GAAI,CAFgBC,EAAcD,CAAK,EAGrC,MAAO,GAGT,IAAIK,EAQJ,GANI,OAAOL,GAAU,SACnBK,EAAcL,EAAM,QAAQ,IAAK,EAAE,EAEnCK,EAAeL,EAAiB,SAAA,EAG9BK,EAAY,OAAS,GACvB,MAAO,GAGT,MAAMC,EAAeD,EAAY,OAAO,EAAG,CAAC,EAC5C,IAAIE,EAAM,SAASF,EAAY,OAAO,EAAG,CAAC,EAAG,EAAE,EAAI,GAEnD,OAAIE,IAAQ,KACVA,EAAM,GAGD,SAASD,EAAc,EAAE,IAAMC,CACxC,EAIMC,EAAa,CACjB,OAAQ,CAEN,CAAC,EAAG,GAAI,IAAK,CAAC,EAEd,CAAC,GAAI,GAAI,IAAK,EAAE,EAEhB,CAAC,GAAI,GAAI,IAAK,EAAE,EAEhB,CAAC,GAAI,GAAI,IAAK,EAAE,CAAA,EAElB,SAASC,EAA+C,CACtD,OAAO,KAAK,OAAO,KAAK,CAAC,CAACC,EAAKC,CAAG,IAAMF,GAAaC,GAAOD,GAAaE,CAAG,CAC9E,EACA,UAAUF,EAAkC,CAC1C,MAAMG,EAAQ,KAAK,SAASH,CAAS,EAErC,OAAOG,EAAQA,EAAM,CAAC,EAAc,IACtC,EACA,SAASH,EAA2B,CAClC,MAAMG,EAAQ,KAAK,SAASH,CAAS,EAErC,OAAO,OAAOG,EAAQH,EAAaG,EAAM,CAAC,EAAe,IAAI,EAAE,SAAS,EAAG,GAAG,CAChF,CACF,EASaT,EAASH,GAAiE,CACrF,GAAI,CAACA,EACH,OAAO,KAET,MAAME,EAAQH,EAASC,CAAK,EAE5B,GAAI,CAACE,EACH,OAAO,KAGT,MAAMI,EAAeJ,EAAM,CAAC,EAE5B,IAAIW,EAAO,SAASX,EAAM,CAAC,EAAG,EAAE,EAGhCW,GAAQP,IAAiB,GAAMO,EAAO,GAAK,KAAO,KAASA,EAAO,GAAK,IAAO,KAC9E,MAAMJ,EAAY,SAASP,EAAM,CAAC,EAAG,EAAE,EACjCY,EAAQN,EAAW,SAASC,CAAS,EACrCM,EAASP,EAAW,UAAUC,CAAS,EACvCO,EAAM,OAAO,SAASd,EAAM,CAAC,EAAG,EAAE,CAAC,EAAE,SAAS,EAAG,GAAG,EAKpDe,MAAW,KAAK,GAAGJ,CAAI,IAAIC,CAAK,IAAIE,CAAG,EAAE,EAE/C,OAAIC,aAAgB,MAAQ,CAAC,OAAO,MAAMA,CAAI,GAAKA,EAAK,SAAA,EAAa,IAAM,SAASH,EAAO,EAAE,EACpF,CACL,IAAAE,EACA,MAAAF,EACA,KAAAD,EACA,OAAAE,CAAA,EAGG,IACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelableDelayedFunction.js","sources":["../../../src/core/utils/helpers/cancelableDelayedFunction.ts"],"sourcesContent":["export const cancelableSetInterval = (func: () => void, delay = 100): () => void => {\n const timeoutInterval = setInterval(func, delay)\n\n return (): void => clearInterval(timeoutInterval)\n}\n\nexport const cancelableSetTimeout = (func: () => void, delay = 100): () => void => {\n const timeoutInterval = setTimeout(func, delay)\n\n return (): void => clearTimeout(timeoutInterval)\n}\n"],"names":["cancelableSetInterval","func","delay","timeoutInterval","cancelableSetTimeout"],"mappings":"gFAAO,MAAMA,EAAwB,CAACC,EAAkBC,EAAQ,MAAoB,CAClF,MAAMC,EAAkB,YAAYF,EAAMC,CAAK,EAE/C,MAAO,IAAY,cAAcC,CAAe,CAClD,EAEaC,EAAuB,CAACH,EAAkBC,EAAQ,MAAoB,CACjF,MAAMC,EAAkB,WAAWF,EAAMC,CAAK,EAE9C,MAAO,IAAY,aAAaC,CAAe,CACjD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sources":["../../../src/core/utils/helpers/date.ts"],"sourcesContent":["import dayjs from 'dayjs'\n\nexport const getDate = (): string => new Date().toString()\n\n\nexport const formatDateToTimestamp = (date = new Date()): string => dayjs(date).format('YYYY-MM-DD HH:mm:ss')\n\nexport const DATE_FORMAT = 'MM-DD-YYYY'\nexport const DATE_TIME_FORMAT = 'MM-DD-YYYY HH-mm-ss'\n\nexport const formatDate = (date: string | Date): string => dayjs(date).format(DATE_FORMAT)\nexport const formatDateTime = (date: string | Date): string => dayjs(date).format(DATE_TIME_FORMAT)\n\n"],"names":["getDate","formatDateToTimestamp","date","dayjs","DATE_FORMAT","DATE_TIME_FORMAT","formatDate","formatDateTime"],"mappings":"mJAEaA,EAAU,IAAc,IAAI,KAAA,EAAO,SAAA,EAGnCC,EAAwB,CAACC,EAAO,IAAI,OAAmBC,EAAAA,QAAMD,CAAI,EAAE,OAAO,qBAAqB,EAE/FE,EAAc,aACdC,EAAmB,sBAEnBC,EAAcJ,GAAgCC,EAAAA,QAAMD,CAAI,EAAE,OAAOE,CAAW,EAC5EG,EAAkBL,GAAgCC,EAAAA,QAAMD,CAAI,EAAE,OAAOG,CAAgB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInfo.js","sources":["../../../src/core/utils/helpers/deviceInfo.ts"],"sourcesContent":["export const getDeviceId = async (): Promise<string | null | undefined> => {\n try {\n const devices = await navigator?.mediaDevices?.enumerateDevices?.()\n const device = devices.find((device) => device.kind === 'videoinput')\n\n return device?.deviceId || device?.groupId\n } catch (error: any) {\n return null\n }\n}\n"],"names":["getDeviceId","device","_b","_a"],"mappings":"gFAAO,MAAMA,EAAc,SAAgD,SACzE,GAAI,CAEF,MAAMC,GADU,OAAMC,GAAAC,EAAA,iCAAW,eAAX,YAAAA,EAAyB,mBAAzB,YAAAD,EAAA,KAAAC,KACC,KAAMF,GAAWA,EAAO,OAAS,YAAY,EAEpE,OAAOA,GAAA,YAAAA,EAAQ,YAAYA,GAAA,YAAAA,EAAQ,QACrC,MAAqB,CACnB,OAAO,IACT,CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailMatcher.js","sources":["../../../src/core/utils/helpers/emailMatcher.ts"],"sourcesContent":["export const regexBuilder\n= (domain: string, prefix = '', suffix = ''): RegExp => {\n const normPrefix = prefix.replace('.', '\\\\.')\n const normSuffix = suffix.replace('.', '\\\\.')\n\n if (normPrefix && normSuffix) {\n return new RegExp(\n `^(${normPrefix})+(.+)+(${normSuffix})+@(${domain})$`,\n )\n } if (normPrefix) {\n return new RegExp(\n `^(${normPrefix})+(.+)+@(${domain})$`,\n )\n } if (normSuffix) {\n return new RegExp(\n `^(.+)+(${normSuffix})+@(${domain})$`,\n )\n }\n return new RegExp(\n `^(${domain})$`,\n )\n}\n\nexport const emailMatch = (rgx:RegExp, email:string): boolean => rgx.test(email)\n\n// eslint-disable-next-line default-param-last\nexport const emailMatcher = (domain: string, prefix = '', suffix = '', email:string): boolean => {\n const rgx: RegExp = regexBuilder(domain, prefix, suffix)\n\n return emailMatch(rgx, email)\n}\n\n// const rgx = regexBuilder('gmail.com', 'ext.')\n// const rgx2 = regexBuilder('gmail.com', '', 'ddssds')\n\n// console.log(rgx.test('ddssds@gmail.com'))\n// console.log(rgx.test('extddssds@gmail.com'))\n// console.log(rgx.test('ext.ddssds@gmail.com'))\n\n// console.log(rgx2.test('xddssds@gmail.com'))\n// console.log(rgx2.test('extddssds@gmail.com'))\n// console.log(rgx2.test('ext.ddssds@gmail.com'))\n"],"names":["regexBuilder","domain","prefix","suffix","normPrefix","normSuffix","emailMatch","rgx","email","emailMatcher"],"mappings":"gFAAO,MAAMA,EACX,CAACC,EAAgBC,EAAS,GAAIC,EAAS,KAAe,CACtD,MAAMC,EAAaF,EAAO,QAAQ,IAAK,KAAK,EACtCG,EAAaF,EAAO,QAAQ,IAAK,KAAK,EAE5C,OAAIC,GAAcC,EACT,IAAI,OACT,KAAKD,CAAU,WAAWC,CAAU,OAAOJ,CAAM,IAAA,EAE/CG,EACG,IAAI,OACT,KAAKA,CAAU,YAAYH,CAAM,IAAA,EAE/BI,EACG,IAAI,OACT,UAAUA,CAAU,OAAOJ,CAAM,IAAA,EAG9B,IAAI,OACT,KAAKA,CAAM,IAAA,CAEf,EAEaK,EAAa,CAACC,EAAYC,IAA0BD,EAAI,KAAKC,CAAK,EAGlEC,EAAe,CAACR,EAAgBC,EAAS,GAAIC,EAAS,GAAIK,IAA0B,CAC/F,MAAMD,EAAcP,EAAaC,EAAQC,EAAQC,CAAM,EAEvD,OAAOG,EAAWC,EAAKC,CAAK,CAC9B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sources":["../../../src/core/utils/helpers/file.ts"],"sourcesContent":["export const cleanCsvLines = (data:string): string => {\n if (!data || !data.length) {\n return data\n }\n\n let lineDelimiter = '\\r\\n'\n let lines: string[] = data.split(lineDelimiter)\n\n if (lines.length <= 1) {\n lineDelimiter = '\\n'\n lines = data.split(lineDelimiter)\n }\n\n let linesNum = lines.length\n\n // eslint-disable-next-line no-cond-assign\n // eslint-disable-next-line no-plusplus\n while (linesNum--) {\n if (lines[linesNum].trim() === '' || lines[linesNum].split(';').join('').trim() === '') {\n lines.splice(linesNum, 1)\n }\n }\n return lines.join(lineDelimiter)\n}\n\nexport const formatFilePath = (filePath?: string): string | undefined => filePath?.split('/')?.pop()\n"],"names":["cleanCsvLines","data","lineDelimiter","lines","linesNum","formatFilePath","filePath","_a"],"mappings":"gFAAO,MAAMA,EAAiBC,GAAwB,CACpD,GAAI,CAACA,GAAQ,CAACA,EAAK,OACjB,OAAOA,EAGT,IAAIC,EAAgB;AAAA,EAChBC,EAAkBF,EAAK,MAAMC,CAAa,EAE1CC,EAAM,QAAU,IAClBD,EAAgB;AAAA,EAChBC,EAAQF,EAAK,MAAMC,CAAa,GAGlC,IAAIE,EAAWD,EAAM,OAIrB,KAAOC,MACDD,EAAMC,CAAQ,EAAE,KAAA,IAAW,IAAMD,EAAMC,CAAQ,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,KAAA,IAAW,KAClFD,EAAM,OAAOC,EAAU,CAAC,EAG5B,OAAOD,EAAM,KAAKD,CAAa,CACjC,EAEaG,EAAkBC,GAAA,OAA0C,OAAAC,EAAAD,GAAA,YAAAA,EAAU,MAAM,OAAhB,YAAAC,EAAsB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileValidator.js","sources":["../../../src/core/utils/helpers/fileValidator.ts"],"sourcesContent":["import { fileNameExt } from './textValueOperations'\n\nexport const parseCSVdata = (data: string, columnDelimiter = ';'): {\n firstLine: string\n lines: string[]\n columns: null | string[]\n numColumns: number\n} => {\n let lines: string[] = data.split('\\r\\n')\n\n if (lines.length <= 1) {\n lines = data.split('\\n')\n }\n\n const firstLine: string = lines.shift() as string\n const columns: null | string[] = firstLine ? firstLine.split(columnDelimiter) : null\n const numColumns: number = columns ? columns.length : 0\n\n return {\n firstLine,\n lines,\n columns,\n numColumns,\n }\n}\n\nexport const validateLineNumColumns\n = (lineColumns: Array<string>, numColumns: number, line: string, index: number): ErrorMessage | null => {\n if (lineColumns.length !== numColumns) {\n // errors.push(`Line number of cells is not equal to the number of columns: \"${line}, index: ${index}\"`)\n return {\n message: 'errors.uploadInput.file.line.invalid',\n params: { line, index: index + 1 } } as ErrorMessage\n }\n return null\n }\n\nexport const validateLineCellTrimmed\n = (cell: string, line: string, lineIndex: number, cellIndex: number): ErrorMessage | null => {\n if (cell !== cell.trim()) {\n return {\n message: 'errors.uploadInput.file.cell.invalid',\n params: {\n line, cell, lineIndex, cellIndex,\n },\n } as ErrorMessage\n }\n return null\n }\n\nexport const validateCSVlines = (lines: string[], numColumns: number, columnDelimiter = ';'): ErrorMessage[] => {\n const errors: ErrorMessage[] = []\n // lines without first line of columns (hence the index + 1 in error message)\n let linesNum = lines.length\n\n // eslint-disable-next-line no-cond-assign\n // eslint-disable-next-line no-plusplus\n while (linesNum--) {\n if (lines[linesNum].trim() === '' || lines[linesNum].split(';').join('').trim() === '') {\n lines.splice(linesNum, 1)\n }\n }\n\n let lineColumns = null\n let errorLineNumColumns = null\n let errorLineCellNotTrimmed = null\n\n lines.forEach((line, index) => {\n lineColumns = line.split(columnDelimiter)\n\n errorLineNumColumns = validateLineNumColumns(lineColumns, numColumns, line, index)\n errorLineNumColumns && errors.push(errorLineNumColumns)\n\n lineColumns.forEach((cell, cellIndex) => {\n errorLineCellNotTrimmed = validateLineCellTrimmed(cell, line, index, cellIndex)\n errorLineCellNotTrimmed && errors.push(errorLineCellNotTrimmed)\n })\n })\n\n return errors\n}\n\n/*\n// maybe add aditional mime types\nhttp://fileformats.archiveteam.org/wiki/CSV\n['text/csv','application/csv', 'text/x-csv',\n'application/x-csv', 'text/x-comma-separated-values', 'text/comma-separated-values']\n*/\n\nexport type ErrorMessage = {\n message: string\n params: Record<string, string | number>\n}\n\nexport const validateCSVFile\n= (file: File, callBack: (errors?: (ErrorMessage | string)[] | null) => void, columnDelimiter = ';'): void => {\n if (!file) {\n callBack(['errors.uploadInput.file.empty'])\n return\n }\n if (fileNameExt(file.name) !== 'csv' || !['text/csv', 'text/plain', 'application/vnd.ms-excel'].includes(file.type)) {\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n const reader = new FileReader()\n\n reader.readAsText(file)\n reader.onloadend = (): void => {\n const data = reader.result ? reader.result.toString() : ''\n\n const { numColumns, lines } = parseCSVdata(data, columnDelimiter)\n\n if (numColumns < 2) {\n callBack(['errors.uploadInput.file.numColumns'])\n return\n }\n\n if (lines?.length < 1) {\n callBack(['errors.uploadInput.file.numLines'])\n return\n }\n\n const errors: (ErrorMessage | string)[] = validateCSVlines(lines, numColumns, columnDelimiter)\n\n const flatErrors: string[] = errors.map((errorMsg: ErrorMessage | string) => (\n (errorMsg as ErrorMessage)?.message ? JSON.stringify(errorMsg) : String(errorMsg)))\n\n const errorsArray: string[] = [...new Set(flatErrors)].map((serialized: string) => JSON.parse(serialized))\n\n // callBack && callBack(errorsArray.length ? errorsArray?.splice?.(0, 6) : null)\n callBack && callBack(errorsArray.length ? errorsArray : null)\n }\n\n reader.onerror = (error): void => {\n console.error(error)\n }\n}\n\nexport const validateSDFFile\n= (file: File, callBack: (errors?: (ErrorMessage | string)[] | null) => void, columnDelimiter = ';'): void => {\n if (!file) {\n callBack(['errors.uploadInput.file.empty'])\n return\n }\n if (fileNameExt(file.name) !== 'sdf') {\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n const reader = new FileReader()\n\n reader.readAsText(file)\n reader.onloadend = (): void => {\n const data = reader.result ? reader.result.toString() : ''\n\n const { lines } = parseCSVdata(data, columnDelimiter)\n\n if (lines?.length < 1) {\n callBack(['errors.uploadInput.file.numLines'])\n return\n }\n\n callBack && callBack(null)\n }\n\n reader.onerror = (error): void => {\n console.error(error)\n }\n}\n\nexport const validateJSONFile\n= (file: File, callBack: (errors?: (ErrorMessage | string)[] | null) => void, columnDelimiter = ';'): void => {\n if (!file) {\n callBack(['errors.uploadInput.file.empty'])\n return\n }\n if (fileNameExt(file.name) !== 'json') {\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n const reader = new FileReader()\n\n reader.readAsText(file)\n reader.onloadend = (): void => {\n const data = reader.result ? reader.result.toString() : ''\n\n try {\n const parsed = JSON.parse(data)\n\n JSON.stringify(parsed)\n } catch (error) {\n console.error(error)\n callBack(['errors.uploadInput.file.invalid'])\n return\n }\n\n const { lines } = parseCSVdata(data, columnDelimiter)\n\n if (lines?.length < 1) {\n callBack(['errors.uploadInput.file.numLines'])\n return\n }\n\n callBack && callBack(null)\n }\n\n reader.onerror = (error): void => {\n console.error(error)\n }\n}\n"],"names":["parseCSVdata","data","columnDelimiter","lines","firstLine","columns","numColumns","validateLineNumColumns","lineColumns","line","index","validateLineCellTrimmed","cell","lineIndex","cellIndex","validateCSVlines","errors","linesNum","errorLineNumColumns","errorLineCellNotTrimmed","validateCSVFile","file","callBack","fileNameExt","reader","flatErrors","errorMsg","errorsArray","serialized","error","validateSDFFile","validateJSONFile","parsed"],"mappings":"4HAEaA,EAAe,CAACC,EAAcC,EAAkB,MAKxD,CACH,IAAIC,EAAkBF,EAAK,MAAM;AAAA,CAAM,EAEnCE,EAAM,QAAU,IAClBA,EAAQF,EAAK,MAAM;AAAA,CAAI,GAGzB,MAAMG,EAAoBD,EAAM,MAAA,EAC1BE,EAA2BD,EAAYA,EAAU,MAAMF,CAAe,EAAI,KAC1EI,EAAqBD,EAAUA,EAAQ,OAAS,EAEtD,MAAO,CACL,UAAAD,EACA,MAAAD,EACA,QAAAE,EACA,WAAAC,CAAA,CAEJ,EAEaC,EACT,CAACC,EAA4BF,EAAoBG,EAAcC,IAC3DF,EAAY,SAAWF,EAElB,CACL,QAAS,uCACT,OAAQ,CAAE,KAAAG,EAAM,MAAOC,EAAQ,CAAA,CAAE,EAE9B,KAGEC,EACT,CAACC,EAAcH,EAAcI,EAAmBC,IAC5CF,IAASA,EAAK,OACT,CACL,QAAS,uCACT,OAAQ,CACN,KAAAH,EAAM,KAAAG,EAAM,UAAAC,EAAW,UAAAC,CAAA,CACzB,EAGG,KAGEC,EAAmB,CAACZ,EAAiBG,EAAoBJ,EAAkB,MAAwB,CAC9G,MAAMc,EAAyB,CAAA,EAE/B,IAAIC,EAAWd,EAAM,OAIrB,KAAOc,MACDd,EAAMc,CAAQ,EAAE,KAAA,IAAW,IAAMd,EAAMc,CAAQ,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,KAAA,IAAW,KAClFd,EAAM,OAAOc,EAAU,CAAC,EAI5B,IAAIT,EAAc,KACdU,EAAsB,KACtBC,EAA0B,KAE9B,OAAAhB,EAAM,QAAQ,CAACM,EAAMC,IAAU,CAC7BF,EAAcC,EAAK,MAAMP,CAAe,EAExCgB,EAAsBX,EAAuBC,EAAaF,EAAYG,EAAMC,CAAK,EACjFQ,GAAuBF,EAAO,KAAKE,CAAmB,EAEtDV,EAAY,QAAQ,CAACI,EAAME,IAAc,CACvCK,EAA0BR,EAAwBC,EAAMH,EAAMC,EAAOI,CAAS,EAC9EK,GAA2BH,EAAO,KAAKG,CAAuB,CAChE,CAAC,CACH,CAAC,EAEMH,CACT,EAcaI,EACX,CAACC,EAAYC,EAA+DpB,EAAkB,MAAc,CAC5G,GAAI,CAACmB,EAAM,CACTC,EAAS,CAAC,+BAA+B,CAAC,EAC1C,MACF,CACA,GAAIC,EAAAA,YAAYF,EAAK,IAAI,IAAM,OAAS,CAAC,CAAC,WAAY,aAAc,0BAA0B,EAAE,SAASA,EAAK,IAAI,EAAG,CACnHC,EAAS,CAAC,iCAAiC,CAAC,EAC5C,MACF,CACA,MAAME,EAAS,IAAI,WAEnBA,EAAO,WAAWH,CAAI,EACtBG,EAAO,UAAY,IAAY,CAC7B,MAAMvB,EAAOuB,EAAO,OAASA,EAAO,OAAO,WAAa,GAElD,CAAE,WAAAlB,EAAY,MAAAH,CAAA,EAAUH,EAAaC,EAAMC,CAAe,EAEhE,GAAII,EAAa,EAAG,CAClBgB,EAAS,CAAC,oCAAoC,CAAC,EAC/C,MACF,CAEA,IAAInB,GAAA,YAAAA,EAAO,QAAS,EAAG,CACrBmB,EAAS,CAAC,kCAAkC,CAAC,EAC7C,MACF,CAIA,MAAMG,EAFoCV,EAAiBZ,EAAOG,EAAYJ,CAAe,EAEzD,IAAKwB,GACtCA,GAAA,MAAAA,EAA2B,QAAU,KAAK,UAAUA,CAAQ,EAAI,OAAOA,CAAQ,CAAE,EAE9EC,EAAwB,CAAC,GAAG,IAAI,IAAIF,CAAU,CAAC,EAAE,IAAKG,GAAuB,KAAK,MAAMA,CAAU,CAAC,EAGzGN,GAAYA,EAASK,EAAY,OAASA,EAAc,IAAI,CAC9D,EAEAH,EAAO,QAAWK,GAAgB,CAElC,CACF,EAEaC,EACX,CAACT,EAAYC,EAA+DpB,EAAkB,MAAc,CAC5G,GAAI,CAACmB,EAAM,CACTC,EAAS,CAAC,+BAA+B,CAAC,EAC1C,MACF,CACA,GAAIC,cAAYF,EAAK,IAAI,IAAM,MAAO,CACpCC,EAAS,CAAC,iCAAiC,CAAC,EAC5C,MACF,CACA,MAAME,EAAS,IAAI,WAEnBA,EAAO,WAAWH,CAAI,EACtBG,EAAO,UAAY,IAAY,CAC7B,MAAMvB,EAAOuB,EAAO,OAASA,EAAO,OAAO,WAAa,GAElD,CAAE,MAAArB,CAAA,EAAUH,EAAaC,EAAMC,CAAe,EAEpD,IAAIC,GAAA,YAAAA,EAAO,QAAS,EAAG,CACrBmB,EAAS,CAAC,kCAAkC,CAAC,EAC7C,MACF,CAEAA,GAAYA,EAAS,IAAI,CAC3B,EAEAE,EAAO,QAAWK,GAAgB,CAElC,CACF,EAEaE,EACX,CAACV,EAAYC,EAA+DpB,EAAkB,MAAc,CAC5G,GAAI,CAACmB,EAAM,CACTC,EAAS,CAAC,+BAA+B,CAAC,EAC1C,MACF,CACA,GAAIC,cAAYF,EAAK,IAAI,IAAM,OAAQ,CACrCC,EAAS,CAAC,iCAAiC,CAAC,EAC5C,MACF,CACA,MAAME,EAAS,IAAI,WAEnBA,EAAO,WAAWH,CAAI,EACtBG,EAAO,UAAY,IAAY,CAC7B,MAAMvB,EAAOuB,EAAO,OAASA,EAAO,OAAO,WAAa,GAExD,GAAI,CACF,MAAMQ,EAAS,KAAK,MAAM/B,CAAI,EAE9B,KAAK,UAAU+B,CAAM,CACvB,MAAgB,CAEdV,EAAS,CAAC,iCAAiC,CAAC,EAC5C,MACF,CAEA,KAAM,CAAE,MAAAnB,CAAA,EAAUH,EAAaC,EAAMC,CAAe,EAEpD,IAAIC,GAAA,YAAAA,EAAO,QAAS,EAAG,CACrBmB,EAAS,CAAC,kCAAkC,CAAC,EAC7C,MACF,CAEAA,GAAYA,EAAS,IAAI,CAC3B,EAEAE,EAAO,QAAWK,GAAgB,CAElC,CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectOperations.js","sources":["../../../src/core/utils/helpers/objectOperations.ts"],"sourcesContent":["export const duplicatesInArray = (arr: unknown[]): null | Record<string, number> => {\n const setFromArr = new Set(arr)\n\n if (Array.from(setFromArr).length !== arr.length) {\n const foundDuplicates: Record<string, number> = {}\n const itemsMap: Record<string, number> = {}\n\n arr.forEach((item: unknown) => {\n if (itemsMap[String(item)] !== undefined) {\n foundDuplicates[String(item)] = itemsMap[String(item)] + 1\n itemsMap[String(item)] += 1\n } else {\n itemsMap[String(item)] = 1\n }\n })\n return foundDuplicates\n }\n return null\n}\n\ntype Replacer = ((this: any, key: string, value: any) => any) | undefined\ntype Options = {\n graphQL?: boolean\n [key: string]: any\n}\n\nexport const formatJsonString = (\n value: any,\n replacer?: Replacer | undefined,\n space?: string | number | undefined,\n { graphQL, ...options }: Options = {},\n): string => {\n if (!graphQL) {\n return JSON.stringify(value, replacer, space)\n }\n const strValues: string[] = []\n\n Object.entries(value).forEach(([key, value]) => {\n let str = `${key}: `\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n str += `${formatJsonString(value, replacer, space, { graphQL, ...options })}`\n } else {\n str += JSON.stringify(value)\n }\n strValues.push(str)\n })\n return `{${strValues.join(', ')}}`\n}\n\nconst simpleIdentiy = (value: string | number): string => `${value}`\n\nexport const formatObj = (\n obj: Record<string, string | number>,\n delimiter = ', ',\n mapValue: ((value: string | number) => string) = simpleIdentiy,\n mapKey: ((value: string | number) => string) = simpleIdentiy,\n): string => (typeof obj === 'object'\n ? Object.entries(obj).map(([key, value]) => `${mapKey(key)}: ${mapValue(value)}`).join(delimiter)\n : '')\n\n\nexport const formatObj2 = (\n obj: Record<string, string | number>,\n delimiter = ', ',\n mapValue: ((value: string | number) => string) = simpleIdentiy,\n mapKey: ((value: string | number) => string) = simpleIdentiy,\n): string => {\n if (typeof obj === 'object' && Array.isArray(obj)) {\n return obj\n .map((objValue) => formatObj2(objValue, delimiter, mapValue, mapKey))\n .join(delimiter)\n }\n\n if (typeof obj === 'object') {\n return Object.entries(obj)\n .map(([key, value]) => {\n const mappedKey = mapKey(key)\n const mappedValue = mapValue(typeof value === 'object' ? formatObj2(value) : value)\n\n return `${mappedKey ? `${mappedKey}: ` : ''}${mappedValue}`\n })\n .join(delimiter)\n }\n return ''\n}\n\n\n\n\n\nexport const chunkArray = (dataArray: any[], chunkSize = 100): (any[])[] => {\n const result = []\n\n const len = dataArray.length\n\n for (let i = 0; i < len; i += chunkSize) {\n const chunk = dataArray.slice(i, i + chunkSize)\n\n result.push(chunk)\n }\n return result\n}\n\nexport type TreeNodeStr = (string | TreeNodeStr)[]\n\ntype TreeNode = {\n name: string\n children?: Record<string, TreeNode>\n}\n\n// ['app', ['user', 'dashboard', ['ui', ['header', 'footer', 'menu'], 'realTime']]]\n\nexport const arrayToObjectTree = (itemsInTree: TreeNodeStr[]): Record<string, TreeNode> => {\n let previousParent: TreeNode\n\n const innerMake = (items: TreeNodeStr[]): Record<string, TreeNode> => {\n const treeObject: Record<string, TreeNode> = items.reduce((tree: Record<string, TreeNode>, item, index, array) => {\n let resolvedTree: Record<string, TreeNode> = { ...tree }\n\n if (typeof item === 'string') {\n resolvedTree[item] = { name: item }\n if (!previousParent) {\n previousParent = resolvedTree[item]\n }\n\n if (index === 0 && Array.isArray(array[1])) {\n previousParent = resolvedTree[item]\n }\n }\n if (Array.isArray(item)) {\n let parent = previousParent\n\n if (index > 1) {\n resolvedTree[item[0] as string] = resolvedTree[item[0] as string] || { name: item[0] }\n parent = resolvedTree[item[0] as string]\n\n resolvedTree = { ...resolvedTree, ...innerMake(item as TreeNodeStr[]) }\n } else {\n parent.children = innerMake(item as TreeNodeStr[])\n }\n }\n return resolvedTree\n }, {})\n\n return treeObject\n }\n\n return innerMake(itemsInTree)\n}\n"],"names":["duplicatesInArray","arr","setFromArr","foundDuplicates","itemsMap","item","formatJsonString","value","replacer","space","graphQL","options","strValues","key","str","simpleIdentiy","formatObj","obj","delimiter","mapValue","mapKey","formatObj2","objValue","mappedKey","mappedValue","chunkArray","dataArray","chunkSize","result","len","i","chunk","arrayToObjectTree","itemsInTree","previousParent","innerMake","items","tree","index","array","resolvedTree","parent"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=(e,t,o)=>e?t:o,s=e=>t=>{const o={};return(...n)=>{const c=e(...n);return c in o||(o[c]=t(...n)),o[c]}},a=s((...e)=>String(e[0])),p=s((...e)=>JSON.stringify(e)),d=(e=(...t)=>JSON.stringify(t))=>s(e),T=(e,t=100,o=!1)=>{let n;return function(...i){const r=this,u=()=>{clearTimeout(n),n=null,o||e.apply(r,i)},l=o&&!n;clearTimeout(n),n=setTimeout(u,t),l&&e.apply(r,i)}},f=e=>new Promise(t=>{setTimeout(()=>t(`delayed: ${e}`),e)}),m=(async()=>{}).constructor,z=e=>e.constructor===m.prototype.constructor;exports.AsyncFunctionTemplate=m;exports.debounce=T;exports.delay=f;exports.isFunctionAsync=z;exports.memoize=a;exports.memoizeComplex=p;exports.memoizer=d;exports.nestedTernary=y;
2
+ //# sourceMappingURL=other.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"other.js","sources":["../../../src/core/utils/helpers/other.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const nestedTernary = (condition: boolean, branchA: any, branchB: any): any => (condition ? branchA : branchB)\n\n/**\n * Creates a memoized version of a function using a custom key function.\n * Replaces ramda's memoizeWith — same API contract.\n */\nconst memoizeWith = (keyFn: (...args: any[]) => string) =>\n <T extends (...args: any[]) => any>(fn: T): T => {\n const cache: Record<string, any> = {}\n return ((...args: any[]) => {\n const key = keyFn(...args)\n if (!(key in cache)) {\n cache[key] = fn(...args)\n }\n return cache[key]\n }) as unknown as T\n }\n\nexport const memoize = memoizeWith((...args) => String(args[0]))\n\n// Beware fellow developer, this is to be used with caution and precison\nexport const memoizeComplex = memoizeWith((...args) => JSON.stringify(args))\n\nexport const memoizer\n= (memoizeFunc = (...args: any[]): string => JSON.stringify(args)) => memoizeWith(memoizeFunc)\n\nexport const debounce = (func: () => void, wait = 100, immediate = false): () => void => {\n let timeout: any\n\n return function debounced(...args) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context: unknown = this\n const later = (): void => {\n clearTimeout(timeout)\n timeout = null\n if (!immediate) {\n func.apply(context, args)\n }\n }\n const callNow = immediate && !timeout\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) {\n func.apply(context, args)\n }\n }\n}\n\nexport const delay = (delay: number): Promise<string> => new Promise((resolve) => {\n setTimeout(() => resolve(`delayed: ${delay}`), delay)\n})\n\nexport const AsyncFunctionTemplate = (async (): Promise<void> => {}).constructor\n\nexport const isFunctionAsync = (\n func: (...args: any[]) => unknown,\n): boolean => func.constructor === AsyncFunctionTemplate.prototype.constructor\n"],"names":["nestedTernary","condition","branchA","branchB","memoizeWith","keyFn","fn","cache","args","key","memoize","memoizeComplex","memoizer","memoizeFunc","debounce","func","wait","immediate","timeout","context","later","callNow","delay","resolve","AsyncFunctionTemplate","isFunctionAsync"],"mappings":"gFACO,MAAMA,EAAgB,CAACC,EAAoBC,EAAcC,IAAuBF,EAAYC,EAAUC,EAMvGC,EAAeC,GACiBC,GAAa,CAC/C,MAAMC,EAA6B,CAAA,EACnC,MAAQ,IAAIC,IAAgB,CAC1B,MAAMC,EAAMJ,EAAM,GAAGG,CAAI,EACzB,OAAMC,KAAOF,IACXA,EAAME,CAAG,EAAIH,EAAG,GAAGE,CAAI,GAElBD,EAAME,CAAG,CAClB,CACF,EAEWC,EAAUN,EAAY,IAAII,IAAS,OAAOA,EAAK,CAAC,CAAC,CAAC,EAGlDG,EAAiBP,EAAY,IAAII,IAAS,KAAK,UAAUA,CAAI,CAAC,EAE9DI,EACX,CAACC,EAAc,IAAIL,IAAwB,KAAK,UAAUA,CAAI,IAAMJ,EAAYS,CAAW,EAEhFC,EAAW,CAACC,EAAkBC,EAAO,IAAKC,EAAY,KAAsB,CACvF,IAAIC,EAEJ,OAAO,YAAsBV,EAAM,CAIjC,MAAMW,EAAmB,KACnBC,EAAQ,IAAY,CACxB,aAAaF,CAAO,EACpBA,EAAU,KACLD,GACHF,EAAK,MAAMI,EAASX,CAAI,CAE5B,EACMa,EAAUJ,GAAa,CAACC,EAE9B,aAAaA,CAAO,EACpBA,EAAU,WAAWE,EAAOJ,CAAI,EAC5BK,GACFN,EAAK,MAAMI,EAASX,CAAI,CAE5B,CACF,EAEac,EAASA,GAAmC,IAAI,QAASC,GAAY,CAChF,WAAW,IAAMA,EAAQ,YAAYD,CAAK,EAAE,EAAGA,CAAK,CACtD,CAAC,EAEYE,GAAyB,SAA2B,CAAC,GAAG,YAExDC,EACXV,GACYA,EAAK,cAAgBS,EAAsB,UAAU"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sources":["../../../src/core/utils/helpers/text.ts"],"sourcesContent":["import _sanitize from 'sanitize-html'\n\nexport const defaultSanitizeConfig = {\n allowedTags: ['b', 'i', 'em', 'strong', 'a', 'p', 'span', 'li', 'ul', 'div', 'h1', 'h2', 'h3', 'h4', 'img'],\n allowedAttributes: {\n a: ['href', 'target', 'style', 'class', 'onclick'],\n '*': ['href', 'target', 'style', 'align', 'alt', 'center', 'bgcolor', 'style', 'src'],\n },\n}\n\nexport const sanitizeHtml\n = (\n text: string,\n sanitizeConfig?: typeof defaultSanitizeConfig,\n ): ReturnType<typeof _sanitize> => _sanitize(text, sanitizeConfig || defaultSanitizeConfig)\n\nexport const composeId = (text: string): string => text?.toLowerCase?.()?.replace(/\\s+/g, '-')\n"],"names":["defaultSanitizeConfig","sanitizeHtml","text","sanitizeConfig","_sanitize","composeId","_b","_a"],"mappings":"2JAEaA,EAAwB,CACnC,YAAa,CAAC,IAAK,IAAK,KAAM,SAAU,IAAK,IAAK,OAAQ,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAK,EAC1G,kBAAmB,CACjB,EAAG,CAAC,OAAQ,SAAU,QAAS,QAAS,SAAS,EACjD,IAAK,CAAC,OAAQ,SAAU,QAAS,QAAS,MAAO,SAAU,UAAW,QAAS,KAAK,CAAA,CAExF,EAEaC,EACT,CACAC,EACAC,IACiCC,EAAAA,QAAUF,EAAMC,GAAkBH,CAAqB,EAE/EK,EAAaH,YAAyB,OAAAI,GAAAC,EAAAL,GAAA,YAAAA,EAAM,cAAN,YAAAK,EAAA,KAAAL,KAAA,YAAAI,EAAuB,QAAQ,OAAQ"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=e=>e?e.toLowerCase():"",i=e=>e?e.toUpperCase():"",s=e=>e?e.toString().replace(/ /g,""):"",l=e=>e.slice((e.lastIndexOf(".")-1>>>0)+2),t=e=>{var n,o;return(o=(n=e==null?void 0:e.normalize("NFD"))==null?void 0:n.replace)==null?void 0:o.call(n,/[\u0300-\u036f]/g,"")},p=(e,n,o=!0,r=!0)=>!n||!e||!n.trim()||!e.trim()?!1:o&&r?t(n.toLowerCase()).includes(t(e.toLowerCase())):o?n.toLowerCase().includes(e.toLowerCase()):r?t(n).includes(t(e)):n.includes(e),u=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),g=(e,n=0,o="...")=>!n||e.length<=n?e:`${e.substr(0,n)}${o}`,a=e=>e&&t(e==null?void 0:e.toLocaleLowerCase().replaceAll(/\s/g,"-").replaceAll(/["]/g,"")),f=e=>e&&encodeURIComponent(a(e));exports.escapeRegExp=u;exports.fileNameExt=l;exports.findStringInText=p;exports.normalizeString=t;exports.removeWhitespaces=s;exports.sanitizeId=a;exports.sanitizePathId=f;exports.toLowerCase=c;exports.toUpperCase=i;exports.truncateText=g;
2
+ //# sourceMappingURL=textValueOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textValueOperations.js","sources":["../../../src/core/utils/helpers/textValueOperations.ts"],"sourcesContent":["// todo memoize\nexport const toLowerCase = (str: string | number): string | number => (str ? (str as string).toLowerCase() : '')\n\n// todo memoize\nexport const toUpperCase = (str: string): string => (str ? str.toUpperCase() : '')\n\n// todo memoize\nexport const removeWhitespaces = (str: string | number): string | number => (str ? str.toString()\n .replace(/ /g, '') as string : '')\n\n// eslint-disable-next-line no-bitwise\nexport const fileNameExt = (fileName: string): string => fileName.slice((fileName.lastIndexOf('.') - 1 >>> 0) + 2)\n\nexport const normalizeString = (str: string): string => str?.normalize('NFD')?.replace?.(/[\\u0300-\\u036f]/g, '')\n\nexport const findStringInText = (str: string, text: string, ci = true, norm = true): boolean => {\n if (!text || !str || !text.trim() || !str.trim()) {\n return false\n }\n\n if (ci && norm) {\n return normalizeString(text.toLowerCase()).includes(normalizeString(str.toLowerCase()))\n }\n\n if (ci) {\n return text.toLowerCase().includes(str.toLowerCase())\n }\n\n if (norm) {\n return normalizeString(text).includes(normalizeString(str))\n }\n\n return text.includes(str)\n}\n\n// eslint-disable-next-line no-useless-escape\nexport const escapeRegExp = (str: string): string => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\n\nexport const truncateText = (text: string, maxNumChars = 0, indicator = '...'): string => {\n if (!maxNumChars || text.length <= maxNumChars) {\n return text\n }\n return `${text.substr(0, maxNumChars)}${indicator}`\n}\n\nexport const sanitizeId\n = (id: string): string => id && normalizeString(id?.toLocaleLowerCase().replaceAll(/\\s/g, '-').replaceAll(/[\"]/g, ''))\n\nexport const sanitizePathId\n = (id: string): string => id && encodeURIComponent(sanitizeId(id))\n"],"names":["toLowerCase","str","toUpperCase","removeWhitespaces","fileNameExt","fileName","normalizeString","_b","_a","findStringInText","text","ci","norm","escapeRegExp","truncateText","maxNumChars","indicator","sanitizeId","id","sanitizePathId"],"mappings":"gFACO,MAAMA,EAAeC,GAA2CA,EAAOA,EAAe,cAAgB,GAGhGC,EAAeD,GAAyBA,EAAMA,EAAI,cAAgB,GAGlEE,EAAqBF,GAA2CA,EAAMA,EAAI,WACpF,QAAQ,KAAM,EAAE,EAAc,GAGpBG,EAAeC,GAA6BA,EAAS,OAAOA,EAAS,YAAY,GAAG,EAAI,IAAM,GAAK,CAAC,EAEpGC,EAAmBL,GAAA,SAAwB,OAAAM,GAAAC,EAAAP,GAAA,YAAAA,EAAK,UAAU,SAAf,YAAAO,EAAuB,UAAvB,YAAAD,EAAA,KAAAC,EAAiC,mBAAoB,KAEhGC,EAAmB,CAACR,EAAaS,EAAcC,EAAK,GAAMC,EAAO,KACxE,CAACF,GAAQ,CAACT,GAAO,CAACS,EAAK,QAAU,CAACT,EAAI,OACjC,GAGLU,GAAMC,EACDN,EAAgBI,EAAK,aAAa,EAAE,SAASJ,EAAgBL,EAAI,YAAA,CAAa,CAAC,EAGpFU,EACKD,EAAK,YAAA,EAAc,SAAST,EAAI,aAAa,EAGlDW,EACKN,EAAgBI,CAAI,EAAE,SAASJ,EAAgBL,CAAG,CAAC,EAGrDS,EAAK,SAAST,CAAG,EAIbY,EAAgBZ,GAAwBA,EAAI,QAAQ,sCAAuC,MAAM,EAEjGa,EAAe,CAACJ,EAAcK,EAAc,EAAGC,EAAY,QAClE,CAACD,GAAeL,EAAK,QAAUK,EAC1BL,EAEF,GAAGA,EAAK,OAAO,EAAGK,CAAW,CAAC,GAAGC,CAAS,GAGtCC,EACRC,GAAuBA,GAAMZ,EAAgBY,GAAA,YAAAA,EAAI,oBAAoB,WAAW,MAAO,KAAK,WAAW,OAAQ,GAAG,EAE1GC,EACRD,GAAuBA,GAAM,mBAAmBD,EAAWC,CAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sources":["../../../src/core/utils/helpers/ui.ts"],"sourcesContent":["export const mapSerReplacer\n= (key: string, value: unknown): unknown | { dataType: string; value: Array<unknown>} => {\n if (value instanceof Map) {\n return {\n dataType: 'Map',\n value: Array.from(value.entries()), // or with spread: value: [...value]\n }\n }\n return value\n}\n\nexport type TClassName = string | boolean | null | undefined\nexport const classNames = (...classes: TClassName[]): string => classes\n .filter((className: TClassName) => (typeof className === 'string' && className !== undefined && className !== null))\n .filter(Boolean).join(' ')\n\n\nexport type PropsCategoriesType = {\n dataProps: Record<string, unknown>\n restProps: Record<string, unknown>\n};\n\nexport const parseProps = (props: Record<string, unknown>):PropsCategoriesType => {\n const dataProps: Record<string, unknown> = {}\n const restProps: Record<string, unknown> = {}\n\n Object.entries(props).forEach(([key, value]) => {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 4) === 'data') {\n dataProps[key] = value\n } else {\n restProps[key] = value\n }\n })\n return { dataProps, restProps }\n}\n\n\n\ntype GeneratorIdCallable = (token: string, increment?: boolean, forcedValue?: number | undefined) => string\ntype GenerateId = { tokens?: Record<string, number | null | undefined> } & GeneratorIdCallable\n\nexport const generateId: GenerateId = (\n token: string,\n increment = true,\n forcedValue: number | undefined = undefined,\n) => {\n generateId.tokens = generateId.tokens || {}\n\n if (forcedValue !== undefined && forcedValue !== null) {\n generateId.tokens[token] = forcedValue\n return `${token}${generateId?.tokens?.[token] as number}`\n }\n\n const noValue = generateId?.tokens[token] === undefined || generateId?.tokens[token] === null\n\n generateId.tokens[token] = generateId.tokens[token] || 0\n\n if (noValue) {\n return `${token}${0}`\n }\n\n if (increment) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n generateId.tokens[token] += 1\n\n return `${token}${generateId?.tokens?.[token] as number}`\n }\n\n return `${token}${generateId?.tokens?.[token] as number}`\n}\n\ntype FAnchorClick = { aElement?: HTMLAnchorElement | null }\n & ((href: string, target?: string, remove?: boolean) => void)\n\nexport const anchorClick: FAnchorClick = (href: string, target = '_top', remove = false): HTMLAnchorElement | null => {\n anchorClick.aElement = anchorClick.aElement || document.createElement('a')\n\n const { aElement } = anchorClick\n\n aElement.setAttribute('href', href)\n aElement.setAttribute('target', target)\n\n aElement.dataset.date = `${Date.now()}`\n aElement.click()\n if (remove) {\n aElement.remove()\n anchorClick.aElement = null\n }\n\n return aElement\n}\n\n\n\nexport type NoopEvent = {\n preventDefault?: () => void\n stopPropagation?: () => void\n stopImmediatePropagation?: () => void\n} | Event\n\nexport const noop = (event?: NoopEvent): void => {\n event?.preventDefault?.()\n event?.stopPropagation?.()\n event?.stopImmediatePropagation?.()\n}\n\n/**\n * Type definition for theme map.\n * @typedef {Object} ThemeMap\n * @property {string} dark - CSS class for the dark theme.\n * @property {string} light - CSS class for the light theme.\n */\nexport type ThemeMap = {\n dark: string\n light: string\n}\n\nconst THEME_PROP = '__eskit_themes__'\n\nconst defaultThemes: ThemeMap = {\n dark: 'theme-dark',\n light: 'theme-light',\n}\n\n/**\n * Reads the theme config stored on the given element.\n * Falls back to defaultThemes when no config has been set.\n * Scoping to the element means different microfrontends (different roots) are isolated,\n * while all bundles targeting the same element share one config.\n * @param {HTMLElement} [element] - The element to read from. Defaults to document.body.\n * @returns {ThemeMap} The current base themes for the element.\n */\nexport const getBaseThemes = (element?: HTMLElement): ThemeMap => {\n const el = element ?? document.body\n\n return (el as unknown as Record<string, unknown>)[THEME_PROP] as ThemeMap ?? defaultThemes\n}\n\n/**\n * Sets the base theme class names on the given element.\n * @param {ThemeMap} themes - CSS classes for dark and light themes.\n * @param {HTMLElement} [element] - The element to store config on. Defaults to document.body.\n */\nexport const setThemeClassNames = (themes: ThemeMap, element?: HTMLElement): void => {\n const el = element ?? document.body\n const store = el as unknown as Record<string, unknown>\n\n store[THEME_PROP] = themes\n}\n\n/**\n * Switches the color theme of the document.\n * @param {boolean} isDark - Flag to determine if the dark theme should be applied.\n * @param {HTMLElement} [htmlElement] - The HTML element to which the theme will be applied.\n * @param {boolean} [findShadows=true] - Flag to determine if shadow DOM elements should also be themed.\n */\nexport const switchColorTheme = (\n isDark: boolean, htmlElement?: HTMLElement, findShadows = true,\n): void => {\n const themes = getBaseThemes(htmlElement)\n const oldClass = isDark ? themes.light : themes.dark\n const newClass = isDark ? themes.dark : themes.light\n\n if (htmlElement) {\n htmlElement.classList.remove(oldClass)\n htmlElement.classList.remove(newClass)\n htmlElement.classList.add(newClass)\n }\n\n if (typeof document !== 'undefined') {\n document.querySelectorAll(`.${oldClass}`).forEach((element) => {\n element.classList.add(`.${newClass}`)\n element.classList.remove(`.${oldClass}`)\n })\n\n if (findShadows) {\n document.querySelectorAll('.shadow-div').forEach((element) => {\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.add(newClass)\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.remove(oldClass)\n })\n\n document.querySelectorAll('esmf-wrapper').forEach((element) => {\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.add(newClass)\n element.shadowRoot?.querySelector(`.${oldClass}`)?.classList.remove(oldClass)\n\n const firstChild: HTMLElement = element.shadowRoot?.childNodes[0] as HTMLElement\n\n if (firstChild) {\n firstChild.classList.add(newClass)\n firstChild.classList.remove(oldClass)\n }\n })\n }\n }\n}\n\n/**\n * Updates the color theme of the document.\n * @param {boolean} [isDark] - Optional flag to determine if the dark theme should be applied.\n * @param {HTMLElement} [htmlElement] - The HTML element to which the theme will be applied.\n */\nexport const updateColorTheme = (isDark?: boolean, htmlElement?: HTMLElement): void => {\n const el = htmlElement || document.body\n let resolvedIsDark: boolean = isDark || false\n\n if (typeof document !== 'undefined' && isDark === undefined) {\n resolvedIsDark = document.body.classList.contains(getBaseThemes(el).dark)\n }\n switchColorTheme(resolvedIsDark, el)\n}\n\nconst windowMatchMediaChangeEventType = 'change'\n\n/**\n * Observes the user's theme preference and applies the appropriate theme.\n * @param {() => HTMLElement} [getHtmlElement] - Function to get the HTML element to which the theme will be applied.\n * @param {(isDark: boolean) => void} [switchCallback] - Callback function to execute when the theme changes.\n * @returns {() => void} Function to stop observing the theme preference.\n */\nexport const observeThemePreference = (\n getHtmlElement: () => HTMLElement = (): HTMLElement => document.body,\n switchCallback: (isDark: boolean) => void = (isDark: boolean): boolean => isDark,\n): () => void => {\n const switchColorThemeHandler = (isDark: boolean): void => {\n const htmlElement = getHtmlElement()\n\n switchColorTheme?.(isDark, htmlElement)\n switchCallback?.(isDark)\n }\n\n const changeDarkColorThemeHandler = (event: MediaQueryListEvent): void => {\n switchColorThemeHandler(event.matches)\n }\n\n const changeLightColorThemeHandler = (event: MediaQueryListEvent): void => {\n switchColorThemeHandler(!event.matches)\n }\n\n const isDark = window.matchMedia('(prefers-color-scheme: dark)')\n\n try {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener(\n windowMatchMediaChangeEventType, changeDarkColorThemeHandler,\n )\n window.matchMedia('(prefers-color-scheme: light)').removeEventListener(\n windowMatchMediaChangeEventType, changeLightColorThemeHandler,\n )\n } catch (error) {\n console.error(`Error::observeThemePreference::removeEventListener: ${error}`)\n }\n\n switchColorThemeHandler(isDark?.matches)\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener(\n windowMatchMediaChangeEventType, changeDarkColorThemeHandler,\n )\n window.matchMedia('(prefers-color-scheme: light)').addEventListener(\n windowMatchMediaChangeEventType, changeLightColorThemeHandler,\n )\n\n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener(\n windowMatchMediaChangeEventType, changeDarkColorThemeHandler,\n )\n window.matchMedia('(prefers-color-scheme: light)').removeEventListener(\n windowMatchMediaChangeEventType, changeLightColorThemeHandler,\n )\n }\n}\n"],"names":["mapSerReplacer","key","value","classNames","classes","className","parseProps","props","dataProps","restProps","generateId","token","increment","forcedValue","_a","noValue","_b","_c","anchorClick","href","target","remove","aElement","noop","event","THEME_PROP","defaultThemes","getBaseThemes","element","setThemeClassNames","themes","store","switchColorTheme","isDark","htmlElement","findShadows","oldClass","newClass","_d","firstChild","_e","updateColorTheme","el","resolvedIsDark","windowMatchMediaChangeEventType","observeThemePreference","getHtmlElement","switchCallback","switchColorThemeHandler","changeDarkColorThemeHandler","changeLightColorThemeHandler"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valueOperations.js","sources":["../../../src/core/utils/helpers/valueOperations.ts"],"sourcesContent":["export type Limit = {\n min?: number\n max?: number\n};\n\nexport const numberDefined = (value?: number | undefined | null): boolean => value !== undefined && value !== null\n\nexport const restrictNumberInLimits = (value: number, limit?: Limit): number => Math.max(\n Math.min(value, numberDefined(limit?.max) ? (limit?.max as number) : Infinity),\n numberDefined(limit?.min) ? (limit?.min as number) : -Infinity,\n)\n\nexport enum Operation {\n ADD = 'add',\n SUBTRACT = 'subtract',\n MULTIPLY = 'multiply',\n DIVIDE = 'divide',\n}\n\nexport const numberOperation = (\n value: number,\n operand: number,\n operation: Operation,\n limit?: Limit,\n): number => {\n let result = 0\n\n switch (operation) {\n case Operation.ADD: {\n result = value + operand\n break\n }\n case Operation.SUBTRACT: {\n result = value - operand\n break\n }\n case Operation.MULTIPLY: {\n result = value * operand\n break\n }\n case Operation.DIVIDE: {\n result = operand === 0 ? 0 : value / operand\n break\n }\n default:\n value\n }\n\n return restrictNumberInLimits(result, limit)\n}\n\nexport const incerementValue\n // eslint-disable-next-line default-param-last\n = (value: number, inc = 1, limit?: Limit): number => numberOperation(value, inc, Operation.ADD, limit)\n\nexport const decrementValue\n // eslint-disable-next-line default-param-last\n = (value: number, inc = 1, limit?: Limit): number => numberOperation(value, inc, Operation.SUBTRACT, limit)\n\nexport const setValue = (\n value: number | string | Record<string, unknown> | any,\n limit?: Limit,\n): any => (typeof value === 'number' && limit ? restrictNumberInLimits(value, limit) : value)\n"],"names":["numberDefined","value","restrictNumberInLimits","limit","Operation","numberOperation","operand","operation","result","incerementValue","inc","decrementValue","setValue"],"mappings":"gFAKO,MAAMA,EAAiBC,GAAsEA,GAAU,KAEjGC,EAAyB,CAACD,EAAeE,IAA0B,KAAK,IACnF,KAAK,IAAIF,EAAOD,EAAcG,GAAA,YAAAA,EAAO,GAAG,EAAKA,GAAA,YAAAA,EAAO,IAAiB,GAAQ,EAC7EH,EAAcG,GAAA,YAAAA,EAAO,GAAG,EAAKA,GAAA,YAAAA,EAAO,IAAiB,IACvD,EAEO,IAAKC,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,OAAS,SAJCA,IAAAA,GAAA,CAAA,CAAA,EAOL,MAAMC,EAAkB,CAC7BJ,EACAK,EACAC,EACAJ,IACW,CACX,IAAIK,EAAS,EAEb,OAAQD,EAAA,CACN,IAAK,MAAe,CAClBC,EAASP,EAAQK,EACjB,KACF,CACA,IAAK,WAAoB,CACvBE,EAASP,EAAQK,EACjB,KACF,CACA,IAAK,WAAoB,CACvBE,EAASP,EAAQK,EACjB,KACF,CACA,IAAK,SAAkB,CACrBE,EAASF,IAAY,EAAI,EAAIL,EAAQK,EACrC,KACF,CAEE,CAGJ,OAAOJ,EAAuBM,EAAQL,CAAK,CAC7C,EAEaM,EAET,CAACR,EAAeS,EAAM,EAAGP,IAA0BE,EAAgBJ,EAAOS,EAAK,MAAeP,CAAK,EAE1FQ,EAET,CAACV,EAAeS,EAAM,EAAGP,IAA0BE,EAAgBJ,EAAOS,EAAK,WAAoBP,CAAK,EAE/FS,EAAW,CACtBX,EACAE,IACS,OAAOF,GAAU,UAAYE,EAAQD,EAAuBD,EAAOE,CAAK,EAAIF"}