@gnwebsoft/ui 4.0.3 → 4.0.5

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 (335) hide show
  1. package/dist/{chunk-DKD73ADK.cjs → chunk-2QTXS736.cjs} +28 -77
  2. package/dist/{chunk-DS524L7W.cjs → chunk-3RZ4JNO3.cjs} +5 -5
  3. package/dist/chunk-3TYKVE3E.js +2514 -0
  4. package/dist/chunk-HKO2FXDM.js +2232 -0
  5. package/dist/chunk-LUW7V5GI.cjs +1 -1
  6. package/dist/chunk-MVPLBJRK.cjs +1 -1
  7. package/dist/{chunk-M3NVOZ7L.cjs → chunk-UBPAGZNC.cjs} +8 -6
  8. package/dist/chunk-XN3KVY4J.js +467 -0
  9. package/dist/chunk-XTPFOURJ.cjs +72 -0
  10. package/dist/chunk-Y3QTSDLJ.cjs +1 -1
  11. package/dist/core/api/ApiClient.d.ts +329 -0
  12. package/dist/core/api/ApiClient.d.ts.map +1 -0
  13. package/dist/core/api/CorrelationIdGenerator.d.ts +52 -0
  14. package/dist/core/api/CorrelationIdGenerator.d.ts.map +1 -0
  15. package/dist/core/api/Errors/ErrorNormalizer.d.ts +106 -0
  16. package/dist/core/api/Errors/ErrorNormalizer.d.ts.map +1 -0
  17. package/dist/core/api/Interceptors/InterceptorManager.d.ts +236 -0
  18. package/dist/core/api/Interceptors/InterceptorManager.d.ts.map +1 -0
  19. package/dist/core/api/Models/FilterModel.d.ts +22 -0
  20. package/dist/core/api/Models/FilterModel.d.ts.map +1 -0
  21. package/dist/core/api/Models/QueryParams.d.ts +13 -0
  22. package/dist/core/api/Models/QueryParams.d.ts.map +1 -0
  23. package/dist/core/api/Models/index.d.ts +3 -0
  24. package/dist/core/api/Models/index.d.ts.map +1 -0
  25. package/dist/core/api/RequestManager.d.ts +142 -0
  26. package/dist/core/api/RequestManager.d.ts.map +1 -0
  27. package/dist/core/api/Retry/RetryHandler.d.ts +100 -0
  28. package/dist/core/api/Retry/RetryHandler.d.ts.map +1 -0
  29. package/dist/core/api/Signals/SignalManager.d.ts +153 -0
  30. package/dist/core/api/Signals/SignalManager.d.ts.map +1 -0
  31. package/dist/core/api/Utils/ResponseParser.d.ts +105 -0
  32. package/dist/core/api/Utils/ResponseParser.d.ts.map +1 -0
  33. package/dist/core/api/Utils/UrlBuilder.d.ts +111 -0
  34. package/dist/core/api/Utils/UrlBuilder.d.ts.map +1 -0
  35. package/dist/core/api/createApiClient.d.ts +265 -0
  36. package/dist/core/api/createApiClient.d.ts.map +1 -0
  37. package/dist/core/api/index.d.ts +7 -0
  38. package/dist/core/api/index.d.ts.map +1 -0
  39. package/dist/core/api/types/ApiError.d.ts +17 -0
  40. package/dist/core/api/types/ApiError.d.ts.map +1 -0
  41. package/dist/core/api/types/ApiResponse.d.ts +76 -0
  42. package/dist/core/api/types/ApiResponse.d.ts.map +1 -0
  43. package/dist/core/api/types/CancelToken.d.ts +15 -0
  44. package/dist/core/api/types/CancelToken.d.ts.map +1 -0
  45. package/dist/core/api/types/ErrorInterceptor.d.ts +3 -0
  46. package/dist/core/api/types/ErrorInterceptor.d.ts.map +1 -0
  47. package/dist/core/api/types/ErrorResponseData.d.ts +68 -0
  48. package/dist/core/api/types/ErrorResponseData.d.ts.map +1 -0
  49. package/dist/core/api/types/RequestConfig.d.ts +21 -0
  50. package/dist/core/api/types/RequestConfig.d.ts.map +1 -0
  51. package/dist/core/api/types/RequestInterceptor.d.ts +3 -0
  52. package/dist/core/api/types/RequestInterceptor.d.ts.map +1 -0
  53. package/dist/core/api/types/ResponseInterceptor.d.ts +3 -0
  54. package/dist/core/api/types/ResponseInterceptor.d.ts.map +1 -0
  55. package/dist/core/api/types/ValidationErrors.d.ts +7 -0
  56. package/dist/core/api/types/ValidationErrors.d.ts.map +1 -0
  57. package/dist/core/api/types/index.d.ts +10 -0
  58. package/dist/core/api/types/index.d.ts.map +1 -0
  59. package/dist/core/api/useValidationErrors.d.ts +11 -0
  60. package/dist/core/api/useValidationErrors.d.ts.map +1 -0
  61. package/dist/core/components/AuthorizedView/AuthorizedView.d.ts +7 -0
  62. package/dist/core/components/AuthorizedView/AuthorizedView.d.ts.map +1 -0
  63. package/dist/core/components/AuthorizedView/index.d.ts +2 -0
  64. package/dist/core/components/AuthorizedView/index.d.ts.map +1 -0
  65. package/dist/core/components/CancelButton/CancelButton.d.ts +4 -0
  66. package/dist/core/components/CancelButton/CancelButton.d.ts.map +1 -0
  67. package/dist/core/components/CancelButton/index.d.ts +2 -0
  68. package/dist/core/components/CancelButton/index.d.ts.map +1 -0
  69. package/dist/core/components/ClearButton/ClearButton.d.ts +63 -0
  70. package/dist/core/components/ClearButton/ClearButton.d.ts.map +1 -0
  71. package/dist/core/components/ClearButton/index.d.ts +2 -0
  72. package/dist/core/components/ClearButton/index.d.ts.map +1 -0
  73. package/dist/core/components/Containers/SimpleContainer.d.ts +10 -0
  74. package/dist/core/components/Containers/SimpleContainer.d.ts.map +1 -0
  75. package/dist/core/components/Containers/index.d.ts +2 -0
  76. package/dist/core/components/Containers/index.d.ts.map +1 -0
  77. package/dist/core/components/FilterButton/FilterButton.d.ts +86 -0
  78. package/dist/core/components/FilterButton/FilterButton.d.ts.map +1 -0
  79. package/dist/core/components/FilterButton/index.d.ts +2 -0
  80. package/dist/core/components/FilterButton/index.d.ts.map +1 -0
  81. package/dist/core/components/FilterDisplay/FilterChip.d.ts +9 -0
  82. package/dist/core/components/FilterDisplay/FilterChip.d.ts.map +1 -0
  83. package/dist/core/components/FilterDisplay/FilterDisplay.d.ts +10 -0
  84. package/dist/core/components/FilterDisplay/FilterDisplay.d.ts.map +1 -0
  85. package/dist/core/components/FilterDisplay/index.d.ts +3 -0
  86. package/dist/core/components/FilterDisplay/index.d.ts.map +1 -0
  87. package/dist/core/components/FilterWrapper/FilterWrapper.d.ts +99 -0
  88. package/dist/core/components/FilterWrapper/FilterWrapper.d.ts.map +1 -0
  89. package/dist/core/components/FilterWrapper/index.d.ts +2 -0
  90. package/dist/core/components/FilterWrapper/index.d.ts.map +1 -0
  91. package/dist/core/components/Footer/Footer.d.ts +3 -0
  92. package/dist/core/components/Footer/Footer.d.ts.map +1 -0
  93. package/dist/core/components/Footer/index.d.ts +2 -0
  94. package/dist/core/components/Footer/index.d.ts.map +1 -0
  95. package/dist/core/components/LabelText/LabelText.d.ts +103 -0
  96. package/dist/core/components/LabelText/LabelText.d.ts.map +1 -0
  97. package/dist/core/components/LabelText/index.d.ts +2 -0
  98. package/dist/core/components/LabelText/index.d.ts.map +1 -0
  99. package/dist/core/components/RenderIf/RenderIf.d.ts +7 -0
  100. package/dist/core/components/RenderIf/RenderIf.d.ts.map +1 -0
  101. package/dist/core/components/RenderIf/index.d.ts +2 -0
  102. package/dist/core/components/RenderIf/index.d.ts.map +1 -0
  103. package/dist/core/components/SectionBox/SectionBox.d.ts +15 -0
  104. package/dist/core/components/SectionBox/SectionBox.d.ts.map +1 -0
  105. package/dist/core/components/SectionBox/index.d.ts +2 -0
  106. package/dist/core/components/SectionBox/index.d.ts.map +1 -0
  107. package/dist/core/components/SimpleTabs/SimpleTabs.d.ts +17 -0
  108. package/dist/core/components/SimpleTabs/SimpleTabs.d.ts.map +1 -0
  109. package/dist/core/components/SimpleTabs/index.d.ts +2 -0
  110. package/dist/core/components/SimpleTabs/index.d.ts.map +1 -0
  111. package/dist/core/components/SubmitButton/SubmitButton.d.ts +6 -0
  112. package/dist/core/components/SubmitButton/SubmitButton.d.ts.map +1 -0
  113. package/dist/core/components/SubmitButton/index.d.ts +2 -0
  114. package/dist/core/components/SubmitButton/index.d.ts.map +1 -0
  115. package/dist/core/components/WithRef/WithRef.d.ts +14 -0
  116. package/dist/core/components/WithRef/WithRef.d.ts.map +1 -0
  117. package/dist/core/components/WithRef/index.d.ts +2 -0
  118. package/dist/core/components/WithRef/index.d.ts.map +1 -0
  119. package/dist/core/components/index.d.ts +15 -0
  120. package/dist/core/components/index.d.ts.map +1 -0
  121. package/dist/core/config.d.ts +24 -0
  122. package/dist/core/config.d.ts.map +1 -0
  123. package/dist/core/hooks/index.d.ts +3 -0
  124. package/dist/core/hooks/index.d.ts.map +1 -0
  125. package/dist/core/hooks/makeQuery.d.ts +12 -0
  126. package/dist/core/hooks/makeQuery.d.ts.map +1 -0
  127. package/dist/core/hooks/useApiClient.d.ts +3 -0
  128. package/dist/core/hooks/useApiClient.d.ts.map +1 -0
  129. package/dist/core/hooks/useFormErrorHandler.d.ts +35 -0
  130. package/dist/core/hooks/useFormErrorHandler.d.ts.map +1 -0
  131. package/dist/core/hooks/useListView.d.ts +20 -0
  132. package/dist/core/hooks/useListView.d.ts.map +1 -0
  133. package/dist/core/index.cjs +3 -3
  134. package/dist/core/index.d.ts +9 -0
  135. package/dist/core/index.d.ts.map +1 -0
  136. package/dist/core/index.js +1 -1
  137. package/dist/core/models.d.ts +5 -0
  138. package/dist/core/models.d.ts.map +1 -0
  139. package/dist/core/types/FilterLabel.d.ts +6 -0
  140. package/dist/core/types/FilterLabel.d.ts.map +1 -0
  141. package/dist/core/types/ListModels.d.ts +18 -0
  142. package/dist/core/types/ListModels.d.ts.map +1 -0
  143. package/dist/core/types/OptionsRequest.d.ts +4 -0
  144. package/dist/core/types/OptionsRequest.d.ts.map +1 -0
  145. package/dist/core/types/index.d.ts +4 -0
  146. package/dist/core/types/index.d.ts.map +1 -0
  147. package/dist/core/utils/CacheUtility/index.d.ts +15 -0
  148. package/dist/core/utils/CacheUtility/index.d.ts.map +1 -0
  149. package/dist/core/utils/calculateFilterCount.d.ts +2 -0
  150. package/dist/core/utils/calculateFilterCount.d.ts.map +1 -0
  151. package/dist/core/utils/format-time.d.ts +79 -0
  152. package/dist/core/utils/format-time.d.ts.map +1 -0
  153. package/dist/core/utils/getEmptyObject.d.ts +7 -0
  154. package/dist/core/utils/getEmptyObject.d.ts.map +1 -0
  155. package/dist/core/utils/index.d.ts +7 -0
  156. package/dist/core/utils/index.d.ts.map +1 -0
  157. package/dist/core/utils/useStableRowCount.d.ts +9 -0
  158. package/dist/core/utils/useStableRowCount.d.ts.map +1 -0
  159. package/dist/core/utils/watch/core.d.ts +22 -0
  160. package/dist/core/utils/watch/core.d.ts.map +1 -0
  161. package/dist/core/utils/watch/index.d.ts +49 -0
  162. package/dist/core/utils/watch/index.d.ts.map +1 -0
  163. package/dist/core/utils/watch/utilities.d.ts +34 -0
  164. package/dist/core/utils/watch/utilities.d.ts.map +1 -0
  165. package/dist/hooks/index.cjs +1 -1
  166. package/dist/hooks/index.d.ts +3 -0
  167. package/dist/hooks/index.d.ts.map +1 -0
  168. package/dist/hooks/useTransform/enhanced.d.ts +133 -0
  169. package/dist/hooks/useTransform/enhanced.d.ts.map +1 -0
  170. package/dist/hooks/useTransform/index.d.ts +93 -0
  171. package/dist/hooks/useTransform/index.d.ts.map +1 -0
  172. package/dist/index.cjs +6 -24
  173. package/dist/index.d.ts +6 -0
  174. package/dist/index.d.ts.map +1 -0
  175. package/dist/index.js +4 -22
  176. package/dist/types/AsyncSelectPayload.d.ts +9 -0
  177. package/dist/types/AsyncSelectPayload.d.ts.map +1 -0
  178. package/dist/types/OperationResponse.d.ts +5 -0
  179. package/dist/types/OperationResponse.d.ts.map +1 -0
  180. package/dist/types/OptionItem.d.ts +75 -0
  181. package/dist/types/OptionItem.d.ts.map +1 -0
  182. package/dist/types/api.d.ts +127 -0
  183. package/dist/types/api.d.ts.map +1 -0
  184. package/dist/types/events.d.ts +74 -0
  185. package/dist/types/events.d.ts.map +1 -0
  186. package/dist/types/index.cjs +3 -3
  187. package/dist/types/index.d.ts +17 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +1 -1
  190. package/dist/types/utilities.d.ts +458 -0
  191. package/dist/types/utilities.d.ts.map +1 -0
  192. package/dist/utils/api.d.ts +14 -0
  193. package/dist/utils/api.d.ts.map +1 -0
  194. package/dist/utils/api2.d.ts +14 -0
  195. package/dist/utils/api2.d.ts.map +1 -0
  196. package/dist/utils/flattenObjectKeys.d.ts +63 -0
  197. package/dist/utils/flattenObjectKeys.d.ts.map +1 -0
  198. package/dist/utils/getTimezone.d.ts +4 -0
  199. package/dist/utils/getTimezone.d.ts.map +1 -0
  200. package/dist/utils/handleServerErrors.d.ts +70 -0
  201. package/dist/utils/handleServerErrors.d.ts.map +1 -0
  202. package/dist/utils/index.cjs +3 -3
  203. package/dist/utils/index.d.ts +11 -0
  204. package/dist/utils/index.d.ts.map +1 -0
  205. package/dist/utils/index.js +1 -1
  206. package/dist/utils/propertyExists.d.ts +35 -0
  207. package/dist/utils/propertyExists.d.ts.map +1 -0
  208. package/dist/utils/readValueAsDate.d.ts +4 -0
  209. package/dist/utils/readValueAsDate.d.ts.map +1 -0
  210. package/dist/utils/removeLeadingTrailingSlashes.d.ts +2 -0
  211. package/dist/utils/removeLeadingTrailingSlashes.d.ts.map +1 -0
  212. package/dist/utils/schemaTools.d.ts +82 -0
  213. package/dist/utils/schemaTools.d.ts.map +1 -0
  214. package/dist/utils/typeGuards.d.ts +316 -0
  215. package/dist/utils/typeGuards.d.ts.map +1 -0
  216. package/dist/utils/watch/core.d.ts +22 -0
  217. package/dist/utils/watch/core.d.ts.map +1 -0
  218. package/dist/utils/watch/index.d.ts +49 -0
  219. package/dist/utils/watch/index.d.ts.map +1 -0
  220. package/dist/utils/watch/utilities.d.ts +34 -0
  221. package/dist/utils/watch/utilities.d.ts.map +1 -0
  222. package/dist/wrappers/AsyncMultiSelect/AsyncMultiSelect.d.ts +9 -0
  223. package/dist/wrappers/AsyncMultiSelect/AsyncMultiSelect.d.ts.map +1 -0
  224. package/dist/wrappers/AsyncMultiSelect/index.d.ts +3 -0
  225. package/dist/wrappers/AsyncMultiSelect/index.d.ts.map +1 -0
  226. package/dist/wrappers/AsyncMultiSelect/types.d.ts +19 -0
  227. package/dist/wrappers/AsyncMultiSelect/types.d.ts.map +1 -0
  228. package/dist/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.d.ts +8 -0
  229. package/dist/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.d.ts.map +1 -0
  230. package/dist/wrappers/AsyncMultiSelect2/index.d.ts +3 -0
  231. package/dist/wrappers/AsyncMultiSelect2/index.d.ts.map +1 -0
  232. package/dist/wrappers/AsyncMultiSelect2/types.d.ts +29 -0
  233. package/dist/wrappers/AsyncMultiSelect2/types.d.ts.map +1 -0
  234. package/dist/wrappers/AsyncSelect/index.d.ts +9 -0
  235. package/dist/wrappers/AsyncSelect/index.d.ts.map +1 -0
  236. package/dist/wrappers/AsyncSelect/types.d.ts +19 -0
  237. package/dist/wrappers/AsyncSelect/types.d.ts.map +1 -0
  238. package/dist/wrappers/Button.d.ts +49 -0
  239. package/dist/wrappers/Button.d.ts.map +1 -0
  240. package/dist/wrappers/CheckboxElement/CheckboxElement.d.ts +102 -0
  241. package/dist/wrappers/CheckboxElement/CheckboxElement.d.ts.map +1 -0
  242. package/dist/wrappers/CheckboxElement/index.d.ts +3 -0
  243. package/dist/wrappers/CheckboxElement/index.d.ts.map +1 -0
  244. package/dist/wrappers/CheckboxElement/types.d.ts +76 -0
  245. package/dist/wrappers/CheckboxElement/types.d.ts.map +1 -0
  246. package/dist/wrappers/CheckboxGroup/CheckboxGroup.d.ts +96 -0
  247. package/dist/wrappers/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  248. package/dist/wrappers/CheckboxGroup/EnhancedCheckboxGroup.d.ts +49 -0
  249. package/dist/wrappers/CheckboxGroup/EnhancedCheckboxGroup.d.ts.map +1 -0
  250. package/dist/wrappers/CheckboxGroup/enhanced-types.d.ts +171 -0
  251. package/dist/wrappers/CheckboxGroup/enhanced-types.d.ts.map +1 -0
  252. package/dist/wrappers/CheckboxGroup/index.d.ts +3 -0
  253. package/dist/wrappers/CheckboxGroup/index.d.ts.map +1 -0
  254. package/dist/wrappers/CheckboxGroup/types.d.ts +106 -0
  255. package/dist/wrappers/CheckboxGroup/types.d.ts.map +1 -0
  256. package/dist/wrappers/DatePickerElement/DatePickerElement.d.ts +131 -0
  257. package/dist/wrappers/DatePickerElement/DatePickerElement.d.ts.map +1 -0
  258. package/dist/wrappers/DatePickerElement/DatePickerElementCore.d.ts +57 -0
  259. package/dist/wrappers/DatePickerElement/DatePickerElementCore.d.ts.map +1 -0
  260. package/dist/wrappers/DatePickerElement/hooks/index.d.ts +24 -0
  261. package/dist/wrappers/DatePickerElement/hooks/index.d.ts.map +1 -0
  262. package/dist/wrappers/DatePickerElement/hooks/useDatePickerStyles.d.ts +63 -0
  263. package/dist/wrappers/DatePickerElement/hooks/useDatePickerStyles.d.ts.map +1 -0
  264. package/dist/wrappers/DatePickerElement/hooks/useDatePickerValidation.d.ts +79 -0
  265. package/dist/wrappers/DatePickerElement/hooks/useDatePickerValidation.d.ts.map +1 -0
  266. package/dist/wrappers/DatePickerElement/hooks/useDatePickerValue.d.ts +73 -0
  267. package/dist/wrappers/DatePickerElement/hooks/useDatePickerValue.d.ts.map +1 -0
  268. package/dist/wrappers/DatePickerElement/index.d.ts +47 -0
  269. package/dist/wrappers/DatePickerElement/index.d.ts.map +1 -0
  270. package/dist/wrappers/DatePickerElement/types.d.ts +183 -0
  271. package/dist/wrappers/DatePickerElement/types.d.ts.map +1 -0
  272. package/dist/wrappers/DatePickerElement/utils.d.ts +89 -0
  273. package/dist/wrappers/DatePickerElement/utils.d.ts.map +1 -0
  274. package/dist/wrappers/DateTimePickerElement/index.d.ts +1 -0
  275. package/dist/wrappers/DateTimePickerElement/index.d.ts.map +1 -0
  276. package/dist/wrappers/DateTimePickerElement/types.d.ts +1 -0
  277. package/dist/wrappers/DateTimePickerElement/types.d.ts.map +1 -0
  278. package/dist/wrappers/Field/index.d.ts +42 -0
  279. package/dist/wrappers/Field/index.d.ts.map +1 -0
  280. package/dist/wrappers/NumberFieldElement/NumberFieldElement.d.ts +176 -0
  281. package/dist/wrappers/NumberFieldElement/NumberFieldElement.d.ts.map +1 -0
  282. package/dist/wrappers/NumberFieldElement/index.d.ts +3 -0
  283. package/dist/wrappers/NumberFieldElement/index.d.ts.map +1 -0
  284. package/dist/wrappers/OTPInputElement/HelperText.d.ts +8 -0
  285. package/dist/wrappers/OTPInputElement/HelperText.d.ts.map +1 -0
  286. package/dist/wrappers/OTPInputElement/OTPInputElement.d.ts +32 -0
  287. package/dist/wrappers/OTPInputElement/OTPInputElement.d.ts.map +1 -0
  288. package/dist/wrappers/OTPInputElement/index.d.ts +3 -0
  289. package/dist/wrappers/OTPInputElement/index.d.ts.map +1 -0
  290. package/dist/wrappers/PasswordElement/PasswordElement.d.ts +104 -0
  291. package/dist/wrappers/PasswordElement/PasswordElement.d.ts.map +1 -0
  292. package/dist/wrappers/PasswordElement/index.d.ts +2 -0
  293. package/dist/wrappers/PasswordElement/index.d.ts.map +1 -0
  294. package/dist/wrappers/RadioButtonGroup/RadioButtonGroup.d.ts +38 -0
  295. package/dist/wrappers/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -0
  296. package/dist/wrappers/RadioButtonGroup/index.d.ts +2 -0
  297. package/dist/wrappers/RadioButtonGroup/index.d.ts.map +1 -0
  298. package/dist/wrappers/SelectCascadeElement/SelectCascadeElement.d.ts +22 -0
  299. package/dist/wrappers/SelectCascadeElement/SelectCascadeElement.d.ts.map +1 -0
  300. package/dist/wrappers/SelectCascadeElement/index.d.ts +2 -0
  301. package/dist/wrappers/SelectCascadeElement/index.d.ts.map +1 -0
  302. package/dist/wrappers/SelectElement/SelectElement.d.ts +152 -0
  303. package/dist/wrappers/SelectElement/SelectElement.d.ts.map +1 -0
  304. package/dist/wrappers/SelectElement/index.d.ts +2 -0
  305. package/dist/wrappers/SelectElement/index.d.ts.map +1 -0
  306. package/dist/wrappers/SelectMultiElement/SelectMultiElement.d.ts +21 -0
  307. package/dist/wrappers/SelectMultiElement/SelectMultiElement.d.ts.map +1 -0
  308. package/dist/wrappers/SelectMultiElement/index.d.ts +2 -0
  309. package/dist/wrappers/SelectMultiElement/index.d.ts.map +1 -0
  310. package/dist/wrappers/TextFieldElement/TextFieldElement.d.ts +179 -0
  311. package/dist/wrappers/TextFieldElement/TextFieldElement.d.ts.map +1 -0
  312. package/dist/wrappers/TextFieldElement/index.d.ts +3 -0
  313. package/dist/wrappers/TextFieldElement/index.d.ts.map +1 -0
  314. package/dist/wrappers/TimePickerElement/TimePickerElement.d.ts +30 -0
  315. package/dist/wrappers/TimePickerElement/TimePickerElement.d.ts.map +1 -0
  316. package/dist/wrappers/TimePickerElement/index.d.ts +2 -0
  317. package/dist/wrappers/TimePickerElement/index.d.ts.map +1 -0
  318. package/dist/wrappers/index.cjs +3 -4
  319. package/dist/wrappers/index.d.ts +14 -0
  320. package/dist/wrappers/index.d.ts.map +1 -0
  321. package/dist/wrappers/index.js +1 -2
  322. package/dist/wrappers/types/common.d.ts +87 -0
  323. package/dist/wrappers/types/common.d.ts.map +1 -0
  324. package/dist/wrappers/types/index.d.ts +8 -0
  325. package/dist/wrappers/types/index.d.ts.map +1 -0
  326. package/package.json +4 -8
  327. package/dist/chunk-BXWPG6VW.js +0 -108
  328. package/dist/chunk-EOUSOGZ6.js +0 -2281
  329. package/dist/chunk-EYXPJMEF.cjs +0 -108
  330. package/dist/chunk-GHW77WIM.cjs +0 -72
  331. package/dist/chunk-PUQIPRL2.js +0 -467
  332. package/dist/chunk-YAYXHYKC.js +0 -2512
  333. package/dist/i18n/index.cjs +0 -21
  334. package/dist/i18n/index.js +0 -21
  335. /package/dist/{chunk-MULSVYFT.js → chunk-6GKAC3KH.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMultiElement.d.ts","sourceRoot":"","sources":["../../../src/wrappers/SelectMultiElement/SelectMultiElement.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,eAAe,CAAC;AAUvB,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,KAAK,qBAAqB,CACxB,OAAO,EACP,QAAQ,SAAS,OAAO,GAAG,SAAS,EACpC,gBAAgB,SAAS,OAAO,GAAG,SAAS,EAC5C,QAAQ,SAAS,OAAO,GAAG,SAAS,EACpC,aAAa,SAAS,KAAK,CAAC,WAAW,IACrC,IAAI,CACN,iBAAiB,CACf,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,aAAa,CACd,EACD,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAC3D,CAAC;AAEF,MAAM,MAAM,uBAAuB,CACjC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EAC3C,gBAAgB,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,EAC5C,aAAa,SAAS,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,IACvE,qBAAqB,CACvB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,aAAa,CACd,GAAG;IACF,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;CACrC,CAAC;AAkIF,eAAO,MAAM,kBAAkB;KAC7B,YAAY,SAAS,WAAW,gBAChC,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,4BACrC,OAAO,SAAS,cAAc,4CAI7B,uBAAuB,CACxB,YAAY,EACZ,KAAK,EACL,OAAO,CACR,GAAG,KAAK,CAAC,YAAY;;CAMrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SelectMultiElement } from "./SelectMultiElement";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wrappers/SelectMultiElement/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,179 @@
