@7pmlabs/design-system 0.4.15 → 0.4.16

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 (816) hide show
  1. package/README.md +47 -44
  2. package/dist/design-system100.js +1 -1
  3. package/dist/design-system100.js.map +1 -1
  4. package/dist/design-system100.mjs +5 -16
  5. package/dist/design-system100.mjs.map +1 -1
  6. package/dist/design-system101.js +1 -5
  7. package/dist/design-system101.js.map +1 -1
  8. package/dist/design-system101.mjs +4 -10
  9. package/dist/design-system101.mjs.map +1 -1
  10. package/dist/design-system102.js +1 -1
  11. package/dist/design-system102.js.map +1 -1
  12. package/dist/design-system102.mjs +2 -2172
  13. package/dist/design-system102.mjs.map +1 -1
  14. package/dist/design-system103.js +1 -1
  15. package/dist/design-system103.js.map +1 -1
  16. package/dist/design-system103.mjs +17 -1103
  17. package/dist/design-system103.mjs.map +1 -1
  18. package/dist/design-system104.js +1 -1
  19. package/dist/design-system104.js.map +1 -1
  20. package/dist/design-system104.mjs +18 -18
  21. package/dist/design-system104.mjs.map +1 -1
  22. package/dist/design-system105.js +1 -1
  23. package/dist/design-system105.js.map +1 -1
  24. package/dist/design-system105.mjs +1103 -18
  25. package/dist/design-system105.mjs.map +1 -1
  26. package/dist/design-system106.js +1 -1
  27. package/dist/design-system106.mjs +8 -8
  28. package/dist/design-system107.js +1 -1
  29. package/dist/design-system107.js.map +1 -1
  30. package/dist/design-system107.mjs +18 -18
  31. package/dist/design-system107.mjs.map +1 -1
  32. package/dist/design-system108.js +1 -1
  33. package/dist/design-system108.mjs +1 -1
  34. package/dist/design-system109.js +1 -1
  35. package/dist/design-system109.js.map +1 -1
  36. package/dist/design-system109.mjs +2172 -2
  37. package/dist/design-system109.mjs.map +1 -1
  38. package/dist/design-system11.js.map +1 -1
  39. package/dist/design-system11.mjs.map +1 -1
  40. package/dist/design-system110.js +1 -1
  41. package/dist/design-system110.mjs +17 -5
  42. package/dist/design-system110.mjs.map +1 -1
  43. package/dist/design-system111.js +1 -1
  44. package/dist/design-system111.mjs +2 -4
  45. package/dist/design-system111.mjs.map +1 -1
  46. package/dist/design-system112.js +1 -1
  47. package/dist/design-system112.mjs +2 -2
  48. package/dist/design-system113.js +1 -1
  49. package/dist/design-system113.js.map +1 -1
  50. package/dist/design-system113.mjs +4 -2
  51. package/dist/design-system113.mjs.map +1 -1
  52. package/dist/design-system114.js +1 -1
  53. package/dist/design-system114.js.map +1 -1
  54. package/dist/design-system114.mjs +8 -2
  55. package/dist/design-system114.mjs.map +1 -1
  56. package/dist/design-system115.js +1 -1
  57. package/dist/design-system115.js.map +1 -1
  58. package/dist/design-system115.mjs +7 -4
  59. package/dist/design-system115.mjs.map +1 -1
  60. package/dist/design-system116.js +1 -1
  61. package/dist/design-system116.js.map +1 -1
  62. package/dist/design-system116.mjs +62 -7
  63. package/dist/design-system116.mjs.map +1 -1
  64. package/dist/design-system117.js +1 -1
  65. package/dist/design-system117.js.map +1 -1
  66. package/dist/design-system117.mjs +3 -6
  67. package/dist/design-system117.mjs.map +1 -1
  68. package/dist/design-system118.js +1 -1
  69. package/dist/design-system118.js.map +1 -1
  70. package/dist/design-system118.mjs +9 -63
  71. package/dist/design-system118.mjs.map +1 -1
  72. package/dist/design-system119.js +1 -1
  73. package/dist/design-system119.js.map +1 -1
  74. package/dist/design-system119.mjs +6 -3
  75. package/dist/design-system119.mjs.map +1 -1
  76. package/dist/design-system12.js +1 -1
  77. package/dist/design-system12.js.map +1 -1
  78. package/dist/design-system12.mjs +8 -8
  79. package/dist/design-system12.mjs.map +1 -1
  80. package/dist/design-system120.js +1 -1
  81. package/dist/design-system120.js.map +1 -1
  82. package/dist/design-system120.mjs +4 -9
  83. package/dist/design-system120.mjs.map +1 -1
  84. package/dist/design-system121.js +1 -1
  85. package/dist/design-system121.js.map +1 -1
  86. package/dist/design-system121.mjs +3 -7
  87. package/dist/design-system121.mjs.map +1 -1
  88. package/dist/design-system122.js +1 -1
  89. package/dist/design-system122.js.map +1 -1
  90. package/dist/design-system122.mjs +4 -2
  91. package/dist/design-system122.mjs.map +1 -1
  92. package/dist/design-system123.js +1 -1
  93. package/dist/design-system123.js.map +1 -1
  94. package/dist/design-system123.mjs +10 -3
  95. package/dist/design-system123.mjs.map +1 -1
  96. package/dist/design-system124.js +1 -1
  97. package/dist/design-system124.js.map +1 -1
  98. package/dist/design-system124.mjs +4 -5
  99. package/dist/design-system124.mjs.map +1 -1
  100. package/dist/design-system125.js +1 -1
  101. package/dist/design-system125.js.map +1 -1
  102. package/dist/design-system125.mjs +5 -10
  103. package/dist/design-system125.mjs.map +1 -1
  104. package/dist/design-system126.js +1 -1
  105. package/dist/design-system126.js.map +1 -1
  106. package/dist/design-system126.mjs +4 -5
  107. package/dist/design-system126.mjs.map +1 -1
  108. package/dist/design-system127.js +1 -1
  109. package/dist/design-system127.js.map +1 -1
  110. package/dist/design-system127.mjs +4 -5
  111. package/dist/design-system127.mjs.map +1 -1
  112. package/dist/design-system128.js +1 -1
  113. package/dist/design-system128.js.map +1 -1
  114. package/dist/design-system128.mjs +11 -3
  115. package/dist/design-system128.mjs.map +1 -1
  116. package/dist/design-system129.js +1 -1
  117. package/dist/design-system129.js.map +1 -1
  118. package/dist/design-system129.mjs +27 -4
  119. package/dist/design-system129.mjs.map +1 -1
  120. package/dist/design-system13.js +2 -2
  121. package/dist/design-system13.js.map +1 -1
  122. package/dist/design-system13.mjs +53 -53
  123. package/dist/design-system13.mjs.map +1 -1
  124. package/dist/design-system130.js +1 -1
  125. package/dist/design-system130.js.map +1 -1
  126. package/dist/design-system130.mjs +5 -11
  127. package/dist/design-system130.mjs.map +1 -1
  128. package/dist/design-system131.js +1 -1
  129. package/dist/design-system131.js.map +1 -1
  130. package/dist/design-system131.mjs +6 -27
  131. package/dist/design-system131.mjs.map +1 -1
  132. package/dist/design-system132.js +1 -1
  133. package/dist/design-system132.js.map +1 -1
  134. package/dist/design-system132.mjs +7 -5
  135. package/dist/design-system132.mjs.map +1 -1
  136. package/dist/design-system133.js +1 -1
  137. package/dist/design-system133.js.map +1 -1
  138. package/dist/design-system133.mjs +5 -6
  139. package/dist/design-system133.mjs.map +1 -1
  140. package/dist/design-system134.js +1 -1
  141. package/dist/design-system134.js.map +1 -1
  142. package/dist/design-system134.mjs +5 -7
  143. package/dist/design-system134.mjs.map +1 -1
  144. package/dist/design-system135.js +1 -1
  145. package/dist/design-system135.js.map +1 -1
  146. package/dist/design-system135.mjs +6 -4
  147. package/dist/design-system135.mjs.map +1 -1
  148. package/dist/design-system136.js +1 -1
  149. package/dist/design-system136.js.map +1 -1
  150. package/dist/design-system136.mjs +6 -6
  151. package/dist/design-system136.mjs.map +1 -1
  152. package/dist/design-system137.js +1 -1
  153. package/dist/design-system137.js.map +1 -1
  154. package/dist/design-system137.mjs +10 -7
  155. package/dist/design-system137.mjs.map +1 -1
  156. package/dist/design-system138.js +1 -1
  157. package/dist/design-system138.js.map +1 -1
  158. package/dist/design-system138.mjs +6 -6
  159. package/dist/design-system138.mjs.map +1 -1
  160. package/dist/design-system139.js +1 -1
  161. package/dist/design-system139.js.map +1 -1
  162. package/dist/design-system139.mjs +7 -10
  163. package/dist/design-system139.mjs.map +1 -1
  164. package/dist/design-system140.js +1 -1
  165. package/dist/design-system140.js.map +1 -1
  166. package/dist/design-system140.mjs +10 -6
  167. package/dist/design-system140.mjs.map +1 -1
  168. package/dist/design-system141.js +1 -1
  169. package/dist/design-system141.js.map +1 -1
  170. package/dist/design-system141.mjs +6 -6
  171. package/dist/design-system141.mjs.map +1 -1
  172. package/dist/design-system142.js +1 -1
  173. package/dist/design-system142.js.map +1 -1
  174. package/dist/design-system142.mjs +17 -9
  175. package/dist/design-system142.mjs.map +1 -1
  176. package/dist/design-system143.js +1 -1
  177. package/dist/design-system143.js.map +1 -1
  178. package/dist/design-system143.mjs +6 -6
  179. package/dist/design-system143.mjs.map +1 -1
  180. package/dist/design-system144.js +1 -1
  181. package/dist/design-system144.js.map +1 -1
  182. package/dist/design-system144.mjs +12 -17
  183. package/dist/design-system144.mjs.map +1 -1
  184. package/dist/design-system145.js +1 -1
  185. package/dist/design-system145.js.map +1 -1
  186. package/dist/design-system145.mjs +3 -6
  187. package/dist/design-system145.mjs.map +1 -1
  188. package/dist/design-system146.js +1 -1
  189. package/dist/design-system146.js.map +1 -1
  190. package/dist/design-system146.mjs +2 -13
  191. package/dist/design-system146.mjs.map +1 -1
  192. package/dist/design-system147.js +1 -1
  193. package/dist/design-system147.js.map +1 -1
  194. package/dist/design-system147.mjs +2 -4
  195. package/dist/design-system147.mjs.map +1 -1
  196. package/dist/design-system148.js +1 -1
  197. package/dist/design-system148.js.map +1 -1
  198. package/dist/design-system148.mjs +8 -2
  199. package/dist/design-system148.mjs.map +1 -1
  200. package/dist/design-system149.js +1 -1
  201. package/dist/design-system149.js.map +1 -1
  202. package/dist/design-system149.mjs +9 -7
  203. package/dist/design-system149.mjs.map +1 -1
  204. package/dist/design-system15.js +2 -2
  205. package/dist/design-system15.js.map +1 -1
  206. package/dist/design-system15.mjs +50 -50
  207. package/dist/design-system15.mjs.map +1 -1
  208. package/dist/design-system150.js +1 -1
  209. package/dist/design-system150.js.map +1 -1
  210. package/dist/design-system150.mjs +11 -9
  211. package/dist/design-system150.mjs.map +1 -1
  212. package/dist/design-system151.js +1 -1
  213. package/dist/design-system151.js.map +1 -1
  214. package/dist/design-system151.mjs +5 -11
  215. package/dist/design-system151.mjs.map +1 -1
  216. package/dist/design-system152.js +1 -1
  217. package/dist/design-system152.js.map +1 -1
  218. package/dist/design-system152.mjs +10 -6
  219. package/dist/design-system152.mjs.map +1 -1
  220. package/dist/design-system153.js +1 -1
  221. package/dist/design-system153.js.map +1 -1
  222. package/dist/design-system153.mjs +15 -9
  223. package/dist/design-system153.mjs.map +1 -1
  224. package/dist/design-system154.js +1 -1
  225. package/dist/design-system154.js.map +1 -1
  226. package/dist/design-system154.mjs +5 -15
  227. package/dist/design-system154.mjs.map +1 -1
  228. package/dist/design-system155.js +1 -1
  229. package/dist/design-system155.js.map +1 -1
  230. package/dist/design-system155.mjs +5 -5
  231. package/dist/design-system155.mjs.map +1 -1
  232. package/dist/design-system156.js +1 -1
  233. package/dist/design-system156.js.map +1 -1
  234. package/dist/design-system156.mjs +8 -5
  235. package/dist/design-system156.mjs.map +1 -1
  236. package/dist/design-system157.js +1 -1
  237. package/dist/design-system157.js.map +1 -1
  238. package/dist/design-system157.mjs +6 -8
  239. package/dist/design-system157.mjs.map +1 -1
  240. package/dist/design-system158.js +1 -1
  241. package/dist/design-system158.js.map +1 -1
  242. package/dist/design-system158.mjs +5 -6
  243. package/dist/design-system158.mjs.map +1 -1
  244. package/dist/design-system159.js +1 -1
  245. package/dist/design-system159.js.map +1 -1
  246. package/dist/design-system159.mjs +4 -4
  247. package/dist/design-system159.mjs.map +1 -1
  248. package/dist/design-system16.js +1 -1
  249. package/dist/design-system16.js.map +1 -1
  250. package/dist/design-system16.mjs +24 -24
  251. package/dist/design-system16.mjs.map +1 -1
  252. package/dist/design-system160.js +1 -1
  253. package/dist/design-system160.js.map +1 -1
  254. package/dist/design-system160.mjs +6 -5
  255. package/dist/design-system160.mjs.map +1 -1
  256. package/dist/design-system161.js +1 -1
  257. package/dist/design-system161.js.map +1 -1
  258. package/dist/design-system161.mjs +4 -4
  259. package/dist/design-system161.mjs.map +1 -1
  260. package/dist/design-system162.js +1 -1
  261. package/dist/design-system162.js.map +1 -1
  262. package/dist/design-system162.mjs +5 -6
  263. package/dist/design-system162.mjs.map +1 -1
  264. package/dist/design-system163.js +1 -1
  265. package/dist/design-system163.js.map +1 -1
  266. package/dist/design-system163.mjs +39 -5
  267. package/dist/design-system163.mjs.map +1 -1
  268. package/dist/design-system164.js +1 -1
  269. package/dist/design-system164.js.map +1 -1
  270. package/dist/design-system164.mjs +6 -39
  271. package/dist/design-system164.mjs.map +1 -1
  272. package/dist/design-system165.js +1 -1
  273. package/dist/design-system165.js.map +1 -1
  274. package/dist/design-system165.mjs +5 -6
  275. package/dist/design-system165.mjs.map +1 -1
  276. package/dist/design-system166.js +1 -1
  277. package/dist/design-system166.js.map +1 -1
  278. package/dist/design-system166.mjs +16 -6
  279. package/dist/design-system166.mjs.map +1 -1
  280. package/dist/design-system167.js +1 -1
  281. package/dist/design-system167.js.map +1 -1
  282. package/dist/design-system167.mjs +7 -15
  283. package/dist/design-system167.mjs.map +1 -1
  284. package/dist/design-system168.js +1 -1
  285. package/dist/design-system168.js.map +1 -1
  286. package/dist/design-system168.mjs +3 -8
  287. package/dist/design-system168.mjs.map +1 -1
  288. package/dist/design-system169.js +1 -1
  289. package/dist/design-system169.js.map +1 -1
  290. package/dist/design-system169.mjs +4 -3
  291. package/dist/design-system169.mjs.map +1 -1
  292. package/dist/design-system17.js.map +1 -1
  293. package/dist/design-system17.mjs.map +1 -1
  294. package/dist/design-system170.js +1 -1
  295. package/dist/design-system170.js.map +1 -1
  296. package/dist/design-system170.mjs +13 -4
  297. package/dist/design-system170.mjs.map +1 -1
  298. package/dist/design-system171.js +1 -1
  299. package/dist/design-system171.js.map +1 -1
  300. package/dist/design-system171.mjs +4 -12
  301. package/dist/design-system171.mjs.map +1 -1
  302. package/dist/design-system172.js +1 -1
  303. package/dist/design-system172.js.map +1 -1
  304. package/dist/design-system172.mjs +4 -5
  305. package/dist/design-system172.mjs.map +1 -1
  306. package/dist/design-system173.js +1 -1
  307. package/dist/design-system173.js.map +1 -1
  308. package/dist/design-system173.mjs +5 -4
  309. package/dist/design-system173.mjs.map +1 -1
  310. package/dist/design-system174.js +1 -1
  311. package/dist/design-system174.js.map +1 -1
  312. package/dist/design-system174.mjs +5 -5
  313. package/dist/design-system174.mjs.map +1 -1
  314. package/dist/design-system175.js +1 -1
  315. package/dist/design-system175.js.map +1 -1
  316. package/dist/design-system175.mjs +5 -5
  317. package/dist/design-system175.mjs.map +1 -1
  318. package/dist/design-system176.js +1 -1
  319. package/dist/design-system176.js.map +1 -1
  320. package/dist/design-system176.mjs +5 -5
  321. package/dist/design-system176.mjs.map +1 -1
  322. package/dist/design-system177.js +1 -1
  323. package/dist/design-system177.js.map +1 -1
  324. package/dist/design-system177.mjs +5 -5
  325. package/dist/design-system177.mjs.map +1 -1
  326. package/dist/design-system178.js +1 -1
  327. package/dist/design-system178.js.map +1 -1
  328. package/dist/design-system178.mjs +15 -5
  329. package/dist/design-system178.mjs.map +1 -1
  330. package/dist/design-system179.js +1 -1
  331. package/dist/design-system179.js.map +1 -1
  332. package/dist/design-system179.mjs +13 -14
  333. package/dist/design-system179.mjs.map +1 -1
  334. package/dist/design-system18.js +1 -1
  335. package/dist/design-system18.js.map +1 -1
  336. package/dist/design-system18.mjs +20 -20
  337. package/dist/design-system18.mjs.map +1 -1
  338. package/dist/design-system180.js +1 -1
  339. package/dist/design-system180.js.map +1 -1
  340. package/dist/design-system180.mjs +8 -13
  341. package/dist/design-system180.mjs.map +1 -1
  342. package/dist/design-system181.js +1 -1
  343. package/dist/design-system181.js.map +1 -1
  344. package/dist/design-system181.mjs +4 -9
  345. package/dist/design-system181.mjs.map +1 -1
  346. package/dist/design-system182.js +1 -1
  347. package/dist/design-system182.js.map +1 -1
  348. package/dist/design-system182.mjs +6 -4
  349. package/dist/design-system182.mjs.map +1 -1
  350. package/dist/design-system183.js +1 -1
  351. package/dist/design-system183.js.map +1 -1
  352. package/dist/design-system183.mjs +5 -5
  353. package/dist/design-system183.mjs.map +1 -1
  354. package/dist/design-system184.js +1 -1
  355. package/dist/design-system184.js.map +1 -1
  356. package/dist/design-system184.mjs +5 -5
  357. package/dist/design-system184.mjs.map +1 -1
  358. package/dist/design-system185.js +1 -1
  359. package/dist/design-system185.js.map +1 -1
  360. package/dist/design-system185.mjs +7 -5
  361. package/dist/design-system185.mjs.map +1 -1
  362. package/dist/design-system186.js +1 -1
  363. package/dist/design-system186.js.map +1 -1
  364. package/dist/design-system186.mjs +17 -7
  365. package/dist/design-system186.mjs.map +1 -1
  366. package/dist/design-system187.js +1 -1
  367. package/dist/design-system187.js.map +1 -1
  368. package/dist/design-system187.mjs +10 -17
  369. package/dist/design-system187.mjs.map +1 -1
  370. package/dist/design-system188.js +1 -1
  371. package/dist/design-system188.js.map +1 -1
  372. package/dist/design-system188.mjs +4 -9
  373. package/dist/design-system188.mjs.map +1 -1
  374. package/dist/design-system189.js +1 -1
  375. package/dist/design-system189.js.map +1 -1
  376. package/dist/design-system189.mjs +4 -5
  377. package/dist/design-system189.mjs.map +1 -1
  378. package/dist/design-system19.js +1 -1
  379. package/dist/design-system19.js.map +1 -1
  380. package/dist/design-system19.mjs +73 -73
  381. package/dist/design-system19.mjs.map +1 -1
  382. package/dist/design-system190.js +1 -1
  383. package/dist/design-system190.js.map +1 -1
  384. package/dist/design-system190.mjs +4 -4
  385. package/dist/design-system190.mjs.map +1 -1
  386. package/dist/design-system191.js +1 -1
  387. package/dist/design-system191.js.map +1 -1
  388. package/dist/design-system191.mjs +5 -4
  389. package/dist/design-system191.mjs.map +1 -1
  390. package/dist/design-system192.js +1 -1
  391. package/dist/design-system192.js.map +1 -1
  392. package/dist/design-system192.mjs +6 -5
  393. package/dist/design-system192.mjs.map +1 -1
  394. package/dist/design-system193.js +1 -1
  395. package/dist/design-system193.js.map +1 -1
  396. package/dist/design-system193.mjs +11 -7
  397. package/dist/design-system193.mjs.map +1 -1
  398. package/dist/design-system194.js +1 -1
  399. package/dist/design-system194.js.map +1 -1
  400. package/dist/design-system194.mjs +6 -10
  401. package/dist/design-system194.mjs.map +1 -1
  402. package/dist/design-system195.js +1 -1
  403. package/dist/design-system195.js.map +1 -1
  404. package/dist/design-system195.mjs +17 -6
  405. package/dist/design-system195.mjs.map +1 -1
  406. package/dist/design-system196.js +1 -1
  407. package/dist/design-system196.js.map +1 -1
  408. package/dist/design-system196.mjs +4 -17
  409. package/dist/design-system196.mjs.map +1 -1
  410. package/dist/design-system197.js +1 -1
  411. package/dist/design-system197.js.map +1 -1
  412. package/dist/design-system197.mjs +4 -4
  413. package/dist/design-system197.mjs.map +1 -1
  414. package/dist/design-system198.js +1 -1
  415. package/dist/design-system198.js.map +1 -1
  416. package/dist/design-system198.mjs +3 -4
  417. package/dist/design-system198.mjs.map +1 -1
  418. package/dist/design-system199.js +1 -1
  419. package/dist/design-system199.js.map +1 -1
  420. package/dist/design-system199.mjs +3 -3
  421. package/dist/design-system199.mjs.map +1 -1
  422. package/dist/design-system20.js +1 -1
  423. package/dist/design-system20.js.map +1 -1
  424. package/dist/design-system20.mjs +57 -57
  425. package/dist/design-system20.mjs.map +1 -1
  426. package/dist/design-system200.js +1 -1
  427. package/dist/design-system200.js.map +1 -1
  428. package/dist/design-system200.mjs +14 -3
  429. package/dist/design-system200.mjs.map +1 -1
  430. package/dist/design-system201.js +1 -1
  431. package/dist/design-system201.js.map +1 -1
  432. package/dist/design-system201.mjs +9 -15
  433. package/dist/design-system201.mjs.map +1 -1
  434. package/dist/design-system202.js +1 -1
  435. package/dist/design-system202.js.map +1 -1
  436. package/dist/design-system202.mjs +6 -9
  437. package/dist/design-system202.mjs.map +1 -1
  438. package/dist/design-system203.js +1 -1
  439. package/dist/design-system203.js.map +1 -1
  440. package/dist/design-system203.mjs +5 -5
  441. package/dist/design-system203.mjs.map +1 -1
  442. package/dist/design-system204.js +1 -1
  443. package/dist/design-system204.js.map +1 -1
  444. package/dist/design-system204.mjs +5 -5
  445. package/dist/design-system204.mjs.map +1 -1
  446. package/dist/design-system205.js +1 -1
  447. package/dist/design-system205.js.map +1 -1
  448. package/dist/design-system205.mjs +5 -5
  449. package/dist/design-system205.mjs.map +1 -1
  450. package/dist/design-system206.js +1 -1
  451. package/dist/design-system206.js.map +1 -1
  452. package/dist/design-system206.mjs +5 -5
  453. package/dist/design-system206.mjs.map +1 -1
  454. package/dist/design-system207.js +1 -1
  455. package/dist/design-system207.js.map +1 -1
  456. package/dist/design-system207.mjs +4 -6
  457. package/dist/design-system207.mjs.map +1 -1
  458. package/dist/design-system208.js +1 -1
  459. package/dist/design-system208.js.map +1 -1
  460. package/dist/design-system208.mjs +17 -3
  461. package/dist/design-system208.mjs.map +1 -1
  462. package/dist/design-system209.js +1 -1
  463. package/dist/design-system209.js.map +1 -1
  464. package/dist/design-system209.mjs +5 -17
  465. package/dist/design-system209.mjs.map +1 -1
  466. package/dist/design-system21.js +2 -2
  467. package/dist/design-system21.js.map +1 -1
  468. package/dist/design-system21.mjs +32 -32
  469. package/dist/design-system21.mjs.map +1 -1
  470. package/dist/design-system210.js +1 -1
  471. package/dist/design-system210.js.map +1 -1
  472. package/dist/design-system210.mjs +3 -5
  473. package/dist/design-system210.mjs.map +1 -1
  474. package/dist/design-system211.js +1 -1
  475. package/dist/design-system211.js.map +1 -1
  476. package/dist/design-system211.mjs +3 -3
  477. package/dist/design-system211.mjs.map +1 -1
  478. package/dist/design-system212.js +1 -1
  479. package/dist/design-system212.js.map +1 -1
  480. package/dist/design-system212.mjs +9 -3
  481. package/dist/design-system212.mjs.map +1 -1
  482. package/dist/design-system213.js +1 -1
  483. package/dist/design-system213.js.map +1 -1
  484. package/dist/design-system213.mjs +5 -9
  485. package/dist/design-system213.mjs.map +1 -1
  486. package/dist/design-system214.js +1 -1
  487. package/dist/design-system214.js.map +1 -1
  488. package/dist/design-system214.mjs +4 -5
  489. package/dist/design-system214.mjs.map +1 -1
  490. package/dist/design-system215.js +1 -1
  491. package/dist/design-system215.js.map +1 -1
  492. package/dist/design-system215.mjs +5 -4
  493. package/dist/design-system215.mjs.map +1 -1
  494. package/dist/design-system216.js +1 -1
  495. package/dist/design-system216.js.map +1 -1
  496. package/dist/design-system216.mjs +4 -6
  497. package/dist/design-system216.mjs.map +1 -1
  498. package/dist/design-system217.js +1 -1
  499. package/dist/design-system217.js.map +1 -1
  500. package/dist/design-system217.mjs +5 -4
  501. package/dist/design-system217.mjs.map +1 -1
  502. package/dist/design-system218.js +1 -1
  503. package/dist/design-system218.js.map +1 -1
  504. package/dist/design-system218.mjs +4 -4
  505. package/dist/design-system218.mjs.map +1 -1
  506. package/dist/design-system219.js +1 -1
  507. package/dist/design-system219.js.map +1 -1
  508. package/dist/design-system219.mjs +10 -4
  509. package/dist/design-system219.mjs.map +1 -1
  510. package/dist/design-system22.js +1 -1
  511. package/dist/design-system22.js.map +1 -1
  512. package/dist/design-system22.mjs +60 -60
  513. package/dist/design-system22.mjs.map +1 -1
  514. package/dist/design-system220.js +1 -1
  515. package/dist/design-system220.js.map +1 -1
  516. package/dist/design-system220.mjs +6 -10
  517. package/dist/design-system220.mjs.map +1 -1
  518. package/dist/design-system221.js +1 -1
  519. package/dist/design-system221.js.map +1 -1
  520. package/dist/design-system221.mjs +6 -6
  521. package/dist/design-system221.mjs.map +1 -1
  522. package/dist/design-system222.js +1 -1
  523. package/dist/design-system222.js.map +1 -1
  524. package/dist/design-system222.mjs +4 -6
  525. package/dist/design-system222.mjs.map +1 -1
  526. package/dist/design-system223.js +1 -1
  527. package/dist/design-system223.js.map +1 -1
  528. package/dist/design-system223.mjs +7 -4
  529. package/dist/design-system223.mjs.map +1 -1
  530. package/dist/design-system224.js +1 -1
  531. package/dist/design-system224.js.map +1 -1
  532. package/dist/design-system224.mjs +4 -8
  533. package/dist/design-system224.mjs.map +1 -1
  534. package/dist/design-system23.js +1 -1
  535. package/dist/design-system23.js.map +1 -1
  536. package/dist/design-system23.mjs +26 -26
  537. package/dist/design-system23.mjs.map +1 -1
  538. package/dist/design-system24.js +1 -1
  539. package/dist/design-system24.js.map +1 -1
  540. package/dist/design-system24.mjs +14 -14
  541. package/dist/design-system24.mjs.map +1 -1
  542. package/dist/design-system25.js +1 -1
  543. package/dist/design-system25.js.map +1 -1
  544. package/dist/design-system25.mjs +17 -17
  545. package/dist/design-system25.mjs.map +1 -1
  546. package/dist/design-system26.js +1 -1
  547. package/dist/design-system26.mjs +3 -3
  548. package/dist/design-system27.js +1 -1
  549. package/dist/design-system27.mjs +3 -3
  550. package/dist/design-system28.js +1 -1
  551. package/dist/design-system28.mjs +3 -3
  552. package/dist/design-system29.js +1 -1
  553. package/dist/design-system29.mjs +1 -1
  554. package/dist/design-system30.js.map +1 -1
  555. package/dist/design-system30.mjs.map +1 -1
  556. package/dist/design-system31.js.map +1 -1
  557. package/dist/design-system31.mjs.map +1 -1
  558. package/dist/design-system32.js +1 -1
  559. package/dist/design-system32.mjs +3 -3
  560. package/dist/design-system33.js +1 -1
  561. package/dist/design-system33.mjs +3 -3
  562. package/dist/design-system34.js +1 -1
  563. package/dist/design-system34.mjs +1 -1
  564. package/dist/design-system35.js +1 -1
  565. package/dist/design-system35.mjs +1 -1
  566. package/dist/design-system36.js +1 -1
  567. package/dist/design-system36.mjs +1 -1
  568. package/dist/design-system37.js +1 -1
  569. package/dist/design-system37.mjs +1 -1
  570. package/dist/design-system38.js +1 -1
  571. package/dist/design-system38.mjs +3 -3
  572. package/dist/design-system39.js +1 -1
  573. package/dist/design-system39.mjs +2 -2
  574. package/dist/design-system40.js +1 -1
  575. package/dist/design-system40.mjs +3 -3
  576. package/dist/design-system41.js +1 -1
  577. package/dist/design-system41.mjs +3 -3
  578. package/dist/design-system42.js +1 -1
  579. package/dist/design-system42.js.map +1 -1
  580. package/dist/design-system42.mjs +23 -23
  581. package/dist/design-system42.mjs.map +1 -1
  582. package/dist/design-system43.js +1 -1
  583. package/dist/design-system43.mjs +3 -3
  584. package/dist/design-system44.js +1 -1
  585. package/dist/design-system44.mjs +1 -1
  586. package/dist/design-system45.js +1 -1
  587. package/dist/design-system45.mjs +1 -1
  588. package/dist/design-system46.js +1 -1
  589. package/dist/design-system46.mjs +3 -3
  590. package/dist/design-system47.js +1 -1
  591. package/dist/design-system47.js.map +1 -1
  592. package/dist/design-system47.mjs +28 -28
  593. package/dist/design-system47.mjs.map +1 -1
  594. package/dist/design-system48.js +1 -1
  595. package/dist/design-system48.mjs +3 -3
  596. package/dist/design-system49.js +1 -1
  597. package/dist/design-system49.mjs +3 -3
  598. package/dist/design-system50.js +1 -1
  599. package/dist/design-system50.mjs +1 -1
  600. package/dist/design-system51.js +4 -4
  601. package/dist/design-system51.js.map +1 -1
  602. package/dist/design-system51.mjs +531 -516
  603. package/dist/design-system51.mjs.map +1 -1
  604. package/dist/design-system52.js +6 -1
  605. package/dist/design-system52.js.map +1 -1
  606. package/dist/design-system52.mjs +140 -2
  607. package/dist/design-system52.mjs.map +1 -1
  608. package/dist/design-system53.js +6 -1
  609. package/dist/design-system53.js.map +1 -1
  610. package/dist/design-system53.mjs +1044 -130
  611. package/dist/design-system53.mjs.map +1 -1
  612. package/dist/design-system54.js +7 -1
  613. package/dist/design-system54.js.map +1 -1
  614. package/dist/design-system54.mjs +948 -2
  615. package/dist/design-system54.mjs.map +1 -1
  616. package/dist/design-system55.js +4 -1
  617. package/dist/design-system55.js.map +1 -1
  618. package/dist/design-system55.mjs +1364 -7
  619. package/dist/design-system55.mjs.map +1 -1
  620. package/dist/design-system56.js +1 -1
  621. package/dist/design-system56.mjs +2 -2
  622. package/dist/design-system57.js +1 -1
  623. package/dist/design-system57.js.map +1 -1
  624. package/dist/design-system57.mjs +132 -2
  625. package/dist/design-system57.mjs.map +1 -1
  626. package/dist/design-system58.js +1 -1
  627. package/dist/design-system58.js.map +1 -1
  628. package/dist/design-system58.mjs +2 -65
  629. package/dist/design-system58.mjs.map +1 -1
  630. package/dist/design-system59.js +1 -1
  631. package/dist/design-system59.mjs +7 -2
  632. package/dist/design-system59.mjs.map +1 -1
  633. package/dist/design-system60.js +1 -1
  634. package/dist/design-system60.mjs +2 -2
  635. package/dist/design-system61.js +1 -1
  636. package/dist/design-system61.mjs +2 -3
  637. package/dist/design-system61.mjs.map +1 -1
  638. package/dist/design-system62.js +1 -1
  639. package/dist/design-system62.js.map +1 -1
  640. package/dist/design-system62.mjs +65 -2
  641. package/dist/design-system62.mjs.map +1 -1
  642. package/dist/design-system63.js +1 -1
  643. package/dist/design-system63.mjs +2 -2
  644. package/dist/design-system64.js +1 -1
  645. package/dist/design-system64.mjs +1 -1
  646. package/dist/design-system65.js +1 -1
  647. package/dist/design-system65.mjs +3 -2
  648. package/dist/design-system65.mjs.map +1 -1
  649. package/dist/design-system66.js +1 -1
  650. package/dist/design-system66.mjs +1 -1
  651. package/dist/design-system67.js +1 -1
  652. package/dist/design-system67.js.map +1 -1
  653. package/dist/design-system67.mjs +2 -28
  654. package/dist/design-system67.mjs.map +1 -1
  655. package/dist/design-system68.js +1 -1
  656. package/dist/design-system68.mjs +2 -2
  657. package/dist/design-system69.js +1 -1
  658. package/dist/design-system69.js.map +1 -1
  659. package/dist/design-system69.mjs +2 -58
  660. package/dist/design-system69.mjs.map +1 -1
  661. package/dist/design-system70.js +1 -1
  662. package/dist/design-system70.mjs +2 -2
  663. package/dist/design-system71.js +1 -1
  664. package/dist/design-system71.js.map +1 -1
  665. package/dist/design-system71.mjs +28 -2
  666. package/dist/design-system71.mjs.map +1 -1
  667. package/dist/design-system72.js +1 -1
  668. package/dist/design-system72.mjs +2 -2
  669. package/dist/design-system73.js +1 -1
  670. package/dist/design-system73.js.map +1 -1
  671. package/dist/design-system73.mjs +58 -2
  672. package/dist/design-system73.mjs.map +1 -1
  673. package/dist/design-system74.js +1 -1
  674. package/dist/design-system74.mjs +2 -2
  675. package/dist/design-system75.js +1 -1
  676. package/dist/design-system75.js.map +1 -1
  677. package/dist/design-system75.mjs +2 -79
  678. package/dist/design-system75.mjs.map +1 -1
  679. package/dist/design-system76.js +1 -1
  680. package/dist/design-system76.mjs +2 -2
  681. package/dist/design-system77.js +1 -1
  682. package/dist/design-system77.mjs +1 -1
  683. package/dist/design-system78.js +1 -1
  684. package/dist/design-system78.mjs +2 -2
  685. package/dist/design-system79.js +1 -1
  686. package/dist/design-system79.js.map +1 -1
  687. package/dist/design-system79.mjs +69 -71
  688. package/dist/design-system79.mjs.map +1 -1
  689. package/dist/design-system80.js +1 -1
  690. package/dist/design-system80.mjs +2 -2
  691. package/dist/design-system81.js +1 -1
  692. package/dist/design-system81.mjs +1 -1
  693. package/dist/design-system82.js +1 -1
  694. package/dist/design-system82.js.map +1 -1
  695. package/dist/design-system82.mjs +2 -119
  696. package/dist/design-system82.mjs.map +1 -1
  697. package/dist/design-system83.js +1 -1
  698. package/dist/design-system83.js.map +1 -1
  699. package/dist/design-system83.mjs +81 -2
  700. package/dist/design-system83.mjs.map +1 -1
  701. package/dist/design-system84.js +1 -1
  702. package/dist/design-system84.mjs +2 -2
  703. package/dist/design-system85.js +1 -1
  704. package/dist/design-system85.mjs +1 -1
  705. package/dist/design-system86.js +1 -1
  706. package/dist/design-system86.js.map +1 -1
  707. package/dist/design-system86.mjs +110 -93
  708. package/dist/design-system86.mjs.map +1 -1
  709. package/dist/design-system88.js +1 -1
  710. package/dist/design-system88.js.map +1 -1
  711. package/dist/design-system88.mjs +2 -190
  712. package/dist/design-system88.mjs.map +1 -1
  713. package/dist/design-system89.js +1 -1
  714. package/dist/design-system89.mjs +2 -2
  715. package/dist/design-system90.js +1 -1
  716. package/dist/design-system90.js.map +1 -1
  717. package/dist/design-system90.mjs +102 -2
  718. package/dist/design-system90.mjs.map +1 -1
  719. package/dist/design-system91.js +1 -1
  720. package/dist/design-system91.js.map +1 -1
  721. package/dist/design-system91.mjs +2 -142
  722. package/dist/design-system91.mjs.map +1 -1
  723. package/dist/design-system92.js +1 -1
  724. package/dist/design-system92.js.map +1 -1
  725. package/dist/design-system92.mjs +190 -2
  726. package/dist/design-system92.mjs.map +1 -1
  727. package/dist/design-system93.js +1 -1
  728. package/dist/design-system93.js.map +1 -1
  729. package/dist/design-system93.mjs +2 -49
  730. package/dist/design-system93.mjs.map +1 -1
  731. package/dist/design-system94.js +1 -1
  732. package/dist/design-system94.mjs +2 -2
  733. package/dist/design-system95.js +1 -1
  734. package/dist/design-system95.js.map +1 -1
  735. package/dist/design-system95.mjs +142 -2
  736. package/dist/design-system95.mjs.map +1 -1
  737. package/dist/design-system96.js +1 -6
  738. package/dist/design-system96.js.map +1 -1
  739. package/dist/design-system96.mjs +2 -107
  740. package/dist/design-system96.mjs.map +1 -1
  741. package/dist/design-system97.js +1 -6
  742. package/dist/design-system97.js.map +1 -1
  743. package/dist/design-system97.mjs +48 -911
  744. package/dist/design-system97.mjs.map +1 -1
  745. package/dist/design-system98.js +1 -7
  746. package/dist/design-system98.js.map +1 -1
  747. package/dist/design-system98.mjs +2 -861
  748. package/dist/design-system98.mjs.map +1 -1
  749. package/dist/design-system99.js +1 -4
  750. package/dist/design-system99.js.map +1 -1
  751. package/dist/design-system99.mjs +2 -1364
  752. package/dist/design-system99.mjs.map +1 -1
  753. package/dist/style.css +1 -1
  754. package/dist/types/components/BButton.vue.d.ts +52 -53
  755. package/dist/types/components/BCarousel/BCarousel.vue.d.ts +77 -70
  756. package/dist/types/components/BCarousel/BCarouselItem.vue.d.ts +9 -9
  757. package/dist/types/components/BCheckbox.vue.d.ts +63 -84
  758. package/dist/types/components/BCollapse.vue.d.ts +25 -26
  759. package/dist/types/components/BCurrencyField.vue.d.ts +101 -164
  760. package/dist/types/components/BDatePicker.vue.d.ts +111 -186
  761. package/dist/types/components/BDateRangePicker.vue.d.ts +104 -173
  762. package/dist/types/components/BDropdown/BDropdown.vue.d.ts +87 -118
  763. package/dist/types/components/BDropdown/BDropdownContent.vue.d.ts +9 -9
  764. package/dist/types/components/BDropdown/BDropdownItem.vue.d.ts +35 -24
  765. package/dist/types/components/BErrorMessage.vue.d.ts +39 -28
  766. package/dist/types/components/BImagePicker/BImagePicker.vue.d.ts +76 -115
  767. package/dist/types/components/BImagePicker/BImagePickerCloseButton.vue.d.ts +2 -2
  768. package/dist/types/components/BImagePicker/BImagePreview.vue.d.ts +27 -28
  769. package/dist/types/components/BLabel.vue.d.ts +46 -47
  770. package/dist/types/components/BLoadingBar.vue.d.ts +37 -46
  771. package/dist/types/components/BLoadingOverlay.vue.d.ts +34 -37
  772. package/dist/types/components/BModal/BModal.vue.d.ts +61 -70
  773. package/dist/types/components/BModal/BModalBody.vue.d.ts +9 -9
  774. package/dist/types/components/BModal/BModalContainer.vue.d.ts +48 -49
  775. package/dist/types/components/BModal/BModalFooter.vue.d.ts +9 -9
  776. package/dist/types/components/BModal/BModalHeader.vue.d.ts +9 -9
  777. package/dist/types/components/BMultiSelect.vue.d.ts +106 -177
  778. package/dist/types/components/BOtpField/BOtpField.vue.d.ts +93 -138
  779. package/dist/types/components/BOtpField/BOtpFieldBox.vue.d.ts +52 -53
  780. package/dist/types/components/BOverlay.vue.d.ts +9 -9
  781. package/dist/types/components/BPagination.vue.d.ts +54 -71
  782. package/dist/types/components/BRadio.vue.d.ts +94 -145
  783. package/dist/types/components/BSelect.vue.d.ts +99 -164
  784. package/dist/types/components/BStepper.vue.d.ts +41 -32
  785. package/dist/types/components/BSwitch.vue.d.ts +58 -73
  786. package/dist/types/components/BTabs/BTab.vue.d.ts +9 -9
  787. package/dist/types/components/BTabs/BTabs.vue.d.ts +56 -59
  788. package/dist/types/components/BTextField.vue.d.ts +122 -197
  789. package/dist/types/components/BTextarea.vue.d.ts +92 -155
  790. package/dist/types/components/BTimeline/BTimeline.vue.d.ts +9 -9
  791. package/dist/types/components/BTimeline/BTimelineItem.vue.d.ts +9 -9
  792. package/dist/types/components/BToast/BToast.vue.d.ts +27 -20
  793. package/dist/types/components/BToast/BToastItem.vue.d.ts +48 -49
  794. package/dist/types/components/BTooltip.vue.d.ts +55 -56
  795. package/dist/types/components/index.d.ts +38 -38
  796. package/dist/types/composables/Date.d.ts +7 -7
  797. package/dist/types/composables/Validation.d.ts +41 -41
  798. package/dist/types/constants/Common.d.ts +9 -9
  799. package/dist/types/constants/Enums.d.ts +110 -110
  800. package/dist/types/helpers/ComponentHelper.d.ts +7 -7
  801. package/dist/types/helpers/DateHelper.d.ts +2 -2
  802. package/dist/types/index.d.ts +11 -11
  803. package/dist/types/playground/PlaygroundView.vue.d.ts +2 -2
  804. package/dist/types/plugin.d.ts +8 -8
  805. package/dist/types/types/Common.d.ts +5 -5
  806. package/dist/types/types/components/BErrorMessage.d.ts +1 -1
  807. package/dist/types/types/components/BImagePicker.d.ts +6 -6
  808. package/dist/types/types/components/BStepper.d.ts +5 -5
  809. package/dist/types/types/components/BTabs.d.ts +4 -4
  810. package/dist/types/types/components/BToast.d.ts +8 -8
  811. package/dist/types/types/index.d.ts +7 -6
  812. package/package.json +111 -110
  813. package/dist/design-system225.js +0 -2
  814. package/dist/design-system225.js.map +0 -1
  815. package/dist/design-system225.mjs +0 -7
  816. package/dist/design-system225.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"design-system102.mjs","sources":["../src/vendor/imask-7.1.3.js"],"sourcesContent":["(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\r\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\r\n ((global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.IMask = {})));\r\n})(this, (function (exports) { 'use strict';\r\n\r\n /** Checks if value is string */\r\n function isString(str) {\r\n return typeof str === 'string' || str instanceof String;\r\n }\r\n\r\n /** Checks if value is object */\r\n function isObject(obj) {\r\n var _obj$constructor;\r\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\r\n }\r\n function pick(obj, keys) {\r\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\r\n return Object.entries(obj).reduce((acc, _ref) => {\r\n let [k, v] = _ref;\r\n if (keys(v, k)) acc[k] = v;\r\n return acc;\r\n }, {});\r\n }\r\n\r\n /** Direction */\r\n const DIRECTION = {\r\n NONE: 'NONE',\r\n LEFT: 'LEFT',\r\n FORCE_LEFT: 'FORCE_LEFT',\r\n RIGHT: 'RIGHT',\r\n FORCE_RIGHT: 'FORCE_RIGHT'\r\n };\r\n\r\n /** Direction */\r\n\r\n function forceDirection(direction) {\r\n switch (direction) {\r\n case DIRECTION.LEFT:\r\n return DIRECTION.FORCE_LEFT;\r\n case DIRECTION.RIGHT:\r\n return DIRECTION.FORCE_RIGHT;\r\n default:\r\n return direction;\r\n }\r\n }\r\n\r\n /** Escapes regular expression control chars */\r\n function escapeRegExp(str) {\r\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\r\n }\r\n\r\n // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\r\n function objectIncludes(b, a) {\r\n if (a === b) return true;\r\n const arrA = Array.isArray(a),\r\n arrB = Array.isArray(b);\r\n let i;\r\n if (arrA && arrB) {\r\n if (a.length != b.length) return false;\r\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\r\n return true;\r\n }\r\n if (arrA != arrB) return false;\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n const dateA = a instanceof Date,\r\n dateB = b instanceof Date;\r\n if (dateA && dateB) return a.getTime() == b.getTime();\r\n if (dateA != dateB) return false;\r\n const regexpA = a instanceof RegExp,\r\n regexpB = b instanceof RegExp;\r\n if (regexpA && regexpB) return a.toString() == b.toString();\r\n if (regexpA != regexpB) return false;\r\n const keys = Object.keys(a);\r\n // if (keys.length !== Object.keys(b).length) return false;\r\n\r\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\r\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\r\n return true;\r\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\r\n return a.toString() === b.toString();\r\n }\r\n return false;\r\n }\r\n\r\n /** Selection range */\r\n\r\n /** Provides details of changing input */\r\n class ActionDetails {\r\n /** Current input value */\r\n\r\n /** Current cursor position */\r\n\r\n /** Old input value */\r\n\r\n /** Old selection */\r\n\r\n constructor(opts) {\r\n Object.assign(this, opts);\r\n\r\n // double check if left part was changed (autofilling, other non-standard input triggers)\r\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\r\n --this.oldSelection.start;\r\n }\r\n }\r\n\r\n /** Start changing position */\r\n get startChangePos() {\r\n return Math.min(this.cursorPos, this.oldSelection.start);\r\n }\r\n\r\n /** Inserted symbols count */\r\n get insertedCount() {\r\n return this.cursorPos - this.startChangePos;\r\n }\r\n\r\n /** Inserted symbols */\r\n get inserted() {\r\n return this.value.substr(this.startChangePos, this.insertedCount);\r\n }\r\n\r\n /** Removed symbols count */\r\n get removedCount() {\r\n // Math.max for opposite operation\r\n return Math.max(this.oldSelection.end - this.startChangePos ||\r\n // for Delete\r\n this.oldValue.length - this.value.length, 0);\r\n }\r\n\r\n /** Removed symbols */\r\n get removed() {\r\n return this.oldValue.substr(this.startChangePos, this.removedCount);\r\n }\r\n\r\n /** Unchanged head symbols */\r\n get head() {\r\n return this.value.substring(0, this.startChangePos);\r\n }\r\n\r\n /** Unchanged tail symbols */\r\n get tail() {\r\n return this.value.substring(this.startChangePos + this.insertedCount);\r\n }\r\n\r\n /** Remove direction */\r\n get removeDirection() {\r\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\r\n\r\n // align right if delete at right\r\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\r\n // if not range removed (event with backspace)\r\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\r\n }\r\n }\r\n\r\n /** Applies mask on element */\r\n function IMask(el, opts) {\r\n // currently available only for input-like elements\r\n return new IMask.InputMask(el, opts);\r\n }\r\n\r\n // TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\r\n // export function maskedClass(mask: string): typeof MaskedPattern;\r\n // export function maskedClass(mask: DateConstructor): typeof MaskedDate;\r\n // export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\r\n // export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\r\n // export function maskedClass(mask: MaskedDate): typeof MaskedDate;\r\n // export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\r\n // export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\r\n // export function maskedClass(mask: MaskedRange): typeof MaskedRange;\r\n // export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\r\n // export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\r\n // export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\r\n // export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\r\n // export function maskedClass(mask: Masked): typeof Masked;\r\n // export function maskedClass(mask: typeof Masked): typeof Masked;\r\n // export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\r\n // export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\r\n // export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\r\n // export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\r\n // export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\r\n // export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\r\n // export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\r\n // export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\r\n // export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\r\n // export function maskedClass(mask: RegExp): typeof MaskedRegExp;\r\n // export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\r\n /** Get Masked class by mask type */\r\n function maskedClass(mask) /* TODO */{\r\n if (mask == null) throw new Error('mask property should be defined');\r\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\r\n if (isString(mask)) return IMask.MaskedPattern;\r\n if (mask === Date) return IMask.MaskedDate;\r\n if (mask === Number) return IMask.MaskedNumber;\r\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\r\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\r\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\r\n if (mask instanceof Function) return IMask.MaskedFunction;\r\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\r\n return IMask.Masked;\r\n }\r\n function normalizeOpts(opts) {\r\n if (!opts) throw new Error('Options in not defined');\r\n if (IMask.Masked) {\r\n if (opts.prototype instanceof IMask.Masked) return {\r\n mask: opts\r\n };\r\n\r\n /*\r\n handle cases like:\r\n 1) opts = Masked\r\n 2) opts = { mask: Masked, ...instanceOpts }\r\n */\r\n const {\r\n mask = undefined,\r\n ...instanceOpts\r\n } = opts instanceof IMask.Masked ? {\r\n mask: opts\r\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\r\n if (mask) {\r\n const _mask = mask.mask;\r\n return {\r\n ...pick(mask, (_, k) => !k.startsWith('_')),\r\n mask: mask.constructor,\r\n _mask,\r\n ...instanceOpts\r\n };\r\n }\r\n }\r\n if (!isObject(opts)) return {\r\n mask: opts\r\n };\r\n return {\r\n ...opts\r\n };\r\n }\r\n\r\n // TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\r\n\r\n // From masked\r\n // export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\r\n // // From masked class\r\n // export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // // From mask opts\r\n // export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n // export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\r\n\r\n /** Creates new {@link Masked} depending on mask type */\r\n function createMask(opts) {\r\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\r\n const nOpts = normalizeOpts(opts);\r\n const MaskedClass = maskedClass(nOpts.mask);\r\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\r\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\r\n if (nOpts._mask) {\r\n nOpts.mask = nOpts._mask;\r\n delete nOpts._mask;\r\n }\r\n return new MaskedClass(nOpts);\r\n }\r\n IMask.createMask = createMask;\r\n\r\n /** Generic element API to use with mask */\r\n class MaskElement {\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** Safely returns selection start */\r\n get selectionStart() {\r\n let start;\r\n try {\r\n start = this._unsafeSelectionStart;\r\n } catch {}\r\n return start != null ? start : this.value.length;\r\n }\r\n\r\n /** Safely returns selection end */\r\n get selectionEnd() {\r\n let end;\r\n try {\r\n end = this._unsafeSelectionEnd;\r\n } catch {}\r\n return end != null ? end : this.value.length;\r\n }\r\n\r\n /** Safely sets element selection */\r\n select(start, end) {\r\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\r\n try {\r\n this._unsafeSelect(start, end);\r\n } catch {}\r\n }\r\n\r\n /** */\r\n get isActive() {\r\n return false;\r\n }\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n }\r\n\r\n IMask.MaskElement = MaskElement;\r\n\r\n /** Bridge between HTMLElement and {@link Masked} */\r\n class HTMLMaskElement extends MaskElement {\r\n /** HTMLElement to use mask on */\r\n\r\n constructor(input) {\r\n super();\r\n this.input = input;\r\n this._handlers = {};\r\n }\r\n get rootElement() {\r\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\r\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\r\n }\r\n\r\n /**\r\n Is element in focus\r\n */\r\n get isActive() {\r\n return this.input === this.rootElement.activeElement;\r\n }\r\n\r\n /**\r\n Binds HTMLElement events to mask internal events\r\n */\r\n bindEvents(handlers) {\r\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\r\n }\r\n\r\n /**\r\n Unbinds HTMLElement events to mask internal events\r\n */\r\n unbindEvents() {\r\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\r\n }\r\n _toggleEventHandler(event, handler) {\r\n if (this._handlers[event]) {\r\n this.input.removeEventListener(event, this._handlers[event]);\r\n delete this._handlers[event];\r\n }\r\n if (handler) {\r\n this.input.addEventListener(event, handler);\r\n this._handlers[event] = handler;\r\n }\r\n }\r\n }\r\n /** Mapping between HTMLElement events and mask internal events */\r\n HTMLMaskElement.EVENTS_MAP = {\r\n selectionChange: 'keydown',\r\n input: 'input',\r\n drop: 'drop',\r\n click: 'click',\r\n focus: 'focus',\r\n commit: 'blur'\r\n };\r\n IMask.HTMLMaskElement = HTMLMaskElement;\r\n\r\n /** Bridge between InputElement and {@link Masked} */\r\n class HTMLInputMaskElement extends HTMLMaskElement {\r\n /** InputElement to use mask on */\r\n\r\n constructor(input) {\r\n super(input);\r\n this.input = input;\r\n this._handlers = {};\r\n }\r\n\r\n /** Returns InputElement selection start */\r\n get _unsafeSelectionStart() {\r\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\r\n }\r\n\r\n /** Returns InputElement selection end */\r\n get _unsafeSelectionEnd() {\r\n return this.input.selectionEnd;\r\n }\r\n\r\n /** Sets InputElement selection */\r\n _unsafeSelect(start, end) {\r\n this.input.setSelectionRange(start, end);\r\n }\r\n get value() {\r\n return this.input.value;\r\n }\r\n set value(value) {\r\n this.input.value = value;\r\n }\r\n }\r\n IMask.HTMLMaskElement = HTMLMaskElement;\r\n\r\n class HTMLContenteditableMaskElement extends HTMLMaskElement {\r\n /** Returns HTMLElement selection start */\r\n get _unsafeSelectionStart() {\r\n const root = this.rootElement;\r\n const selection = root.getSelection && root.getSelection();\r\n const anchorOffset = selection && selection.anchorOffset;\r\n const focusOffset = selection && selection.focusOffset;\r\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\r\n return anchorOffset;\r\n }\r\n return focusOffset;\r\n }\r\n\r\n /** Returns HTMLElement selection end */\r\n get _unsafeSelectionEnd() {\r\n const root = this.rootElement;\r\n const selection = root.getSelection && root.getSelection();\r\n const anchorOffset = selection && selection.anchorOffset;\r\n const focusOffset = selection && selection.focusOffset;\r\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\r\n return anchorOffset;\r\n }\r\n return focusOffset;\r\n }\r\n\r\n /** Sets HTMLElement selection */\r\n _unsafeSelect(start, end) {\r\n if (!this.rootElement.createRange) return;\r\n const range = this.rootElement.createRange();\r\n range.setStart(this.input.firstChild || this.input, start);\r\n range.setEnd(this.input.lastChild || this.input, end);\r\n const root = this.rootElement;\r\n const selection = root.getSelection && root.getSelection();\r\n if (selection) {\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n }\r\n\r\n /** HTMLElement value */\r\n get value() {\r\n return this.input.textContent || '';\r\n }\r\n set value(value) {\r\n this.input.textContent = value;\r\n }\r\n }\r\n IMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\r\n\r\n /** Listens to element events and controls changes between element and {@link Masked} */\r\n class InputMask {\r\n /**\r\n View element\r\n */\r\n\r\n /** Internal {@link Masked} model */\r\n\r\n constructor(el, opts) {\r\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\r\n this.masked = createMask(opts);\r\n this._listeners = {};\r\n this._value = '';\r\n this._unmaskedValue = '';\r\n this._saveSelection = this._saveSelection.bind(this);\r\n this._onInput = this._onInput.bind(this);\r\n this._onChange = this._onChange.bind(this);\r\n this._onDrop = this._onDrop.bind(this);\r\n this._onFocus = this._onFocus.bind(this);\r\n this._onClick = this._onClick.bind(this);\r\n this.alignCursor = this.alignCursor.bind(this);\r\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\r\n this._bindEvents();\r\n\r\n // refresh\r\n this.updateValue();\r\n this._onChange();\r\n }\r\n maskEquals(mask) {\r\n var _this$masked;\r\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\r\n }\r\n\r\n /** Masked */\r\n get mask() {\r\n return this.masked.mask;\r\n }\r\n set mask(mask) {\r\n if (this.maskEquals(mask)) return;\r\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\r\n // TODO \"any\" no idea\r\n this.masked.updateOptions({\r\n mask\r\n });\r\n return;\r\n }\r\n const masked = mask instanceof IMask.Masked ? mask : createMask({\r\n mask\r\n });\r\n masked.unmaskedValue = this.masked.unmaskedValue;\r\n this.masked = masked;\r\n }\r\n\r\n /** Raw value */\r\n get value() {\r\n return this._value;\r\n }\r\n set value(str) {\r\n if (this.value === str) return;\r\n this.masked.value = str;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n /** Unmasked value */\r\n get unmaskedValue() {\r\n return this._unmaskedValue;\r\n }\r\n set unmaskedValue(str) {\r\n if (this.unmaskedValue === str) return;\r\n this.masked.unmaskedValue = str;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n /** Typed unmasked value */\r\n get typedValue() {\r\n return this.masked.typedValue;\r\n }\r\n set typedValue(val) {\r\n if (this.masked.typedValueEquals(val)) return;\r\n this.masked.typedValue = val;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n /** Display value */\r\n get displayValue() {\r\n return this.masked.displayValue;\r\n }\r\n\r\n /** Starts listening to element events */\r\n _bindEvents() {\r\n this.el.bindEvents({\r\n selectionChange: this._saveSelection,\r\n input: this._onInput,\r\n drop: this._onDrop,\r\n click: this._onClick,\r\n focus: this._onFocus,\r\n commit: this._onChange\r\n });\r\n }\r\n\r\n /** Stops listening to element events */\r\n _unbindEvents() {\r\n if (this.el) this.el.unbindEvents();\r\n }\r\n\r\n /** Fires custom event */\r\n _fireEvent(ev, e) {\r\n const listeners = this._listeners[ev];\r\n if (!listeners) return;\r\n listeners.forEach(l => l(e));\r\n }\r\n\r\n /** Current selection start */\r\n get selectionStart() {\r\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\r\n }\r\n\r\n /** Current cursor position */\r\n get cursorPos() {\r\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\r\n }\r\n set cursorPos(pos) {\r\n if (!this.el || !this.el.isActive) return;\r\n this.el.select(pos, pos);\r\n this._saveSelection();\r\n }\r\n\r\n /** Stores current selection */\r\n _saveSelection( /* ev */\r\n ) {\r\n if (this.displayValue !== this.el.value) {\r\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\r\n }\r\n\r\n this._selection = {\r\n start: this.selectionStart,\r\n end: this.cursorPos\r\n };\r\n }\r\n\r\n /** Syncronizes model value from view */\r\n updateValue() {\r\n this.masked.value = this.el.value;\r\n this._value = this.masked.value;\r\n }\r\n\r\n /** Syncronizes view from model value, fires change events */\r\n updateControl() {\r\n const newUnmaskedValue = this.masked.unmaskedValue;\r\n const newValue = this.masked.value;\r\n const newDisplayValue = this.displayValue;\r\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\r\n this._unmaskedValue = newUnmaskedValue;\r\n this._value = newValue;\r\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\r\n if (isChanged) this._fireChangeEvents();\r\n }\r\n\r\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\r\n updateOptions(opts) {\r\n const {\r\n mask,\r\n ...restOpts\r\n } = opts;\r\n const updateMask = !this.maskEquals(mask);\r\n const updateOpts = !objectIncludes(this.masked, restOpts);\r\n if (updateMask) this.mask = mask;\r\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\r\n\r\n if (updateMask || updateOpts) this.updateControl();\r\n }\r\n\r\n /** Updates cursor */\r\n updateCursor(cursorPos) {\r\n if (cursorPos == null) return;\r\n this.cursorPos = cursorPos;\r\n\r\n // also queue change cursor for mobile browsers\r\n this._delayUpdateCursor(cursorPos);\r\n }\r\n\r\n /** Delays cursor update to support mobile browsers */\r\n _delayUpdateCursor(cursorPos) {\r\n this._abortUpdateCursor();\r\n this._changingCursorPos = cursorPos;\r\n this._cursorChanging = setTimeout(() => {\r\n if (!this.el) return; // if was destroyed\r\n this.cursorPos = this._changingCursorPos;\r\n this._abortUpdateCursor();\r\n }, 10);\r\n }\r\n\r\n /** Fires custom events */\r\n _fireChangeEvents() {\r\n this._fireEvent('accept', this._inputEvent);\r\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\r\n }\r\n\r\n /** Aborts delayed cursor update */\r\n _abortUpdateCursor() {\r\n if (this._cursorChanging) {\r\n clearTimeout(this._cursorChanging);\r\n delete this._cursorChanging;\r\n }\r\n }\r\n\r\n /** Aligns cursor to nearest available position */\r\n alignCursor() {\r\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\r\n }\r\n\r\n /** Aligns cursor only if selection is empty */\r\n alignCursorFriendly() {\r\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\r\n this.alignCursor();\r\n }\r\n\r\n /** Adds listener on custom event */\r\n on(ev, handler) {\r\n if (!this._listeners[ev]) this._listeners[ev] = [];\r\n this._listeners[ev].push(handler);\r\n return this;\r\n }\r\n\r\n /** Removes custom event listener */\r\n off(ev, handler) {\r\n if (!this._listeners[ev]) return this;\r\n if (!handler) {\r\n delete this._listeners[ev];\r\n return this;\r\n }\r\n const hIndex = this._listeners[ev].indexOf(handler);\r\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\r\n return this;\r\n }\r\n\r\n /** Handles view input event */\r\n _onInput(e) {\r\n this._inputEvent = e;\r\n this._abortUpdateCursor();\r\n\r\n // fix strange IE behavior\r\n if (!this._selection) return this.updateValue();\r\n const details = new ActionDetails({\r\n // new state\r\n value: this.el.value,\r\n cursorPos: this.cursorPos,\r\n // old state\r\n oldValue: this.displayValue,\r\n oldSelection: this._selection\r\n });\r\n const oldRawValue = this.masked.rawInputValue;\r\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\r\n input: true,\r\n raw: true\r\n }).offset;\r\n\r\n // force align in remove direction only if no input chars were removed\r\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\r\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\r\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\r\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\r\n this.updateControl();\r\n this.updateCursor(cursorPos);\r\n delete this._inputEvent;\r\n }\r\n\r\n /** Handles view change event and commits model value */\r\n _onChange() {\r\n if (this.displayValue !== this.el.value) {\r\n this.updateValue();\r\n }\r\n this.masked.doCommit();\r\n this.updateControl();\r\n this._saveSelection();\r\n }\r\n\r\n /** Handles view drop event, prevents by default */\r\n _onDrop(ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n\r\n /** Restore last selection on focus */\r\n _onFocus(ev) {\r\n this.alignCursorFriendly();\r\n }\r\n\r\n /** Restore last selection on focus */\r\n _onClick(ev) {\r\n this.alignCursorFriendly();\r\n }\r\n\r\n /** Unbind view events and removes element reference */\r\n destroy() {\r\n this._unbindEvents();\r\n this._listeners.length = 0;\r\n delete this.el;\r\n }\r\n }\r\n IMask.InputMask = InputMask;\r\n\r\n /** Provides details of changing model value */\r\n class ChangeDetails {\r\n /** Inserted symbols */\r\n\r\n /** Can skip chars */\r\n\r\n /** Additional offset if any changes occurred before tail */\r\n\r\n /** Raw inserted is used by dynamic mask */\r\n\r\n static normalize(prep) {\r\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\r\n }\r\n constructor(details) {\r\n Object.assign(this, {\r\n inserted: '',\r\n rawInserted: '',\r\n skip: false,\r\n tailShift: 0\r\n }, details);\r\n }\r\n\r\n /** Aggregate changes */\r\n aggregate(details) {\r\n this.rawInserted += details.rawInserted;\r\n this.skip = this.skip || details.skip;\r\n this.inserted += details.inserted;\r\n this.tailShift += details.tailShift;\r\n return this;\r\n }\r\n\r\n /** Total offset considering all changes */\r\n get offset() {\r\n return this.tailShift + this.inserted.length;\r\n }\r\n }\r\n IMask.ChangeDetails = ChangeDetails;\r\n\r\n /** Provides details of continuous extracted tail */\r\n class ContinuousTailDetails {\r\n /** Tail value as string */\r\n\r\n /** Tail start position */\r\n\r\n /** Start position */\r\n\r\n constructor(value, from, stop) {\r\n if (value === void 0) {\r\n value = '';\r\n }\r\n if (from === void 0) {\r\n from = 0;\r\n }\r\n this.value = value;\r\n this.from = from;\r\n this.stop = stop;\r\n }\r\n toString() {\r\n return this.value;\r\n }\r\n extend(tail) {\r\n this.value += String(tail);\r\n }\r\n appendTo(masked) {\r\n return masked.append(this.toString(), {\r\n tail: true\r\n }).aggregate(masked._appendPlaceholder());\r\n }\r\n get state() {\r\n return {\r\n value: this.value,\r\n from: this.from,\r\n stop: this.stop\r\n };\r\n }\r\n set state(state) {\r\n Object.assign(this, state);\r\n }\r\n unshift(beforePos) {\r\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\r\n const shiftChar = this.value[0];\r\n this.value = this.value.slice(1);\r\n return shiftChar;\r\n }\r\n shift() {\r\n if (!this.value.length) return '';\r\n const shiftChar = this.value[this.value.length - 1];\r\n this.value = this.value.slice(0, -1);\r\n return shiftChar;\r\n }\r\n }\r\n\r\n /** Append flags */\r\n\r\n /** Extract flags */\r\n\r\n // see https://github.com/microsoft/TypeScript/issues/6223\r\n\r\n /** Provides common masking stuff */\r\n class Masked {\r\n /** */\r\n\r\n /** */\r\n\r\n /** Transforms value before mask processing */\r\n\r\n /** Transforms each char before mask processing */\r\n\r\n /** Validates if value is acceptable */\r\n\r\n /** Does additional processing at the end of editing */\r\n\r\n /** Format typed value to string */\r\n\r\n /** Parse string to get typed value */\r\n\r\n /** Enable characters overwriting */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n constructor(opts) {\r\n this._value = '';\r\n this._update({\r\n ...Masked.DEFAULTS,\r\n ...opts\r\n });\r\n this._initialized = true;\r\n }\r\n\r\n /** Sets and applies new options */\r\n updateOptions(opts) {\r\n if (!Object.keys(opts).length) return;\r\n this.withValueRefresh(this._update.bind(this, opts));\r\n }\r\n\r\n /** Sets new options */\r\n _update(opts) {\r\n Object.assign(this, opts);\r\n }\r\n\r\n /** Mask state */\r\n get state() {\r\n return {\r\n _value: this.value,\r\n _rawInputValue: this.rawInputValue\r\n };\r\n }\r\n set state(state) {\r\n this._value = state._value;\r\n }\r\n\r\n /** Resets value */\r\n reset() {\r\n this._value = '';\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n set value(value) {\r\n this.resolve(value, {\r\n input: true\r\n });\r\n }\r\n\r\n /** Resolve new value */\r\n resolve(value, flags) {\r\n if (flags === void 0) {\r\n flags = {\r\n input: true\r\n };\r\n }\r\n this.reset();\r\n this.append(value, flags, '');\r\n this.doCommit();\r\n }\r\n get unmaskedValue() {\r\n return this.value;\r\n }\r\n set unmaskedValue(value) {\r\n this.resolve(value, {});\r\n }\r\n get typedValue() {\r\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\r\n }\r\n set typedValue(value) {\r\n if (this.format) {\r\n this.value = this.format(value, this);\r\n } else {\r\n this.unmaskedValue = String(value);\r\n }\r\n }\r\n\r\n /** Value that includes raw user input */\r\n get rawInputValue() {\r\n return this.extractInput(0, this.displayValue.length, {\r\n raw: true\r\n });\r\n }\r\n set rawInputValue(value) {\r\n this.resolve(value, {\r\n raw: true\r\n });\r\n }\r\n get displayValue() {\r\n return this.value;\r\n }\r\n get isComplete() {\r\n return true;\r\n }\r\n get isFilled() {\r\n return this.isComplete;\r\n }\r\n\r\n /** Finds nearest input position in direction */\r\n nearestInputPos(cursorPos, direction) {\r\n return cursorPos;\r\n }\r\n totalInputPositions(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n return Math.min(this.displayValue.length, toPos - fromPos);\r\n }\r\n\r\n /** Extracts value in range considering flags */\r\n extractInput(fromPos, toPos, flags) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n return this.displayValue.slice(fromPos, toPos);\r\n }\r\n\r\n /** Extracts tail in range */\r\n extractTail(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\r\n }\r\n\r\n /** Appends tail */\r\n appendTail(tail) {\r\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\r\n return tail.appendTo(this);\r\n }\r\n\r\n /** Appends char */\r\n _appendCharRaw(ch, flags) {\r\n if (!ch) return new ChangeDetails();\r\n this._value += ch;\r\n return new ChangeDetails({\r\n inserted: ch,\r\n rawInserted: ch\r\n });\r\n }\r\n\r\n /** Appends char */\r\n _appendChar(ch, flags, checkTail) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n const consistentState = this.state;\r\n let details;\r\n [ch, details] = this.doPrepareChar(ch, flags);\r\n details = details.aggregate(this._appendCharRaw(ch, flags));\r\n if (details.inserted) {\r\n let consistentTail;\r\n let appended = this.doValidate(flags) !== false;\r\n if (appended && checkTail != null) {\r\n // validation ok, check tail\r\n const beforeTailState = this.state;\r\n if (this.overwrite === true) {\r\n consistentTail = checkTail.state;\r\n checkTail.unshift(this.displayValue.length - details.tailShift);\r\n }\r\n let tailDetails = this.appendTail(checkTail);\r\n appended = tailDetails.rawInserted === checkTail.toString();\r\n\r\n // not ok, try shift\r\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\r\n this.state = beforeTailState;\r\n consistentTail = checkTail.state;\r\n checkTail.shift();\r\n tailDetails = this.appendTail(checkTail);\r\n appended = tailDetails.rawInserted === checkTail.toString();\r\n }\r\n\r\n // if ok, rollback state after tail\r\n if (appended && tailDetails.inserted) this.state = beforeTailState;\r\n }\r\n\r\n // revert all if something went wrong\r\n if (!appended) {\r\n details = new ChangeDetails();\r\n this.state = consistentState;\r\n if (checkTail && consistentTail) checkTail.state = consistentTail;\r\n }\r\n }\r\n return details;\r\n }\r\n\r\n /** Appends optional placeholder at the end */\r\n _appendPlaceholder() {\r\n return new ChangeDetails();\r\n }\r\n\r\n /** Appends optional eager placeholder at the end */\r\n _appendEager() {\r\n return new ChangeDetails();\r\n }\r\n\r\n /** Appends symbols considering flags */\r\n append(str, flags, tail) {\r\n if (!isString(str)) throw new Error('value should be string');\r\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\r\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\r\n let details;\r\n [str, details] = this.doPrepare(str, flags);\r\n for (let ci = 0; ci < str.length; ++ci) {\r\n const d = this._appendChar(str[ci], flags, checkTail);\r\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\r\n details.aggregate(d);\r\n }\r\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\r\n details.aggregate(this._appendEager());\r\n }\r\n\r\n // append tail but aggregate only tailShift\r\n if (checkTail != null) {\r\n details.tailShift += this.appendTail(checkTail).tailShift;\r\n // TODO it's a good idea to clear state after appending ends\r\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\r\n // this._resetBeforeTailState();\r\n }\r\n\r\n return details;\r\n }\r\n remove(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\r\n return new ChangeDetails();\r\n }\r\n\r\n /** Calls function and reapplies current value */\r\n withValueRefresh(fn) {\r\n if (this._refreshing || !this._initialized) return fn();\r\n this._refreshing = true;\r\n const rawInput = this.rawInputValue;\r\n const value = this.value;\r\n const ret = fn();\r\n this.rawInputValue = rawInput;\r\n // append lost trailing chars at the end\r\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\r\n this.append(value.slice(this.displayValue.length), {}, '');\r\n }\r\n delete this._refreshing;\r\n return ret;\r\n }\r\n runIsolated(fn) {\r\n if (this._isolated || !this._initialized) return fn(this);\r\n this._isolated = true;\r\n const state = this.state;\r\n const ret = fn(this);\r\n this.state = state;\r\n delete this._isolated;\r\n return ret;\r\n }\r\n doSkipInvalid(ch, flags, checkTail) {\r\n return Boolean(this.skipInvalid);\r\n }\r\n\r\n /** Prepares string before mask processing */\r\n doPrepare(str, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\r\n }\r\n\r\n /** Prepares each char before mask processing */\r\n doPrepareChar(str, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\r\n }\r\n\r\n /** Validates if value is acceptable */\r\n doValidate(flags) {\r\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\r\n }\r\n\r\n /** Does additional processing at the end of editing */\r\n doCommit() {\r\n if (this.commit) this.commit(this.value, this);\r\n }\r\n splice(start, deleteCount, inserted, removeDirection, flags) {\r\n if (removeDirection === void 0) {\r\n removeDirection = DIRECTION.NONE;\r\n }\r\n if (flags === void 0) {\r\n flags = {\r\n input: true\r\n };\r\n }\r\n const tailPos = start + deleteCount;\r\n const tail = this.extractTail(tailPos);\r\n const eagerRemove = this.eager === true || this.eager === 'remove';\r\n let oldRawValue;\r\n if (eagerRemove) {\r\n removeDirection = forceDirection(removeDirection);\r\n oldRawValue = this.extractInput(0, tailPos, {\r\n raw: true\r\n });\r\n }\r\n let startChangePos = start;\r\n const details = new ChangeDetails();\r\n\r\n // if it is just deletion without insertion\r\n if (removeDirection !== DIRECTION.NONE) {\r\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\r\n\r\n // adjust tailShift if start was aligned\r\n details.tailShift = startChangePos - start;\r\n }\r\n details.aggregate(this.remove(startChangePos));\r\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\r\n if (removeDirection === DIRECTION.FORCE_LEFT) {\r\n let valLength;\r\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\r\n details.aggregate(new ChangeDetails({\r\n tailShift: -1\r\n })).aggregate(this.remove(valLength - 1));\r\n }\r\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\r\n tail.unshift();\r\n }\r\n }\r\n return details.aggregate(this.append(inserted, flags, tail));\r\n }\r\n maskEquals(mask) {\r\n return this.mask === mask;\r\n }\r\n typedValueEquals(value) {\r\n const tval = this.typedValue;\r\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\r\n }\r\n }\r\n Masked.DEFAULTS = {\r\n skipInvalid: true\r\n };\r\n Masked.EMPTY_VALUES = [undefined, null, ''];\r\n IMask.Masked = Masked;\r\n\r\n class ChunksTailDetails {\r\n /** */\r\n\r\n constructor(chunks, from) {\r\n if (chunks === void 0) {\r\n chunks = [];\r\n }\r\n if (from === void 0) {\r\n from = 0;\r\n }\r\n this.chunks = chunks;\r\n this.from = from;\r\n }\r\n toString() {\r\n return this.chunks.map(String).join('');\r\n }\r\n extend(tailChunk) {\r\n if (!String(tailChunk)) return;\r\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\r\n const lastChunk = this.chunks[this.chunks.length - 1];\r\n const extendLast = lastChunk && (\r\n // if stops are same or tail has no stop\r\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\r\n // if tail chunk goes just after last chunk\r\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\r\n if (tailChunk instanceof ContinuousTailDetails) {\r\n // check the ability to extend previous chunk\r\n if (extendLast) {\r\n // extend previous chunk\r\n lastChunk.extend(tailChunk.toString());\r\n } else {\r\n // append new chunk\r\n this.chunks.push(tailChunk);\r\n }\r\n } else if (tailChunk instanceof ChunksTailDetails) {\r\n if (tailChunk.stop == null) {\r\n // unwrap floating chunks to parent, keeping `from` pos\r\n let firstTailChunk;\r\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\r\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\r\n firstTailChunk.from += tailChunk.from;\r\n this.extend(firstTailChunk);\r\n }\r\n }\r\n\r\n // if tail chunk still has value\r\n if (tailChunk.toString()) {\r\n // if chunks contains stops, then popup stop to container\r\n tailChunk.stop = tailChunk.blockIndex;\r\n this.chunks.push(tailChunk);\r\n }\r\n }\r\n }\r\n appendTo(masked) {\r\n if (!(masked instanceof IMask.MaskedPattern)) {\r\n const tail = new ContinuousTailDetails(this.toString());\r\n return tail.appendTo(masked);\r\n }\r\n const details = new ChangeDetails();\r\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\r\n const chunk = this.chunks[ci];\r\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\r\n const stop = chunk.stop;\r\n let chunkBlock;\r\n if (stop != null && (\r\n // if block not found or stop is behind lastBlock\r\n !lastBlockIter || lastBlockIter.index <= stop)) {\r\n if (chunk instanceof ChunksTailDetails ||\r\n // for continuous block also check if stop is exist\r\n masked._stops.indexOf(stop) >= 0) {\r\n const phDetails = masked._appendPlaceholder(stop);\r\n details.aggregate(phDetails);\r\n }\r\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\r\n }\r\n if (chunkBlock) {\r\n const tailDetails = chunkBlock.appendTail(chunk);\r\n tailDetails.skip = false; // always ignore skip, it will be set on last\r\n details.aggregate(tailDetails);\r\n masked._value += tailDetails.inserted;\r\n\r\n // get not inserted chars\r\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\r\n if (remainChars) details.aggregate(masked.append(remainChars, {\r\n tail: true\r\n }));\r\n } else {\r\n details.aggregate(masked.append(chunk.toString(), {\r\n tail: true\r\n }));\r\n }\r\n }\r\n return details;\r\n }\r\n get state() {\r\n return {\r\n chunks: this.chunks.map(c => c.state),\r\n from: this.from,\r\n stop: this.stop,\r\n blockIndex: this.blockIndex\r\n };\r\n }\r\n set state(state) {\r\n const {\r\n chunks,\r\n ...props\r\n } = state;\r\n Object.assign(this, props);\r\n this.chunks = chunks.map(cstate => {\r\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\r\n chunk.state = cstate;\r\n return chunk;\r\n });\r\n }\r\n unshift(beforePos) {\r\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\r\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\r\n let ci = 0;\r\n while (ci < this.chunks.length) {\r\n const chunk = this.chunks[ci];\r\n const shiftChar = chunk.unshift(chunkShiftPos);\r\n if (chunk.toString()) {\r\n // chunk still contains value\r\n // but not shifted - means no more available chars to shift\r\n if (!shiftChar) break;\r\n ++ci;\r\n } else {\r\n // clean if chunk has no value\r\n this.chunks.splice(ci, 1);\r\n }\r\n if (shiftChar) return shiftChar;\r\n }\r\n return '';\r\n }\r\n shift() {\r\n if (!this.chunks.length) return '';\r\n let ci = this.chunks.length - 1;\r\n while (0 <= ci) {\r\n const chunk = this.chunks[ci];\r\n const shiftChar = chunk.shift();\r\n if (chunk.toString()) {\r\n // chunk still contains value\r\n // but not shifted - means no more available chars to shift\r\n if (!shiftChar) break;\r\n --ci;\r\n } else {\r\n // clean if chunk has no value\r\n this.chunks.splice(ci, 1);\r\n }\r\n if (shiftChar) return shiftChar;\r\n }\r\n return '';\r\n }\r\n }\r\n\r\n class PatternCursor {\r\n constructor(masked, pos) {\r\n this.masked = masked;\r\n this._log = [];\r\n const {\r\n offset,\r\n index\r\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\r\n // first\r\n {\r\n index: 0,\r\n offset: 0\r\n } :\r\n // last\r\n {\r\n index: this.masked._blocks.length,\r\n offset: 0\r\n });\r\n this.offset = offset;\r\n this.index = index;\r\n this.ok = false;\r\n }\r\n get block() {\r\n return this.masked._blocks[this.index];\r\n }\r\n get pos() {\r\n return this.masked._blockStartPos(this.index) + this.offset;\r\n }\r\n get state() {\r\n return {\r\n index: this.index,\r\n offset: this.offset,\r\n ok: this.ok\r\n };\r\n }\r\n set state(s) {\r\n Object.assign(this, s);\r\n }\r\n pushState() {\r\n this._log.push(this.state);\r\n }\r\n popState() {\r\n const s = this._log.pop();\r\n if (s) this.state = s;\r\n return s;\r\n }\r\n bindBlock() {\r\n if (this.block) return;\r\n if (this.index < 0) {\r\n this.index = 0;\r\n this.offset = 0;\r\n }\r\n if (this.index >= this.masked._blocks.length) {\r\n this.index = this.masked._blocks.length - 1;\r\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\r\n }\r\n }\r\n\r\n _pushLeft(fn) {\r\n this.pushState();\r\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\r\n var _this$block;\r\n if (fn()) return this.ok = true;\r\n }\r\n return this.ok = false;\r\n }\r\n _pushRight(fn) {\r\n this.pushState();\r\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\r\n if (fn()) return this.ok = true;\r\n }\r\n return this.ok = false;\r\n }\r\n pushLeftBeforeFilled() {\r\n return this._pushLeft(() => {\r\n if (this.block.isFixed || !this.block.value) return;\r\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\r\n if (this.offset !== 0) return true;\r\n });\r\n }\r\n pushLeftBeforeInput() {\r\n // cases:\r\n // filled input: 00|\r\n // optional empty input: 00[]|\r\n // nested block: XX<[]>|\r\n return this._pushLeft(() => {\r\n if (this.block.isFixed) return;\r\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\r\n return true;\r\n });\r\n }\r\n pushLeftBeforeRequired() {\r\n return this._pushLeft(() => {\r\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\r\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\r\n return true;\r\n });\r\n }\r\n pushRightBeforeFilled() {\r\n return this._pushRight(() => {\r\n if (this.block.isFixed || !this.block.value) return;\r\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\r\n if (this.offset !== this.block.value.length) return true;\r\n });\r\n }\r\n pushRightBeforeInput() {\r\n return this._pushRight(() => {\r\n if (this.block.isFixed) return;\r\n\r\n // const o = this.offset;\r\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\r\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\r\n // aa|X\r\n // aa<X|[]>X_ - this will not work\r\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\r\n return true;\r\n });\r\n }\r\n pushRightBeforeRequired() {\r\n return this._pushRight(() => {\r\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\r\n\r\n // TODO check |[*]XX_\r\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\r\n return true;\r\n });\r\n }\r\n }\r\n\r\n class PatternFixedDefinition {\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n constructor(opts) {\r\n Object.assign(this, opts);\r\n this._value = '';\r\n this.isFixed = true;\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n get unmaskedValue() {\r\n return this.isUnmasking ? this.value : '';\r\n }\r\n get rawInputValue() {\r\n return this._isRawInput ? this.value : '';\r\n }\r\n get displayValue() {\r\n return this.value;\r\n }\r\n reset() {\r\n this._isRawInput = false;\r\n this._value = '';\r\n }\r\n remove(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this._value.length;\r\n }\r\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\r\n if (!this._value) this._isRawInput = false;\r\n return new ChangeDetails();\r\n }\r\n nearestInputPos(cursorPos, direction) {\r\n if (direction === void 0) {\r\n direction = DIRECTION.NONE;\r\n }\r\n const minPos = 0;\r\n const maxPos = this._value.length;\r\n switch (direction) {\r\n case DIRECTION.LEFT:\r\n case DIRECTION.FORCE_LEFT:\r\n return minPos;\r\n case DIRECTION.NONE:\r\n case DIRECTION.RIGHT:\r\n case DIRECTION.FORCE_RIGHT:\r\n default:\r\n return maxPos;\r\n }\r\n }\r\n totalInputPositions(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this._value.length;\r\n }\r\n return this._isRawInput ? toPos - fromPos : 0;\r\n }\r\n extractInput(fromPos, toPos, flags) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this._value.length;\r\n }\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\r\n }\r\n get isComplete() {\r\n return true;\r\n }\r\n get isFilled() {\r\n return Boolean(this._value);\r\n }\r\n _appendChar(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n const details = new ChangeDetails();\r\n if (this.isFilled) return details;\r\n const appendEager = this.eager === true || this.eager === 'append';\r\n const appended = this.char === ch;\r\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\r\n if (isResolved) details.rawInserted = this.char;\r\n this._value = details.inserted = this.char;\r\n this._isRawInput = isResolved && (flags.raw || flags.input);\r\n return details;\r\n }\r\n _appendEager() {\r\n return this._appendChar(this.char, {\r\n tail: true\r\n });\r\n }\r\n _appendPlaceholder() {\r\n const details = new ChangeDetails();\r\n if (this.isFilled) return details;\r\n this._value = details.inserted = this.char;\r\n return details;\r\n }\r\n extractTail() {\r\n return new ContinuousTailDetails('');\r\n }\r\n appendTail(tail) {\r\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\r\n return tail.appendTo(this);\r\n }\r\n append(str, flags, tail) {\r\n const details = this._appendChar(str[0], flags);\r\n if (tail != null) {\r\n details.tailShift += this.appendTail(tail).tailShift;\r\n }\r\n return details;\r\n }\r\n doCommit() {}\r\n get state() {\r\n return {\r\n _value: this._value,\r\n _rawInputValue: this.rawInputValue\r\n };\r\n }\r\n set state(state) {\r\n this._value = state._value;\r\n this._isRawInput = Boolean(state._rawInputValue);\r\n }\r\n }\r\n\r\n class PatternInputDefinition {\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n constructor(opts) {\r\n const {\r\n parent,\r\n isOptional,\r\n placeholderChar,\r\n displayChar,\r\n lazy,\r\n eager,\r\n ...maskOpts\r\n } = opts;\r\n this.masked = createMask(maskOpts);\r\n Object.assign(this, {\r\n parent,\r\n isOptional,\r\n placeholderChar,\r\n displayChar,\r\n lazy,\r\n eager\r\n });\r\n }\r\n reset() {\r\n this.isFilled = false;\r\n this.masked.reset();\r\n }\r\n remove(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.value.length;\r\n }\r\n if (fromPos === 0 && toPos >= 1) {\r\n this.isFilled = false;\r\n return this.masked.remove(fromPos, toPos);\r\n }\r\n return new ChangeDetails();\r\n }\r\n get value() {\r\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\r\n }\r\n get unmaskedValue() {\r\n return this.masked.unmaskedValue;\r\n }\r\n get rawInputValue() {\r\n return this.masked.rawInputValue;\r\n }\r\n get displayValue() {\r\n return this.masked.value && this.displayChar || this.value;\r\n }\r\n get isComplete() {\r\n return Boolean(this.masked.value) || this.isOptional;\r\n }\r\n _appendChar(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n if (this.isFilled) return new ChangeDetails();\r\n const state = this.masked.state;\r\n // simulate input\r\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\r\n if (details.inserted && this.doValidate(flags) === false) {\r\n details.inserted = details.rawInserted = '';\r\n this.masked.state = state;\r\n }\r\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\r\n details.inserted = this.placeholderChar;\r\n }\r\n details.skip = !details.inserted && !this.isOptional;\r\n this.isFilled = Boolean(details.inserted);\r\n return details;\r\n }\r\n append(str, flags, tail) {\r\n // TODO probably should be done via _appendChar\r\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\r\n }\r\n _appendPlaceholder() {\r\n const details = new ChangeDetails();\r\n if (this.isFilled || this.isOptional) return details;\r\n this.isFilled = true;\r\n details.inserted = this.placeholderChar;\r\n return details;\r\n }\r\n _appendEager() {\r\n return new ChangeDetails();\r\n }\r\n extractTail(fromPos, toPos) {\r\n return this.masked.extractTail(fromPos, toPos);\r\n }\r\n appendTail(tail) {\r\n return this.masked.appendTail(tail);\r\n }\r\n extractInput(fromPos, toPos, flags) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.value.length;\r\n }\r\n return this.masked.extractInput(fromPos, toPos, flags);\r\n }\r\n nearestInputPos(cursorPos, direction) {\r\n if (direction === void 0) {\r\n direction = DIRECTION.NONE;\r\n }\r\n const minPos = 0;\r\n const maxPos = this.value.length;\r\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\r\n switch (direction) {\r\n case DIRECTION.LEFT:\r\n case DIRECTION.FORCE_LEFT:\r\n return this.isComplete ? boundPos : minPos;\r\n case DIRECTION.RIGHT:\r\n case DIRECTION.FORCE_RIGHT:\r\n return this.isComplete ? boundPos : maxPos;\r\n case DIRECTION.NONE:\r\n default:\r\n return boundPos;\r\n }\r\n }\r\n totalInputPositions(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.value.length;\r\n }\r\n return this.value.slice(fromPos, toPos).length;\r\n }\r\n doValidate(flags) {\r\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\r\n }\r\n doCommit() {\r\n this.masked.doCommit();\r\n }\r\n get state() {\r\n return {\r\n _value: this.value,\r\n _rawInputValue: this.rawInputValue,\r\n masked: this.masked.state,\r\n isFilled: this.isFilled\r\n };\r\n }\r\n set state(state) {\r\n this.masked.state = state.masked;\r\n this.isFilled = state.isFilled;\r\n }\r\n currentMaskFlags(flags) {\r\n var _flags$_beforeTailSta;\r\n return {\r\n ...flags,\r\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\r\n };\r\n }\r\n }\r\n PatternInputDefinition.DEFAULT_DEFINITIONS = {\r\n '0': /\\d/,\r\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\r\n // http://stackoverflow.com/a/22075070\r\n '*': /./\r\n };\r\n\r\n /** Masking by RegExp */\r\n class MaskedRegExp extends Masked {\r\n /** */\r\n\r\n /** Enable characters overwriting */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n const mask = opts.mask;\r\n if (mask) opts.validate = value => value.search(mask) >= 0;\r\n super._update(opts);\r\n }\r\n }\r\n IMask.MaskedRegExp = MaskedRegExp;\r\n\r\n /** Pattern mask */\r\n class MaskedPattern extends Masked {\r\n /** */\r\n\r\n /** */\r\n\r\n /** Single char for empty input */\r\n\r\n /** Single char for filled input */\r\n\r\n /** Show placeholder only when needed */\r\n\r\n /** Enable characters overwriting */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n constructor(opts) {\r\n super({\r\n ...MaskedPattern.DEFAULTS,\r\n ...opts,\r\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\r\n });\r\n }\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\r\n super._update(opts);\r\n this._rebuildMask();\r\n }\r\n _rebuildMask() {\r\n const defs = this.definitions;\r\n this._blocks = [];\r\n this.exposeBlock = undefined;\r\n this._stops = [];\r\n this._maskedBlocks = {};\r\n const pattern = this.mask;\r\n if (!pattern || !defs) return;\r\n let unmaskingBlock = false;\r\n let optionalBlock = false;\r\n for (let i = 0; i < pattern.length; ++i) {\r\n if (this.blocks) {\r\n const p = pattern.slice(i);\r\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\r\n // order by key length\r\n bNames.sort((a, b) => b.length - a.length);\r\n // use block name with max length\r\n const bName = bNames[0];\r\n if (bName) {\r\n const {\r\n expose,\r\n ...blockOpts\r\n } = normalizeOpts(this.blocks[bName]);\r\n const maskedBlock = createMask({\r\n lazy: this.lazy,\r\n eager: this.eager,\r\n placeholderChar: this.placeholderChar,\r\n displayChar: this.displayChar,\r\n overwrite: this.overwrite,\r\n ...blockOpts,\r\n parent: this\r\n });\r\n if (maskedBlock) {\r\n this._blocks.push(maskedBlock);\r\n if (expose) this.exposeBlock = maskedBlock;\r\n\r\n // store block index\r\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\r\n this._maskedBlocks[bName].push(this._blocks.length - 1);\r\n }\r\n i += bName.length - 1;\r\n continue;\r\n }\r\n }\r\n let char = pattern[i];\r\n let isInput = (char in defs);\r\n if (char === MaskedPattern.STOP_CHAR) {\r\n this._stops.push(this._blocks.length);\r\n continue;\r\n }\r\n if (char === '{' || char === '}') {\r\n unmaskingBlock = !unmaskingBlock;\r\n continue;\r\n }\r\n if (char === '[' || char === ']') {\r\n optionalBlock = !optionalBlock;\r\n continue;\r\n }\r\n if (char === MaskedPattern.ESCAPE_CHAR) {\r\n ++i;\r\n char = pattern[i];\r\n if (!char) break;\r\n isInput = false;\r\n }\r\n const def = isInput ? new PatternInputDefinition({\r\n isOptional: optionalBlock,\r\n lazy: this.lazy,\r\n eager: this.eager,\r\n placeholderChar: this.placeholderChar,\r\n displayChar: this.displayChar,\r\n ...normalizeOpts(defs[char]),\r\n parent: this\r\n }) : new PatternFixedDefinition({\r\n char,\r\n eager: this.eager,\r\n isUnmasking: unmaskingBlock\r\n });\r\n this._blocks.push(def);\r\n }\r\n }\r\n get state() {\r\n return {\r\n ...super.state,\r\n _blocks: this._blocks.map(b => b.state)\r\n };\r\n }\r\n set state(state) {\r\n const {\r\n _blocks,\r\n ...maskedState\r\n } = state;\r\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\r\n super.state = maskedState;\r\n }\r\n reset() {\r\n super.reset();\r\n this._blocks.forEach(b => b.reset());\r\n }\r\n get isComplete() {\r\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\r\n }\r\n get isFilled() {\r\n return this._blocks.every(b => b.isFilled);\r\n }\r\n get isFixed() {\r\n return this._blocks.every(b => b.isFixed);\r\n }\r\n get isOptional() {\r\n return this._blocks.every(b => b.isOptional);\r\n }\r\n doCommit() {\r\n this._blocks.forEach(b => b.doCommit());\r\n super.doCommit();\r\n }\r\n get unmaskedValue() {\r\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\r\n }\r\n set unmaskedValue(unmaskedValue) {\r\n if (this.exposeBlock) {\r\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\r\n this.exposeBlock.unmaskedValue = unmaskedValue;\r\n this.appendTail(tail);\r\n this.doCommit();\r\n } else super.unmaskedValue = unmaskedValue;\r\n }\r\n get value() {\r\n return this.exposeBlock ? this.exposeBlock.value :\r\n // TODO return _value when not in change?\r\n this._blocks.reduce((str, b) => str += b.value, '');\r\n }\r\n set value(value) {\r\n if (this.exposeBlock) {\r\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\r\n this.exposeBlock.value = value;\r\n this.appendTail(tail);\r\n this.doCommit();\r\n } else super.value = value;\r\n }\r\n get typedValue() {\r\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\r\n }\r\n set typedValue(value) {\r\n if (this.exposeBlock) {\r\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\r\n this.exposeBlock.typedValue = value;\r\n this.appendTail(tail);\r\n this.doCommit();\r\n } else super.typedValue = value;\r\n }\r\n get displayValue() {\r\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\r\n }\r\n appendTail(tail) {\r\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\r\n }\r\n _appendEager() {\r\n var _this$_mapPosToBlock;\r\n const details = new ChangeDetails();\r\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\r\n if (startBlockIndex == null) return details;\r\n\r\n // TODO test if it works for nested pattern masks\r\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\r\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\r\n const d = this._blocks[bi]._appendEager();\r\n if (!d.inserted) break;\r\n details.aggregate(d);\r\n }\r\n return details;\r\n }\r\n _appendCharRaw(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n const blockIter = this._mapPosToBlock(this.displayValue.length);\r\n const details = new ChangeDetails();\r\n if (!blockIter) return details;\r\n for (let bi = blockIter.index;; ++bi) {\r\n var _flags$_beforeTailSta;\r\n const block = this._blocks[bi];\r\n if (!block) break;\r\n const blockDetails = block._appendChar(ch, {\r\n ...flags,\r\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\r\n });\r\n const skip = blockDetails.skip;\r\n details.aggregate(blockDetails);\r\n if (skip || blockDetails.rawInserted) break; // go next char\r\n }\r\n\r\n return details;\r\n }\r\n extractTail(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n const chunkTail = new ChunksTailDetails();\r\n if (fromPos === toPos) return chunkTail;\r\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\r\n const blockChunk = b.extractTail(bFromPos, bToPos);\r\n blockChunk.stop = this._findStopBefore(bi);\r\n blockChunk.from = this._blockStartPos(bi);\r\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\r\n chunkTail.extend(blockChunk);\r\n });\r\n return chunkTail;\r\n }\r\n extractInput(fromPos, toPos, flags) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n if (fromPos === toPos) return '';\r\n let input = '';\r\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\r\n input += b.extractInput(fromPos, toPos, flags);\r\n });\r\n return input;\r\n }\r\n _findStopBefore(blockIndex) {\r\n let stopBefore;\r\n for (let si = 0; si < this._stops.length; ++si) {\r\n const stop = this._stops[si];\r\n if (stop <= blockIndex) stopBefore = stop;else break;\r\n }\r\n return stopBefore;\r\n }\r\n\r\n /** Appends placeholder depending on laziness */\r\n _appendPlaceholder(toBlockIndex) {\r\n const details = new ChangeDetails();\r\n if (this.lazy && toBlockIndex == null) return details;\r\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\r\n if (!startBlockIter) return details;\r\n const startBlockIndex = startBlockIter.index;\r\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\r\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\r\n if (!b.lazy || toBlockIndex != null) {\r\n var _blocks2;\r\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\r\n this._value += bDetails.inserted;\r\n details.aggregate(bDetails);\r\n }\r\n });\r\n return details;\r\n }\r\n\r\n /** Finds block in pos */\r\n _mapPosToBlock(pos) {\r\n let accVal = '';\r\n for (let bi = 0; bi < this._blocks.length; ++bi) {\r\n const block = this._blocks[bi];\r\n const blockStartPos = accVal.length;\r\n accVal += block.displayValue;\r\n if (pos <= accVal.length) {\r\n return {\r\n index: bi,\r\n offset: pos - blockStartPos\r\n };\r\n }\r\n }\r\n }\r\n _blockStartPos(blockIndex) {\r\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\r\n }\r\n _forEachBlocksInRange(fromPos, toPos, fn) {\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n const fromBlockIter = this._mapPosToBlock(fromPos);\r\n if (fromBlockIter) {\r\n const toBlockIter = this._mapPosToBlock(toPos);\r\n // process first block\r\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\r\n const fromBlockStartPos = fromBlockIter.offset;\r\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\r\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\r\n if (toBlockIter && !isSameBlock) {\r\n // process intermediate blocks\r\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\r\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\r\n }\r\n\r\n // process last block\r\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\r\n }\r\n }\r\n }\r\n remove(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n const removeDetails = super.remove(fromPos, toPos);\r\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\r\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\r\n });\r\n return removeDetails;\r\n }\r\n nearestInputPos(cursorPos, direction) {\r\n if (direction === void 0) {\r\n direction = DIRECTION.NONE;\r\n }\r\n if (!this._blocks.length) return 0;\r\n const cursor = new PatternCursor(this, cursorPos);\r\n if (direction === DIRECTION.NONE) {\r\n // -------------------------------------------------\r\n // NONE should only go out from fixed to the right!\r\n // -------------------------------------------------\r\n if (cursor.pushRightBeforeInput()) return cursor.pos;\r\n cursor.popState();\r\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\r\n return this.displayValue.length;\r\n }\r\n\r\n // FORCE is only about a|* otherwise is 0\r\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\r\n // try to break fast when *|a\r\n if (direction === DIRECTION.LEFT) {\r\n cursor.pushRightBeforeFilled();\r\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\r\n cursor.popState();\r\n }\r\n\r\n // forward flow\r\n cursor.pushLeftBeforeInput();\r\n cursor.pushLeftBeforeRequired();\r\n cursor.pushLeftBeforeFilled();\r\n\r\n // backward flow\r\n if (direction === DIRECTION.LEFT) {\r\n cursor.pushRightBeforeInput();\r\n cursor.pushRightBeforeRequired();\r\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\r\n cursor.popState();\r\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\r\n cursor.popState();\r\n }\r\n if (cursor.ok) return cursor.pos;\r\n if (direction === DIRECTION.FORCE_LEFT) return 0;\r\n cursor.popState();\r\n if (cursor.ok) return cursor.pos;\r\n cursor.popState();\r\n if (cursor.ok) return cursor.pos;\r\n return 0;\r\n }\r\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\r\n // forward flow\r\n cursor.pushRightBeforeInput();\r\n cursor.pushRightBeforeRequired();\r\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\r\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\r\n\r\n // backward flow\r\n cursor.popState();\r\n if (cursor.ok) return cursor.pos;\r\n cursor.popState();\r\n if (cursor.ok) return cursor.pos;\r\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\r\n }\r\n return cursorPos;\r\n }\r\n totalInputPositions(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n let total = 0;\r\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\r\n total += b.totalInputPositions(bFromPos, bToPos);\r\n });\r\n return total;\r\n }\r\n\r\n /** Get block by name */\r\n maskedBlock(name) {\r\n return this.maskedBlocks(name)[0];\r\n }\r\n\r\n /** Get all blocks by name */\r\n maskedBlocks(name) {\r\n const indices = this._maskedBlocks[name];\r\n if (!indices) return [];\r\n return indices.map(gi => this._blocks[gi]);\r\n }\r\n }\r\n MaskedPattern.DEFAULTS = {\r\n lazy: true,\r\n placeholderChar: '_'\r\n };\r\n MaskedPattern.STOP_CHAR = '`';\r\n MaskedPattern.ESCAPE_CHAR = '\\\\';\r\n MaskedPattern.InputDefinition = PatternInputDefinition;\r\n MaskedPattern.FixedDefinition = PatternFixedDefinition;\r\n IMask.MaskedPattern = MaskedPattern;\r\n\r\n /** Pattern which accepts ranges */\r\n class MaskedRange extends MaskedPattern {\r\n /**\r\n Optionally sets max length of pattern.\r\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\r\n */\r\n\r\n /** Min bound */\r\n\r\n /** Max bound */\r\n\r\n /** */\r\n\r\n get _matchFrom() {\r\n return this.maxLength - String(this.from).length;\r\n }\r\n constructor(opts) {\r\n super(opts); // mask will be created in _update\r\n }\r\n\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n const {\r\n to = this.to || 0,\r\n from = this.from || 0,\r\n maxLength = this.maxLength || 0,\r\n autofix = this.autofix,\r\n ...patternOpts\r\n } = opts;\r\n this.to = to;\r\n this.from = from;\r\n this.maxLength = Math.max(String(to).length, maxLength);\r\n this.autofix = autofix;\r\n const fromStr = String(this.from).padStart(this.maxLength, '0');\r\n const toStr = String(this.to).padStart(this.maxLength, '0');\r\n let sameCharsCount = 0;\r\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\r\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\r\n super._update(patternOpts);\r\n }\r\n get isComplete() {\r\n return super.isComplete && Boolean(this.value);\r\n }\r\n boundaries(str) {\r\n let minstr = '';\r\n let maxstr = '';\r\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\r\n if (num) {\r\n minstr = '0'.repeat(placeholder.length) + num;\r\n maxstr = '9'.repeat(placeholder.length) + num;\r\n }\r\n minstr = minstr.padEnd(this.maxLength, '0');\r\n maxstr = maxstr.padEnd(this.maxLength, '9');\r\n return [minstr, maxstr];\r\n }\r\n doPrepareChar(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n let details;\r\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\r\n if (!this.autofix || !ch) return [ch, details];\r\n const fromStr = String(this.from).padStart(this.maxLength, '0');\r\n const toStr = String(this.to).padStart(this.maxLength, '0');\r\n const nextVal = this.value + ch;\r\n if (nextVal.length > this.maxLength) return ['', details];\r\n const [minstr, maxstr] = this.boundaries(nextVal);\r\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\r\n if (Number(minstr) > this.to) {\r\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\r\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\r\n }\r\n return [toStr[nextVal.length - 1], details];\r\n }\r\n return [ch, details];\r\n }\r\n doValidate(flags) {\r\n const str = this.value;\r\n const firstNonZero = str.search(/[^0]/);\r\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\r\n const [minstr, maxstr] = this.boundaries(str);\r\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\r\n }\r\n }\r\n IMask.MaskedRange = MaskedRange;\r\n\r\n /** Date mask */\r\n class MaskedDate extends MaskedPattern {\r\n /** Pattern mask for date according to {@link MaskedDate#format} */\r\n\r\n /** Start date */\r\n\r\n /** End date */\r\n\r\n /** */\r\n\r\n /** Format typed value to string */\r\n\r\n /** Parse string to get typed value */\r\n\r\n constructor(opts) {\r\n const {\r\n mask,\r\n pattern,\r\n ...patternOpts\r\n } = {\r\n ...MaskedDate.DEFAULTS,\r\n ...opts\r\n };\r\n super({\r\n ...patternOpts,\r\n mask: isString(mask) ? mask : pattern\r\n });\r\n }\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n const {\r\n mask,\r\n pattern,\r\n blocks,\r\n ...patternOpts\r\n } = {\r\n ...MaskedDate.DEFAULTS,\r\n ...opts\r\n };\r\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\r\n // adjust year block\r\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\r\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\r\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\r\n patternBlocks.m.from = opts.min.getMonth() + 1;\r\n patternBlocks.m.to = opts.max.getMonth() + 1;\r\n if (patternBlocks.m.from === patternBlocks.m.to) {\r\n patternBlocks.d.from = opts.min.getDate();\r\n patternBlocks.d.to = opts.max.getDate();\r\n }\r\n }\r\n Object.assign(patternBlocks, this.blocks, blocks);\r\n\r\n // add autofix\r\n Object.keys(patternBlocks).forEach(bk => {\r\n const b = patternBlocks[bk];\r\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\r\n });\r\n super._update({\r\n ...patternOpts,\r\n mask: isString(mask) ? mask : pattern,\r\n blocks: patternBlocks\r\n });\r\n }\r\n doValidate(flags) {\r\n const date = this.date;\r\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\r\n }\r\n\r\n /** Checks if date is exists */\r\n isDateExist(str) {\r\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\r\n }\r\n\r\n /** Parsed Date */\r\n get date() {\r\n return this.typedValue;\r\n }\r\n set date(date) {\r\n this.typedValue = date;\r\n }\r\n get typedValue() {\r\n return this.isComplete ? super.typedValue : null;\r\n }\r\n set typedValue(value) {\r\n super.typedValue = value;\r\n }\r\n maskEquals(mask) {\r\n return mask === Date || super.maskEquals(mask);\r\n }\r\n }\r\n MaskedDate.GET_DEFAULT_BLOCKS = () => ({\r\n d: {\r\n mask: MaskedRange,\r\n from: 1,\r\n to: 31,\r\n maxLength: 2\r\n },\r\n m: {\r\n mask: MaskedRange,\r\n from: 1,\r\n to: 12,\r\n maxLength: 2\r\n },\r\n Y: {\r\n mask: MaskedRange,\r\n from: 1900,\r\n to: 9999\r\n }\r\n });\r\n MaskedDate.DEFAULTS = {\r\n mask: Date,\r\n pattern: 'd{.}`m{.}`Y',\r\n format: (date, masked) => {\r\n if (!date) return '';\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n return [day, month, year].join('.');\r\n },\r\n parse: (str, masked) => {\r\n const [day, month, year] = str.split('.').map(Number);\r\n return new Date(year, month - 1, day);\r\n }\r\n };\r\n IMask.MaskedDate = MaskedDate;\r\n\r\n /** Dynamic mask for choosing appropriate mask in run-time */\r\n class MaskedDynamic extends Masked {\r\n /** Currently chosen mask */\r\n\r\n /** Currently chosen mask */\r\n\r\n /** Compliled {@link Masked} options */\r\n\r\n /** Chooses {@link Masked} depending on input value */\r\n\r\n constructor(opts) {\r\n super({\r\n ...MaskedDynamic.DEFAULTS,\r\n ...opts\r\n });\r\n this.currentMask = undefined;\r\n }\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n super._update(opts);\r\n if ('mask' in opts) {\r\n this.exposeMask = undefined;\r\n // mask could be totally dynamic with only `dispatch` option\r\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\r\n const {\r\n expose,\r\n ...maskOpts\r\n } = normalizeOpts(m);\r\n const masked = createMask({\r\n overwrite: this._overwrite,\r\n eager: this._eager,\r\n skipInvalid: this._skipInvalid,\r\n ...maskOpts\r\n });\r\n if (expose) this.exposeMask = masked;\r\n return masked;\r\n }) : [];\r\n\r\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\r\n }\r\n }\r\n\r\n _appendCharRaw(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n const details = this._applyDispatch(ch, flags);\r\n if (this.currentMask) {\r\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\r\n }\r\n return details;\r\n }\r\n _applyDispatch(appended, flags, tail) {\r\n if (appended === void 0) {\r\n appended = '';\r\n }\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n if (tail === void 0) {\r\n tail = '';\r\n }\r\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\r\n const inputValue = this.rawInputValue;\r\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\r\n const tailValue = inputValue.slice(insertValue.length);\r\n const prevMask = this.currentMask;\r\n const details = new ChangeDetails();\r\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\r\n\r\n // clone flags to prevent overwriting `_beforeTailState`\r\n this.currentMask = this.doDispatch(appended, {\r\n ...flags\r\n }, tail);\r\n\r\n // restore state after dispatch\r\n if (this.currentMask) {\r\n if (this.currentMask !== prevMask) {\r\n // if mask changed reapply input\r\n this.currentMask.reset();\r\n if (insertValue) {\r\n const d = this.currentMask.append(insertValue, {\r\n raw: true\r\n });\r\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\r\n }\r\n if (tailValue) {\r\n details.tailShift += this.currentMask.append(tailValue, {\r\n raw: true,\r\n tail: true\r\n }).tailShift;\r\n }\r\n } else if (prevMaskState) {\r\n // Dispatch can do something bad with state, so\r\n // restore prev mask state\r\n this.currentMask.state = prevMaskState;\r\n }\r\n }\r\n return details;\r\n }\r\n _appendPlaceholder() {\r\n const details = this._applyDispatch();\r\n if (this.currentMask) {\r\n details.aggregate(this.currentMask._appendPlaceholder());\r\n }\r\n return details;\r\n }\r\n _appendEager() {\r\n const details = this._applyDispatch();\r\n if (this.currentMask) {\r\n details.aggregate(this.currentMask._appendEager());\r\n }\r\n return details;\r\n }\r\n appendTail(tail) {\r\n const details = new ChangeDetails();\r\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\r\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\r\n }\r\n currentMaskFlags(flags) {\r\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\r\n return {\r\n ...flags,\r\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\r\n };\r\n }\r\n doDispatch(appended, flags, tail) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n if (tail === void 0) {\r\n tail = '';\r\n }\r\n return this.dispatch(appended, this, flags, tail);\r\n }\r\n doValidate(flags) {\r\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\r\n }\r\n doPrepare(str, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n let [s, details] = super.doPrepare(str, flags);\r\n if (this.currentMask) {\r\n let currentDetails;\r\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\r\n details = details.aggregate(currentDetails);\r\n }\r\n return [s, details];\r\n }\r\n doPrepareChar(str, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n let [s, details] = super.doPrepareChar(str, flags);\r\n if (this.currentMask) {\r\n let currentDetails;\r\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\r\n details = details.aggregate(currentDetails);\r\n }\r\n return [s, details];\r\n }\r\n reset() {\r\n var _this$currentMask;\r\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\r\n this.compiledMasks.forEach(m => m.reset());\r\n }\r\n get value() {\r\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\r\n }\r\n set value(value) {\r\n if (this.exposeMask) {\r\n this.exposeMask.value = value;\r\n this.currentMask = this.exposeMask;\r\n this._applyDispatch();\r\n } else super.value = value;\r\n }\r\n get unmaskedValue() {\r\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\r\n }\r\n set unmaskedValue(unmaskedValue) {\r\n if (this.exposeMask) {\r\n this.exposeMask.unmaskedValue = unmaskedValue;\r\n this.currentMask = this.exposeMask;\r\n this._applyDispatch();\r\n } else super.unmaskedValue = unmaskedValue;\r\n }\r\n get typedValue() {\r\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\r\n }\r\n set typedValue(typedValue) {\r\n if (this.exposeMask) {\r\n this.exposeMask.typedValue = typedValue;\r\n this.currentMask = this.exposeMask;\r\n this._applyDispatch();\r\n return;\r\n }\r\n let unmaskedValue = String(typedValue);\r\n\r\n // double check it\r\n if (this.currentMask) {\r\n this.currentMask.typedValue = typedValue;\r\n unmaskedValue = this.currentMask.unmaskedValue;\r\n }\r\n this.unmaskedValue = unmaskedValue;\r\n }\r\n get displayValue() {\r\n return this.currentMask ? this.currentMask.displayValue : '';\r\n }\r\n get isComplete() {\r\n var _this$currentMask2;\r\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\r\n }\r\n get isFilled() {\r\n var _this$currentMask3;\r\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\r\n }\r\n remove(fromPos, toPos) {\r\n const details = new ChangeDetails();\r\n if (this.currentMask) {\r\n details.aggregate(this.currentMask.remove(fromPos, toPos))\r\n // update with dispatch\r\n .aggregate(this._applyDispatch());\r\n }\r\n return details;\r\n }\r\n get state() {\r\n var _this$currentMask4;\r\n return {\r\n ...super.state,\r\n _rawInputValue: this.rawInputValue,\r\n compiledMasks: this.compiledMasks.map(m => m.state),\r\n currentMaskRef: this.currentMask,\r\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\r\n };\r\n }\r\n set state(state) {\r\n const {\r\n compiledMasks,\r\n currentMaskRef,\r\n currentMask,\r\n ...maskedState\r\n } = state;\r\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\r\n if (currentMaskRef != null) {\r\n this.currentMask = currentMaskRef;\r\n this.currentMask.state = currentMask;\r\n }\r\n super.state = maskedState;\r\n }\r\n extractInput(fromPos, toPos, flags) {\r\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\r\n }\r\n extractTail(fromPos, toPos) {\r\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\r\n }\r\n doCommit() {\r\n if (this.currentMask) this.currentMask.doCommit();\r\n super.doCommit();\r\n }\r\n nearestInputPos(cursorPos, direction) {\r\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\r\n }\r\n get overwrite() {\r\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\r\n }\r\n set overwrite(overwrite) {\r\n this._overwrite = overwrite;\r\n }\r\n get eager() {\r\n return this.currentMask ? this.currentMask.eager : this._eager;\r\n }\r\n set eager(eager) {\r\n this._eager = eager;\r\n }\r\n get skipInvalid() {\r\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\r\n }\r\n set skipInvalid(skipInvalid) {\r\n this._skipInvalid = skipInvalid;\r\n }\r\n maskEquals(mask) {\r\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\r\n if (!mask[mi]) return;\r\n const {\r\n mask: oldMask,\r\n ...restOpts\r\n } = mask[mi];\r\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\r\n }) : super.maskEquals(mask);\r\n }\r\n typedValueEquals(value) {\r\n var _this$currentMask5;\r\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\r\n }\r\n }\r\n MaskedDynamic.DEFAULTS = void 0;\r\n MaskedDynamic.DEFAULTS = {\r\n dispatch: (appended, masked, flags, tail) => {\r\n if (!masked.compiledMasks.length) return;\r\n const inputValue = masked.rawInputValue;\r\n\r\n // simulate input\r\n const inputs = masked.compiledMasks.map((m, index) => {\r\n const isCurrent = masked.currentMask === m;\r\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\r\n if (m.rawInputValue !== inputValue) {\r\n m.reset();\r\n m.append(inputValue, {\r\n raw: true\r\n });\r\n } else if (!isCurrent) {\r\n m.remove(startInputPos);\r\n }\r\n m.append(appended, masked.currentMaskFlags(flags));\r\n m.appendTail(tail);\r\n return {\r\n index,\r\n weight: m.rawInputValue.length,\r\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\r\n };\r\n });\r\n\r\n // pop masks with longer values first\r\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\r\n return masked.compiledMasks[inputs[0].index];\r\n }\r\n };\r\n IMask.MaskedDynamic = MaskedDynamic;\r\n\r\n /** Pattern which validates enum values */\r\n class MaskedEnum extends MaskedPattern {\r\n constructor(opts) {\r\n super(opts); // mask will be created in _update\r\n }\r\n\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n const {\r\n enum: _enum,\r\n ...eopts\r\n } = opts;\r\n if (_enum) {\r\n const lengths = _enum.map(e => e.length);\r\n const requiredLength = Math.min(...lengths);\r\n const optionalLength = Math.max(...lengths) - requiredLength;\r\n eopts.mask = '*'.repeat(requiredLength);\r\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\r\n this.enum = _enum;\r\n }\r\n super._update(eopts);\r\n }\r\n doValidate(flags) {\r\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\r\n }\r\n }\r\n IMask.MaskedEnum = MaskedEnum;\r\n\r\n /** Masking by custom Function */\r\n class MaskedFunction extends Masked {\r\n /** */\r\n\r\n /** Enable characters overwriting */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n super._update({\r\n ...opts,\r\n validate: opts.mask\r\n });\r\n }\r\n }\r\n IMask.MaskedFunction = MaskedFunction;\r\n\r\n /** Number mask */\r\n class MaskedNumber extends Masked {\r\n /** Single char */\r\n\r\n /** Single char */\r\n\r\n /** Array of single chars */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** Digits after point */\r\n\r\n /** Flag to remove leading and trailing zeros in the end of editing */\r\n\r\n /** Flag to pad trailing zeros after point in the end of editing */\r\n\r\n /** Enable characters overwriting */\r\n\r\n /** */\r\n\r\n /** */\r\n\r\n /** Format typed value to string */\r\n\r\n /** Parse string to get typed value */\r\n\r\n constructor(opts) {\r\n super({\r\n ...MaskedNumber.DEFAULTS,\r\n ...opts\r\n });\r\n }\r\n updateOptions(opts) {\r\n super.updateOptions(opts);\r\n }\r\n _update(opts) {\r\n super._update(opts);\r\n this._updateRegExps();\r\n }\r\n _updateRegExps() {\r\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\r\n const mid = '\\\\d*';\r\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\r\n this._numberRegExp = new RegExp(start + mid + end);\r\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\r\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\r\n }\r\n _removeThousandsSeparators(value) {\r\n return value.replace(this._thousandsSeparatorRegExp, '');\r\n }\r\n _insertThousandsSeparators(value) {\r\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\r\n const parts = value.split(this.radix);\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\r\n return parts.join(this.radix);\r\n }\r\n doPrepareChar(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\r\n /*\r\n radix should be mapped when\r\n 1) input is done from keyboard = flags.input && flags.raw\r\n 2) unmasked value is set = !flags.input && !flags.raw\r\n and should not be mapped when\r\n 1) value is set = flags.input && !flags.raw\r\n 2) raw value is set = !flags.input && flags.raw\r\n */\r\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\r\n if (ch && !prepCh) details.skip = true;\r\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\r\n return [prepCh, details];\r\n }\r\n _separatorsCount(to, extendOnSeparators) {\r\n if (extendOnSeparators === void 0) {\r\n extendOnSeparators = false;\r\n }\r\n let count = 0;\r\n for (let pos = 0; pos < to; ++pos) {\r\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\r\n ++count;\r\n if (extendOnSeparators) to += this.thousandsSeparator.length;\r\n }\r\n }\r\n return count;\r\n }\r\n _separatorsCountFromSlice(slice) {\r\n if (slice === void 0) {\r\n slice = this._value;\r\n }\r\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\r\n }\r\n extractInput(fromPos, toPos, flags) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\r\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\r\n }\r\n _appendCharRaw(ch, flags) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\r\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\r\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\r\n this._value = this._removeThousandsSeparators(this.value);\r\n const appendDetails = super._appendCharRaw(ch, flags);\r\n this._value = this._insertThousandsSeparators(this._value);\r\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\r\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\r\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\r\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\r\n return appendDetails;\r\n }\r\n _findSeparatorAround(pos) {\r\n if (this.thousandsSeparator) {\r\n const searchFrom = pos - this.thousandsSeparator.length + 1;\r\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\r\n if (separatorPos <= pos) return separatorPos;\r\n }\r\n return -1;\r\n }\r\n _adjustRangeWithSeparators(from, to) {\r\n const separatorAroundFromPos = this._findSeparatorAround(from);\r\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\r\n const separatorAroundToPos = this._findSeparatorAround(to);\r\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\r\n return [from, to];\r\n }\r\n remove(fromPos, toPos) {\r\n if (fromPos === void 0) {\r\n fromPos = 0;\r\n }\r\n if (toPos === void 0) {\r\n toPos = this.displayValue.length;\r\n }\r\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\r\n const valueBeforePos = this.value.slice(0, fromPos);\r\n const valueAfterPos = this.value.slice(toPos);\r\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\r\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\r\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\r\n return new ChangeDetails({\r\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\r\n });\r\n }\r\n nearestInputPos(cursorPos, direction) {\r\n if (!this.thousandsSeparator) return cursorPos;\r\n switch (direction) {\r\n case DIRECTION.NONE:\r\n case DIRECTION.LEFT:\r\n case DIRECTION.FORCE_LEFT:\r\n {\r\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\r\n if (separatorAtLeftPos >= 0) {\r\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\r\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\r\n return separatorAtLeftPos;\r\n }\r\n }\r\n break;\r\n }\r\n case DIRECTION.RIGHT:\r\n case DIRECTION.FORCE_RIGHT:\r\n {\r\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\r\n if (separatorAtRightPos >= 0) {\r\n return separatorAtRightPos + this.thousandsSeparator.length;\r\n }\r\n }\r\n }\r\n return cursorPos;\r\n }\r\n doValidate(flags) {\r\n // validate as string\r\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\r\n if (valid) {\r\n // validate as number\r\n const number = this.number;\r\n valid = valid && !isNaN(number) && (\r\n // check min bound for negative values\r\n this.min == null || this.min >= 0 || this.min <= this.number) && (\r\n // check max bound for positive values\r\n this.max == null || this.max <= 0 || this.number <= this.max);\r\n }\r\n return valid && super.doValidate(flags);\r\n }\r\n doCommit() {\r\n if (this.value) {\r\n const number = this.number;\r\n let validnum = number;\r\n\r\n // check bounds\r\n if (this.min != null) validnum = Math.max(validnum, this.min);\r\n if (this.max != null) validnum = Math.min(validnum, this.max);\r\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\r\n let formatted = this.value;\r\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\r\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\r\n this._value = formatted;\r\n }\r\n super.doCommit();\r\n }\r\n _normalizeZeros(value) {\r\n const parts = this._removeThousandsSeparators(value).split(this.radix);\r\n\r\n // remove leading zeros\r\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\r\n // add leading zero\r\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\r\n if (parts.length > 1) {\r\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\r\n if (!parts[1].length) parts.length = 1; // remove fractional\r\n }\r\n\r\n return this._insertThousandsSeparators(parts.join(this.radix));\r\n }\r\n _padFractionalZeros(value) {\r\n if (!value) return value;\r\n const parts = value.split(this.radix);\r\n if (parts.length < 2) parts.push('');\r\n parts[1] = parts[1].padEnd(this.scale, '0');\r\n return parts.join(this.radix);\r\n }\r\n doSkipInvalid(ch, flags, checkTail) {\r\n if (flags === void 0) {\r\n flags = {};\r\n }\r\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\r\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\r\n }\r\n get unmaskedValue() {\r\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\r\n }\r\n set unmaskedValue(unmaskedValue) {\r\n super.unmaskedValue = unmaskedValue;\r\n }\r\n get typedValue() {\r\n return this.parse(this.unmaskedValue, this);\r\n }\r\n set typedValue(n) {\r\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\r\n }\r\n\r\n /** Parsed Number */\r\n get number() {\r\n return this.typedValue;\r\n }\r\n set number(number) {\r\n this.typedValue = number;\r\n }\r\n\r\n /**\r\n Is negative allowed\r\n */\r\n get allowNegative() {\r\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\r\n }\r\n\r\n /**\r\n Is positive allowed\r\n */\r\n get allowPositive() {\r\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\r\n }\r\n typedValueEquals(value) {\r\n // handle 0 -> '' case (typed = 0 even if value = '')\r\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\r\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\r\n }\r\n }\r\n MaskedNumber.UNMASKED_RADIX = '.';\r\n MaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\r\n MaskedNumber.DEFAULTS = {\r\n mask: Number,\r\n radix: ',',\r\n thousandsSeparator: '',\r\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\r\n min: Number.MIN_SAFE_INTEGER,\r\n max: Number.MAX_SAFE_INTEGER,\r\n scale: 2,\r\n normalizeZeros: true,\r\n padFractionalZeros: false,\r\n parse: Number,\r\n format: n => n.toLocaleString('en-US', {\r\n useGrouping: false,\r\n maximumFractionDigits: 20\r\n })\r\n };\r\n IMask.MaskedNumber = MaskedNumber;\r\n\r\n /** Mask pipe source and destination types */\r\n const PIPE_TYPE = {\r\n MASKED: 'value',\r\n UNMASKED: 'unmaskedValue',\r\n TYPED: 'typedValue'\r\n };\r\n /** Creates new pipe function depending on mask type, source and destination options */\r\n function createPipe(arg, from, to) {\r\n if (from === void 0) {\r\n from = PIPE_TYPE.MASKED;\r\n }\r\n if (to === void 0) {\r\n to = PIPE_TYPE.MASKED;\r\n }\r\n const masked = createMask(arg);\r\n return value => masked.runIsolated(m => {\r\n m[from] = value;\r\n return m[to];\r\n });\r\n }\r\n\r\n /** Pipes value through mask depending on mask type, source and destination options */\r\n function pipe(value, mask, from, to) {\r\n return createPipe(mask, from, to)(value);\r\n }\r\n IMask.PIPE_TYPE = PIPE_TYPE;\r\n IMask.createPipe = createPipe;\r\n IMask.pipe = pipe;\r\n\r\n try {\r\n globalThis.IMask = IMask;\r\n } catch {}\r\n\r\n exports.ChangeDetails = ChangeDetails;\r\n exports.ChunksTailDetails = ChunksTailDetails;\r\n exports.DIRECTION = DIRECTION;\r\n exports.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\r\n exports.HTMLInputMaskElement = HTMLInputMaskElement;\r\n exports.HTMLMaskElement = HTMLMaskElement;\r\n exports.InputMask = InputMask;\r\n exports.MaskElement = MaskElement;\r\n exports.Masked = Masked;\r\n exports.MaskedDate = MaskedDate;\r\n exports.MaskedDynamic = MaskedDynamic;\r\n exports.MaskedEnum = MaskedEnum;\r\n exports.MaskedFunction = MaskedFunction;\r\n exports.MaskedNumber = MaskedNumber;\r\n exports.MaskedPattern = MaskedPattern;\r\n exports.MaskedRange = MaskedRange;\r\n exports.MaskedRegExp = MaskedRegExp;\r\n exports.PIPE_TYPE = PIPE_TYPE;\r\n exports.PatternFixedDefinition = PatternFixedDefinition;\r\n exports.PatternInputDefinition = PatternInputDefinition;\r\n exports.createMask = createMask;\r\n exports.createPipe = createPipe;\r\n exports.default = IMask;\r\n exports.forceDirection = forceDirection;\r\n exports.normalizeOpts = normalizeOpts;\r\n exports.pipe = pipe;\r\n\r\n Object.defineProperty(exports, '__esModule', { value: true });\r\n\r\n}));\r\n//# sourceMappingURL=imask.js.map\r\n\r\n/**\r\n * NOTE: Export for usage\r\n */\r\nexport default IMask;"],"names":["global","factory","this","exports","isString","str","isObject","obj","_obj$constructor","pick","keys","_","k","acc","_ref","v","DIRECTION","forceDirection","direction","escapeRegExp","objectIncludes","b","a","arrA","arrB","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","el","maskedClass","mask","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","start","end","HTMLMaskElement","input","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","event","handler","HTMLInputMaskElement","value","HTMLContenteditableMaskElement","root","selection","anchorOffset","focusOffset","range","InputMask","_this$masked","masked","val","ev","listeners","l","pos","newUnmaskedValue","newValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","cursorPos","hIndex","e","details","oldRawValue","offset","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","state","beforePos","shiftChar","Masked","flags","fromPos","toPos","ch","checkTail","consistentState","consistentTail","appended","beforeTailState","tailDetails","ci","d","fn","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","chunk","lastBlockIter","chunkBlock","phDetails","remainChars","c","props","cstate","chunkShiftPos","PatternCursor","index","s","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","i","p","bNames","bName","expose","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","block","blockDetails","skip","chunkTail","bFromPos","bToPos","blockChunk","blockIndex","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","MaskedRange","to","maxLength","autofix","patternOpts","fromStr","toStr","sameCharsCount","minstr","maxstr","placeholder","num","nextVal","MaskedDate","blocks","patternBlocks","bk","date","day","month","year","MaskedDynamic","m","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","_flags$_beforeTailSta2","currentDetails","_this$currentMask","typedValue","_this$currentMask2","_this$currentMask3","_this$currentMask4","compiledMasks","currentMaskRef","currentMask","mi","overwrite","skipInvalid","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","i1","i2","MaskedEnum","_enum","eopts","lengths","requiredLength","optionalLength","MaskedFunction","MaskedNumber","mid","parts","prepCh","extendOnSeparators","count","slice","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","number","validnum","formatted","match","sign","zeros","dropFractional","n","PIPE_TYPE","createPipe","arg","pipe","IMask$1"],"mappings":"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"}
