@zajno/common 1.6.1 → 2.0.0-beta.1

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 (508) hide show
  1. package/.eslintrc.js +1 -1
  2. package/README.md +6 -1
  3. package/coverage/clover.xml +342 -1064
  4. package/coverage/coverage-final.json +30 -44
  5. package/coverage/lcov-report/__tests__/helpers/expect.ts.html +94 -0
  6. package/coverage/lcov-report/__tests__/helpers/index.html +131 -0
  7. package/coverage/lcov-report/__tests__/helpers/main.ts.html +121 -0
  8. package/coverage/lcov-report/async/arrays.ts.html +199 -0
  9. package/coverage/lcov-report/async/index.html +36 -21
  10. package/coverage/lcov-report/async/timeout.ts.html +124 -22
  11. package/coverage/lcov-report/dates/calc.ts.html +301 -0
  12. package/coverage/lcov-report/dates/convert.ts.html +658 -0
  13. package/coverage/lcov-report/dates/datex.ts.html +211 -0
  14. package/coverage/lcov-report/dates/format.ts.html +403 -0
  15. package/coverage/lcov-report/dates/index.html +251 -0
  16. package/coverage/lcov-report/dates/index.ts.html +112 -0
  17. package/coverage/lcov-report/dates/parse.ts.html +157 -0
  18. package/coverage/lcov-report/dates/period.ts.html +154 -0
  19. package/coverage/lcov-report/dates/shift.ts.html +355 -0
  20. package/coverage/lcov-report/dates/types.ts.html +181 -0
  21. package/coverage/lcov-report/dates/yearDate.ts.html +193 -0
  22. package/coverage/lcov-report/fields/index.html +116 -0
  23. package/coverage/lcov-report/fields/update.ts.html +457 -0
  24. package/coverage/lcov-report/functions/disposer.ts.html +376 -0
  25. package/coverage/lcov-report/functions/index.html +116 -0
  26. package/coverage/lcov-report/functions/safeCall.ts.html +103 -0
  27. package/coverage/lcov-report/index.html +119 -74
  28. package/coverage/lcov-report/lazy/index.html +131 -0
  29. package/coverage/lcov-report/lazy/light.ts.html +172 -0
  30. package/coverage/lcov-report/lazy/promise.ts.html +241 -0
  31. package/coverage/lcov-report/lazy/singleton.ts.html +181 -0
  32. package/coverage/lcov-report/logger/batch.ts.html +112 -0
  33. package/coverage/lcov-report/logger/console.ts.html +241 -0
  34. package/coverage/lcov-report/logger/index.html +80 -20
  35. package/coverage/lcov-report/logger/index.ts.html +48 -48
  36. package/coverage/lcov-report/logger/named.ts.html +226 -0
  37. package/coverage/lcov-report/logger/proxy.ts.html +172 -0
  38. package/coverage/lcov-report/math/arrays.ts.html +907 -0
  39. package/coverage/lcov-report/math/calc.ts.html +292 -0
  40. package/coverage/lcov-report/math/distribution.ts.html +145 -0
  41. package/coverage/lcov-report/math/index.html +161 -0
  42. package/coverage/lcov-report/math/index.ts.html +166 -0
  43. package/coverage/lcov-report/observing/event.ts.html +358 -0
  44. package/coverage/lcov-report/observing/index.html +116 -0
  45. package/coverage/lcov-report/observing/transition.ts.html +634 -0
  46. package/coverage/lcov-report/src/__tests__/helpers/expect.ts.html +1 -1
  47. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  48. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  49. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  50. package/coverage/lcov-report/src/async/index.html +21 -36
  51. package/coverage/lcov-report/src/async/timeout.ts.html +59 -59
  52. package/coverage/lcov-report/src/cache.ts.html +97 -97
  53. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  54. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  55. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  56. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  57. package/coverage/lcov-report/src/dates/index.html +1 -1
  58. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  59. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  60. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  61. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  62. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  63. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  64. package/coverage/lcov-report/src/disposer.ts.html +1 -1
  65. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  66. package/coverage/lcov-report/src/event.ts.html +1 -1
  67. package/coverage/lcov-report/src/fields/index.html +1 -1
  68. package/coverage/lcov-report/src/fields/update.ts.html +1 -1
  69. package/coverage/lcov-report/src/functions.ts.html +1 -1
  70. package/coverage/lcov-report/src/index.html +20 -155
  71. package/coverage/lcov-report/src/lazy/index.html +1 -1
  72. package/coverage/lcov-report/src/lazy/light.ts.html +1 -1
  73. package/coverage/lcov-report/src/lazy/observable.ts.html +1 -1
  74. package/coverage/lcov-report/src/lazy/promise.ts.html +1 -1
  75. package/coverage/lcov-report/src/lazy/singleton.ts.html +1 -1
  76. package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
  77. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  78. package/coverage/lcov-report/src/logger/index.html +1 -1
  79. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  80. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  81. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  82. package/coverage/lcov-report/src/math/arrays.ts.html +316 -277
  83. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  84. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  85. package/coverage/lcov-report/src/math/index.html +21 -66
  86. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  87. package/coverage/lcov-report/src/observersMap.ts.html +1 -1
  88. package/coverage/lcov-report/src/observingCache.ts.html +1 -1
  89. package/coverage/lcov-report/src/queue/index.html +1 -1
  90. package/coverage/lcov-report/src/queue/parallel.ts.html +1 -1
  91. package/coverage/lcov-report/src/tempoCache.ts.html +1 -1
  92. package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
  93. package/coverage/lcov-report/src/types/comparator.ts.html +103 -0
  94. package/coverage/lcov-report/src/types/getter.ts.html +127 -0
  95. package/coverage/lcov-report/src/types/index.html +146 -0
  96. package/coverage/lcov-report/src/types/index.ts.html +112 -0
  97. package/coverage/lcov-report/src/types.ts.html +1 -1
  98. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  99. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  100. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  101. package/coverage/lcov-report/src/validation/index.html +1 -1
  102. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  103. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  104. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  105. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  106. package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +1 -1
  107. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
  108. package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +5 -2
  109. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
  110. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +1 -1
  111. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
  112. package/coverage/lcov-report/src/viewModels/TextModel.ts.html +1 -1
  113. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
  114. package/coverage/lcov-report/src/viewModels/index.html +10 -130
  115. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  116. package/coverage/lcov-report/structures/helpers/enum.ts.html +454 -0
  117. package/coverage/lcov-report/structures/helpers/index.html +116 -0
  118. package/coverage/lcov-report/structures/index.html +116 -0
  119. package/coverage/lcov-report/structures/promiseCache.ts.html +628 -0
  120. package/coverage/lcov-report/structures/queue/index.html +116 -0
  121. package/coverage/lcov-report/structures/queue/parallel.ts.html +511 -0
  122. package/coverage/lcov-report/structures/subscribersMap.ts.html +400 -0
  123. package/coverage/lcov-report/structures/subscribersPromiseCache.ts.html +562 -0
  124. package/coverage/lcov-report/structures/tempoCache.ts.html +139 -0
  125. package/coverage/lcov-report/types/comparator.ts.html +103 -0
  126. package/coverage/lcov-report/types/getter.ts.html +127 -0
  127. package/coverage/lcov-report/types/index.html +146 -0
  128. package/coverage/lcov-report/types/index.ts.html +112 -0
  129. package/coverage/lcov-report/validation/ValidationErrors.ts.html +163 -0
  130. package/coverage/lcov-report/validation/creditCard.ts.html +160 -0
  131. package/coverage/lcov-report/validation/helpers.ts.html +226 -0
  132. package/coverage/lcov-report/validation/index.html +107 -12
  133. package/coverage/lcov-report/validation/index.ts.html +13 -8
  134. package/coverage/lcov-report/validation/types.ts.html +139 -0
  135. package/coverage/lcov-report/validation/validators.ts.html +250 -0
  136. package/coverage/lcov-report/validation/wrappers.ts.html +163 -0
  137. package/coverage/lcov-report/viewModels/LoadingModel.ts.html +15 -7
  138. package/coverage/lcov-report/viewModels/index.html +19 -59
  139. package/coverage/lcov.info +745 -2263
  140. package/lib/fields/update.js +3 -3
  141. package/lib/fields/update.js.map +1 -1
  142. package/lib/functions/assert.d.ts +3 -0
  143. package/lib/functions/assert.d.ts.map +1 -0
  144. package/lib/functions/assert.js +21 -0
  145. package/lib/functions/assert.js.map +1 -0
  146. package/lib/{disposer.d.ts → functions/disposer.d.ts} +0 -0
  147. package/lib/functions/disposer.d.ts.map +1 -0
  148. package/lib/{disposer.js → functions/disposer.js} +1 -1
  149. package/lib/functions/disposer.js.map +1 -0
  150. package/lib/functions/safeCall.d.ts +2 -0
  151. package/lib/functions/safeCall.d.ts.map +1 -0
  152. package/lib/{functions.js → functions/safeCall.js} +1 -1
  153. package/lib/functions/safeCall.js.map +1 -0
  154. package/lib/{throttle.d.ts → functions/throttle.d.ts} +0 -0
  155. package/lib/functions/throttle.d.ts.map +1 -0
  156. package/lib/{throttle.js → functions/throttle.js} +1 -1
  157. package/lib/functions/throttle.js.map +1 -0
  158. package/lib/lazy/light.d.ts +1 -1
  159. package/lib/lazy/light.d.ts.map +1 -1
  160. package/lib/lazy/promise.d.ts +1 -1
  161. package/lib/lazy/promise.d.ts.map +1 -1
  162. package/lib/lazy/singleton.d.ts +1 -1
  163. package/lib/lazy/singleton.d.ts.map +1 -1
  164. package/lib/math/arrays.d.ts +1 -0
  165. package/lib/math/arrays.d.ts.map +1 -1
  166. package/lib/math/arrays.js +13 -1
  167. package/lib/math/arrays.js.map +1 -1
  168. package/lib/{event.d.ts → observing/event.d.ts} +2 -3
  169. package/lib/observing/event.d.ts.map +1 -0
  170. package/lib/{event.js → observing/event.js} +2 -3
  171. package/lib/{event.js.map → observing/event.js.map} +1 -1
  172. package/lib/{throttledEvent.d.ts → observing/throttledEvent.d.ts} +0 -0
  173. package/lib/observing/throttledEvent.d.ts.map +1 -0
  174. package/lib/{throttledEvent.js → observing/throttledEvent.js} +1 -1
  175. package/lib/observing/throttledEvent.js.map +1 -0
  176. package/lib/{timer.d.ts → observing/timer.d.ts} +1 -1
  177. package/lib/observing/timer.d.ts.map +1 -0
  178. package/lib/{timer.js → observing/timer.js} +0 -0
  179. package/lib/observing/timer.js.map +1 -0
  180. package/lib/{services/storage → storage}/index.d.ts +1 -1
  181. package/lib/storage/index.d.ts.map +1 -0
  182. package/lib/{services/storage → storage}/index.js +0 -0
  183. package/lib/storage/index.js.map +1 -0
  184. package/lib/{services/storage → storage}/web/localStorage.d.ts +1 -1
  185. package/lib/storage/web/localStorage.d.ts.map +1 -0
  186. package/lib/{services/storage → storage}/web/localStorage.js +0 -0
  187. package/lib/storage/web/localStorage.js.map +1 -0
  188. package/lib/{services/storage → storage}/web/sessionStorage.d.ts +1 -1
  189. package/lib/storage/web/sessionStorage.d.ts.map +1 -0
  190. package/lib/{services/storage → storage}/web/sessionStorage.js +0 -0
  191. package/lib/storage/web/sessionStorage.js.map +1 -0
  192. package/lib/{services/storage → storage}/web/webStorage.d.ts +1 -1
  193. package/lib/storage/web/webStorage.d.ts.map +1 -0
  194. package/lib/{services/storage → storage}/web/webStorage.js +0 -0
  195. package/lib/storage/web/webStorage.js.map +1 -0
  196. package/lib/{enumHelper.d.ts → structures/helpers/enum.d.ts} +1 -1
  197. package/lib/structures/helpers/enum.d.ts.map +1 -0
  198. package/lib/{enumHelper.js → structures/helpers/enum.js} +1 -1
  199. package/lib/structures/helpers/enum.js.map +1 -0
  200. package/lib/{nameHelper.d.ts → structures/helpers/name.d.ts} +5 -5
  201. package/lib/structures/helpers/name.d.ts.map +1 -0
  202. package/lib/{nameHelper.js → structures/helpers/name.js} +7 -6
  203. package/lib/structures/helpers/name.js.map +1 -0
  204. package/lib/structures/linkedList.d.ts +39 -0
  205. package/lib/structures/linkedList.d.ts.map +1 -0
  206. package/lib/structures/linkedList.js +82 -0
  207. package/lib/structures/linkedList.js.map +1 -0
  208. package/lib/{pool.d.ts → structures/pool.d.ts} +1 -1
  209. package/lib/structures/pool.d.ts.map +1 -0
  210. package/lib/{pool.js → structures/pool.js} +2 -2
  211. package/lib/structures/pool.js.map +1 -0
  212. package/lib/{queue → structures/queue}/parallel.d.ts +3 -3
  213. package/lib/structures/queue/parallel.d.ts.map +1 -0
  214. package/lib/{queue → structures/queue}/parallel.js +2 -2
  215. package/lib/structures/queue/parallel.js.map +1 -0
  216. package/lib/{tempoCache.d.ts → structures/tempoCache.d.ts} +0 -0
  217. package/lib/structures/tempoCache.d.ts.map +1 -0
  218. package/lib/{tempoCache.js → structures/tempoCache.js} +0 -0
  219. package/lib/structures/tempoCache.js.map +1 -0
  220. package/lib/types/comparator.d.ts +5 -0
  221. package/lib/types/comparator.d.ts.map +1 -0
  222. package/lib/types/comparator.js +8 -0
  223. package/lib/types/comparator.js.map +1 -0
  224. package/lib/types/deep.d.ts +9 -0
  225. package/lib/types/deep.d.ts.map +1 -0
  226. package/lib/{deepPartial.js → types/deep.js} +1 -1
  227. package/lib/types/deep.js.map +1 -0
  228. package/lib/types/functions.d.ts +7 -0
  229. package/lib/types/functions.d.ts.map +1 -0
  230. package/lib/{services/localization/abstractions.js → types/functions.js} +1 -1
  231. package/lib/types/functions.js.map +1 -0
  232. package/lib/types/getter.d.ts +5 -0
  233. package/lib/types/getter.d.ts.map +1 -0
  234. package/lib/{types.js → types/getter.js} +2 -6
  235. package/lib/types/getter.js.map +1 -0
  236. package/lib/{ident.d.ts → types/ident.d.ts} +0 -0
  237. package/lib/types/ident.d.ts.map +1 -0
  238. package/lib/{ident.js → types/ident.js} +0 -0
  239. package/lib/types/ident.js.map +1 -0
  240. package/lib/types/index.d.ts +8 -0
  241. package/lib/types/index.d.ts.map +1 -0
  242. package/lib/types/index.js +7 -0
  243. package/lib/types/index.js.map +1 -0
  244. package/lib/validation/ValidationErrors.d.ts +1 -1
  245. package/lib/validation/ValidationErrors.d.ts.map +1 -1
  246. package/lib/validation/ValidationErrors.js +2 -2
  247. package/lib/validation/ValidationErrors.js.map +1 -1
  248. package/lib/{emails.d.ts → validation/emails.d.ts} +0 -0
  249. package/lib/validation/emails.d.ts.map +1 -0
  250. package/lib/{emails.js → validation/emails.js} +0 -0
  251. package/lib/validation/emails.js.map +1 -0
  252. package/lib/web/breakpoints/index.d.ts +3 -0
  253. package/lib/web/breakpoints/index.d.ts.map +1 -0
  254. package/lib/web/breakpoints/index.js +6 -0
  255. package/lib/web/breakpoints/index.js.map +1 -0
  256. package/lib/web/breakpoints/manager.d.ts +17 -0
  257. package/lib/web/breakpoints/manager.d.ts.map +1 -0
  258. package/lib/web/breakpoints/manager.js +56 -0
  259. package/lib/web/breakpoints/manager.js.map +1 -0
  260. package/lib/web/breakpoints/rem.d.ts +3 -0
  261. package/lib/web/breakpoints/rem.d.ts.map +1 -0
  262. package/lib/web/breakpoints/rem.js +22 -0
  263. package/lib/web/breakpoints/rem.js.map +1 -0
  264. package/lib/web/breakpoints/types.d.ts +22 -0
  265. package/lib/web/breakpoints/types.d.ts.map +1 -0
  266. package/lib/{viewModels → web/breakpoints}/types.js +0 -0
  267. package/lib/{viewModels → web/breakpoints}/types.js.map +1 -1
  268. package/package.json +16 -16
  269. package/src/.DS_Store +0 -0
  270. package/src/async/__tests__/timeout.test.ts +1 -1
  271. package/src/fields/update.ts +1 -1
  272. package/src/functions/assert.ts +19 -0
  273. package/src/{disposer.ts → functions/disposer.ts} +1 -1
  274. package/src/functions/safeCall.ts +6 -0
  275. package/src/{throttle.ts → functions/throttle.ts} +1 -1
  276. package/src/lazy/__tests__/lazy.test.ts +1 -48
  277. package/src/lazy/light.ts +1 -1
  278. package/src/lazy/promise.ts +1 -1
  279. package/src/lazy/singleton.ts +1 -1
  280. package/src/math/arrays.ts +13 -0
  281. package/src/{event.ts → observing/event.ts} +3 -4
  282. package/src/{throttledEvent.ts → observing/throttledEvent.ts} +1 -1
  283. package/src/{timer.ts → observing/timer.ts} +1 -1
  284. package/src/{services/storage → storage}/index.ts +1 -1
  285. package/src/{services/storage → storage}/web/localStorage.ts +1 -1
  286. package/src/{services/storage → storage}/web/sessionStorage.ts +1 -1
  287. package/src/{services/storage → storage}/web/webStorage.ts +1 -1
  288. package/src/{__tests__ → structures/__tests__}/enumHelper.test.ts +1 -1
  289. package/src/{__tests__ → structures/__tests__}/tempoCache.test.ts +1 -1
  290. package/src/{enumHelper.ts → structures/helpers/enum.ts} +0 -0
  291. package/src/{nameHelper.ts → structures/helpers/name.ts} +4 -4
  292. package/src/structures/linkedList.ts +129 -0
  293. package/src/{pool.ts → structures/pool.ts} +2 -2
  294. package/src/{queue → structures/queue}/__tests__/parallel.test.ts +2 -2
  295. package/src/{queue → structures/queue}/parallel.ts +2 -2
  296. package/src/{tempoCache.ts → structures/tempoCache.ts} +0 -0
  297. package/src/types/comparator.ts +6 -0
  298. package/src/types/deep.ts +18 -0
  299. package/src/types/functions.ts +8 -0
  300. package/src/types/getter.ts +14 -0
  301. package/src/{ident.ts → types/ident.ts} +0 -0
  302. package/src/types/index.ts +9 -0
  303. package/src/validation/ValidationErrors.ts +1 -1
  304. package/src/{emails.ts → validation/emails.ts} +0 -0
  305. package/src/web/breakpoints/index.ts +3 -0
  306. package/src/web/breakpoints/manager.ts +65 -0
  307. package/src/web/breakpoints/rem.ts +24 -0
  308. package/src/web/breakpoints/types.ts +26 -0
  309. package/tsconfig.build.json +10 -0
  310. package/tsconfig.json +0 -1
  311. package/yarn.lock +467 -370
  312. package/lib/cache.d.ts +0 -36
  313. package/lib/cache.d.ts.map +0 -1
  314. package/lib/cache.js +0 -165
  315. package/lib/cache.js.map +0 -1
  316. package/lib/deepPartial.d.ts +0 -4
  317. package/lib/deepPartial.d.ts.map +0 -1
  318. package/lib/deepPartial.js.map +0 -1
  319. package/lib/disposer.d.ts.map +0 -1
  320. package/lib/disposer.js.map +0 -1
  321. package/lib/emails.d.ts.map +0 -1
  322. package/lib/emails.js.map +0 -1
  323. package/lib/enumHelper.d.ts.map +0 -1
  324. package/lib/enumHelper.js.map +0 -1
  325. package/lib/event.d.ts.map +0 -1
  326. package/lib/functions.d.ts +0 -9
  327. package/lib/functions.d.ts.map +0 -1
  328. package/lib/functions.js.map +0 -1
  329. package/lib/ident.d.ts.map +0 -1
  330. package/lib/ident.js.map +0 -1
  331. package/lib/lazy/index.d.ts +0 -10
  332. package/lib/lazy/index.d.ts.map +0 -1
  333. package/lib/lazy/index.js +0 -23
  334. package/lib/lazy/index.js.map +0 -1
  335. package/lib/lazy/observable.d.ts +0 -9
  336. package/lib/lazy/observable.d.ts.map +0 -1
  337. package/lib/lazy/observable.js +0 -31
  338. package/lib/lazy/observable.js.map +0 -1
  339. package/lib/lazy.light.d.ts +0 -2
  340. package/lib/lazy.light.d.ts.map +0 -1
  341. package/lib/lazy.light.js +0 -8
  342. package/lib/lazy.light.js.map +0 -1
  343. package/lib/nameHelper.d.ts.map +0 -1
  344. package/lib/nameHelper.js.map +0 -1
  345. package/lib/observersMap.d.ts +0 -22
  346. package/lib/observersMap.d.ts.map +0 -1
  347. package/lib/observersMap.js +0 -93
  348. package/lib/observersMap.js.map +0 -1
  349. package/lib/observingCache.d.ts +0 -32
  350. package/lib/observingCache.d.ts.map +0 -1
  351. package/lib/observingCache.js +0 -128
  352. package/lib/observingCache.js.map +0 -1
  353. package/lib/pool.d.ts.map +0 -1
  354. package/lib/pool.js.map +0 -1
  355. package/lib/queue/parallel.d.ts.map +0 -1
  356. package/lib/queue/parallel.js.map +0 -1
  357. package/lib/services/localization/LocalaziedValidationErrors.d.ts +0 -9
  358. package/lib/services/localization/LocalaziedValidationErrors.d.ts.map +0 -1
  359. package/lib/services/localization/LocalaziedValidationErrors.js +0 -27
  360. package/lib/services/localization/LocalaziedValidationErrors.js.map +0 -1
  361. package/lib/services/localization/LocalizationManager.d.ts +0 -18
  362. package/lib/services/localization/LocalizationManager.d.ts.map +0 -1
  363. package/lib/services/localization/LocalizationManager.js +0 -58
  364. package/lib/services/localization/LocalizationManager.js.map +0 -1
  365. package/lib/services/localization/abstractions.d.ts +0 -12
  366. package/lib/services/localization/abstractions.d.ts.map +0 -1
  367. package/lib/services/localization/abstractions.js.map +0 -1
  368. package/lib/services/localization/defaultShape.d.ts +0 -26
  369. package/lib/services/localization/defaultShape.d.ts.map +0 -1
  370. package/lib/services/localization/defaultShape.js +0 -28
  371. package/lib/services/localization/defaultShape.js.map +0 -1
  372. package/lib/services/localization/index.d.ts +0 -5
  373. package/lib/services/localization/index.d.ts.map +0 -1
  374. package/lib/services/localization/index.js +0 -10
  375. package/lib/services/localization/index.js.map +0 -1
  376. package/lib/services/storage/index.d.ts.map +0 -1
  377. package/lib/services/storage/index.js.map +0 -1
  378. package/lib/services/storage/web/localStorage.d.ts.map +0 -1
  379. package/lib/services/storage/web/localStorage.js.map +0 -1
  380. package/lib/services/storage/web/sessionStorage.d.ts.map +0 -1
  381. package/lib/services/storage/web/sessionStorage.js.map +0 -1
  382. package/lib/services/storage/web/webStorage.d.ts.map +0 -1
  383. package/lib/services/storage/web/webStorage.js.map +0 -1
  384. package/lib/tempoCache.d.ts.map +0 -1
  385. package/lib/tempoCache.js.map +0 -1
  386. package/lib/throttle.d.ts.map +0 -1
  387. package/lib/throttle.js.map +0 -1
  388. package/lib/throttledEvent.d.ts.map +0 -1
  389. package/lib/throttledEvent.js.map +0 -1
  390. package/lib/timeHelper.d.ts +0 -7
  391. package/lib/timeHelper.d.ts.map +0 -1
  392. package/lib/timeHelper.js +0 -37
  393. package/lib/timeHelper.js.map +0 -1
  394. package/lib/timer.d.ts.map +0 -1
  395. package/lib/timer.js.map +0 -1
  396. package/lib/transitionObserver.d.ts +0 -36
  397. package/lib/transitionObserver.d.ts.map +0 -1
  398. package/lib/transitionObserver.js +0 -153
  399. package/lib/transitionObserver.js.map +0 -1
  400. package/lib/types.d.ts +0 -17
  401. package/lib/types.d.ts.map +0 -1
  402. package/lib/types.js.map +0 -1
  403. package/lib/unsubscriber.d.ts +0 -2
  404. package/lib/unsubscriber.d.ts.map +0 -1
  405. package/lib/unsubscriber.js +0 -12
  406. package/lib/unsubscriber.js.map +0 -1
  407. package/lib/validation/ValidationErrorsLocalization.d.ts +0 -27
  408. package/lib/validation/ValidationErrorsLocalization.d.ts.map +0 -1
  409. package/lib/validation/ValidationErrorsLocalization.js +0 -26
  410. package/lib/validation/ValidationErrorsLocalization.js.map +0 -1
  411. package/lib/viewModels/CommonModel.d.ts +0 -13
  412. package/lib/viewModels/CommonModel.d.ts.map +0 -1
  413. package/lib/viewModels/CommonModel.js +0 -38
  414. package/lib/viewModels/CommonModel.js.map +0 -1
  415. package/lib/viewModels/FlagModel.d.ts +0 -22
  416. package/lib/viewModels/FlagModel.d.ts.map +0 -1
  417. package/lib/viewModels/FlagModel.js +0 -52
  418. package/lib/viewModels/FlagModel.js.map +0 -1
  419. package/lib/viewModels/InitializableModel.d.ts +0 -6
  420. package/lib/viewModels/InitializableModel.d.ts.map +0 -1
  421. package/lib/viewModels/InitializableModel.js +0 -23
  422. package/lib/viewModels/InitializableModel.js.map +0 -1
  423. package/lib/viewModels/LoadingModel.d.ts +0 -17
  424. package/lib/viewModels/LoadingModel.d.ts.map +0 -1
  425. package/lib/viewModels/LoadingModel.js +0 -42
  426. package/lib/viewModels/LoadingModel.js.map +0 -1
  427. package/lib/viewModels/MultiSelectModel.d.ts +0 -47
  428. package/lib/viewModels/MultiSelectModel.d.ts.map +0 -1
  429. package/lib/viewModels/MultiSelectModel.js +0 -144
  430. package/lib/viewModels/MultiSelectModel.js.map +0 -1
  431. package/lib/viewModels/NumberModel.d.ts +0 -19
  432. package/lib/viewModels/NumberModel.d.ts.map +0 -1
  433. package/lib/viewModels/NumberModel.js +0 -38
  434. package/lib/viewModels/NumberModel.js.map +0 -1
  435. package/lib/viewModels/PromptModal.d.ts +0 -31
  436. package/lib/viewModels/PromptModal.d.ts.map +0 -1
  437. package/lib/viewModels/PromptModal.js +0 -57
  438. package/lib/viewModels/PromptModal.js.map +0 -1
  439. package/lib/viewModels/SelectModel.d.ts +0 -35
  440. package/lib/viewModels/SelectModel.d.ts.map +0 -1
  441. package/lib/viewModels/SelectModel.js +0 -118
  442. package/lib/viewModels/SelectModel.js.map +0 -1
  443. package/lib/viewModels/TextModel.d.ts +0 -41
  444. package/lib/viewModels/TextModel.d.ts.map +0 -1
  445. package/lib/viewModels/TextModel.js +0 -98
  446. package/lib/viewModels/TextModel.js.map +0 -1
  447. package/lib/viewModels/Validatable.d.ts +0 -26
  448. package/lib/viewModels/Validatable.d.ts.map +0 -1
  449. package/lib/viewModels/Validatable.js +0 -81
  450. package/lib/viewModels/Validatable.js.map +0 -1
  451. package/lib/viewModels/ValueModel.d.ts +0 -12
  452. package/lib/viewModels/ValueModel.d.ts.map +0 -1
  453. package/lib/viewModels/ValueModel.js +0 -29
  454. package/lib/viewModels/ValueModel.js.map +0 -1
  455. package/lib/viewModels/ValuesCollector.d.ts +0 -26
  456. package/lib/viewModels/ValuesCollector.d.ts.map +0 -1
  457. package/lib/viewModels/ValuesCollector.js +0 -51
  458. package/lib/viewModels/ValuesCollector.js.map +0 -1
  459. package/lib/viewModels/index.d.ts +0 -12
  460. package/lib/viewModels/index.d.ts.map +0 -1
  461. package/lib/viewModels/index.js +0 -15
  462. package/lib/viewModels/index.js.map +0 -1
  463. package/lib/viewModels/types.d.ts +0 -19
  464. package/lib/viewModels/types.d.ts.map +0 -1
  465. package/lib/viewModels/wrappers.d.ts +0 -12
  466. package/lib/viewModels/wrappers.d.ts.map +0 -1
  467. package/lib/viewModels/wrappers.js +0 -43
  468. package/lib/viewModels/wrappers.js.map +0 -1
  469. package/src/__tests__/observingCache.test.ts +0 -127
  470. package/src/__tests__/transitionObserver.test.ts +0 -219
  471. package/src/cache.ts +0 -181
  472. package/src/deepPartial.ts +0 -4
  473. package/src/functions.ts +0 -14
  474. package/src/lazy/index.ts +0 -33
  475. package/src/lazy/observable.ts +0 -37
  476. package/src/lazy.light.ts +0 -8
  477. package/src/observersMap.ts +0 -105
  478. package/src/observingCache.ts +0 -160
  479. package/src/services/localization/LocalaziedValidationErrors.ts +0 -18
  480. package/src/services/localization/LocalizationManager.ts +0 -53
  481. package/src/services/localization/abstractions.ts +0 -16
  482. package/src/services/localization/defaultShape.ts +0 -26
  483. package/src/services/localization/index.ts +0 -6
  484. package/src/timeHelper.ts +0 -39
  485. package/src/transitionObserver.ts +0 -183
  486. package/src/types.ts +0 -30
  487. package/src/unsubscriber.ts +0 -14
  488. package/src/validation/ValidationErrorsLocalization.ts +0 -27
  489. package/src/viewModels/CommonModel.ts +0 -45
  490. package/src/viewModels/FlagModel.ts +0 -70
  491. package/src/viewModels/InitializableModel.ts +0 -17
  492. package/src/viewModels/LoadingModel.ts +0 -52
  493. package/src/viewModels/MultiSelectModel.ts +0 -178
  494. package/src/viewModels/NumberModel.ts +0 -50
  495. package/src/viewModels/PromptModal.ts +0 -65
  496. package/src/viewModels/SelectModel.ts +0 -152
  497. package/src/viewModels/TextModel.ts +0 -127
  498. package/src/viewModels/Validatable.ts +0 -102
  499. package/src/viewModels/ValueModel.ts +0 -34
  500. package/src/viewModels/ValuesCollector.ts +0 -81
  501. package/src/viewModels/__tests__/common.test.ts +0 -107
  502. package/src/viewModels/__tests__/multiSelect.test.ts +0 -138
  503. package/src/viewModels/__tests__/select.test.ts +0 -71
  504. package/src/viewModels/__tests__/wrappers.test.ts +0 -79
  505. package/src/viewModels/index.ts +0 -15
  506. package/src/viewModels/types.ts +0 -23
  507. package/src/viewModels/wrappers.ts +0 -49
  508. package/tsconfig.eslint.json +0 -9