1
+ import type { GridProps, TextFieldProps, TextFieldVariants } from '@mui/material';
2
+ import { TextField } from '@mui/material';
3
+ import type { ChangeEvent, ReactElement, ReactNode } from 'react';
4
+ import type { Control, FieldError, FieldPath, FieldValues, PathValue } from 'react-hook-form';
5
+ import type { FieldType } from '../../hooks/useTransform/enhanced';
6
+ import type { EventOrValue } from '../../types/events';
7
+ /**
8
+ * Props for the TextFieldElement component.
9
+ *
10
+ * @template TFieldValues - The form values type
11
+ * @template TName - The field name type
12
+ * @template TValue - The transformed value type
13
+ *
14
+ * @public
15
+ */
16
+ export interface TextFieldElementProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TValue = PathValue<TFieldValues, TName>> {
17
+ /**
18
+ * The field name in the form
19
+ * @example "firstName" | "user.email"
20
+ */
21
+ name: TName;
22
+ /**
23
+ * Custom error message parser
24
+ * @param error - The field error object
25
+ * @returns Custom error message or component
26
+ */
27
+ parseError?: (error: FieldError) => ReactNode;
28
+ /**
29
+ * The form control instance from react-hook-form
30
+ */
31
+ control?: Control<TFieldValues>;
32
+ /**
33
+ * Custom TextField component to use instead of default MUI TextField
34
+ */
35
+ component?: typeof TextField;
36
+ /**
37
+ * Value transformation functions for input/output
38
+ * @deprecated Use fieldType for common patterns or custom transforms for complex cases
39
+ */
40
+ transform?: {
41
+ /** Transform value before displaying in input */
42
+ input?: (value: PathValue<TFieldValues, TName>) => TValue;
43
+ /** Transform input event to form value */
44
+ output?: (eventOrValue: EventOrValue<PathValue<TFieldValues, TName>>, value?: PathValue<TFieldValues, TName>) => PathValue<TFieldValues, TName>;
45
+ };
46
+ /**
47
+ * Built-in field type for automatic transformation
48
+ * @example 'text' | 'number' | 'date' | 'time' | 'select'
49
+ */
50
+ fieldType?: FieldType;
51
+ /**
52
+ * Default value to display when field value is null/undefined
53
+ * @example ""
54
+ */
55
+ defaultValue?: TValue;
56
+ /**
57
+ * The input label text
58
+ * @example "Email Address"
59
+ */
60
+ label?: string;
61
+ /**
62
+ * Placeholder text for the input
63
+ * @example "Enter your email"
64
+ */
65
+ placeholder?: string;
66
+ /**
67
+ * Additional props for the underlying TextField component
68
+ */
69
+ textFieldProps?: Omit<TextFieldProps, 'name'>;
70
+ /**
71
+ * Grid layout props for the wrapper Grid component
72
+ * @defaultValue { size: { xs: 12, sm: 12, md: 12, lg: 12, xl: 12 } }
73
+ */
74
+ gridProps?: GridProps;
75
+ /**
76
+ * The TextField variant
77
+ * @defaultValue "outlined"
78
+ */
79
+ variant?: TextFieldVariants;
80
+ /**
81
+ * Custom styles for the TextField
82
+ */
83
+ /**
84
+ * Custom onChange handler called after transformation
85
+ */
86
+ onChange?: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
87
+ /**
88
+ * Enable development warnings for debugging transformation issues
89
+ * @defaultValue process.env.NODE_ENV === 'development'
90
+ */
91
+ enableWarnings?: boolean;
92
+ }
93
+ /**
94
+ * A react-hook-form integrated TextField component with automatic validation,
95
+ * performance optimizations, and built-in field type handling.
96
+ *
97
+ * Features:
98
+ * - Full react-hook-form integration
99
+ * - Automatic error display with custom parsing
100
+ * - Value transformation support
101
+ * - Built-in field types for common patterns
102
+ * - Grid layout wrapper
103
+ * - TypeScript type safety
104
+ * - Optimized number input handling
105
+ * - Disabled state styling
106
+ * - Performance optimizations with memoized transformations
107
+ * - Development warnings for debugging
108
+ * - Stable references to prevent unnecessary re-renders
109
+ *
110
+ * @example
111
+ * Basic usage with built-in number handling:
112
+ * ```tsx
113
+ * <TextFieldElement
114
+ * control={control}
115
+ * name="age"
116
+ * label="Age"
117
+ * fieldType="number"
118
+ * rules={{ required: 'Age is required', min: { value: 0, message: 'Age must be positive' } }}
119
+ * />
120
+ * ```
121
+ *
122
+ * @example
123
+ * Advanced usage with custom grid layout:
124
+ * ```tsx
125
+ * <TextFieldElement
126
+ * control={control}
127
+ * name="email"
128
+ * label="Email"
129
+ * fieldType="text"
130
+ * placeholder="Enter your email address"
131
+ * gridProps={{ size: { xs: 12, md: 6 } }}
132
+ * rules={{
133
+ * required: 'Email is required',
134
+ * pattern: { value: /\S+@\S+\.\S+/, message: 'Invalid email' }
135
+ * }}
136
+ * />
137
+ * ```
138
+ *
139
+ * @example
140
+ * Custom transformation:
141
+ * ```tsx
142
+ * <TextFieldElement
143
+ * control={control}
144
+ * name="price"
145
+ * label="Price"
146
+ * transform={{
147
+ * input: (value) => value ? `$${value}` : '',
148
+ * output: (event) => parseFloat(event.target.value.replace('$', '')) || null
149
+ * }}
150
+ * />
151
+ * ```
152
+ *
153
+ * @example
154
+ * With custom error parsing:
155
+ * ```tsx
156
+ * <TextFieldElement
157
+ * control={control}
158
+ * name="username"
159
+ * label="Username"
160
+ * fieldType="text"
161
+ * parseError={(error) => (
162
+ * <span style={{ color: 'red' }}>
163
+ * ⚠️ {error.message}
164
+ * </span>
165
+ * )}
166
+ * />
167
+ * ```
168
+ *
169
+ * @template TFieldValues - The form values type
170
+ * @template TName - The field name type
171
+ * @template TValue - The transformed value type
172
+ *
173
+ * @param props - Component props
174
+ * @returns React element with optional Grid wrapper
175
+ *
176
+ * @public
177
+ */
178
+ export declare const TextFieldElement: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TValue = PathValue<TFieldValues, TName>>({ gridProps, ...props }: TextFieldElementProps<TFieldValues, TName, TValue>) => ReactElement;
179
+ //# sourceMappingURL=TextFieldElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextFieldElement.d.ts","sourceRoot":"","sources":["../../../src/wrappers/TextFieldElement/TextFieldElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAQ,SAAS,EAAc,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAEvC;;;OAGG;IACH,IAAI,EAAE,KAAK,CAAC;IACZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,iDAAiD;QACjD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,MAAM,CAAC;QAC1D,0CAA0C;QAC1C,MAAM,CAAC,EAAE,CACP,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAC1D,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,KACnC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KACrC,CAAC;IACF;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH;;OAEG;IACH,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,WAAW,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,KACvD,IAAI,CAAC;IACV;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAiHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,eAAO,MAAM,gBAAgB,GAC3B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,EACvC,yBAGC,qBAAqB,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,KAAG,YAMvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { TextFieldElement } from "./TextFieldElement";
2
+ export type { TextFieldElementProps } from "./TextFieldElement";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wrappers/TextFieldElement/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { GridProps, TextFieldProps, TextFieldVariants } from '@mui/material';
2
+ import type { PickerValidDate, TimePickerProps, TimePickerSlotProps, TimeValidationError } from '@mui/x-date-pickers';
3
+ import type { ReactNode } from 'react';
4
+ import type { Control, FieldPath, PathValue, FieldError, FieldValues } from 'react-hook-form';
5
+ import type { EventOrValue } from '../../types/events';
6
+ export interface TimePickerElementProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TValue extends PickerValidDate = PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean = false> {
7
+ name: TName;
8
+ required?: boolean;
9
+ isDate?: boolean;
10
+ parseError?: (error: FieldError | TimeValidationError) => ReactNode;
11
+ control?: Control<TFieldValues>;
12
+ inputProps?: Omit<TextFieldProps, 'name'>;
13
+ helperText?: TextFieldProps['helperText'];
14
+ label?: ReactNode;
15
+ placeholder?: string;
16
+ textReadOnly?: boolean;
17
+ slotProps?: Omit<TimePickerSlotProps<TEnableAccessibleFieldDOMStructure>, 'textField'>;
18
+ transform?: {
19
+ input?: (value: PathValue<TFieldValues, TName>) => TValue | null;
20
+ output?: (eventOrValue: EventOrValue<PathValue<TFieldValues, TName>>, value?: PathValue<TFieldValues, TName>) => PathValue<TFieldValues, TName>;
21
+ };
22
+ gridProps?: GridProps;
23
+ timePickerProps?: Omit<TimePickerProps<TEnableAccessibleFieldDOMStructure>, 'value' | 'slotProps'>;
24
+ variant?: TextFieldVariants;
25
+ }
26
+ export declare const TimePickerElement: {
27
+ <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TValue extends unknown = any>({ gridProps, ...props }: TimePickerElementProps<TFieldValues, TName, TValue>): React.ReactElement;
28
+ displayName: string;
29
+ };
30
+ //# sourceMappingURL=TimePickerElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerElement.d.ts","sourceRoot":"","sources":["../../../src/wrappers/TimePickerElement/TimePickerElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,sBAAsB,CACrC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,MAAM,SAAS,eAAe,GAAG,eAAe,EAChD,kCAAkC,SAAS,OAAO,GAAG,KAAK;IAE1D,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,mBAAmB,KAAK,SAAS,CAAC;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,IAAI,CACd,mBAAmB,CAAC,kCAAkC,CAAC,EACvD,WAAW,CACZ,CAAC;IACF,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;QACjE,MAAM,CAAC,EAAE,CACP,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAC1D,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,KACnC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KACrC,CAAC;IACF,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe,CAAC,EAAE,IAAI,CACpB,eAAe,CAAC,kCAAkC,CAAC,EACnD,OAAO,GAAG,WAAW,CACtB,CAAC;IACF,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AA+GD,eAAO,MAAM,iBAAiB;KAC5B,YAAY,SAAS,WAAW,gBAChC,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,4BACrC,MAAM,iDAIL,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY;;CAM1E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { TimePickerElement } from "./TimePickerElement";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wrappers/TimePickerElement/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -25,9 +25,8 @@
25
25
 