1
+ {"version":3,"file":"design-system102.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,2 @@
1
- "use strict";const ne=require("./design-system110.js"),re=require("./design-system148.js");(function(he,fe){(function(U,j){he.exports=j()})(ne.commonjsGlobal,function(){return function(){var U={d:function(r,e){for(var t in e)U.o(e,t)&&!U.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},o:function(r,e){return Object.prototype.hasOwnProperty.call(r,e)}},j={};U.d(j,{default:function(){return T}});var l={days:"days",months:"months",years:"years",day:"day",month:"month",year:"year",eventChangeViewDate:"changeViewDate",eventChangeCurrentView:"changeCurrentView",eventChangeFocusDate:"changeFocusDate",eventChangeSelectedDate:"changeSelectedDate",eventChangeTime:"changeTime",eventChangeLastSelectedDate:"changeLastSelectedDate",actionSelectDate:"selectDate",actionUnselectDate:"unselectDate",cssClassWeekend:"-weekend-"},Q={classes:"",inline:!1,locale:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вос","Пон","Вто","Сре","Чет","Пят","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",dateFormat:"dd.MM.yyyy",timeFormat:"HH:mm",firstDay:1},startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"T",toggleSelected:!0,keyboardNav:!0,selectedDates:!1,container:"",isMobile:!1,visible:!1,position:"bottom left",offset:12,view:l.days,minView:l.days,showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:"",maxDate:"",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:", ",range:!1,dynamicRange:!0,buttons:!1,monthsField:"monthsShort",showEvent:"focus",autoClose:!1,prevHtml:'<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>',nextHtml:'<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>',navTitles:{days:"MMMM, <i>yyyy</i>",months:"yyyy",years:"yyyy1 - yyyy2"},timepicker:!1,onlyTimepicker:!1,dateTimeSeparator:" ",timeFormat:"",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:!1,onChangeViewDate:!1,onChangeView:!1,onRenderCell:!1,onShow:!1,onHide:!1,onClickDayName:!1};function y(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document;return typeof r=="string"?e.querySelector(r):r}function b(){let{tagName:r="div",className:e="",innerHtml:t="",id:s="",attrs:a={}}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=document.createElement(r);return e&&n.classList.add(...e.split(" ")),s&&(n.id=s),t&&(n.innerHTML=t),a&&z(n,a),n}function z(r,e){for(let[t,s]of Object.entries(e))s!==void 0&&r.setAttribute(t,s);return r}function Z(r){return new Date(r.getFullYear(),r.getMonth()+1,0).getDate()}function D(r){let e=r.getHours(),t=e%12==0?12:e%12;return{year:r.getFullYear(),month:r.getMonth(),fullMonth:r.getMonth()+1<10?"0"+(r.getMonth()+1):r.getMonth()+1,date:r.getDate(),fullDate:r.getDate()<10?"0"+r.getDate():r.getDate(),day:r.getDay(),hours:e,fullHours:O(e),hours12:t,fullHours12:O(t),minutes:r.getMinutes(),fullMinutes:r.getMinutes()<10?"0"+r.getMinutes():r.getMinutes()}}function O(r){return r<10?"0"+r:r}function F(r){let e=10*Math.floor(r.getFullYear()/10);return[e,e+9]}function M(){let r=[];for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];return t.forEach(a=>{if(typeof a=="object")for(let n in a)a[n]&&r.push(n);else a&&r.push(a)}),r.join(" ")}function v(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:l.days;if(!r||!e)return!1;let s=D(r),a=D(e);return{[l.days]:s.date===a.date&&s.month===a.month&&s.year===a.year,[l.months]:s.month===a.month&&s.year===a.year,[l.years]:s.year===a.year}[t]}function $(r,e,t){let s=J(r,!1).getTime(),a=J(e,!1).getTime();return t?s>=a:s>a}function E(r,e){return!$(r,e,!0)}function J(r){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],t=new Date(r.getTime());return typeof e!="boolean"||e||oe(t),t}function oe(r){return r.setHours(0,0,0,0),r}function w(r,e,t){r.length?r.forEach(s=>{s.addEventListener(e,t)}):r.addEventListener(e,t)}function R(r,e){return!(!r||r===document||r instanceof DocumentFragment)&&(r.matches(e)?r:R(r.parentNode,e))}function A(r,e,t){return r>t?t:r<e?e:r}function Y(r){for(var e=arguments.length,t=new Array(e>1?e-1:0),s=1;s<e;s++)t[s-1]=arguments[s];return t.filter(a=>a).forEach(a=>{for(let[n,i]of Object.entries(a))if(i!==void 0&&i.toString()==="[object Object]"){let h=r[n]!==void 0?r[n].toString():void 0,o=i.toString(),d=Array.isArray(i)?[]:{};r[n]=r[n]?h!==o?d:r[n]:d,Y(r[n],i)}else r[n]=i}),r}function C(r){let e=r;return r instanceof Date||(e=new Date(r)),isNaN(e.getTime())&&(console.log('Unable to convert value "'.concat(r,'" to Date object')),e=!1),e}function G(r){let e="\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";return new RegExp("(^|>|"+e+")("+r+")($|<|"+e+")","g")}function V(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}class le{constructor(){let{type:e,date:t,dp:s,opts:a,body:n}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};V(this,"focus",()=>{this.$cell.classList.add("-focus-"),this.focused=!0}),V(this,"removeFocus",()=>{this.$cell.classList.remove("-focus-"),this.focused=!1}),V(this,"select",()=>{this.$cell.classList.add("-selected-"),this.selected=!0}),V(this,"removeSelect",()=>{this.$cell.classList.remove("-selected-","-range-from-","-range-to-"),this.selected=!1}),V(this,"onChangeSelectedDate",()=>{this.isDisabled||(this._handleSelectedStatus(),this.opts.range&&this._handleRangeStatus())}),V(this,"onChangeFocusDate",i=>{if(!i)return void(this.focused&&this.removeFocus());let h=v(i,this.date,this.type);h?this.focus():!h&&this.focused&&this.removeFocus(),this.opts.range&&this._handleRangeStatus()}),V(this,"render",()=>(this.$cell.innerHTML=this._getHtml(),this.$cell.adpCell=this,this.$cell)),this.type=e,this.singleType=this.type.slice(0,-1),this.date=t,this.dp=s,this.opts=a,this.body=n,this.customData=!1,this.init()}init(){let{range:e,onRenderCell:t}=this.opts;t&&(this.customData=t({date:this.date,cellType:this.singleType,datepicker:this.dp})),this._createElement(),this._bindDatepickerEvents(),this._handleInitialFocusStatus(),this.dp.hasSelectedDates&&(this._handleSelectedStatus(),e&&this._handleRangeStatus())}_bindDatepickerEvents(){this.dp.on(l.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.on(l.eventChangeFocusDate,this.onChangeFocusDate)}unbindDatepickerEvents(){this.dp.off(l.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.off(l.eventChangeFocusDate,this.onChangeFocusDate)}_createElement(){var e;let{year:t,month:s,date:a}=D(this.date),n=((e=this.customData)===null||e===void 0?void 0:e.attrs)||{};this.$cell=b({className:this._getClassName(),attrs:{"data-year":t,"data-month":s,"data-date":a,...n}})}_getClassName(){var e,t;let s=new Date,{selectOtherMonths:a,selectOtherYears:n}=this.opts,{minDate:i,maxDate:h}=this.dp,{day:o}=D(this.date),d=this._isOutOfMinMaxRange(),c=(e=this.customData)===null||e===void 0?void 0:e.disabled,u=M("air-datepicker-cell","-".concat(this.singleType,"-"),{"-current-":v(s,this.date,this.type),"-min-date-":i&&v(i,this.date,this.type),"-max-date-":h&&v(h,this.date,this.type)}),p="";switch(this.type){case l.days:p=M({"-weekend-":this.dp.isWeekend(o),"-other-month-":this.isOtherMonth,"-disabled-":this.isOtherMonth&&!a||d||c});break;case l.months:p=M({"-disabled-":d||c});break;case l.years:p=M({"-other-decade-":this.isOtherDecade,"-disabled-":d||this.isOtherDecade&&!n||c})}return M(u,p,(t=this.customData)===null||t===void 0?void 0:t.classes)}_getHtml(){var e;let{year:t,month:s,date:a}=D(this.date),{showOtherMonths:n,showOtherYears:i}=this.opts;if((e=this.customData)!==null&&e!==void 0&&e.html)return this.customData.html;switch(this.type){case l.days:return!n&&this.isOtherMonth?"":a;case l.months:return this.dp.locale[this.opts.monthsField][s];case l.years:return!i&&this.isOtherDecade?"":t}}_isOutOfMinMaxRange(){let{minDate:e,maxDate:t}=this.dp,{type:s,date:a}=this,{month:n,year:i,date:h}=D(a),o=s===l.days,d=s===l.years,c=!!e&&new Date(i,d?e.getMonth():n,o?h:e.getDate()),u=!!t&&new Date(i,d?t.getMonth():n,o?h:t.getDate());return e&&t?E(c,e)||$(u,t):e?E(c,e):t?$(u,t):void 0}destroy(){this.unbindDatepickerEvents()}_handleRangeStatus(){let{rangeDateFrom:e,rangeDateTo:t}=this.dp,s=M({"-in-range-":e&&t&&(a=this.date,n=e,i=t,$(a,n)&&E(a,i)),"-range-from-":e&&v(this.date,e,this.type),"-range-to-":t&&v(this.date,t,this.type)});var a,n,i;this.$cell.classList.remove("-range-from-","-range-to-","-in-range-"),s&&this.$cell.classList.add(...s.split(" "))}_handleSelectedStatus(){let e=this.dp._checkIfDateIsSelected(this.date,this.type);e?this.select():!e&&this.selected&&this.removeSelect()}_handleInitialFocusStatus(){v(this.dp.focusDate,this.date,this.type)&&this.focus()}get isDisabled(){return this.$cell.matches(".-disabled-")}get isOtherMonth(){return this.dp.isOtherMonth(this.date)}get isOtherDecade(){return this.dp.isOtherDecade(this.date)}}function k(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}let de={[l.days]:'<div class="air-datepicker-body--day-names"></div>'+'<div class="air-datepicker-body--cells -'.concat(l.days,'-"></div>'),[l.months]:'<div class="air-datepicker-body--cells -'.concat(l.months,'-"></div>'),[l.years]:'<div class="air-datepicker-body--cells -'.concat(l.years,'-"></div>')};const P=".air-datepicker-cell";class ee{constructor(e){let{dp:t,type:s,opts:a}=e;k(this,"handleClick",n=>{let i=n.target.closest(P).adpCell;if(i.isDisabled)return;if(!this.dp.isMinViewReached)return void this.dp.down();let h=this.dp._checkIfDateIsSelected(i.date,i.type);h?this.dp._handleAlreadySelectedDates(h,i.date):this.dp.selectDate(i.date)}),k(this,"handleDayNameClick",n=>{let i=n.target.getAttribute("data-day-index");this.opts.onClickDayName({dayIndex:Number(i),datepicker:this.dp})}),k(this,"onChangeCurrentView",n=>{n!==this.type?this.hide():(this.show(),this.render())}),k(this,"onMouseOverCell",n=>{let i=R(n.target,P);this.dp.setFocusDate(!!i&&i.adpCell.date)}),k(this,"onMouseOutCell",()=>{this.dp.setFocusDate(!1)}),k(this,"onClickBody",n=>{let{onClickDayName:i}=this.opts,h=n.target;h.closest(P)&&this.handleClick(n),i&&h.closest(".air-datepicker-body--day-name")&&this.handleDayNameClick(n)}),k(this,"onMouseDown",n=>{this.pressed=!0;let i=R(n.target,P),h=i&&i.adpCell;v(h.date,this.dp.rangeDateFrom)&&(this.rangeFromFocused=!0),v(h.date,this.dp.rangeDateTo)&&(this.rangeToFocused=!0)}),k(this,"onMouseMove",n=>{if(!this.pressed||!this.dp.isMinViewReached)return;n.preventDefault();let i=R(n.target,P),h=i&&i.adpCell,{selectedDates:o,rangeDateTo:d,rangeDateFrom:c}=this.dp;if(!h||h.isDisabled)return;let{date:u}=h;if(o.length===2){if(this.rangeFromFocused&&!$(u,d)){let{hours:p,minutes:g}=D(c);u.setHours(p),u.setMinutes(g),this.dp.rangeDateFrom=u,this.dp.replaceDate(c,u)}if(this.rangeToFocused&&!E(u,c)){let{hours:p,minutes:g}=D(d);u.setHours(p),u.setMinutes(g),this.dp.rangeDateTo=u,this.dp.replaceDate(d,u)}}}),k(this,"onMouseUp",()=>{this.pressed=!1,this.rangeFromFocused=!1,this.rangeToFocused=!1}),k(this,"onChangeViewDate",(n,i)=>{if(!this.isVisible)return;let h=F(n),o=F(i);switch(this.dp.currentView){case l.days:if(v(n,i,l.months))return;break;case l.months:if(v(n,i,l.years))return;break;case l.years:if(h[0]===o[0]&&h[1]===o[1])return}this.render()}),k(this,"render",()=>{this.destroyCells(),this._generateCells(),this.cells.forEach(n=>{this.$cells.appendChild(n.render())})}),this.dp=t,this.type=s,this.opts=a,this.cells=[],this.$el="",this.pressed=!1,this.isVisible=!0,this.init()}init(){this._buildBaseHtml(),this.type===l.days&&this.renderDayNames(),this.render(),this._bindEvents(),this._bindDatepickerEvents()}_bindEvents(){let{range:e,dynamicRange:t}=this.opts;w(this.$el,"mouseover",this.onMouseOverCell),w(this.$el,"mouseout",this.onMouseOutCell),w(this.$el,"click",this.onClickBody),e&&t&&(w(this.$el,"mousedown",this.onMouseDown),w(this.$el,"mousemove",this.onMouseMove),w(window.document,"mouseup",this.onMouseUp))}_bindDatepickerEvents(){this.dp.on(l.eventChangeViewDate,this.onChangeViewDate),this.dp.on(l.eventChangeCurrentView,this.onChangeCurrentView)}_buildBaseHtml(){this.$el=b({className:"air-datepicker-body -".concat(this.type,"-"),innerHtml:de[this.type]}),this.$names=y(".air-datepicker-body--day-names",this.$el),this.$cells=y(".air-datepicker-body--cells",this.$el)}_getDayNamesHtml(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.dp.locale.firstDay,t="",s=this.dp.isWeekend,{onClickDayName:a}=this.opts,n=e,i=0;for(;i<7;){let h=n%7,o=M("air-datepicker-body--day-name",{[l.cssClassWeekend]:s(h),"-clickable-":!!a}),d=this.dp.locale.daysMin[h];t+='<div class="'.concat(o,`" data-day-index='`).concat(h,"'>").concat(d,"</div>"),i++,n++}return t}_getDaysCells(){let{viewDate:e,locale:{firstDay:t}}=this.dp,s=Z(e),{year:a,month:n}=D(e),i=new Date(a,n,1),h=new Date(a,n,s),o=i.getDay()-t,d=6-h.getDay()+t;o=o<0?o+7:o,d=d>6?d-7:d;let c=function(N,B){let{year:K,month:I,date:q}=D(N);return new Date(K,I,q-B)}(i,o),u=s+o+d,p=c.getDate(),{year:g,month:f}=D(c),_=0;for(;_<u;){let N=new Date(g,f,p+_);this._generateCell(N),_++}}_generateCell(e){let{type:t,dp:s,opts:a}=this,n=new le({type:t,dp:s,opts:a,date:e,body:this});return this.cells.push(n),n}_generateDayCells(){this._getDaysCells()}_generateMonthCells(){let{year:e}=this.dp.parsedViewDate,t=0;for(;t<12;)this.cells.push(this._generateCell(new Date(e,t))),t++}_generateYearCells(){let e=F(this.dp.viewDate),t=e[0]-1,s=e[1]+1,a=t;for(;a<=s;)this.cells.push(this._generateCell(new Date(a,0))),a++}renderDayNames(){this.$names.innerHTML=this._getDayNamesHtml()}_generateCells(){switch(this.type){case l.days:this._generateDayCells();break;case l.months:this._generateMonthCells();break;case l.years:this._generateYearCells()}}show(){this.isVisible=!0,this.$el.classList.remove("-hidden-")}hide(){this.isVisible=!1,this.$el.classList.add("-hidden-")}destroyCells(){this.cells.forEach(e=>e.destroy()),this.cells=[],this.$cells.innerHTML=""}destroy(){this.destroyCells(),this.dp.off(l.eventChangeViewDate,this.onChangeViewDate),this.dp.off(l.eventChangeCurrentView,this.onChangeCurrentView)}}function x(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}class ce{constructor(e){let{dp:t,opts:s}=e;x(this,"onClickNav",a=>{let n=R(a.target,".air-datepicker-nav--action");if(!n)return;let i=n.dataset.action;this.dp[i]()}),x(this,"onChangeViewDate",()=>{this.render(),this._resetNavStatus(),this.handleNavStatus()}),x(this,"onChangeCurrentView",()=>{this.render(),this._resetNavStatus(),this.handleNavStatus()}),x(this,"onClickNavTitle",()=>{this.dp.isFinalView||this.dp.up()}),x(this,"update",()=>{let{prevHtml:a,nextHtml:n}=this.opts;this.$prev.innerHTML=a,this.$next.innerHTML=n,this._resetNavStatus(),this.render(),this.handleNavStatus()}),x(this,"renderDelay",()=>{setTimeout(this.render)}),x(this,"render",()=>{this.$title.innerHTML=this._getTitle(),function(a,n){for(let i in n)n[i]?a.classList.add(i):a.classList.remove(i)}(this.$title,{"-disabled-":this.dp.isFinalView})}),this.dp=t,this.opts=s,this.init()}init(){this._createElement(),this._buildBaseHtml(),this._defineDOM(),this.render(),this.handleNavStatus(),this._bindEvents(),this._bindDatepickerEvents()}_defineDOM(){this.$title=y(".air-datepicker-nav--title",this.$el),this.$prev=y('[data-action="prev"]',this.$el),this.$next=y('[data-action="next"]',this.$el)}_bindEvents(){this.$el.addEventListener("click",this.onClickNav),this.$title.addEventListener("click",this.onClickNavTitle)}_bindDatepickerEvents(){this.dp.on(l.eventChangeViewDate,this.onChangeViewDate),this.dp.on(l.eventChangeCurrentView,this.onChangeCurrentView),this.isNavIsFunction&&(this.dp.on(l.eventChangeSelectedDate,this.renderDelay),this.dp.opts.timepicker&&this.dp.on(l.eventChangeTime,this.render))}destroy(){this.dp.off(l.eventChangeViewDate,this.onChangeViewDate),this.dp.off(l.eventChangeCurrentView,this.onChangeCurrentView),this.isNavIsFunction&&(this.dp.off(l.eventChangeSelectedDate,this.renderDelay),this.dp.opts.timepicker&&this.dp.off(l.eventChangeTime,this.render))}_createElement(){this.$el=b({tagName:"nav",className:"air-datepicker-nav"})}_getTitle(){let{dp:e,opts:t}=this,s=t.navTitles[e.currentView];return typeof s=="function"?s(e):e.formatDate(e.viewDate,s)}handleNavStatus(){let{disableNavWhenOutOfRange:e}=this.opts,{minDate:t,maxDate:s}=this.dp;if(!t&&!s||!e)return;let{year:a,month:n}=this.dp.parsedViewDate,i=!!t&&D(t),h=!!s&&D(s);switch(this.dp.currentView){case l.days:t&&i.month>=n&&i.year>=a&&this._disableNav("prev"),s&&h.month<=n&&h.year<=a&&this._disableNav("next");break;case l.months:t&&i.year>=a&&this._disableNav("prev"),s&&h.year<=a&&this._disableNav("next");break;case l.years:{let o=F(this.dp.viewDate);t&&i.year>=o[0]&&this._disableNav("prev"),s&&h.year<=o[1]&&this._disableNav("next");break}}}_disableNav(e){y('[data-action="'+e+'"]',this.$el).classList.add("-disabled-")}_resetNavStatus(){(function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),a=1;a<t;a++)s[a-1]=arguments[a];e.length?e.forEach(n=>{n.classList.remove(...s)}):e.classList.remove(...s)})(this.$el.querySelectorAll(".air-datepicker-nav--action"),"-disabled-")}_buildBaseHtml(){let{prevHtml:e,nextHtml:t}=this.opts;this.$el.innerHTML='<div class="air-datepicker-nav--action" data-action="prev">'.concat(e,"</div>")+'<div class="air-datepicker-nav--title"></div>'+'<div class="air-datepicker-nav--action" data-action="next">'.concat(t,"</div>")}get isNavIsFunction(){let{navTitles:e}=this.opts;return Object.keys(e).find(t=>typeof e[t]=="function")}}var te={today:{content:r=>r.locale.today,onClick:r=>r.setViewDate(new Date)},clear:{content:r=>r.locale.clear,onClick:r=>r.clear()}};class ue{constructor(e){let{dp:t,opts:s}=e;this.dp=t,this.opts=s,this.init()}init(){this.createElement(),this.render()}createElement(){this.$el=b({className:"air-datepicker-buttons"})}destroy(){this.$el.parentNode.removeChild(this.$el)}clearHtml(){return this.$el.innerHTML="",this}generateButtons(){let{buttons:e}=this.opts;Array.isArray(e)||(e=[e]),e.forEach(t=>{let s=t;typeof t=="string"&&te[t]&&(s=te[t]);let a=this.createButton(s);s.onClick&&this.attachEventToButton(a,s.onClick),this.$el.appendChild(a)})}attachEventToButton(e,t){e.addEventListener("click",()=>{t(this.dp)})}createButton(e){let{content:t,className:s,tagName:a="button",attrs:n={}}=e,i=typeof t=="function"?t(this.dp):t;return b({tagName:a,innerHtml:"<span tabindex='-1'>".concat(i,"</span>"),className:M("air-datepicker-button",s),attrs:n})}render(){this.generateButtons()}}function H(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}class pe{constructor(){let{opts:e,dp:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};H(this,"toggleTimepickerIsActive",a=>{this.dp.timepickerIsActive=a}),H(this,"onChangeSelectedDate",a=>{let{date:n,updateTime:i=!1}=a;n&&(this.setMinMaxTime(n),this.setCurrentTime(!!i&&n),this.addTimeToDate(n))}),H(this,"onChangeLastSelectedDate",a=>{a&&(this.setTime(a),this.render())}),H(this,"onChangeInputRange",a=>{let n=a.target;this[n.getAttribute("name")]=n.value,this.updateText(),this.dp.trigger(l.eventChangeTime,{hours:this.hours,minutes:this.minutes})}),H(this,"onMouseEnterLeave",a=>{let n=a.target.getAttribute("name"),i=this.$minutesText;n==="hours"&&(i=this.$hoursText),i.classList.toggle("-focus-")}),H(this,"onFocus",()=>{this.toggleTimepickerIsActive(!0)}),H(this,"onBlur",()=>{this.toggleTimepickerIsActive(!1)}),this.opts=e,this.dp=t;let{timeFormat:s}=this.dp.locale;s&&(s.match(G("h"))||s.match(G("hh")))&&(this.ampm=!0),this.init()}init(){this.setTime(this.dp.lastSelectedDate||this.dp.viewDate),this.createElement(),this.buildHtml(),this.defineDOM(),this.render(),this.bindDatepickerEvents(),this.bindDOMEvents()}bindDatepickerEvents(){this.dp.on(l.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.on(l.eventChangeLastSelectedDate,this.onChangeLastSelectedDate)}bindDOMEvents(){let e="input";navigator.userAgent.match(/trident/gi)&&(e="change"),w(this.$ranges,e,this.onChangeInputRange),w(this.$ranges,"mouseenter",this.onMouseEnterLeave),w(this.$ranges,"mouseleave",this.onMouseEnterLeave),w(this.$ranges,"focus",this.onFocus),w(this.$ranges,"mousedown",this.onFocus),w(this.$ranges,"blur",this.onBlur)}createElement(){this.$el=b({className:M("air-datepicker-time",{"-am-pm-":this.dp.ampm})})}destroy(){this.dp.off(l.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.off(l.eventChangeLastSelectedDate,this.onChangeLastSelectedDate),this.$el.parentNode.removeChild(this.$el)}buildHtml(){let{ampm:e,hours:t,displayHours:s,minutes:a,minHours:n,minMinutes:i,maxHours:h,maxMinutes:o,dayPeriod:d,opts:{hoursStep:c,minutesStep:u}}=this;this.$el.innerHTML='<div class="air-datepicker-time--current">'+' <span class="air-datepicker-time--current-hours">'.concat(O(s),"</span>")+' <span class="air-datepicker-time--current-colon">:</span>'+' <span class="air-datepicker-time--current-minutes">'.concat(O(a),"</span>")+" ".concat(e?"<span class='air-datepicker-time--current-ampm'>".concat(d,"</span>"):"")+'</div><div class="air-datepicker-time--sliders"> <div class="air-datepicker-time--row">'+' <input type="range" name="hours" value="'.concat(t,'" min="').concat(n,'" max="').concat(h,'" step="').concat(c,'"/>')+' </div> <div class="air-datepicker-time--row">'+' <input type="range" name="minutes" value="'.concat(a,'" min="').concat(i,'" max="').concat(o,'" step="').concat(u,'"/>')+" </div></div>"}defineDOM(){let e=t=>y(t,this.$el);this.$ranges=this.$el.querySelectorAll('[type="range"]'),this.$hours=e('[name="hours"]'),this.$minutes=e('[name="minutes"]'),this.$hoursText=e(".air-datepicker-time--current-hours"),this.$minutesText=e(".air-datepicker-time--current-minutes"),this.$ampm=e(".air-datepicker-time--current-ampm")}setTime(e){this.setMinMaxTime(e),this.setCurrentTime(e)}addTimeToDate(e){e&&(e.setHours(this.hours),e.setMinutes(this.minutes))}setMinMaxTime(e){if(this.setMinMaxTimeFromOptions(),e){let{minDate:t,maxDate:s}=this.dp;t&&v(e,t)&&this.setMinTimeFromMinDate(t),s&&v(e,s)&&this.setMaxTimeFromMaxDate(s)}}setCurrentTime(e){let{hours:t,minutes:s}=e?D(e):this;this.hours=A(t,this.minHours,this.maxHours),this.minutes=A(s,this.minMinutes,this.maxMinutes)}setMinMaxTimeFromOptions(){let{minHours:e,minMinutes:t,maxHours:s,maxMinutes:a}=this.opts;this.minHours=A(e,0,23),this.minMinutes=A(t,0,59),this.maxHours=A(s,0,23),this.maxMinutes=A(a,0,59)}setMinTimeFromMinDate(e){let{lastSelectedDate:t}=this.dp;this.minHours=e.getHours(),t&&t.getHours()>e.getHours()?this.minMinutes=this.opts.minMinutes:this.minMinutes=e.getMinutes()}setMaxTimeFromMaxDate(e){let{lastSelectedDate:t}=this.dp;this.maxHours=e.getHours(),t&&t.getHours()<e.getHours()?this.maxMinutes=this.opts.maxMinutes:this.maxMinutes=e.getMinutes()}getDayPeriod(e,t){let s=e,a=Number(e);e instanceof Date&&(s=D(e),a=Number(s.hours));let n="am";if(t||this.ampm){switch(!0){case a===12:case a>11:n="pm"}a=a%12==0?12:a%12}return{hours:a,dayPeriod:n}}updateSliders(){z(this.$hours,{min:this.minHours,max:this.maxHours}).value=this.hours,z(this.$minutes,{min:this.minMinutes,max:this.maxMinutes}).value=this.minutes}updateText(){this.$hoursText.innerHTML=O(this.displayHours),this.$minutesText.innerHTML=O(this.minutes),this.ampm&&(this.$ampm.innerHTML=this.dayPeriod)}set hours(e){this._hours=e;let{hours:t,dayPeriod:s}=this.getDayPeriod(e);this.displayHours=t,this.dayPeriod=s}get hours(){return this._hours}render(){this.updateSliders(),this.updateText()}}function L(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}class me{constructor(e){let{dp:t,opts:s}=e;L(this,"pressedKeys",new Set),L(this,"hotKeys",new Map([[[["Control","ArrowRight"],["Control","ArrowUp"]],a=>a.month++],[[["Control","ArrowLeft"],["Control","ArrowDown"]],a=>a.month--],[[["Shift","ArrowRight"],["Shift","ArrowUp"]],a=>a.year++],[[["Shift","ArrowLeft"],["Shift","ArrowDown"]],a=>a.year--],[[["Alt","ArrowRight"],["Alt","ArrowUp"]],a=>a.year+=10],[[["Alt","ArrowLeft"],["Alt","ArrowDown"]],a=>a.year-=10],[["Control","Shift","ArrowUp"],(a,n)=>n.up()]])),L(this,"handleHotKey",a=>{let n=this.hotKeys.get(a),i=D(this.getInitialFocusDate());n(i,this.dp);let{year:h,month:o,date:d}=i,c=Z(new Date(h,o));c<d&&(d=c);let u=this.dp.getClampedDate(new Date(h,o,d));this.dp.setFocusDate(u,{viewDateTransition:!0})}),L(this,"isHotKeyPressed",()=>{let a=!1,n=this.pressedKeys.size,i=h=>this.pressedKeys.has(h);for(let[h]of this.hotKeys){if(a)break;if(Array.isArray(h[0]))h.forEach(o=>{a||n!==o.length||(a=o.every(i)&&h)});else{if(n!==h.length)continue;a=h.every(i)&&h}}return a}),L(this,"isArrow",a=>a>=37&&a<=40),L(this,"onKeyDown",a=>{let{key:n,which:i}=a,{dp:h,dp:{focusDate:o},opts:d}=this;this.registerKey(n);let c=this.isHotKeyPressed();if(c)return a.preventDefault(),void this.handleHotKey(c);if(this.isArrow(i))return a.preventDefault(),void this.focusNextCell(n);if(n==="Enter"){if(h.currentView!==d.minView)return void h.down();if(o){let u=h._checkIfDateIsSelected(o);return void(u?h._handleAlreadySelectedDates(u,o):h.selectDate(o))}}n==="Escape"&&this.dp.hide()}),L(this,"onKeyUp",a=>{this.removeKey(a.key)}),this.dp=t,this.opts=s,this.init()}init(){this.bindKeyboardEvents()}bindKeyboardEvents(){let{$el:e}=this.dp;e.addEventListener("keydown",this.onKeyDown),e.addEventListener("keyup",this.onKeyUp)}destroy(){let{$el:e}=this.dp;e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("keyup",this.onKeyUp),this.hotKeys=null,this.pressedKeys=null}getInitialFocusDate(){let{focusDate:e,currentView:t,selectedDates:s,parsedViewDate:{year:a,month:n}}=this.dp,i=e||s[s.length-1];if(!i)switch(t){case l.days:i=new Date(a,n,new Date().getDate());break;case l.months:i=new Date(a,n,1);break;case l.years:i=new Date(a,0,1)}return i}focusNextCell(e){let t=this.getInitialFocusDate(),{currentView:s}=this.dp,{days:a,months:n,years:i}=l,h=D(t),o=h.year,d=h.month,c=h.date;switch(e){case"ArrowLeft":s===a&&(c-=1),s===n&&(d-=1),s===i&&(o-=1);break;case"ArrowUp":s===a&&(c-=7),s===n&&(d-=3),s===i&&(o-=4);break;case"ArrowRight":s===a&&(c+=1),s===n&&(d+=1),s===i&&(o+=1);break;case"ArrowDown":s===a&&(c+=7),s===n&&(d+=3),s===i&&(o+=4)}let u=this.dp.getClampedDate(new Date(o,d,c));this.dp.setFocusDate(u,{viewDateTransition:!0})}registerKey(e){this.pressedKeys.add(e)}removeKey(e){this.pressedKeys.delete(e)}}let ge={on(r,e){this.__events||(this.__events={}),this.__events[r]?this.__events[r].push(e):this.__events[r]=[e]},off(r,e){this.__events&&this.__events[r]&&(this.__events[r]=this.__events[r].filter(t=>t!==e))},removeAllEvents(){this.__events={}},trigger(r){for(var e=arguments.length,t=new Array(e>1?e-1:0),s=1;s<e;s++)t[s-1]=arguments[s];this.__events&&this.__events[r]&&this.__events[r].forEach(a=>{a(...t)})}};function m(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}let X="",W="",S="",se=!1;class T{constructor(e,t){var s=this;if(m(this,"viewIndexes",[l.days,l.months,l.years]),m(this,"next",()=>{let{year:i,month:h}=this.parsedViewDate;switch(this.currentView){case l.days:this.setViewDate(new Date(i,h+1,1));break;case l.months:this.setViewDate(new Date(i+1,h,1));break;case l.years:this.setViewDate(new Date(i+10,0,1))}}),m(this,"prev",()=>{let{year:i,month:h}=this.parsedViewDate;switch(this.currentView){case l.days:this.setViewDate(new Date(i,h-1,1));break;case l.months:this.setViewDate(new Date(i-1,h,1));break;case l.years:this.setViewDate(new Date(i-10,0,1))}}),m(this,"_finishHide",()=>{this.hideAnimation=!1,this._destroyComponents(),this.$container.removeChild(this.$datepicker)}),m(this,"setPosition",function(i){let h=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(typeof(i=i||s.opts.position)=="function")return void(s.customHide=i({$datepicker:s.$datepicker,$target:s.$el,$pointer:s.$pointer,isViewChange:h,done:s._finishHide}));let o,d,{isMobile:c}=s.opts,u=s.$el.getBoundingClientRect(),p=s.$el.getBoundingClientRect(),g=s.$datepicker.offsetParent,f=s.$el.offsetParent,_=s.$datepicker.getBoundingClientRect(),N=i.split(" "),B=window.scrollY,K=window.scrollX,I=s.opts.offset,q=N[0],De=N[1];if(c)s.$datepicker.style.cssText="left: 50%; top: 50%";else{if(g===f&&g!==document.body&&(p={top:s.$el.offsetTop,left:s.$el.offsetLeft,width:u.width,height:s.$el.offsetHeight},B=0,K=0),g!==f&&g!==document.body){let ae=g.getBoundingClientRect();p={top:u.top-ae.top,left:u.left-ae.left,width:u.width,height:u.height},B=0,K=0}switch(q){case"top":o=p.top-_.height-I;break;case"right":d=p.left+p.width+I;break;case"bottom":o=p.top+p.height+I;break;case"left":d=p.left-_.width-I}switch(De){case"top":o=p.top;break;case"right":d=p.left+p.width-_.width;break;case"bottom":o=p.top+p.height-_.height;break;case"left":d=p.left;break;case"center":/left|right/.test(q)?o=p.top+p.height/2-_.height/2:d=p.left+p.width/2-_.width/2}s.$datepicker.style.cssText="left: ".concat(d+K,"px; top: ").concat(o+B,"px")}}),m(this,"_setInputValue",()=>{let{opts:i,$altField:h,locale:{dateFormat:o}}=this,{altFieldDateFormat:d,altField:c}=i;c&&h&&(h.value=this._getInputValue(d)),this.$el.value=this._getInputValue(o)}),m(this,"_getInputValue",i=>{let{selectedDates:h,opts:o}=this,{multipleDates:d,multipleDatesSeparator:c}=o;if(!h.length)return"";let u=typeof i=="function",p=u?i(d?h:h[0]):h.map(g=>this.formatDate(g,i));return p=u?p:p.join(c),p}),m(this,"_checkIfDateIsSelected",function(i){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l.days,o=!1;return s.selectedDates.some(d=>{let c=v(i,d,h);return o=c&&d,c}),o}),m(this,"_scheduleCallAfterTransition",i=>{this._cancelScheduledCall(),i&&i(!1),this._onTransitionEnd=()=>{i&&i(!0)},this.$datepicker.addEventListener("transitionend",this._onTransitionEnd,{once:!0})}),m(this,"_cancelScheduledCall",()=>{this.$datepicker.removeEventListener("transitionend",this._onTransitionEnd)}),m(this,"setViewDate",i=>{if(!((i=C(i))instanceof Date)||v(i,this.viewDate))return;let h=this.viewDate;this.viewDate=i;let{onChangeViewDate:o}=this.opts;if(o){let{month:d,year:c}=this.parsedViewDate;o({month:d,year:c,decade:this.curDecade})}this.trigger(l.eventChangeViewDate,i,h)}),m(this,"setFocusDate",function(i){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};(!i||(i=C(i))instanceof Date)&&(s.focusDate=i,s.opts.range&&i&&s._handleRangeOnFocus(),s.trigger(l.eventChangeFocusDate,i,h))}),m(this,"setCurrentView",i=>{if(this.viewIndexes.includes(i)){if(this.currentView=i,this.elIsInput&&this.visible&&this.setPosition(void 0,!0),this.trigger(l.eventChangeCurrentView,i),!this.views[i]){let h=this.views[i]=new ee({dp:this,opts:this.opts,type:i});this.shouldUpdateDOM&&this.$content.appendChild(h.$el)}this.opts.onChangeView&&this.opts.onChangeView(i)}}),m(this,"_updateLastSelectedDate",i=>{this.lastSelectedDate=i,this.trigger(l.eventChangeLastSelectedDate,i)}),m(this,"destroy",()=>{let{showEvent:i,isMobile:h}=this.opts,o=this.$datepicker.parentNode;o&&o.removeChild(this.$datepicker),this.$el.removeEventListener(i,this._onFocus),this.$el.removeEventListener("blur",this._onBlur),window.removeEventListener("resize",this._onResize),h&&this._removeMobileAttributes(),this.keyboardNav&&this.keyboardNav.destroy(),this.views=null,this.nav=null,this.$datepicker=null,this.opts=null,this.$customContainer=null,this.viewDate=null,this.focusDate=null,this.selectedDates=null,this.rangeDateFrom=null,this.rangeDateTo=null}),m(this,"update",i=>{let h=Y({},this.opts);Y(this.opts,i);let{timepicker:o,buttons:d,range:c,selectedDates:u,isMobile:p}=this.opts,g=this.visible||this.treatAsInline;this._createMinMaxDates(),this._limitViewDateByMaxMinDates(),this._handleLocale(),!h.selectedDates&&u&&this.selectDate(u),i.view&&this.setCurrentView(i.view),this._setInputValue(),h.range&&!c?(this.rangeDateTo=!1,this.rangeDateFrom=!1):!h.range&&c&&this.selectedDates.length&&(this.rangeDateFrom=this.selectedDates[0],this.rangeDateTo=this.selectedDates[1]),h.timepicker&&!o?(g&&this.timepicker.destroy(),this.timepicker=!1,this.$timepicker.parentNode.removeChild(this.$timepicker)):!h.timepicker&&o&&this._addTimepicker(),!h.buttons&&d?this._addButtons():h.buttons&&!d?(this.buttons.destroy(),this.$buttons.parentNode.removeChild(this.$buttons)):g&&h.buttons&&d&&this.buttons.clearHtml().render(),!h.isMobile&&p?(this.treatAsInline||S||this._createMobileOverlay(),this._addMobileAttributes(),this.visible&&this._showMobileOverlay()):h.isMobile&&!p&&(this._removeMobileAttributes(),this.visible&&(S.classList.remove("-active-"),typeof this.opts.position!="function"&&this.setPosition())),g&&(this.nav.update(),this.views[this.currentView].render(),this.currentView===l.days&&this.views[this.currentView].renderDayNames())}),m(this,"isOtherMonth",i=>{let{month:h}=D(i);return h!==this.parsedViewDate.month}),m(this,"isOtherYear",i=>{let{year:h}=D(i);return h!==this.parsedViewDate.year}),m(this,"isOtherDecade",i=>{let{year:h}=D(i),[o,d]=F(this.viewDate);return h<o||h>d}),m(this,"_onChangeSelectedDate",i=>{let{silent:h}=i;setTimeout(()=>{this._setInputValue(),this.opts.onSelect&&!h&&this._triggerOnSelect()})}),m(this,"_onChangeFocusedDate",function(i){let{viewDateTransition:h}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!i)return;let o=!1;h&&(o=s.isOtherMonth(i)||s.isOtherYear(i)||s.isOtherDecade(i)),o&&s.setViewDate(i)}),m(this,"_onChangeTime",i=>{let{hours:h,minutes:o}=i,d=new Date,{lastSelectedDate:c,opts:{onSelect:u}}=this,p=c;c||(p=d);let g=this.getCell(p,this.currentViewSingular),f=g&&g.adpCell;f&&f.isDisabled||(p.setHours(h),p.setMinutes(o),c?(this._setInputValue(),u&&this._triggerOnSelect()):this.selectDate(p))}),m(this,"_onFocus",i=>{this.visible||this.show()}),m(this,"_onBlur",i=>{this.inFocus||!this.visible||this.opts.isMobile||this.hide()}),m(this,"_onMouseDown",i=>{this.inFocus=!0}),m(this,"_onMouseUp",i=>{this.inFocus=!1,this.$el.focus()}),m(this,"_onResize",()=>{this.visible&&typeof this.opts.position!="function"&&this.setPosition()}),m(this,"_onClickOverlay",()=>{this.visible&&this.hide()}),m(this,"isWeekend",i=>this.opts.weekends.includes(i)),m(this,"getClampedDate",i=>{let{minDate:h,maxDate:o}=this,d=i;return o&&$(i,o)?d=o:h&&E(i,h)&&(d=h),d}),this.$el=y(e),!this.$el)return;this.$datepicker=b({className:"air-datepicker"}),this.opts=Y({},Q,t),this.$customContainer=!!this.opts.container&&y(this.opts.container),this.$altField=y(this.opts.altField||!1),X||(X=y("body"));let{view:a,startDate:n}=this.opts;n||(this.opts.startDate=new Date),this.$el.nodeName==="INPUT"&&(this.elIsInput=!0),this.inited=!1,this.visible=!1,this.viewDate=C(this.opts.startDate),this.focusDate=!1,this.initialReadonly=this.$el.getAttribute("readonly"),this.customHide=!1,this.currentView=a,this.selectedDates=[],this.views={},this.keys=[],this.rangeDateFrom="",this.rangeDateTo="",this.timepickerIsActive=!1,this.treatAsInline=this.opts.inline||!this.elIsInput,this.init()}init(){let{opts:e,treatAsInline:t,opts:{inline:s,isMobile:a,selectedDates:n,keyboardNav:i,onlyTimepicker:h}}=this;var o;se||s||!this.elIsInput||(se=!0,W=b({className:o=T.defaultContainerId,id:o}),X.appendChild(W)),!a||S||t||this._createMobileOverlay(),this._handleLocale(),this._bindSubEvents(),this._createMinMaxDates(),this._limitViewDateByMaxMinDates(),this.elIsInput&&(s||this._bindEvents(),i&&!h&&(this.keyboardNav=new me({dp:this,opts:e}))),n&&this.selectDate(n,{silent:!0}),this.opts.visible&&!t&&this.show(),a&&!t&&this.$el.setAttribute("readonly",!0),t&&this._createComponents()}_createMobileOverlay(){S=b({className:"air-datepicker-overlay"}),W.appendChild(S)}_createComponents(){let{opts:e,treatAsInline:t,opts:{inline:s,buttons:a,timepicker:n,position:i,classes:h,onlyTimepicker:o,isMobile:d}}=this;this._buildBaseHtml(),this.elIsInput&&(s||this._setPositionClasses(i)),!s&&this.elIsInput||this.$datepicker.classList.add("-inline-"),h&&this.$datepicker.classList.add(...h.split(" ")),o&&this.$datepicker.classList.add("-only-timepicker-"),d&&!t&&this._addMobileAttributes(),this.views[this.currentView]=new ee({dp:this,type:this.currentView,opts:e}),this.nav=new ce({dp:this,opts:e}),n&&this._addTimepicker(),a&&this._addButtons(),this.$content.appendChild(this.views[this.currentView].$el),this.$nav.appendChild(this.nav.$el)}_destroyComponents(){for(let e in this.views)this.views[e].destroy();this.views={},this.nav.destroy(),this.timepicker&&this.timepicker.destroy()}_addMobileAttributes(){S.addEventListener("click",this._onClickOverlay),this.$datepicker.classList.add("-is-mobile-"),this.$el.setAttribute("readonly",!0)}_removeMobileAttributes(){S.removeEventListener("click",this._onClickOverlay),this.$datepicker.classList.remove("-is-mobile-"),this.initialReadonly||this.initialReadonly===""||this.$el.removeAttribute("readonly")}_createMinMaxDates(){let{minDate:e,maxDate:t}=this.opts;this.minDate=!!e&&C(e),this.maxDate=!!t&&C(t)}_addTimepicker(){this.$timepicker=b({className:"air-datepicker--time"}),this.$datepicker.appendChild(this.$timepicker),this.timepicker=new pe({dp:this,opts:this.opts}),this.$timepicker.appendChild(this.timepicker.$el)}_addButtons(){this.$buttons=b({className:"air-datepicker--buttons"}),this.$datepicker.appendChild(this.$buttons),this.buttons=new ue({dp:this,opts:this.opts}),this.$buttons.appendChild(this.buttons.$el)}_bindSubEvents(){this.on(l.eventChangeSelectedDate,this._onChangeSelectedDate),this.on(l.eventChangeFocusDate,this._onChangeFocusedDate),this.on(l.eventChangeTime,this._onChangeTime)}_buildBaseHtml(){let{inline:e}=this.opts;var t,s;this.elIsInput?e?(t=this.$datepicker,(s=this.$el).parentNode.insertBefore(t,s.nextSibling)):this.$container.appendChild(this.$datepicker):this.$el.appendChild(this.$datepicker),this.$datepicker.innerHTML='<i class="air-datepicker--pointer"></i><div class="air-datepicker--navigation"></div><div class="air-datepicker--content"></div>',this.$content=y(".air-datepicker--content",this.$datepicker),this.$pointer=y(".air-datepicker--pointer",this.$datepicker),this.$nav=y(".air-datepicker--navigation",this.$datepicker)}_handleLocale(){let{locale:e,dateFormat:t,firstDay:s,timepicker:a,onlyTimepicker:n,timeFormat:i,dateTimeSeparator:h}=this.opts;var o;this.locale=(o=e,JSON.parse(JSON.stringify(o))),t&&(this.locale.dateFormat=t),i!==void 0&&i!==""&&(this.locale.timeFormat=i);let{timeFormat:d}=this.locale;if(s!==""&&(this.locale.firstDay=s),a&&typeof t!="function"){let c=d?h:"";this.locale.dateFormat=[this.locale.dateFormat,d||""].join(c)}n&&typeof t!="function"&&(this.locale.dateFormat=this.locale.timeFormat)}_setPositionClasses(e){if(typeof e=="function")return void this.$datepicker.classList.add("-custom-position-");let t=(e=e.split(" "))[0],s=e[1],a="air-datepicker -".concat(t,"-").concat(s,"- -from-").concat(t,"-");this.$datepicker.classList.add(...a.split(" "))}_bindEvents(){this.$el.addEventListener(this.opts.showEvent,this._onFocus),this.$el.addEventListener("blur",this._onBlur),this.$datepicker.addEventListener("mousedown",this._onMouseDown),this.$datepicker.addEventListener("mouseup",this._onMouseUp),window.addEventListener("resize",this._onResize)}_limitViewDateByMaxMinDates(){let{viewDate:e,minDate:t,maxDate:s}=this;s&&$(e,s)&&this.setViewDate(s),t&&E(e,t)&&this.setViewDate(t)}formatDate(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.viewDate,t=arguments.length>1?arguments[1]:void 0;if(e=C(e),!(e instanceof Date))return;let s=t,a=this.locale,n=D(e),i=F(e),h=T.replacer,o="am";this.opts.timepicker&&this.timepicker&&(o=this.timepicker.getDayPeriod(e).dayPeriod);let d={T:e.getTime(),m:n.minutes,mm:n.fullMinutes,h:n.hours12,hh:n.fullHours12,H:n.hours,HH:n.fullHours,aa:o,AA:o.toUpperCase(),E:a.daysShort[n.day],EEEE:a.days[n.day],d:n.date,dd:n.fullDate,M:n.month+1,MM:n.fullMonth,MMM:a.monthsShort[n.month],MMMM:a.months[n.month],yy:n.year.toString().slice(-2),yyyy:n.year,yyyy1:i[0],yyyy2:i[1]};for(let[c,u]of Object.entries(d))s=h(s,G(c),u);return s}down(e){this._handleUpDownActions(e,"down")}up(e){this._handleUpDownActions(e,"up")}selectDate(e){let t,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{currentView:a,parsedViewDate:n,selectedDates:i}=this,{updateTime:h}=s,{moveToOtherMonthsOnSelect:o,moveToOtherYearsOnSelect:d,multipleDates:c,range:u,autoClose:p}=this.opts,g=i.length;if(Array.isArray(e))return e.forEach(f=>{this.selectDate(f,s)}),new Promise(f=>{setTimeout(f)});if((e=C(e))instanceof Date){if(a===l.days&&e.getMonth()!==n.month&&o&&(t=new Date(e.getFullYear(),e.getMonth(),1)),a===l.years&&e.getFullYear()!==n.year&&d&&(t=new Date(e.getFullYear(),0,1)),t&&this.setViewDate(t),c&&!u){if(g===c)return;this._checkIfDateIsSelected(e)||i.push(e)}else if(u)switch(g){case 1:i.push(e),this.rangeDateTo||(this.rangeDateTo=e),$(this.rangeDateFrom,this.rangeDateTo)&&(this.rangeDateTo=this.rangeDateFrom,this.rangeDateFrom=e),this.selectedDates=[this.rangeDateFrom,this.rangeDateTo];break;case 2:this.selectedDates=[e],this.rangeDateFrom=e,this.rangeDateTo="";break;default:this.selectedDates=[e],this.rangeDateFrom=e}else this.selectedDates=[e];return this.trigger(l.eventChangeSelectedDate,{action:l.actionSelectDate,silent:s==null?void 0:s.silent,date:e,updateTime:h}),this._updateLastSelectedDate(e),p&&!this.timepickerIsActive&&this.visible&&(c||u?u&&g===1&&this.hide():this.hide()),new Promise(f=>{setTimeout(f)})}}unselectDate(e){let t=this.selectedDates,s=this;if((e=C(e))instanceof Date)return t.some((a,n)=>{if(v(a,e))return t.splice(n,1),s.selectedDates.length?s._updateLastSelectedDate(s.selectedDates[s.selectedDates.length-1]):(s.rangeDateFrom="",s.rangeDateTo="",s._updateLastSelectedDate(!1)),this.trigger(l.eventChangeSelectedDate,{action:l.actionUnselectDate,date:e}),!0})}replaceDate(e,t){let s=this.selectedDates.find(n=>v(n,e,this.currentView)),a=this.selectedDates.indexOf(s);a<0||v(this.selectedDates[a],t,this.currentView)||(this.selectedDates[a]=t,this.trigger(l.eventChangeSelectedDate,{action:l.actionSelectDate,date:t,updateTime:!0}),this._updateLastSelectedDate(t))}clear(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.selectedDates=[],this.rangeDateFrom=!1,this.rangeDateTo=!1,this.trigger(l.eventChangeSelectedDate,{action:l.actionUnselectDate,silent:e.silent}),new Promise(t=>{setTimeout(t)})}show(){let{onShow:e,isMobile:t}=this.opts;this._cancelScheduledCall(),this.visible||this.hideAnimation||this._createComponents(),this.setPosition(this.opts.position),this.$datepicker.classList.add("-active-"),this.visible=!0,e&&this._scheduleCallAfterTransition(e),t&&this._showMobileOverlay()}hide(){let{onHide:e,isMobile:t}=this.opts,s=this._hasTransition();this.visible=!1,this.hideAnimation=!0,this.$datepicker.classList.remove("-active-"),this.customHide&&this.customHide(),this.elIsInput&&this.$el.blur(),this._scheduleCallAfterTransition(a=>{!this.customHide&&(a&&s||!a&&!s)&&this._finishHide(),e&&e(a)}),t&&S.classList.remove("-active-")}_triggerOnSelect(){let e=[],t=[],{selectedDates:s,locale:a,opts:{onSelect:n,multipleDates:i,range:h}}=this,o=i||h,d=typeof a.dateFormat=="function";s.length&&(e=s.map(J),t=d?i?a.dateFormat(e):e.map(c=>a.dateFormat(c)):e.map(c=>this.formatDate(c,a.dateFormat))),n({date:o?e:e[0],formattedDate:o?t:t[0],datepicker:this})}_handleAlreadySelectedDates(e,t){let{range:s,toggleSelected:a}=this.opts;s?a?this.unselectDate(t):this.selectedDates.length!==2&&this.selectDate(t):a&&this.unselectDate(t),a||this._updateLastSelectedDate(e)}_handleUpDownActions(e,t){if(!((e=C(e||this.focusDate||this.viewDate))instanceof Date))return;let s=t==="up"?this.viewIndex+1:this.viewIndex-1;s>2&&(s=2),s<0&&(s=0),this.setViewDate(new Date(e.getFullYear(),e.getMonth(),1)),this.setCurrentView(this.viewIndexes[s])}_handleRangeOnFocus(){this.selectedDates.length===1&&($(this.selectedDates[0],this.focusDate)?(this.rangeDateTo=this.selectedDates[0],this.rangeDateFrom=this.focusDate):(this.rangeDateTo=this.focusDate,this.rangeDateFrom=this.selectedDates[0]))}getCell(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l.day;if(!((e=C(e))instanceof Date))return;let{year:s,month:a,date:n}=D(e),i='[data-year="'.concat(s,'"]'),h='[data-month="'.concat(a,'"]'),o='[data-date="'.concat(n,'"]'),d={[l.day]:"".concat(i).concat(h).concat(o),[l.month]:"".concat(i).concat(h),[l.year]:"".concat(i)};return this.views[this.currentView].$el.querySelector(d[t])}_showMobileOverlay(){S.classList.add("-active-")}_hasTransition(){return window.getComputedStyle(this.$datepicker).getPropertyValue("transition-duration").split(", ").reduce((e,t)=>parseFloat(t)+e,0)>0}get shouldUpdateDOM(){return this.visible||this.treatAsInline}get parsedViewDate(){return D(this.viewDate)}get currentViewSingular(){return this.currentView.slice(0,-1)}get curDecade(){return F(this.viewDate)}get viewIndex(){return this.viewIndexes.indexOf(this.currentView)}get isFinalView(){return this.currentView===l.years}get hasSelectedDates(){return this.selectedDates.length>0}get isMinViewReached(){return this.currentView===this.opts.minView||this.currentView===l.days}get $container(){return this.$customContainer||W}static replacer(e,t,s){return e.replace(t,function(a,n,i,h){return n+s+h})}}var ie;return m(T,"defaults",Q),m(T,"version","3.3.0"),m(T,"defaultContainerId","air-datepicker-global-container"),ie=T.prototype,Object.assign(ie,ge),j.default}()})})(re.__module);var ve=re.__module.exports;const ye=ne.getDefaultExportFromCjs(ve);module.exports=ye;
1
+ "use strict";const c=require("./design-system113.js"),u=require("./design-system114.js"),a=require("./design-system115.js");function x(n,e,t){if(c.randomUUID&&!e&&!n)return c.randomUUID();n=n||{};const r=n.random||(n.rng||u)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){t=t||0;for(let i=0;i<16;++i)e[t+i]=r[i];return e}return a.unsafeStringify(r)}module.exports=x;
2
2
  //# sourceMappingURL=design-system103.js.map