@@ -1,70 +0,0 @@
1
- import { action, makeObservable, observable } from 'mobx';
2
- import { IResetableModel } from 'viewModels';
3
- import { ILabel, IValueModel } from './types';
4
-
5
- export interface IFlagModel extends IValueModel<boolean>, IResetableModel {
6
- toggle(): void;
7
- }
8
-
9
- export type IFlagModelReadonly = {
10
- readonly value: boolean;
11
- };
12
-
13
- export type ILabeledFlagModel = IFlagModel & ILabel<string>;
14
-
15
- export class FlagModel implements IFlagModel, IFlagModelReadonly {
16
-
17
- // @observable
18
- private _value: boolean = false;
19
-
20
- constructor(initial = false) {
21
- makeObservable<FlagModel, '_value'>(this, {
22
- _value: observable,
23
- setValue: action,
24
- setTrue: action,
25
- setFalse: action,
26
- toggle: action,
27
- reset: action,
28
- });
29
- this._value = initial;
30
- }
31
-
32
- get value() {
33
- return this._value;
34
- }
35
-
36
- set value(value: boolean) {
37
- this.setValue(value);
38
- }
39
-
40
- // @action
41
- public readonly setValue = (value: boolean) => {
42
- this._value = value;
43
- };
44
-
45
- get isDefault() { return this._value === false; }
46
-
47
- // @action
48
- setTrue = () => {
49
- const v = this.value;
50
- this.value = true;
51
- return !v;
52
- };
53
-
54
- // @action
55
- setFalse = () => {
56
- const v = this.value;
57
- this.value = false;
58
- return v;
59
- };
60
-
61
- // @action
62
- toggle = () => {
63
- this._value = !this._value;
64
- };
65
-
66
- // @action
67
- reset = () => {
68
- this._value = false;
69
- };
70
- }
@@ -1,17 +0,0 @@
1
- import NumberModel from './NumberModel';
2
-
3
- export class InitializableModel {
4
- private readonly _counter = new NumberModel(0);
5
-
6
- public get initializing() { return this._counter.value > 0; }
7
-
8
- protected async runOperation<T>(operation: () => Promise<T> | T): Promise<T> {
9
- try {
10
- this._counter.increment();
11
- const res = await operation();
12
- return res;
13
- } finally {
14
- this._counter.decrement();
15
- }
16
- }
17
- }
@@ -1,52 +0,0 @@
1
- import { NumberModel } from './NumberModel';
2
- import { IResetableModel, IValueModel } from './types';
3
-
4
- export class LoadingModel implements IValueModel<boolean>, IResetableModel {
5
-
6
- private readonly _number = new NumberModel(0);
7
-
8
- public get isLoading() { return this._number.value > 0; }
9
-
10
- public get value(): boolean { return this.isLoading; }
11
- public set value(v: boolean) {
12
- if (v) {
13
- this._number.increment();
14
- } else {
15
- this._number.decrement();
16
- }
17
- }
18
-
19
- public async useLoading<T>(cb: () => (T | Promise<T>)): Promise<T>;
20
- public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: false): Promise<T>;
21
- public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: true): Promise<T | false>;
22
- public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: 'throw'): Promise<T>;
23
-
24
- public useLoading<T>(cb: () => (T | Promise<T>), exclusive: boolean | 'throw' = false): Promise<T | false> {
25
- return withLoading(this, cb, exclusive as any);
26
- }
27
-
28
- public reset = () => this._number.reset();
29
- }
30
-
31
- export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>)): Promise<T>;
32
- export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: false): Promise<T>;
33
- export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: true): Promise<T | false>;
34
- export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: 'throw'): Promise<T>;
35
-
36
- export async function withLoading<T>(this: void, model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: boolean | 'throw' = false): Promise<T | false> {
37
- if (exclusive && model.value) {
38
- if (exclusive === 'throw') {
39
- throw new Error('Operation cannot be started because another one is in progress already.');
40
- }
41
- return false;
42
- }
43
-
44
- model.value = true;
45
-
46
- try {
47
- const res = await cb();
48
- return res;
49
- } finally {
50
- model.value = false;
51
- }
52
- }
@@ -1,178 +0,0 @@
1
- import { createLazy } from '../lazy/light';
2
- import { action, computed, makeObservable, observable, reaction } from 'mobx';
3
- import { FlagModel, ILabeledFlagModel } from './FlagModel';
4
- import { ValidatableModel } from './Validatable';
5
- import { IValueModel } from './types';
6
- import { withLabel } from './wrappers';
7
- import { ICountableModel, IResetableModel } from 'viewModels';
8
- import { arraysCompareDistinct } from '../math';
9
-
10
- export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]>, IResetableModel, ICountableModel {
11
-
12
- // @observable
13
- private readonly _indexes = new Set<number>();
14
-
15
- public readonly opened = new FlagModel();
16
- private readonly _initial: number[] = null;
17
-
18
- private readonly _flags = createLazy(() => this.createFlags());
19
- private _indexesLocked = false;
20
-
21
- constructor(
22
- private readonly _items: readonly T[],
23
- private readonly _accessor: (item: T) => string,
24
- ...selected: number[]
25
- ) {
26
- super();
27
- makeObservable<MultiSelect<T>, '_indexes'>(this, {
28
- '_indexes': observable,
29
- selectedIndexes: computed,
30
- values: computed,
31
- selectedItems: computed,
32
- selectedValues: computed,
33
- isDefault: computed,
34
- selectItems: action,
35
- selectValues: action,
36
- setIndexSelected: action,
37
- });
38
- this._initial = selected;
39
- this.setInitialIndexes();
40
- }
41
-
42
- // @computed
43
- get selectedIndexes(): ReadonlyArray<number> { return Array.from(this._indexes); }
44
-
45
- get items(): ReadonlyArray<T> { return this._items; }
46
-
47
- get flags() { return this._flags.value; }
48
-
49
- // @computed
50
- get values(): ReadonlyArray<string> {
51
- return this._items.map(i => this._accessor(i));
52
- }
53
-
54
- // @computed
55
- get selectedItems(): ReadonlyArray<T> {
56
- return this.selectedIndexes.map(i => this._items[i]);
57
- }
58
-
59
- // @computed
60
- get selectedValues(): ReadonlyArray<string> {
61
- const values = this.values;
62
- return this.selectedIndexes.map(i => values[i]);
63
- }
64
-
65
- get value() { return this.selectedValues; }
66
- set value(v: readonly string[]) { this.selectValues(v); }
67
-
68
- isIndexSelected(index: number) { return this._indexes.has(index); }
69
- isValueSelected(value: string) { return this.selectedValues.includes(value); }
70
-
71
- get count() { return this._items.length; }
72
- get selectedCount() { return this._indexes.size; }
73
- get isEmpty() { return this.selectedCount === 0; }
74
-
75
- // @computed
76
- get isDefault() { return arraysCompareDistinct(this.selectedIndexes, this._initial)?.diff === 0; }
77
-
78
- protected get valueToValidate() { return this.selectedItems; }
79
-
80
- setItemSelected = (item: T, selected: boolean) => {
81
- const i = this.items.indexOf(item);
82
- if (i >= 0) {
83
- this.setIndexSelected(i, selected);
84
- }
85
- };
86
-
87
- selectItem = (item: T) => this.setItemSelected(item, true);
88
- deSelectItem = (item: T) => this.setItemSelected(item, false);
89
-
90
- // @action
91
- selectItems = (items: readonly T[]) => {
92
- items.forEach(this.selectItem);
93
- };
94
-
95
- setValueSelected = (value: string, selected: boolean) => {
96
- const i = this.values.indexOf(value);
97
- if (i >= 0) {
98
- this.setIndexSelected(i, selected);
99
- }
100
- };
101
-
102
- selectValue = (value: string) => this.setValueSelected(value, true);
103
- deSelectValue = (value: string) => this.setValueSelected(value, false);
104
-
105
- // @action
106
- selectValues = (values: readonly string[]) => {
107
- values.forEach(this.selectValue);
108
- };
109
-
110
- // @action
111
- setIndexSelected = (index: number, selected: boolean) => {
112
- if (this._indexesLocked) {
113
- return;
114
- }
115
-
116
- if (selected) {
117
- this._indexes.add(index);
118
- } else {
119
- this._indexes.delete(index);
120
- }
121
-
122
- if (this._validateOnChange) {
123
- this.validate();
124
- }
125
-
126
- if (!this._flags.hasValue) {
127
- return;
128
- }
129
-
130
- try {
131
- this._indexesLocked = true;
132
- this._flags.value[index].value = selected;
133
- } finally {
134
- this._indexesLocked = false;
135
- }
136
- };
137
-
138
- selectIndex = (index: number) => this.setIndexSelected(index, true);
139
- deSelectIndex = (index: number) => this.setIndexSelected(index, false);
140
-
141
- reset = () => {
142
- super.reset();
143
- this.setInitialIndexes();
144
- };
145
-
146
- private setInitialIndexes() {
147
- this._indexes.clear();
148
- this._initial.forEach(i => this._indexes.add(i));
149
-
150
- if (this._flags.hasValue) {
151
- this._flags.value.forEach((flag, index) => flag.value = this._indexes.has(index));
152
- }
153
- }
154
-
155
- private createFlags() {
156
- const flags: ReadonlyArray<ILabeledFlagModel> = this._items
157
- .map((item, index) => {
158
- const flag = withLabel(
159
- new FlagModel(this._indexes.has(index)),
160
- () => this._accessor(item),
161
- );
162
-
163
- // react on every flag is changed directly
164
- reaction(() => flag.value, isSelected => {
165
- this.setIndexSelected(index, isSelected);
166
- });
167
- return flag;
168
- });
169
- return flags;
170
- }
171
- }
172
-
173
- export class MultiSelectString<T extends string = string> extends MultiSelect<T> {
174
-
175
- constructor(items: ReadonlyArray<T>, ...selected: number[]) {
176
- super(items, v => v, ...selected);
177
- }
178
- }
@@ -1,50 +0,0 @@
1
- import { action, makeObservable, observable } from 'mobx';
2
- import { IResetableModel } from 'viewModels';
3
- import { IValueModel } from './types';
4
-
5
- export interface INumberModel extends IResetableModel {
6
- value: number;
7
- }
8
-
9
- export class NumberModel implements INumberModel, IValueModel<number> {
10
-
11
- // @observable
12
- private _value: number = 0;
13
-
14
- private _initial: number = 0;
15
-
16
- constructor(initial: number = 0) {
17
- makeObservable<NumberModel, '_value'>(this, {
18
- _value: observable,
19
- setValue: action,
20
- reset: action,
21
- increment: action,
22
- decrement: action,
23
- });
24
- this._initial = initial;
25
- this._value = this._initial;
26
- }
27
-
28
- get value() { return this._value; }
29
- set value(v: number) { this.setValue(v); }
30
-
31
- // @action
32
- public readonly setValue = (v: number) => {
33
- this._value = v;
34
- };
35
-
36
- get isDefault() { return this._value === this._initial; }
37
-
38
- // @action
39
- reset = () => {
40
- this._value = this._initial;
41
- };
42
-
43
- // @action
44
- increment = (d = 1) => this.value += d;
45
-
46
- // @action
47
- decrement = (d = 1) => this.value -= d;
48
- }
49
-
50
- export default NumberModel;
@@ -1,65 +0,0 @@
1
- import { observable, makeObservable, action } from 'mobx';
2
- import { FlagModel } from './FlagModel';
3
-
4
- export type BaseModalAction = {
5
- title?: string;
6
- message?: string;
7
- };
8
-
9
- export class ModalActionModel<T extends BaseModalAction = BaseModalAction> {
10
- public readonly isActive = new FlagModel();
11
-
12
- @observable.ref
13
- private _currentAction: T = null;
14
-
15
- constructor() {
16
- makeObservable(this);
17
- }
18
-
19
- get currentAction() { return this._currentAction; }
20
-
21
- @action
22
- public openModal = (action: T) => {
23
- this._currentAction = action;
24
- this.isActive.value = true;
25
- };
26
-
27
- @action
28
- public closeModal = () => {
29
- this.isActive.value = false;
30
- this._currentAction = null;
31
- };
32
-
33
- protected runAction = async (cb: () => Promise<void> | void, close = true, awaitAction = false) => {
34
- if (cb) {
35
- const promise = cb();
36
- if (awaitAction) {
37
- await promise;
38
- }
39
- }
40
-
41
- if (close) {
42
- this.closeModal();
43
- }
44
- };
45
- }
46
-
47
- export type PromptModalAction = BaseModalAction & {
48
- confirmText?: string;
49
- rejectText?: string;
50
- onConfirm?: () => Promise<void> | void;
51
- onReject?: () => Promise<void> | void;
52
- awaitActions?: boolean;
53
- modalImage?: any;
54
- confirmColor?: string;
55
- rejectColor?: string;
56
- };
57
-
58
- export class PromptModalViewModel extends ModalActionModel<PromptModalAction> {
59
- get confirmColor() { return this.currentAction.confirmColor; }
60
-
61
- get rejectColor() { return this.currentAction.rejectColor; }
62
-
63
- onConfirm = () => this.runAction(this.currentAction.onConfirm, true, this.currentAction.awaitActions);
64
- onReject = () => this.runAction(this.currentAction.onReject, true, this.currentAction.awaitActions);
65
- }
@@ -1,152 +0,0 @@
1
- import { observable, computed, makeObservable, reaction, action } from 'mobx';
2
- import { createLazy } from '../lazy/light';
3
- import { FlagModel, ILabeledFlagModel } from './FlagModel';
4
- import { ValidatableModel } from './Validatable';
5
- import { IValueModel } from './types';
6
- import { withLabel } from './wrappers';
7
- import { IResetableModel } from './types';
8
- import { Getter } from '../types';
9
-
10
- export class Select<T = any> extends ValidatableModel<T> implements IValueModel<string>, IResetableModel {
11
- // @observable
12
- private _index: number = undefined;
13
-
14
- private readonly _items: Getter<readonly T[]>;
15
-
16
- private _indexLocked = false;
17
- private _initialIndex: number = null;
18
-
19
- private readonly _flags = createLazy(() => this.createFlags());
20
-
21
- public readonly opened = new FlagModel();
22
-
23
- constructor(
24
- items: Getter<readonly T[]>,
25
- private readonly _accessor: (item: T) => string,
26
- initialIndex: number = 0,
27
- ) {
28
- super();
29
-
30
- this._items = items;
31
-
32
- makeObservable<Select<T>, '_index' | '_items'>(this, {
33
- '_index': observable,
34
- '_items': observable.ref,
35
- values: computed,
36
- items: computed,
37
- setIndex: action,
38
- });
39
-
40
- this._initialIndex = initialIndex;
41
- this._index = initialIndex;
42
- }
43
-
44
- protected get valueToValidate() { return this.selectedItem; }
45
-
46
- // @computed
47
- get values(): readonly string[] {
48
- return this.items.map(i => this._accessor(i));
49
- }
50
-
51
- get flags() {
52
- return this._flags.value;
53
- }
54
-
55
- // @computed
56
- get items(): readonly T[] {
57
- return Getter.getValue(this._items);
58
- }
59
-
60
- get value() { return this.selectedValue; }
61
- get selectedValue() {
62
- const vs = this.values;
63
- return vs.length ? vs[this._index] : null;
64
- }
65
-
66
- set value(v: string) { this.selectedValue = v; }
67
- set selectedValue(value: string) {
68
- const index = this.values.indexOf(value);
69
- if (index >= 0) {
70
- this.index = index;
71
- }
72
- }
73
-
74
- get selectedItem(): T {
75
- const items = this.items;
76
- return items.length ? items[this._index] : null;
77
- }
78
-
79
- set selectedItem(item: T) {
80
- const index = this.items.indexOf(item);
81
- if (index >= 0) {
82
- this.index = index;
83
- }
84
- }
85
-
86
- get isDefault() { return this._index === this._initialIndex; }
87
-
88
- get index() {
89
- return this._index;
90
- }
91
-
92
- set index(val: number) {
93
- this.setIndex(val);
94
- }
95
-
96
- // @action
97
- public setIndex = (val: number) => {
98
- if (this._indexLocked) {
99
- return;
100
- }
101
-
102
- this._index = val;
103
-
104
- if (this._validateOnChange) {
105
- this.validate();
106
- }
107
-
108
- // update all flags to be properly selected
109
- try {
110
- this._indexLocked = true;
111
-
112
- if (this._flags.hasValue) {
113
- this._flags.value.forEach((f, i) => f.value = (i === this._index));
114
- }
115
- } finally {
116
- this._indexLocked = false;
117
- }
118
- };
119
-
120
- public reset = () => {
121
- super.reset();
122
- this.index = this._initialIndex;
123
- };
124
-
125
- private createFlags() {
126
- const flags: ReadonlyArray<ILabeledFlagModel> = this.items
127
- .map((item, index) => {
128
- const flag: ILabeledFlagModel = withLabel(
129
- new FlagModel(index === this.index),
130
- () => this._accessor(item),
131
- );
132
-
133
- // react on every flag is changed directly
134
- reaction(() => flag.value, isSelected => {
135
- if (isSelected) {
136
- this.index = index;
137
- }
138
- });
139
-
140
- return flag;
141
- });
142
-
143
- return flags;
144
- }
145
- }
146
-
147
-
148
- export class SelectString<T extends string = string> extends Select<T> {
149
- constructor(items: readonly T[], initialIndex: number = 0) {
150
- super(items, v => v, initialIndex);
151
- }
152
- }