26
26
 
27
27
 
28
- var _chunkDKD73ADKcjs = require('../chunk-DKD73ADK.cjs');
28
+ var _chunk2QTXS736cjs = require('../chunk-2QTXS736.cjs');
29
29
  require('../chunk-Y3QTSDLJ.cjs');
30
- require('../chunk-EYXPJMEF.cjs');
31
30
  require('../chunk-LUW7V5GI.cjs');
32
31
 
33
32
 
@@ -56,5 +55,5 @@ require('../chunk-LUW7V5GI.cjs');
56
55
 
57
56
 
58
57
 
59
- exports.AsyncMultiSelect2 = _chunkDKD73ADKcjs.AsyncMultiSelect2; exports.CheckboxElement = _chunkDKD73ADKcjs.CheckboxElement; exports.CheckboxGroup = _chunkDKD73ADKcjs.CheckboxGroup; exports.DatePickerElement = _chunkDKD73ADKcjs.DatePickerElement; exports.DatePickerElementCore = _chunkDKD73ADKcjs.DatePickerElementCore; exports.Field = _chunkDKD73ADKcjs.Field; exports.PasswordElement = _chunkDKD73ADKcjs.PasswordElement; exports.RadioButtonGroup = _chunkDKD73ADKcjs.RadioButtonGroup; exports.SelectCascadeElement = _chunkDKD73ADKcjs.SelectCascadeElement; exports.SelectElement = _chunkDKD73ADKcjs.SelectElement; exports.SelectMultiElement = _chunkDKD73ADKcjs.SelectMultiElement; exports.TextFieldElement = _chunkDKD73ADKcjs.TextFieldElement; exports.TimePickerElement = _chunkDKD73ADKcjs.TimePickerElement; exports.createDateInputTransform = _chunkDKD73ADKcjs.createDateInputTransform; exports.createDateOutputTransform = _chunkDKD73ADKcjs.createDateOutputTransform; exports.createDefaultDatePickerConfig = _chunkDKD73ADKcjs.createDefaultDatePickerConfig; exports.createStableKey = _chunkDKD73ADKcjs.createStableKey; exports.extractErrorMessage = _chunkDKD73ADKcjs.extractErrorMessage; exports.isParsableDateString = _chunkDKD73ADKcjs.isParsableDateString; exports.isValidDate = _chunkDKD73ADKcjs.isValidDate; exports.isValidOption = _chunkDKD73ADKcjs.isValidOption; exports.normalizeOptions = _chunkDKD73ADKcjs.normalizeOptions; exports.readDatePickerValueAsDate = _chunkDKD73ADKcjs.readDatePickerValueAsDate; exports.useDatePickerStyles = _chunkDKD73ADKcjs.useDatePickerStyles; exports.useDatePickerValidation = _chunkDKD73ADKcjs.useDatePickerValidation; exports.useDatePickerValue = _chunkDKD73ADKcjs.useDatePickerValue;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImM6XFxVdHRhbVxcUHJvamVjdHNcXEdOV2ViU29mdC5VSVxccGFja2FnZXNcXHVpXFxkaXN0XFx3cmFwcGVyc1xcaW5kZXguY2pzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNGLHlEQUE4QjtBQUM5QixpQ0FBOEI7QUFDOUIsaUNBQThCO0FBQzlCLGlDQUE4QjtBQUM5QjtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRiw2ckRBQUMiLCJmaWxlIjoiQzpcXFV0dGFtXFxQcm9qZWN0c1xcR05XZWJTb2Z0LlVJXFxwYWNrYWdlc1xcdWlcXGRpc3RcXHdyYXBwZXJzXFxpbmRleC5janMifQ==
58
+ exports.AsyncMultiSelect2 = _chunk2QTXS736cjs.AsyncMultiSelect2; exports.CheckboxElement = _chunk2QTXS736cjs.CheckboxElement; exports.CheckboxGroup = _chunk2QTXS736cjs.CheckboxGroup; exports.DatePickerElement = _chunk2QTXS736cjs.DatePickerElement; exports.DatePickerElementCore = _chunk2QTXS736cjs.DatePickerElementCore; exports.Field = _chunk2QTXS736cjs.Field; exports.PasswordElement = _chunk2QTXS736cjs.PasswordElement; exports.RadioButtonGroup = _chunk2QTXS736cjs.RadioButtonGroup; exports.SelectCascadeElement = _chunk2QTXS736cjs.SelectCascadeElement; exports.SelectElement = _chunk2QTXS736cjs.SelectElement; exports.SelectMultiElement = _chunk2QTXS736cjs.SelectMultiElement; exports.TextFieldElement = _chunk2QTXS736cjs.TextFieldElement; exports.TimePickerElement = _chunk2QTXS736cjs.TimePickerElement; exports.createDateInputTransform = _chunk2QTXS736cjs.createDateInputTransform; exports.createDateOutputTransform = _chunk2QTXS736cjs.createDateOutputTransform; exports.createDefaultDatePickerConfig = _chunk2QTXS736cjs.createDefaultDatePickerConfig; exports.createStableKey = _chunk2QTXS736cjs.createStableKey; exports.extractErrorMessage = _chunk2QTXS736cjs.extractErrorMessage; exports.isParsableDateString = _chunk2QTXS736cjs.isParsableDateString; exports.isValidDate = _chunk2QTXS736cjs.isValidDate; exports.isValidOption = _chunk2QTXS736cjs.isValidOption; exports.normalizeOptions = _chunk2QTXS736cjs.normalizeOptions; exports.readDatePickerValueAsDate = _chunk2QTXS736cjs.readDatePickerValueAsDate; exports.useDatePickerStyles = _chunk2QTXS736cjs.useDatePickerStyles; exports.useDatePickerValidation = _chunk2QTXS736cjs.useDatePickerValidation; exports.useDatePickerValue = _chunk2QTXS736cjs.useDatePickerValue;
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImQ6XFxQcm9qZWN0c1xcR05XZWJTb2Z0LlVJXFxwYWNrYWdlc1xcdWlcXGRpc3RcXHdyYXBwZXJzXFxpbmRleC5janMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0YseURBQThCO0FBQzlCLGlDQUE4QjtBQUM5QixpQ0FBOEI7QUFDOUI7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0YsNnJEQUFDIiwiZmlsZSI6IkQ6XFxQcm9qZWN0c1xcR05XZWJTb2Z0LlVJXFxwYWNrYWdlc1xcdWlcXGRpc3RcXHdyYXBwZXJzXFxpbmRleC5janMifQ==
@@ -0,0 +1,14 @@
1
+ export * from "./types";
2
+ export * from "./AsyncMultiSelect2";
3
+ export * from "./CheckboxElement";
4
+ export * from "./CheckboxGroup";
5
+ export * from "./DatePickerElement";
6
+ export * from "./PasswordElement";
7
+ export * from "./RadioButtonGroup";
8
+ export * from "./SelectCascadeElement";
9
+ export * from "./SelectElement";
10
+ export * from "./SelectMultiElement";
11
+ export * from "./TextFieldElement";
12
+ export * from "./TimePickerElement";
13
+ export * from "./Field";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wrappers/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,qBAAqB,CAAC;AAEpC,cAAc,mBAAmB,CAAC;AAElC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,sBAAsB,CAAC;AAErC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,SAAS,CAAC"}
@@ -25,9 +25,8 @@ import {
25
25
  useDatePickerStyles,
26
26
  useDatePickerValidation,
27
27
  useDatePickerValue
28
- } from "../chunk-EOUSOGZ6.js";
28
+ } from "../chunk-HKO2FXDM.js";
29
29
  import "../chunk-GVWCGJ3F.js";
30
- import "../chunk-BXWPG6VW.js";
31
30
  import "../chunk-FYU2OIMD.js";
32
31
  export {
33
32
  AsyncMultiSelect2,
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Common type definitions for wrapper components
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ /**
7
+ * Base option type for select-based components
8
+ *
9
+ * @template V - The value type (string | number | boolean)
10
+ *
11
+ * @public
12
+ */
13
+ export interface BaseOption<V = string | number> {
14
+ /**
15
+ * Display label for the option
16
+ */
17
+ Label: string;
18
+ /**
19
+ * The value of the option
20
+ */
21
+ Value: V;
22
+ /**
23
+ * Whether the option is disabled
24
+ */
25
+ disabled?: boolean;
26
+ }
27
+ /**
28
+ * Flexible option type that extends base option with additional properties
29
+ *
30
+ * @template T - Additional properties object
31
+ *
32
+ * @public
33
+ */
34
+ export type FlexibleOption<T extends Record<string, unknown> = Record<string, unknown>> = T & BaseOption;
35
+ /**
36
+ * Option type with customizable key names
37
+ * Useful for components that accept custom labelField/valueField props
38
+ *
39
+ * @template TValueKey - The property name for value
40
+ * @template TLabelKey - The property name for label
41
+ * @template TDisabledKey - The property name for disabled flag
42
+ *
43
+ * @public
44
+ */
45
+ export type CustomKeyOption<TValueKey extends string = string, TLabelKey extends string = string, TDisabledKey extends string = string> = Record<TValueKey, string | number | boolean> & Record<TLabelKey, string> & Partial<Record<TDisabledKey, boolean>> & Record<string, unknown>;
46
+ /**
47
+ * Legacy option type for backward compatibility with existing code
48
+ * Uses Value/Label naming convention
49
+ *
50
+ * @deprecated Use BaseOption or FlexibleOption instead
51
+ * @public
52
+ */
53
+ export interface LegacyOption {
54
+ /**
55
+ * Display label for the option (capitalized key name)
56
+ */
57
+ Label: string;
58
+ /**
59
+ * The value of the option (capitalized key name)
60
+ */
61
+ Value: number;
62
+ /**
63
+ * Whether the option is disabled
64
+ */
65
+ Disabled?: boolean;
66
+ }
67
+ /**
68
+ * Type guard to check if an object is a valid option
69
+ *
70
+ * @param Value - Value to check
71
+ * @returns True if the value is a valid option object
72
+ *
73
+ * @public
74
+ */
75
+ export declare function isValidOption(value: unknown): value is BaseOption;
76
+ /**
77
+ * Helper to normalize options to BaseOption format
78
+ *
79
+ * @param options - Options array to normalize
80
+ * @param labelField - Custom label field name in option objects
81
+ * @param valueField - Custom value field name in option objects
82
+ * @returns Normalized options array
83
+ *
84
+ * @public
85
+ */
86
+ export declare function normalizeOptions<T extends Record<string, unknown>>(options: T[], labelField?: string, valueField?: string): BaseOption[];
87
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/wrappers/types/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC;IAET;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzD,CAAC,GAAG,UAAU,CAAC;AAEnB;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,CACzB,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAC9C,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GACzB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAWjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,EAAE,CAAC,EAAE,EACZ,UAAU,SAAU,EACpB,UAAU,SAAU,GACnB,UAAU,EAAE,CAMd"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Wrapper component type definitions
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export type { BaseOption, FlexibleOption, CustomKeyOption, LegacyOption, } from './common';
7
+ export { isValidOption, normalizeOptions } from './common';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wrappers/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gnwebsoft/ui",
3
- "version": "4.0.3",
3
+ "version": "4.0.5",
4
4
  "type": "module",
5
5
  "description": "A set of reusable wrappers for MUI v7",
6
6
  "author": "GNWebsoft Private Limited",
@@ -20,7 +20,7 @@
20
20
  "dev:native": "node scripts/native-watch.js",
21
21
  "dev:nodemon": "nodemon --watch src --ext ts,tsx --exec \"tsup\"",
22
22
  "dev:legacy": "tsup --watch --ignore-watch node_modules --ignore-watch dist",
23
- "build": "pnpm run clean && tsup",
23
+ "build": "pnpm run clean && tsup && tsc -p tsconfig.dts.json",
24
24
  "build:watch": "tsup --watch",
25
25
  "clean": "rimraf ./dist/* --glob --no-verbose --no-interactive",
26
26
  "lint": "eslint src --fix",
@@ -81,11 +81,6 @@
81
81
  "types": "./dist/wrappers/index.d.ts",
82
82
  "import": "./dist/wrappers/index.js",
83
83
  "require": "./dist/wrappers/index.cjs"
84
- },
85
- "./i18n": {
86
- "types": "./dist/i18n/index.d.ts",
87
- "import": "./dist/i18n/index.js",
88
- "require": "./dist/i18n/index.cjs"
89
84
  }
90
85
  },
91
86
  "devDependencies": {
@@ -114,6 +109,7 @@
114
109
  "jest-axe": "^10.0.0",
115
110
  "jest-environment-jsdom": "^30.0.5",
116
111
  "jest-junit": "^16.0.0",
112
+ "mui-one-time-password-input": "^5.0.0",
117
113
  "nodemon": "^3.1.10",
118
114
  "prettier": "^3.6.2",
119
115
  "rimraf": "^6.0.1",
@@ -139,9 +135,9 @@
139
135
  "autosuggest-highlight": "^3.3.4",
140
136
  "axios": "^1.12.2",
141
137
  "dayjs": "^1.11.18",
142
- "mui-one-time-password-input": "^3.0.2",
143
138
  "es-toolkit": "^1.39.10",
144
139
  "lodash": "^4.17.21",
140
+ "mui-one-time-password-input": "^3.0.2",
145
141
  "react": "^19.1.1",
146
142
  "react-dom": "^19.1.1",
147
143
  "react-hook-form": "^7.63.0",
@@ -1,108 +0,0 @@
1
- // src/i18n/I18nContext.tsx
2
- import { createContext, useContext, useMemo } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var I18nContext = createContext(null);
5
- I18nContext.displayName = "I18nContext";
6
- var NamespaceContext = createContext(
7
- null
8
- );
9
- NamespaceContext.displayName = "NamespaceContext";
10
- function I18nProvider({
11
- t,
12
- currentLanguage,
13
- children
14
- }) {
15
- const value = useMemo(
16
- () => ({
17
- t,
18
- currentLanguage
19
- }),
20
- [t, currentLanguage]
21
- );
22
- return /* @__PURE__ */ jsx(I18nContext.Provider, { value, children });
23
- }
24
- I18nProvider.displayName = "I18nProvider";
25
- function TranslationNamespace({
26
- namespace,
27
- children
28
- }) {
29
- const parentContext = useContext(NamespaceContext);
30
- const value = useMemo(() => {
31
- const fullNamespace = parentContext ? `${parentContext.namespace}.${namespace}` : namespace;
32
- return { namespace: fullNamespace };
33
- }, [namespace, parentContext]);
34
- return /* @__PURE__ */ jsx(NamespaceContext.Provider, { value, children });
35
- }
36
- TranslationNamespace.displayName = "TranslationNamespace";
37
- function useNamespace() {
38
- const context = useContext(NamespaceContext);
39
- return context?.namespace;
40
- }
41
- function useI18n(namespaceOverride) {
42
- const i18nContext = useContext(I18nContext);
43
- const namespaceContext = useContext(NamespaceContext);
44
- const namespace = namespaceOverride ?? namespaceContext?.namespace;
45
- if (!i18nContext) {
46
- return {
47
- t: (key) => {
48
- return namespace ? `${namespace}.${key}` : key;
49
- },
50
- currentLanguage: void 0
51
- };
52
- }
53
- if (namespace) {
54
- return {
55
- ...i18nContext,
56
- t: (key, options) => {
57
- const prefixedKey = `${namespace}.${key}`;
58
- return i18nContext.t(prefixedKey, options);
59
- }
60
- };
61
- }
62
- return i18nContext;
63
- }
64
- function resolveLabel(t, label, labelKey, namespace, contextNamespace, options) {
65
- if (label !== void 0) {
66
- return label;
67
- }
68
- if (labelKey) {
69
- const effectiveNamespace = namespace ?? contextNamespace;
70
- const fullKey = effectiveNamespace ? `${effectiveNamespace}.${labelKey}` : labelKey;
71
- return t(fullKey, options);
72
- }
73
- return void 0;
74
- }
75
- function useFormI18n() {
76
- const i18nContext = useContext(I18nContext);
77
- const namespaceContext = useContext(NamespaceContext);
78
- const contextNamespace = namespaceContext?.namespace;
79
- const t = i18nContext?.t ?? ((key) => key);
80
- const resolve = (label, labelKey, namespaceOverride, options) => {
81
- return resolveLabel(
82
- t,
83
- label,
84
- labelKey,
85
- namespaceOverride,
86
- contextNamespace,
87
- options
88
- );
89
- };
90
- return {
91
- t,
92
- currentLanguage: i18nContext?.currentLanguage,
93
- namespace: contextNamespace,
94
- resolveLabel: resolve
95
- };
96
- }
97
-
98
- export {
99
- I18nContext,
100
- NamespaceContext,
101
- I18nProvider,
102
- TranslationNamespace,
103
- useNamespace,
104
- useI18n,
105
- resolveLabel,
106
- useFormI18n
107
- };
108
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2kxOG4vSTE4bkNvbnRleHQudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbi8qKlxuICogVHJhbnNsYXRpb24gZnVuY3Rpb24gdHlwZSB0aGF0IG1hdGNoZXMgaTE4bmV4dCdzIHQgZnVuY3Rpb24gc2lnbmF0dXJlXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHRyYW5zbGF0aW9uIGtleSAoZS5nLiwgXCJjb21tb24uc2F2ZVwiIG9yIFwiTWFzdGVyLkNvdW50cnkuQ291bnRyeU5hbWUuTGFiZWxcIilcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgaW50ZXJwb2xhdGlvbiBvcHRpb25zIChlLmcuLCB7IGNvdW50OiA1LCBuYW1lOiBcIkpvaG5cIiB9KVxuICogQHJldHVybnMgVGhlIHRyYW5zbGF0ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uRnVuY3Rpb24gPSAoXG4gIGtleTogc3RyaW5nLFxuICBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbikgPT4gc3RyaW5nO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBJMThuIGNvbnRleHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuQ29udGV4dFZhbHVlIHtcbiAgLyoqXG4gICAqIFRoZSB0cmFuc2xhdGlvbiBmdW5jdGlvbiAodHlwaWNhbGx5IGZyb20gdXNlVHJhbnNsYXRlKCkudClcbiAgICovXG4gIHQ6IFRyYW5zbGF0aW9uRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgbGFuZ3VhZ2UgY29kZSAob3B0aW9uYWwsIGZvciBjb21wb25lbnRzIHRoYXQgbmVlZCBpdClcbiAgICovXG4gIGN1cnJlbnRMYW5ndWFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBOYW1lc3BhY2UgY29udGV4dCB2YWx1ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZUNvbnRleHRWYWx1ZSB7XG4gIC8qKlxuICAgKiBDdXJyZW50IG5hbWVzcGFjZSAoZS5nLiwgXCJNYXN0ZXIuQ291bnRyeVwiKVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSTE4biBDb250ZXh0IGZvciBwcm92aWRpbmcgdHJhbnNsYXRpb24gY2FwYWJpbGl0aWVzIHRvIGZvcm0gY29tcG9uZW50cy5cbiAqXG4gKiBXaGVuIGEgcHJvdmlkZXIgaXMgbm90IGF2YWlsYWJsZSwgY29tcG9uZW50cyB3aWxsIHVzZSB0aGUgdHJhbnNsYXRpb24ga2V5IGFzLWlzXG4gKiAocGFzc3Rocm91Z2ggYmVoYXZpb3IpLCBhbGxvd2luZyB0aGUgcGFja2FnZSB0byB3b3JrIHdpdGhvdXQgcmVxdWlyaW5nIGkxOG4gc2V0dXAuXG4gKi9cbmV4cG9ydCBjb25zdCBJMThuQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8STE4bkNvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5JMThuQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdJMThuQ29udGV4dCc7XG5cbi8qKlxuICogTmFtZXNwYWNlIENvbnRleHQgZm9yIHByb3ZpZGluZyBhdXRvbWF0aWMgbmFtZXNwYWNlIHByZWZpeGluZyB0byBmb3JtIGNvbXBvbmVudHMuXG4gKlxuICogVGhpcyBhbGxvd3Mgc2V0dGluZyBhIG5hbWVzcGFjZSBvbmNlIGF0IHRoZSBmb3JtL21vZHVsZSBsZXZlbCwgYW5kIGFsbCBjaGlsZFxuICogY29tcG9uZW50cyB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIGl0IGZvciB0aGVpciB0cmFuc2xhdGlvbiBrZXlzLlxuICovXG5leHBvcnQgY29uc3QgTmFtZXNwYWNlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8TmFtZXNwYWNlQ29udGV4dFZhbHVlIHwgbnVsbD4oXG4gIG51bGxcbik7XG5cbk5hbWVzcGFjZUNvbnRleHQuZGlzcGxheU5hbWUgPSAnTmFtZXNwYWNlQ29udGV4dCc7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBJMThuUHJvdmlkZXIgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4blByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIHRyYW5zbGF0aW9uIGZ1bmN0aW9uIGZyb20geW91ciBpMThuIGxpYnJhcnkgKGUuZy4sIHVzZVRyYW5zbGF0ZSgpLnQpXG4gICAqL1xuICB0OiBUcmFuc2xhdGlvbkZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXJyZW50IGxhbmd1YWdlIGNvZGVcbiAgICovXG4gIGN1cnJlbnRMYW5ndWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ2hpbGQgY29tcG9uZW50cyB0aGF0IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gdGhlIHRyYW5zbGF0aW9uIGNvbnRleHRcbiAgICovXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59XG5cbi8qKlxuICogUHJvdmlkZXIgY29tcG9uZW50IHRoYXQgc3VwcGxpZXMgdGhlIHRyYW5zbGF0aW9uIGZ1bmN0aW9uIHRvIGFsbCBAZ253ZWJzb2Z0L3VpIGNvbXBvbmVudHMuXG4gKlxuICogVGhpcyBhbGxvd3MgZm9ybSBjb21wb25lbnRzIHRvIGFjY2VwdCBgbGFiZWxLZXlgLCBgcGxhY2Vob2xkZXJLZXlgLCBldGMuIGFuZFxuICogYXV0b21hdGljYWxseSB0cmFuc2xhdGUgdGhlbSB1c2luZyB5b3VyIHByb2plY3QncyBpMThuIHNldHVwLlxuICpcbiAqIEBleGFtcGxlXG4gKiBCYXNpYyB1c2FnZSB3aXRoIEBtaW5pbWFsL3V0aWxzL2xvY2FsZXM6XG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IEkxOG5Qcm92aWRlciB9IGZyb20gJ0BnbndlYnNvZnQvdWknO1xuICogaW1wb3J0IHsgdXNlVHJhbnNsYXRlIH0gZnJvbSAnQG1pbmltYWwvdXRpbHMvbG9jYWxlcyc7XG4gKlxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCB7IHQsIGN1cnJlbnRMYW5nIH0gPSB1c2VUcmFuc2xhdGUoKTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPEkxOG5Qcm92aWRlciB0PXt0fSBjdXJyZW50TGFuZ3VhZ2U9e2N1cnJlbnRMYW5nLnZhbHVlfT5cbiAqICAgICAgIDxZb3VyQXBwIC8+XG4gKiAgICAgPC9JMThuUHJvdmlkZXI+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogVXNhZ2Ugd2l0aCByZWFjdC1pMThuZXh0IGRpcmVjdGx5OlxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyBJMThuUHJvdmlkZXIgfSBmcm9tICdAZ253ZWJzb2Z0L3VpJztcbiAqIGltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbiAqXG4gKiBmdW5jdGlvbiBBcHAoKSB7XG4gKiAgIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPEkxOG5Qcm92aWRlciB0PXt0fSBjdXJyZW50TGFuZ3VhZ2U9e2kxOG4ubGFuZ3VhZ2V9PlxuICogICAgICAgPFlvdXJBcHAgLz5cbiAqICAgICA8L0kxOG5Qcm92aWRlcj5cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gSTE4blByb3ZpZGVyKHtcbiAgdCxcbiAgY3VycmVudExhbmd1YWdlLFxuICBjaGlsZHJlbixcbn06IEkxOG5Qcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbzxJMThuQ29udGV4dFZhbHVlPihcbiAgICAoKSA9PiAoe1xuICAgICAgdCxcbiAgICAgIGN1cnJlbnRMYW5ndWFnZSxcbiAgICB9KSxcbiAgICBbdCwgY3VycmVudExhbmd1YWdlXVxuICApO1xuXG4gIHJldHVybiA8STE4bkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9JMThuQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbkkxOG5Qcm92aWRlci5kaXNwbGF5TmFtZSA9ICdJMThuUHJvdmlkZXInO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgVHJhbnNsYXRpb25OYW1lc3BhY2UgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsYXRpb25OYW1lc3BhY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHRvIHVzZSBmb3IgYWxsIGNoaWxkIGNvbXBvbmVudHMgKGUuZy4sIFwiTWFzdGVyLkNvdW50cnlcIilcbiAgICovXG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGlsZCBjb21wb25lbnRzIHRoYXQgd2lsbCBpbmhlcml0IHRoaXMgbmFtZXNwYWNlXG4gICAqL1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufVxuXG4vKipcbiAqIFByb3ZpZGVyIGNvbXBvbmVudCB0aGF0IHNldHMgYSBuYW1lc3BhY2UgZm9yIGFsbCBjaGlsZCBAZ253ZWJzb2Z0L3VpIGZvcm0gY29tcG9uZW50cy5cbiAqXG4gKiBXaGVuIHVzZWQsIGFsbCBjaGlsZCBjb21wb25lbnRzIHdpdGggYGxhYmVsS2V5YCwgYHBsYWNlaG9sZGVyS2V5YCwgZXRjLiB3aWxsXG4gKiBhdXRvbWF0aWNhbGx5IGhhdmUgdGhpcyBuYW1lc3BhY2UgcHJlcGVuZGVkIHRvIHRoZWlyIGtleXMuXG4gKlxuICogTmFtZXNwYWNlcyBjYW4gYmUgbmVzdGVkIC0gY2hpbGQgbmFtZXNwYWNlcyBhcmUgYXBwZW5kZWQgdG8gcGFyZW50IG5hbWVzcGFjZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlIC0gc2V0IG5hbWVzcGFjZSBvbmNlIGZvciBhIGZvcm06XG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IFRyYW5zbGF0aW9uTmFtZXNwYWNlLCBGaWVsZCB9IGZyb20gJ0BnbndlYnNvZnQvdWknO1xuICpcbiAqIGZ1bmN0aW9uIENvdW50cnlGb3JtKCkge1xuICogICByZXR1cm4gKFxuICogICAgIDxUcmFuc2xhdGlvbk5hbWVzcGFjZSBuYW1lc3BhY2U9XCJNYXN0ZXIuQ291bnRyeVwiPlxuICogICAgICAgPEZpZWxkLlRleHQgbmFtZT1cImNvdW50cnlOYW1lXCIgbGFiZWxLZXk9XCJDb3VudHJ5TmFtZS5MYWJlbFwiIC8+XG4gKiAgICAgICA8RmllbGQuVGV4dCBuYW1lPVwiaXNkQ29kZVwiIGxhYmVsS2V5PVwiSVNEQ29kZS5MYWJlbFwiIC8+XG4gKiAgICAgPC9UcmFuc2xhdGlvbk5hbWVzcGFjZT5cbiAqICAgKTtcbiAqIH1cbiAqIC8vIGxhYmVsS2V5PVwiQ291bnRyeU5hbWUuTGFiZWxcIiByZXNvbHZlcyB0byBcIk1hc3Rlci5Db3VudHJ5LkNvdW50cnlOYW1lLkxhYmVsXCJcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBOZXN0ZWQgbmFtZXNwYWNlczpcbiAqIGBgYHRzeFxuICogPFRyYW5zbGF0aW9uTmFtZXNwYWNlIG5hbWVzcGFjZT1cIk1hc3RlclwiPlxuICogICA8VHJhbnNsYXRpb25OYW1lc3BhY2UgbmFtZXNwYWNlPVwiQ291bnRyeVwiPlxuICogICAgIDxGaWVsZC5UZXh0IGxhYmVsS2V5PVwiQ291bnRyeU5hbWUuTGFiZWxcIiAvPlxuICogICAgIHsvKiBSZXNvbHZlcyB0byBcIk1hc3Rlci5Db3VudHJ5LkNvdW50cnlOYW1lLkxhYmVsXCIgKlxcL31cbiAqICAgPC9UcmFuc2xhdGlvbk5hbWVzcGFjZT5cbiAqIDwvVHJhbnNsYXRpb25OYW1lc3BhY2U+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogT3ZlcnJpZGUgbmFtZXNwYWNlIGZvciBzcGVjaWZpYyBmaWVsZDpcbiAqIGBgYHRzeFxuICogPFRyYW5zbGF0aW9uTmFtZXNwYWNlIG5hbWVzcGFjZT1cIk1hc3Rlci5Db3VudHJ5XCI+XG4gKiAgIDxGaWVsZC5UZXh0IGxhYmVsS2V5PVwiQ291bnRyeU5hbWUuTGFiZWxcIiAvPlxuICogICB7LyogVXNlcyBcIk1hc3Rlci5Db3VudHJ5LkNvdW50cnlOYW1lLkxhYmVsXCIgKlxcL31cbiAqXG4gKiAgIDxGaWVsZC5UZXh0IGxhYmVsS2V5PVwiU2F2ZVwiIG5hbWVzcGFjZT1cImNvbW1vblwiIC8+XG4gKiAgIHsvKiBVc2VzIFwiY29tbW9uLlNhdmVcIiBpbnN0ZWFkICpcXC99XG4gKiA8L1RyYW5zbGF0aW9uTmFtZXNwYWNlPlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUcmFuc2xhdGlvbk5hbWVzcGFjZSh7XG4gIG5hbWVzcGFjZSxcbiAgY2hpbGRyZW4sXG59OiBUcmFuc2xhdGlvbk5hbWVzcGFjZVByb3BzKSB7XG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSB1c2VDb250ZXh0KE5hbWVzcGFjZUNvbnRleHQpO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbzxOYW1lc3BhY2VDb250ZXh0VmFsdWU+KCgpID0+IHtcbiAgICAvLyBJZiB0aGVyZSdzIGEgcGFyZW50IG5hbWVzcGFjZSwgY29tYmluZSB0aGVtXG4gICAgY29uc3QgZnVsbE5hbWVzcGFjZSA9IHBhcmVudENvbnRleHRcbiAgICAgID8gYCR7cGFyZW50Q29udGV4dC5uYW1lc3BhY2V9LiR7bmFtZXNwYWNlfWBcbiAgICAgIDogbmFtZXNwYWNlO1xuXG4gICAgcmV0dXJuIHsgbmFtZXNwYWNlOiBmdWxsTmFtZXNwYWNlIH07XG4gIH0sIFtuYW1lc3BhY2UsIHBhcmVudENvbnRleHRdKTtcblxuICByZXR1cm4gKFxuICAgIDxOYW1lc3BhY2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9OYW1lc3BhY2VDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG5UcmFuc2xhdGlvbk5hbWVzcGFjZS5kaXNwbGF5TmFtZSA9ICdUcmFuc2xhdGlvbk5hbWVzcGFjZSc7XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgbmFtZXNwYWNlIGZyb20gY29udGV4dC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBuYW1lc3BhY2Ugb3IgdW5kZWZpbmVkIGlmIG5vdCBpbiBhIFRyYW5zbGF0aW9uTmFtZXNwYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VOYW1lc3BhY2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTmFtZXNwYWNlQ29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRleHQ/Lm5hbWVzcGFjZTtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyB0aGUgdHJhbnNsYXRpb24gZnVuY3Rpb24gZnJvbSB0aGUgSTE4biBjb250ZXh0LlxuICpcbiAqIElmIG5vIEkxOG5Qcm92aWRlciBpcyBwcmVzZW50LCByZXR1cm5zIGEgcGFzc3Rocm91Z2ggZnVuY3Rpb24gdGhhdFxuICogcmV0dXJucyB0aGUga2V5IGFzLWlzLCBhbGxvd2luZyBjb21wb25lbnRzIHRvIHdvcmsgd2l0aG91dCBpMThuIHNldHVwLlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2VPdmVycmlkZSAtIE9wdGlvbmFsIG5hbWVzcGFjZSB0byBvdmVycmlkZSB0aGUgY29udGV4dCBuYW1lc3BhY2VcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHRyYW5zbGF0aW9uIGZ1bmN0aW9uIGFuZCBjdXJyZW50IGxhbmd1YWdlXG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlIGluIGEgY29tcG9uZW50OlxuICogYGBgdHN4XG4gKiBmdW5jdGlvbiBNeUNvbXBvbmVudCgpIHtcbiAqICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gKiAgIHJldHVybiA8c3Bhbj57dCgnY29tbW9uLnNhdmUnKX08L3NwYW4+O1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggVHJhbnNsYXRpb25OYW1lc3BhY2UgKHJlY29tbWVuZGVkKTpcbiAqIGBgYHRzeFxuICogPFRyYW5zbGF0aW9uTmFtZXNwYWNlIG5hbWVzcGFjZT1cIk1hc3Rlci5Db3VudHJ5XCI+XG4gKiAgIDxNeUZvcm1Db21wb25lbnQgLz5cbiAqIDwvVHJhbnNsYXRpb25OYW1lc3BhY2U+XG4gKlxuICogZnVuY3Rpb24gTXlGb3JtQ29tcG9uZW50KCkge1xuICogICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAqICAgcmV0dXJuIDxzcGFuPnt0KCdDb3VudHJ5TmFtZS5MYWJlbCcpfTwvc3Bhbj47IC8vIFJlc29sdmVzIHRvIFwiTWFzdGVyLkNvdW50cnkuQ291bnRyeU5hbWUuTGFiZWxcIlxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJMThuKG5hbWVzcGFjZU92ZXJyaWRlPzogc3RyaW5nKTogSTE4bkNvbnRleHRWYWx1ZSB7XG4gIGNvbnN0IGkxOG5Db250ZXh0ID0gdXNlQ29udGV4dChJMThuQ29udGV4dCk7XG4gIGNvbnN0IG5hbWVzcGFjZUNvbnRleHQgPSB1c2VDb250ZXh0KE5hbWVzcGFjZUNvbnRleHQpO1xuXG4gIC8vIERldGVybWluZSB3aGljaCBuYW1lc3BhY2UgdG8gdXNlXG4gIGNvbnN0IG5hbWVzcGFjZSA9IG5hbWVzcGFjZU92ZXJyaWRlID8/IG5hbWVzcGFjZUNvbnRleHQ/Lm5hbWVzcGFjZTtcblxuICAvLyBJZiBubyBwcm92aWRlciwgcmV0dXJuIHBhc3N0aHJvdWdoIHRoYXQgcmV0dXJucyB0aGUga2V5IGFzLWlzXG4gIGlmICghaTE4bkNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdDogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIFJldHVybiB0aGUga2V5IGFzLWlzIHdoZW4gbm8gcHJvdmlkZXIgaXMgYXZhaWxhYmxlXG4gICAgICAgIC8vIFRoaXMgYWxsb3dzIGNvbXBvbmVudHMgdG8gd29yayB3aXRob3V0IGkxOG4gc2V0dXBcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uJHtrZXl9YCA6IGtleTtcbiAgICAgIH0sXG4gICAgICBjdXJyZW50TGFuZ3VhZ2U6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLy8gSWYgbmFtZXNwYWNlIGlzIHByb3ZpZGVkIChmcm9tIGNvbnRleHQgb3Igb3ZlcnJpZGUpLCB3cmFwIHRoZSB0IGZ1bmN0aW9uIHRvIHByZWZpeCBrZXlzXG4gIGlmIChuYW1lc3BhY2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uaTE4bkNvbnRleHQsXG4gICAgICB0OiAoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZEtleSA9IGAke25hbWVzcGFjZX0uJHtrZXl9YDtcblxuICAgICAgICByZXR1cm4gaTE4bkNvbnRleHQudChwcmVmaXhlZEtleSwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gaTE4bkNvbnRleHQ7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlc29sdmUgYSBsYWJlbCBmcm9tIGVpdGhlciBhIGRpcmVjdCBzdHJpbmcgb3IgYSB0cmFuc2xhdGlvbiBrZXkuXG4gKlxuICogVGhpcyBpcyB1c2VkIGludGVybmFsbHkgYnkgZm9ybSBjb21wb25lbnRzIHRvIHN1cHBvcnQgYm90aDpcbiAqIC0gYGxhYmVsPVwiTXkgTGFiZWxcImAgKGRpcmVjdCBzdHJpbmcpXG4gKiAtIGBsYWJlbEtleT1cIkNvdW50cnlOYW1lLkxhYmVsXCJgICh0cmFuc2xhdGlvbiBrZXksIG5hbWVzcGFjZSBmcm9tIGNvbnRleHQpXG4gKlxuICogQHBhcmFtIHQgLSBUcmFuc2xhdGlvbiBmdW5jdGlvblxuICogQHBhcmFtIGxhYmVsIC0gRGlyZWN0IGxhYmVsIHN0cmluZyAodGFrZXMgcHJlY2VkZW5jZSlcbiAqIEBwYXJhbSBsYWJlbEtleSAtIFRyYW5zbGF0aW9uIGtleVxuICogQHBhcmFtIG5hbWVzcGFjZSAtIE9wdGlvbmFsIG5hbWVzcGFjZSB0byBvdmVycmlkZSBjb250ZXh0IG5hbWVzcGFjZVxuICogQHBhcmFtIGNvbnRleHROYW1lc3BhY2UgLSBOYW1lc3BhY2UgZnJvbSBUcmFuc2xhdGlvbk5hbWVzcGFjZSBjb250ZXh0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGludGVycG9sYXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgUmVzb2x2ZWQgbGFiZWwgc3RyaW5nIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUxhYmVsKFxuICB0OiBUcmFuc2xhdGlvbkZ1bmN0aW9uLFxuICBsYWJlbD86IHN0cmluZyxcbiAgbGFiZWxLZXk/OiBzdHJpbmcsXG4gIG5hbWVzcGFjZT86IHN0cmluZyxcbiAgY29udGV4dE5hbWVzcGFjZT86IHN0cmluZyxcbiAgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBEaXJlY3QgbGFiZWwgdGFrZXMgcHJlY2VkZW5jZVxuICBpZiAobGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIC8vIElmIGxhYmVsS2V5IGlzIHByb3ZpZGVkLCB0cmFuc2xhdGUgaXRcbiAgaWYgKGxhYmVsS2V5KSB7XG4gICAgLy8gbmFtZXNwYWNlIHByb3Agb3ZlcnJpZGVzIGNvbnRleHQgbmFtZXNwYWNlXG4gICAgY29uc3QgZWZmZWN0aXZlTmFtZXNwYWNlID0gbmFtZXNwYWNlID8/IGNvbnRleHROYW1lc3BhY2U7XG4gICAgY29uc3QgZnVsbEtleSA9IGVmZmVjdGl2ZU5hbWVzcGFjZVxuICAgICAgPyBgJHtlZmZlY3RpdmVOYW1lc3BhY2V9LiR7bGFiZWxLZXl9YFxuICAgICAgOiBsYWJlbEtleTtcblxuICAgIHJldHVybiB0KGZ1bGxLZXksIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBIb29rIGZvciBmb3JtIGNvbXBvbmVudHMgdG8gcmVzb2x2ZSBsYWJlbHMgd2l0aCBuYW1lc3BhY2Ugc3VwcG9ydC5cbiAqXG4gKiBUaGlzIGhvb2sgY29tYmluZXMgSTE4biBjb250ZXh0LCBOYW1lc3BhY2UgY29udGV4dCwgYW5kIHByb3ZpZGVzXG4gKiBhIGNvbnZlbmllbnQgd2F5IHRvIHJlc29sdmUgbGFiZWxzIGluIGZvcm0gY29tcG9uZW50cy5cbiAqXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0IGZ1bmN0aW9uLCByZXNvbHZlTGFiZWwgaGVscGVyLCBhbmQgbmFtZXNwYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JtSTE4bigpIHtcbiAgY29uc3QgaTE4bkNvbnRleHQgPSB1c2VDb250ZXh0KEkxOG5Db250ZXh0KTtcbiAgY29uc3QgbmFtZXNwYWNlQ29udGV4dCA9IHVzZUNvbnRleHQoTmFtZXNwYWNlQ29udGV4dCk7XG5cbiAgY29uc3QgY29udGV4dE5hbWVzcGFjZSA9IG5hbWVzcGFjZUNvbnRleHQ/Lm5hbWVzcGFjZTtcblxuICAvLyBQYXNzdGhyb3VnaCB0IGZ1bmN0aW9uIGlmIG5vIHByb3ZpZGVyXG4gIGNvbnN0IHQ6IFRyYW5zbGF0aW9uRnVuY3Rpb24gPSBpMThuQ29udGV4dD8udCA/PyAoKGtleTogc3RyaW5nKSA9PiBrZXkpO1xuXG4gIGNvbnN0IHJlc29sdmUgPSAoXG4gICAgbGFiZWw/OiBzdHJpbmcsXG4gICAgbGFiZWxLZXk/OiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlT3ZlcnJpZGU/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIHJlc29sdmVMYWJlbChcbiAgICAgIHQsXG4gICAgICBsYWJlbCxcbiAgICAgIGxhYmVsS2V5LFxuICAgICAgbmFtZXNwYWNlT3ZlcnJpZGUsXG4gICAgICBjb250ZXh0TmFtZXNwYWNlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB0LFxuICAgIGN1cnJlbnRMYW5ndWFnZTogaTE4bkNvbnRleHQ/LmN1cnJlbnRMYW5ndWFnZSxcbiAgICBuYW1lc3BhY2U6IGNvbnRleHROYW1lc3BhY2UsXG4gICAgcmVzb2x2ZUxhYmVsOiByZXNvbHZlLFxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVMsZUFBZSxZQUFZLGVBQWU7QUFxSTFDO0FBekZGLElBQU0sY0FBYyxjQUF1QyxJQUFJO0FBRXRFLFlBQVksY0FBYztBQVFuQixJQUFNLG1CQUFtQjtBQUFBLEVBQzlCO0FBQ0Y7QUFFQSxpQkFBaUIsY0FBYztBQThEeEIsU0FBUyxhQUFhO0FBQUEsRUFDM0I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLEdBQXNCO0FBQ3BCLFFBQU0sUUFBUTtBQUFBLElBQ1osT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLElBQ0EsQ0FBQyxHQUFHLGVBQWU7QUFBQSxFQUNyQjtBQUVBLFNBQU8sb0JBQUMsWUFBWSxVQUFaLEVBQXFCLE9BQWUsVUFBUztBQUN2RDtBQUVBLGFBQWEsY0FBYztBQWdFcEIsU0FBUyxxQkFBcUI7QUFBQSxFQUNuQztBQUFBLEVBQ0E7QUFDRixHQUE4QjtBQUM1QixRQUFNLGdCQUFnQixXQUFXLGdCQUFnQjtBQUVqRCxRQUFNLFFBQVEsUUFBK0IsTUFBTTtBQUVqRCxVQUFNLGdCQUFnQixnQkFDbEIsR0FBRyxjQUFjLFNBQVMsSUFBSSxTQUFTLEtBQ3ZDO0FBRUosV0FBTyxFQUFFLFdBQVcsY0FBYztBQUFBLEVBQ3BDLEdBQUcsQ0FBQyxXQUFXLGFBQWEsQ0FBQztBQUU3QixTQUNFLG9CQUFDLGlCQUFpQixVQUFqQixFQUEwQixPQUN4QixVQUNIO0FBRUo7QUFFQSxxQkFBcUIsY0FBYztBQU81QixTQUFTLGVBQW1DO0FBQ2pELFFBQU0sVUFBVSxXQUFXLGdCQUFnQjtBQUUzQyxTQUFPLFNBQVM7QUFDbEI7QUFpQ08sU0FBUyxRQUFRLG1CQUE4QztBQUNwRSxRQUFNLGNBQWMsV0FBVyxXQUFXO0FBQzFDLFFBQU0sbUJBQW1CLFdBQVcsZ0JBQWdCO0FBR3BELFFBQU0sWUFBWSxxQkFBcUIsa0JBQWtCO0FBR3pELE1BQUksQ0FBQyxhQUFhO0FBQ2hCLFdBQU87QUFBQSxNQUNMLEdBQUcsQ0FBQyxRQUFnQjtBQUdsQixlQUFPLFlBQVksR0FBRyxTQUFTLElBQUksR0FBRyxLQUFLO0FBQUEsTUFDN0M7QUFBQSxNQUNBLGlCQUFpQjtBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUdBLE1BQUksV0FBVztBQUNiLFdBQU87QUFBQSxNQUNMLEdBQUc7QUFBQSxNQUNILEdBQUcsQ0FBQyxLQUFhLFlBQXNDO0FBQ3JELGNBQU0sY0FBYyxHQUFHLFNBQVMsSUFBSSxHQUFHO0FBRXZDLGVBQU8sWUFBWSxFQUFFLGFBQWEsT0FBTztBQUFBLE1BQzNDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFpQk8sU0FBUyxhQUNkLEdBQ0EsT0FDQSxVQUNBLFdBQ0Esa0JBQ0EsU0FDb0I7QUFFcEIsTUFBSSxVQUFVLFFBQVc7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFHQSxNQUFJLFVBQVU7QUFFWixVQUFNLHFCQUFxQixhQUFhO0FBQ3hDLFVBQU0sVUFBVSxxQkFDWixHQUFHLGtCQUFrQixJQUFJLFFBQVEsS0FDakM7QUFFSixXQUFPLEVBQUUsU0FBUyxPQUFPO0FBQUEsRUFDM0I7QUFFQSxTQUFPO0FBQ1Q7QUFVTyxTQUFTLGNBQWM7QUFDNUIsUUFBTSxjQUFjLFdBQVcsV0FBVztBQUMxQyxRQUFNLG1CQUFtQixXQUFXLGdCQUFnQjtBQUVwRCxRQUFNLG1CQUFtQixrQkFBa0I7QUFHM0MsUUFBTSxJQUF5QixhQUFhLE1BQU0sQ0FBQyxRQUFnQjtBQUVuRSxRQUFNLFVBQVUsQ0FDZCxPQUNBLFVBQ0EsbUJBQ0EsWUFDdUI7QUFDdkIsV0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLGlCQUFpQixhQUFhO0FBQUEsSUFDOUIsV0FBVztBQUFBLElBQ1gsY0FBYztBQUFBLEVBQ2hCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==