@kaspernj/api-maker 1.0.2011 → 1.0.2013

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 (413) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +10 -1
  2. package/README.md +35 -0
  3. package/android/build.gradle +43 -0
  4. package/android/src/main/AndroidManifest.xml +2 -0
  5. package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
  6. package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
  7. package/build/api.js +120 -0
  8. package/build/attribute-not-loaded-error.js +2 -0
  9. package/build/base-component.js +5 -0
  10. package/build/base-error.js +33 -0
  11. package/build/base-model/attribute.js +25 -0
  12. package/build/base-model/column.js +11 -0
  13. package/build/base-model/reflection.js +14 -0
  14. package/build/base-model/scope.js +11 -0
  15. package/build/base-model.js +828 -0
  16. package/build/bootstrap/attribute-row.js +135 -0
  17. package/build/bootstrap/attribute-rows.js +31 -0
  18. package/build/bootstrap/card.js +138 -0
  19. package/build/bootstrap/checkbox.js +97 -0
  20. package/build/bootstrap/checkboxes.js +183 -0
  21. package/build/bootstrap/index.js +2 -0
  22. package/build/bootstrap/input.js +129 -0
  23. package/build/bootstrap/invalid-feedback.js +27 -0
  24. package/build/bootstrap/paginate.js +150 -0
  25. package/build/bootstrap/radio-buttons.js +72 -0
  26. package/build/bootstrap/select.js +88 -0
  27. package/build/bootstrap/sort-link.js +131 -0
  28. package/build/cable-connection-pool.js +128 -0
  29. package/build/cable-subscription-pool.js +207 -0
  30. package/build/cable-subscription.js +21 -0
  31. package/build/cache-key-generator.js +81 -0
  32. package/build/can-can.js +134 -0
  33. package/build/channels-consumer.js +9 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +280 -0
  36. package/build/command-submit-data.js +81 -0
  37. package/build/commands-pool.js +195 -0
  38. package/build/compose.js +9 -0
  39. package/build/config.js +62 -0
  40. package/build/custom-error.js +5 -0
  41. package/build/data-set-to-attributes.js +10 -0
  42. package/build/deserializer.js +56 -0
  43. package/build/destroy-error.js +5 -0
  44. package/build/devise.js +112 -0
  45. package/build/draggable-sort/controller.js +136 -0
  46. package/build/draggable-sort/index.js +114 -0
  47. package/build/draggable-sort/item.js +188 -0
  48. package/build/error-logger.js +101 -0
  49. package/build/error-messages.js +13 -0
  50. package/build/event-connection.js +32 -0
  51. package/build/event-emitter-listener.js +15 -0
  52. package/build/event-model-class.js +24 -0
  53. package/build/events.js +5 -0
  54. package/build/flash-message.js +79 -0
  55. package/build/form.js +83 -0
  56. package/build/history-expo.js +20 -0
  57. package/build/history-react-native.js +20 -0
  58. package/build/history.js +3 -0
  59. package/build/index.js +3 -0
  60. package/build/inputs/attachment.js +133 -0
  61. package/build/inputs/auto-submit.js +36 -0
  62. package/build/inputs/checkbox.js +138 -0
  63. package/build/inputs/checkboxes.js +112 -0
  64. package/build/inputs/id-for-component.js +15 -0
  65. package/build/inputs/input-wrapper.js +19 -0
  66. package/build/inputs/input.js +243 -0
  67. package/build/inputs/money.js +179 -0
  68. package/build/inputs/name-for-component.js +13 -0
  69. package/build/inputs/select.js +93 -0
  70. package/build/instance-of-class-name.js +23 -0
  71. package/build/is-expo.js +22 -0
  72. package/build/key-value-store.js +53 -0
  73. package/build/link.js +73 -0
  74. package/build/logger.js +30 -0
  75. package/build/modal.js +38 -0
  76. package/build/model-class-require.js +13 -0
  77. package/build/model-events.js +30 -0
  78. package/build/model-name.js +28 -0
  79. package/build/model-prop-type.js +101 -0
  80. package/build/model-recipes-loader.js +32 -0
  81. package/build/model-recipes-model-loader.js +357 -0
  82. package/build/models-response-reader.js +40 -0
  83. package/build/models.js +8 -0
  84. package/build/money-formatter.js +78 -0
  85. package/build/not-loaded-error.js +2 -0
  86. package/build/params.js +61 -0
  87. package/build/preloaded.js +38 -0
  88. package/build/resize-observer.js +11 -0
  89. package/build/result.js +13 -0
  90. package/build/router/route.js +270 -0
  91. package/build/router/switch.js +72 -0
  92. package/build/router.js +59 -0
  93. package/build/routes-native.js +202 -0
  94. package/build/routes.js +50 -0
  95. package/build/run-last.js +35 -0
  96. package/build/serializer.js +63 -0
  97. package/build/services.js +20 -0
  98. package/build/session-status-updater.js +134 -0
  99. package/build/source-maps-loader.js +184 -0
  100. package/build/super-admin/config-reader.js +85 -0
  101. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  102. package/build/super-admin/edit-page/edit-attribute-content.js +55 -0
  103. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  104. package/build/super-admin/edit-page/edit-attribute.js +77 -0
  105. package/build/super-admin/edit-page.js +123 -0
  106. package/build/super-admin/has-edit-config.js +12 -0
  107. package/build/super-admin/index-page.js +25 -0
  108. package/build/super-admin/index.js +181 -0
  109. package/build/super-admin/layout/header/index.js +161 -0
  110. package/build/super-admin/layout/index.js +164 -0
  111. package/build/super-admin/layout/menu/index.js +206 -0
  112. package/build/super-admin/layout/menu/menu-content.js +46 -0
  113. package/build/super-admin/layout/menu/menu-item.js +84 -0
  114. package/build/super-admin/layout/no-access.js +27 -0
  115. package/build/super-admin/model-class-table.js +61 -0
  116. package/build/super-admin/models.js +8 -0
  117. package/build/super-admin/show-nav.js +51 -0
  118. package/build/super-admin/show-page/belongs-to-attribute-row.js +29 -0
  119. package/build/super-admin/show-page/index.js +141 -0
  120. package/build/super-admin/show-reflection-actions.js +47 -0
  121. package/build/super-admin/show-reflection-link.js +48 -0
  122. package/build/super-admin/show-reflection-page.js +48 -0
  123. package/build/table/column-content.js +117 -0
  124. package/build/table/column-identifier.js +18 -0
  125. package/build/table/column-visible.js +7 -0
  126. package/build/table/components/column.js +21 -0
  127. package/build/table/components/flat-list.js +21 -0
  128. package/build/table/components/header.js +26 -0
  129. package/build/table/components/row.js +26 -0
  130. package/build/table/filters/attribute-element.js +44 -0
  131. package/build/table/filters/filter-form.js +402 -0
  132. package/build/table/filters/filter.js +90 -0
  133. package/build/table/filters/index.js +184 -0
  134. package/build/table/filters/load-search-modal.js +175 -0
  135. package/build/table/filters/reflection-element.js +37 -0
  136. package/build/table/filters/save-search-modal.js +88 -0
  137. package/build/table/filters/scope-element.js +42 -0
  138. package/build/table/header-column-content.js +68 -0
  139. package/build/table/header-column.js +144 -0
  140. package/build/table/header-select.js +105 -0
  141. package/build/table/model-callback-args.js +10 -0
  142. package/build/table/model-column.js +97 -0
  143. package/build/table/model-row.js +193 -0
  144. package/build/table/select-calculator.js +63 -0
  145. package/build/table/settings/column-row.js +97 -0
  146. package/build/table/settings/download-action.js +79 -0
  147. package/build/table/settings/index.js +92 -0
  148. package/build/table/table-settings.js +219 -0
  149. package/build/table/table.js +972 -0
  150. package/build/table/use-sorting.js +34 -0
  151. package/build/table/widths.js +75 -0
  152. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  153. package/build/table/worker-plugins-checkbox.js +115 -0
  154. package/build/translated-attributes.js +10 -0
  155. package/build/translated-collections.js +12 -0
  156. package/build/updated-attribute.js +76 -0
  157. package/build/url-encode.js +15 -0
  158. package/build/use-breakpoint.js +71 -0
  159. package/build/use-can-can.js +55 -0
  160. package/build/use-collection.js +225 -0
  161. package/build/use-created-event.js +52 -0
  162. package/build/use-current-user.js +76 -0
  163. package/build/use-destroyed-event.js +60 -0
  164. package/build/use-event-emitter.js +13 -0
  165. package/build/use-event-listener.js +16 -0
  166. package/build/use-input.js +137 -0
  167. package/build/use-model-event.js +60 -0
  168. package/build/use-model.js +169 -0
  169. package/build/use-resize-observer.js +23 -0
  170. package/build/use-router.js +104 -0
  171. package/build/use-screen-layout.js +39 -0
  172. package/build/use-styles.js +41 -0
  173. package/build/use-updated-event.js +60 -0
  174. package/build/use-validation-errors.js +30 -0
  175. package/build/utils/card.js +51 -0
  176. package/build/utils/checkbox.js +78 -0
  177. package/build/utils/checkboxes.js +163 -0
  178. package/build/utils/default-style.js +18 -0
  179. package/build/utils/icon.js +23 -0
  180. package/build/utils/invalid-feedback.js +19 -0
  181. package/build/utils/modal.js +62 -0
  182. package/build/utils/text.js +44 -0
  183. package/build/validation-error.js +28 -0
  184. package/build/validation-errors.js +98 -0
  185. package/build/with-api-maker.js +29 -0
  186. package/build/with-collection.js +14 -0
  187. package/build/with-current-user.js +10 -0
  188. package/build/with-model.js +15 -0
  189. package/build/with-router.js +22 -0
  190. package/expo-module.config.json +17 -0
  191. package/ios/ApiMaker.podspec +29 -0
  192. package/ios/ApiMakerModule.swift +48 -0
  193. package/ios/ApiMakerView.swift +38 -0
  194. package/package.json +49 -46
  195. package/src/{api.mjs → api.js} +38 -37
  196. package/src/base-component.jsx +5 -0
  197. package/src/{base-error.mjs → base-error.js} +4 -6
  198. package/src/base-model/attribute.js +33 -0
  199. package/src/base-model/column.js +13 -0
  200. package/src/base-model/reflection.js +15 -0
  201. package/src/base-model/scope.js +12 -0
  202. package/src/{base-model.mjs → base-model.js} +302 -144
  203. package/src/bootstrap/attribute-row.jsx +135 -0
  204. package/src/bootstrap/attribute-rows.jsx +27 -0
  205. package/src/bootstrap/card.jsx +149 -0
  206. package/src/bootstrap/checkbox.jsx +86 -0
  207. package/src/bootstrap/checkboxes.jsx +185 -0
  208. package/src/bootstrap/index.js +0 -0
  209. package/src/bootstrap/input.jsx +173 -0
  210. package/src/bootstrap/invalid-feedback.jsx +31 -0
  211. package/src/bootstrap/paginate.jsx +187 -0
  212. package/src/bootstrap/radio-buttons.jsx +87 -0
  213. package/src/bootstrap/select.jsx +110 -0
  214. package/src/bootstrap/sort-link.jsx +106 -0
  215. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +16 -36
  216. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +26 -21
  217. package/src/{cable-subscription.mjs → cable-subscription.js} +6 -4
  218. package/src/cache-key-generator.js +100 -0
  219. package/src/{can-can.mjs → can-can.js} +13 -12
  220. package/src/channels-consumer.js +10 -0
  221. package/src/collection-loader.jsx +58 -224
  222. package/src/{collection.mjs → collection.js} +98 -44
  223. package/src/{command-submit-data.mjs → command-submit-data.js} +2 -7
  224. package/src/{commands-pool.mjs → commands-pool.js} +57 -41
  225. package/src/compose.js +11 -0
  226. package/src/{config.mjs → config.js} +6 -2
  227. package/src/{custom-error.mjs → custom-error.js} +1 -1
  228. package/src/data-set-to-attributes.js +13 -0
  229. package/src/{deserializer.mjs → deserializer.js} +3 -3
  230. package/src/destroy-error.js +7 -0
  231. package/src/devise.js +129 -0
  232. package/src/draggable-sort/controller.js +137 -0
  233. package/src/draggable-sort/index.jsx +108 -0
  234. package/src/draggable-sort/item.jsx +174 -0
  235. package/src/{error-logger.mjs → error-logger.js} +12 -7
  236. package/src/{error-messages.mjs → error-messages.js} +1 -0
  237. package/src/event-connection.jsx +1 -1
  238. package/src/event-emitter-listener.jsx +8 -27
  239. package/src/event-model-class.jsx +2 -4
  240. package/src/events.js +7 -0
  241. package/src/flash-message.js +70 -0
  242. package/src/form.jsx +91 -0
  243. package/src/history-expo.js +23 -0
  244. package/src/history-react-native.js +25 -0
  245. package/src/history.js +3 -0
  246. package/src/index.js +3 -0
  247. package/src/inputs/attachment.jsx +108 -0
  248. package/src/inputs/auto-submit.js +37 -0
  249. package/src/inputs/checkbox.jsx +125 -0
  250. package/src/inputs/checkboxes.jsx +116 -0
  251. package/src/inputs/id-for-component.js +15 -0
  252. package/src/inputs/input-wrapper.jsx +16 -0
  253. package/src/inputs/input.jsx +260 -0
  254. package/src/inputs/money.jsx +187 -0
  255. package/src/inputs/name-for-component.js +15 -0
  256. package/src/inputs/select.jsx +104 -0
  257. package/src/is-expo.js +18 -0
  258. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  259. package/src/link.jsx +54 -9
  260. package/src/logger.js +38 -0
  261. package/src/modal.jsx +37 -0
  262. package/src/model-class-require.js +17 -0
  263. package/src/{model-events.mjs → model-events.js} +1 -1
  264. package/src/{model-name.mjs → model-name.js} +8 -8
  265. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  266. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +5 -5
  267. package/src/{models-response-reader.mjs → models-response-reader.js} +3 -4
  268. package/src/models.js +7 -0
  269. package/src/{models.mjs.erb → models.js.erb} +6 -3
  270. package/src/{money-formatter.mjs → money-formatter.js} +5 -4
  271. package/src/{params.mjs → params.js} +17 -7
  272. package/src/{preloaded.mjs → preloaded.js} +2 -2
  273. package/src/resize-observer.jsx +10 -0
  274. package/src/result.js +13 -0
  275. package/src/router/route.jsx +246 -0
  276. package/src/router/switch.jsx +76 -0
  277. package/src/router.jsx +23 -21
  278. package/src/{routes-native.mjs → routes-native.js} +12 -6
  279. package/src/{routes.mjs → routes.js} +1 -1
  280. package/src/run-last.js +39 -0
  281. package/src/{serializer.mjs → serializer.js} +2 -2
  282. package/src/{services.mjs → services.js} +1 -1
  283. package/src/session-status-updater.js +172 -0
  284. package/src/{source-maps-loader.mjs → source-maps-loader.js} +54 -28
  285. package/src/super-admin/config-reader.jsx +93 -0
  286. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +81 -0
  287. package/src/super-admin/edit-page/edit-attribute-content.jsx +57 -0
  288. package/src/super-admin/edit-page/edit-attribute-input.jsx +71 -0
  289. package/src/super-admin/edit-page/edit-attribute.jsx +81 -0
  290. package/src/super-admin/edit-page.jsx +117 -0
  291. package/src/super-admin/has-edit-config.js +15 -0
  292. package/src/super-admin/index-page.jsx +23 -0
  293. package/src/super-admin/index.jsx +197 -0
  294. package/src/super-admin/layout/header/index.jsx +144 -0
  295. package/src/super-admin/layout/header/style.scss +45 -0
  296. package/src/super-admin/layout/index.jsx +154 -0
  297. package/src/super-admin/layout/menu/index.jsx +171 -0
  298. package/src/super-admin/layout/menu/menu-content.jsx +43 -0
  299. package/src/super-admin/layout/menu/menu-item.jsx +70 -0
  300. package/src/super-admin/layout/menu/style.scss +11 -0
  301. package/src/super-admin/layout/no-access.jsx +26 -0
  302. package/src/super-admin/model-class-table.jsx +66 -0
  303. package/src/super-admin/models.js +11 -0
  304. package/src/super-admin/show-nav.jsx +44 -0
  305. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +30 -0
  306. package/src/super-admin/show-page/index.jsx +141 -0
  307. package/src/super-admin/show-reflection-actions.jsx +49 -0
  308. package/src/super-admin/show-reflection-link.jsx +40 -0
  309. package/src/super-admin/show-reflection-page.jsx +47 -0
  310. package/src/super-admin/stylesheets/variables.scss +11 -0
  311. package/src/table/column-content.jsx +122 -0
  312. package/src/table/column-identifier.js +23 -0
  313. package/src/table/column-visible.js +7 -0
  314. package/src/table/components/column.jsx +19 -0
  315. package/src/table/components/flat-list.jsx +19 -0
  316. package/src/table/components/header.jsx +21 -0
  317. package/src/table/components/row.jsx +23 -0
  318. package/src/table/filters/attribute-element.jsx +47 -0
  319. package/src/table/filters/filter-form.jsx +407 -0
  320. package/src/table/filters/filter.jsx +70 -0
  321. package/src/table/filters/index.jsx +170 -0
  322. package/src/table/filters/load-search-modal.jsx +146 -0
  323. package/src/table/filters/reflection-element.jsx +38 -0
  324. package/src/table/filters/save-search-modal.jsx +74 -0
  325. package/src/table/filters/scope-element.jsx +44 -0
  326. package/src/table/header-column-content.jsx +55 -0
  327. package/src/table/header-column.jsx +129 -0
  328. package/src/table/header-select.jsx +73 -0
  329. package/src/table/model-callback-args.js +10 -0
  330. package/src/table/model-column.jsx +82 -0
  331. package/src/table/model-row.jsx +136 -0
  332. package/src/table/select-calculator.js +65 -0
  333. package/src/table/settings/column-row.jsx +93 -0
  334. package/src/table/settings/download-action.jsx +68 -0
  335. package/src/table/settings/index.jsx +65 -0
  336. package/src/table/table-settings.js +263 -0
  337. package/src/table/table.jsx +950 -0
  338. package/src/table/use-sorting.js +35 -0
  339. package/src/table/variables.scss +11 -0
  340. package/src/table/widths.jsx +87 -0
  341. package/src/table/worker-plugins-check-all-checkbox.jsx +112 -0
  342. package/src/table/worker-plugins-checkbox.jsx +104 -0
  343. package/src/translated-attributes.js +11 -0
  344. package/src/{translated-collections.mjs → translated-collections.js} +3 -2
  345. package/src/updated-attribute.jsx +1 -1
  346. package/src/url-encode.js +18 -0
  347. package/src/use-breakpoint.js +87 -0
  348. package/src/use-can-can.js +55 -0
  349. package/src/use-collection.js +280 -0
  350. package/src/use-created-event.js +55 -0
  351. package/src/use-current-user.js +88 -0
  352. package/src/use-destroyed-event.js +60 -0
  353. package/src/use-event-emitter.js +15 -0
  354. package/src/use-event-listener.js +19 -0
  355. package/src/use-input.js +157 -0
  356. package/src/use-model-event.js +60 -0
  357. package/src/use-model.js +189 -0
  358. package/src/use-resize-observer.js +24 -0
  359. package/src/use-router.jsx +128 -0
  360. package/src/use-screen-layout.js +49 -0
  361. package/src/use-styles.js +50 -0
  362. package/src/use-updated-event.js +60 -0
  363. package/src/use-validation-errors.js +33 -0
  364. package/src/utils/card.jsx +49 -0
  365. package/src/utils/checkbox.jsx +80 -0
  366. package/src/utils/checkboxes.jsx +158 -0
  367. package/src/utils/default-style.jsx +25 -0
  368. package/src/utils/icon.jsx +21 -0
  369. package/src/utils/invalid-feedback.jsx +20 -0
  370. package/src/utils/modal.jsx +60 -0
  371. package/src/utils/text.jsx +38 -0
  372. package/src/{validation-error.mjs → validation-error.js} +9 -5
  373. package/src/{validation-errors.mjs → validation-errors.js} +15 -27
  374. package/src/with-api-maker.jsx +31 -0
  375. package/src/with-collection.jsx +17 -0
  376. package/src/with-current-user.jsx +7 -25
  377. package/src/with-model.jsx +16 -0
  378. package/src/with-router.jsx +7 -129
  379. package/__tests__/base-model.test.js +0 -71
  380. package/__tests__/cable-connection-pool.test.js +0 -227
  381. package/__tests__/cable-subscription-pool.test.js +0 -26
  382. package/__tests__/can-can.test.js +0 -34
  383. package/__tests__/collection.test.js +0 -51
  384. package/__tests__/custom-error.test.js +0 -13
  385. package/__tests__/model-name.test.js +0 -34
  386. package/__tests__/model-prop-type.test.js +0 -113
  387. package/__tests__/params.test.js +0 -40
  388. package/__tests__/routes-native.test.js +0 -103
  389. package/__tests__/routes.test.js +0 -46
  390. package/__tests__/serializer.test.js +0 -30
  391. package/__tests__/support/task.js +0 -27
  392. package/__tests__/support/user.js +0 -32
  393. package/index.js +0 -1
  394. package/jest.config.js +0 -4
  395. package/src/can-can-loader.jsx +0 -54
  396. package/src/channels-consumer.mjs +0 -3
  397. package/src/destroy-error.mjs +0 -7
  398. package/src/devise.mjs +0 -122
  399. package/src/event-created.jsx +0 -65
  400. package/src/event-destroyed.jsx +0 -29
  401. package/src/event-listener.jsx +0 -38
  402. package/src/event-updated.jsx +0 -74
  403. package/src/logger.mjs +0 -25
  404. package/src/model-class-require.mjs +0 -10
  405. package/src/model-load-wrapper.jsx +0 -116
  406. package/src/result.mjs +0 -29
  407. package/src/session-status-updater.mjs +0 -116
  408. package/webpack.config.js +0 -15
  409. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  410. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  411. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  412. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  413. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
@@ -0,0 +1,41 @@
1
+ import config from "./config";
2
+ import { digg } from "diggerize";
3
+ import * as inflection from "inflection";
4
+ import useBreakpoint from "./use-breakpoint";
5
+ import { useMemo } from "react";
6
+ const useStyles = (styles, args, dependencies = []) => {
7
+ const breakpoint = useBreakpoint();
8
+ const breakpointName = digg(breakpoint, "name");
9
+ const actualDependencies = [...dependencies, breakpointName];
10
+ const listOfStyles = useMemo(() => {
11
+ const listOfStyles = [];
12
+ const breakpointsReverse = [...config.getBreakPoints()].reverse();
13
+ for (const arg of args) {
14
+ if (typeof arg == "string") {
15
+ if (!(arg in styles)) {
16
+ throw new Error(`No such styling '${arg}' in given styles: ${Object.keys(styles).join(", ")}`);
17
+ }
18
+ listOfStyles.push(styles[arg]);
19
+ for (const breakpointData of breakpointsReverse) {
20
+ const breakpointName = breakpointData[0];
21
+ const breakpointStyleNameUp = `${arg}${inflection.camelize(breakpointName)}Up`;
22
+ const breakpointStyleNameDown = `${arg}${inflection.camelize(breakpointName)}Down`;
23
+ const breakpointIsUp = digg(breakpoint, `${breakpointName}Up`);
24
+ const breakpointIsDown = digg(breakpoint, `${breakpointName}Down`);
25
+ if (breakpointStyleNameUp in styles && breakpointIsUp) {
26
+ listOfStyles.push(styles[breakpointStyleNameUp]);
27
+ }
28
+ if (breakpointStyleNameDown in styles && breakpointIsDown) {
29
+ listOfStyles.push(styles[breakpointStyleNameDown]);
30
+ }
31
+ }
32
+ } else {
33
+ throw new Error(`Unhandled type: ${typeof arg}`);
34
+ }
35
+ }
36
+ return listOfStyles;
37
+ }, actualDependencies);
38
+ return listOfStyles;
39
+ };
40
+ export default useStyles;
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25maWciLCJkaWdnIiwiaW5mbGVjdGlvbiIsInVzZUJyZWFrcG9pbnQiLCJ1c2VNZW1vIiwidXNlU3R5bGVzIiwic3R5bGVzIiwiYXJncyIsImRlcGVuZGVuY2llcyIsImJyZWFrcG9pbnQiLCJicmVha3BvaW50TmFtZSIsImFjdHVhbERlcGVuZGVuY2llcyIsImxpc3RPZlN0eWxlcyIsImJyZWFrcG9pbnRzUmV2ZXJzZSIsImdldEJyZWFrUG9pbnRzIiwicmV2ZXJzZSIsImFyZyIsIkVycm9yIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJwdXNoIiwiYnJlYWtwb2ludERhdGEiLCJicmVha3BvaW50U3R5bGVOYW1lVXAiLCJjYW1lbGl6ZSIsImJyZWFrcG9pbnRTdHlsZU5hbWVEb3duIiwiYnJlYWtwb2ludElzVXAiLCJicmVha3BvaW50SXNEb3duIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1zdHlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi9jb25maWdcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHVzZUJyZWFrcG9pbnQgZnJvbSBcIi4vdXNlLWJyZWFrcG9pbnRcIlxuaW1wb3J0IHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuXG5jb25zdCB1c2VTdHlsZXMgPSAoc3R5bGVzLCBhcmdzLCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBicmVha3BvaW50ID0gdXNlQnJlYWtwb2ludCgpXG4gIGNvbnN0IGJyZWFrcG9pbnROYW1lID0gZGlnZyhicmVha3BvaW50LCBcIm5hbWVcIilcbiAgY29uc3QgYWN0dWFsRGVwZW5kZW5jaWVzID0gWy4uLmRlcGVuZGVuY2llcywgYnJlYWtwb2ludE5hbWVdXG5cbiAgY29uc3QgbGlzdE9mU3R5bGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbGlzdE9mU3R5bGVzID0gW11cbiAgICBjb25zdCBicmVha3BvaW50c1JldmVyc2UgPSBbLi4uY29uZmlnLmdldEJyZWFrUG9pbnRzKCldLnJldmVyc2UoKVxuXG4gICAgZm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAoIShhcmcgaW4gc3R5bGVzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCBzdHlsaW5nICcke2FyZ30nIGluIGdpdmVuIHN0eWxlczogJHtPYmplY3Qua2V5cyhzdHlsZXMpLmpvaW4oXCIsIFwiKX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgbGlzdE9mU3R5bGVzLnB1c2goc3R5bGVzW2FyZ10pXG5cbiAgICAgICAgZm9yIChjb25zdCBicmVha3BvaW50RGF0YSBvZiBicmVha3BvaW50c1JldmVyc2UpIHtcbiAgICAgICAgICBjb25zdCBicmVha3BvaW50TmFtZSA9IGJyZWFrcG9pbnREYXRhWzBdXG4gICAgICAgICAgY29uc3QgYnJlYWtwb2ludFN0eWxlTmFtZVVwID0gYCR7YXJnfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShicmVha3BvaW50TmFtZSl9VXBgXG4gICAgICAgICAgY29uc3QgYnJlYWtwb2ludFN0eWxlTmFtZURvd24gPSBgJHthcmd9JHtpbmZsZWN0aW9uLmNhbWVsaXplKGJyZWFrcG9pbnROYW1lKX1Eb3duYFxuICAgICAgICAgIGNvbnN0IGJyZWFrcG9pbnRJc1VwID0gZGlnZyhicmVha3BvaW50LCBgJHticmVha3BvaW50TmFtZX1VcGApXG4gICAgICAgICAgY29uc3QgYnJlYWtwb2ludElzRG93biA9IGRpZ2coYnJlYWtwb2ludCwgYCR7YnJlYWtwb2ludE5hbWV9RG93bmApXG5cbiAgICAgICAgICBpZiAoYnJlYWtwb2ludFN0eWxlTmFtZVVwIGluIHN0eWxlcyAmJiBicmVha3BvaW50SXNVcCkge1xuICAgICAgICAgICAgbGlzdE9mU3R5bGVzLnB1c2goc3R5bGVzW2JyZWFrcG9pbnRTdHlsZU5hbWVVcF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJyZWFrcG9pbnRTdHlsZU5hbWVEb3duIGluIHN0eWxlcyAmJiBicmVha3BvaW50SXNEb3duKSB7XG4gICAgICAgICAgICBsaXN0T2ZTdHlsZXMucHVzaChzdHlsZXNbYnJlYWtwb2ludFN0eWxlTmFtZURvd25dKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgdHlwZTogJHt0eXBlb2YgYXJnfWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RPZlN0eWxlc1xuICB9LCBhY3R1YWxEZXBlbmRlbmNpZXMpXG5cbiAgcmV0dXJuIGxpc3RPZlN0eWxlc1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTdHlsZXNcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFVBQVU7QUFDN0IsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxhQUFhLE1BQU0sa0JBQWtCO0FBQzVDLFNBQVFDLE9BQU8sUUFBTyxPQUFPO0FBRTdCLE1BQU1DLFNBQVMsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFlBQVksR0FBRyxFQUFFLEtBQUs7RUFDckQsTUFBTUMsVUFBVSxHQUFHTixhQUFhLENBQUMsQ0FBQztFQUNsQyxNQUFNTyxjQUFjLEdBQUdULElBQUksQ0FBQ1EsVUFBVSxFQUFFLE1BQU0sQ0FBQztFQUMvQyxNQUFNRSxrQkFBa0IsR0FBRyxDQUFDLEdBQUdILFlBQVksRUFBRUUsY0FBYyxDQUFDO0VBRTVELE1BQU1FLFlBQVksR0FBR1IsT0FBTyxDQUFDLE1BQU07SUFDakMsTUFBTVEsWUFBWSxHQUFHLEVBQUU7SUFDdkIsTUFBTUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHYixNQUFNLENBQUNjLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLENBQUM7SUFFakUsS0FBSyxNQUFNQyxHQUFHLElBQUlULElBQUksRUFBRTtNQUN0QixJQUFJLE9BQU9TLEdBQUcsSUFBSSxRQUFRLEVBQUU7UUFDMUIsSUFBSSxFQUFFQSxHQUFHLElBQUlWLE1BQU0sQ0FBQyxFQUFFO1VBQ3BCLE1BQU0sSUFBSVcsS0FBSyxDQUFDLG9CQUFvQkQsR0FBRyxzQkFBc0JFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDYixNQUFNLENBQUMsQ0FBQ2MsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEc7UUFFQVIsWUFBWSxDQUFDUyxJQUFJLENBQUNmLE1BQU0sQ0FBQ1UsR0FBRyxDQUFDLENBQUM7UUFFOUIsS0FBSyxNQUFNTSxjQUFjLElBQUlULGtCQUFrQixFQUFFO1VBQy9DLE1BQU1ILGNBQWMsR0FBR1ksY0FBYyxDQUFDLENBQUMsQ0FBQztVQUN4QyxNQUFNQyxxQkFBcUIsR0FBRyxHQUFHUCxHQUFHLEdBQUdkLFVBQVUsQ0FBQ3NCLFFBQVEsQ0FBQ2QsY0FBYyxDQUFDLElBQUk7VUFDOUUsTUFBTWUsdUJBQXVCLEdBQUcsR0FBR1QsR0FBRyxHQUFHZCxVQUFVLENBQUNzQixRQUFRLENBQUNkLGNBQWMsQ0FBQyxNQUFNO1VBQ2xGLE1BQU1nQixjQUFjLEdBQUd6QixJQUFJLENBQUNRLFVBQVUsRUFBRSxHQUFHQyxjQUFjLElBQUksQ0FBQztVQUM5RCxNQUFNaUIsZ0JBQWdCLEdBQUcxQixJQUFJLENBQUNRLFVBQVUsRUFBRSxHQUFHQyxjQUFjLE1BQU0sQ0FBQztVQUVsRSxJQUFJYSxxQkFBcUIsSUFBSWpCLE1BQU0sSUFBSW9CLGNBQWMsRUFBRTtZQUNyRGQsWUFBWSxDQUFDUyxJQUFJLENBQUNmLE1BQU0sQ0FBQ2lCLHFCQUFxQixDQUFDLENBQUM7VUFDbEQ7VUFFQSxJQUFJRSx1QkFBdUIsSUFBSW5CLE1BQU0sSUFBSXFCLGdCQUFnQixFQUFFO1lBQ3pEZixZQUFZLENBQUNTLElBQUksQ0FBQ2YsTUFBTSxDQUFDbUIsdUJBQXVCLENBQUMsQ0FBQztVQUNwRDtRQUNGO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsTUFBTSxJQUFJUixLQUFLLENBQUMsbUJBQW1CLE9BQU9ELEdBQUcsRUFBRSxDQUFDO01BQ2xEO0lBQ0Y7SUFFQSxPQUFPSixZQUFZO0VBQ3JCLENBQUMsRUFBRUQsa0JBQWtCLENBQUM7RUFFdEIsT0FBT0MsWUFBWTtBQUNyQixDQUFDO0FBRUQsZUFBZVAsU0FBUyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,60 @@
1
+ import { useCallback, useLayoutEffect, useMemo } from "react";
2
+ import debounceFunction from "debounce";
3
+ import ModelEvents from "./model-events";
4
+ import useShape from "set-state-compare/src/use-shape";
5
+ const apiMakerUseUpdatedEvent = (model, onUpdated, props = {}) => {
6
+ const {
7
+ active = true,
8
+ debounce,
9
+ onConnected,
10
+ ...restProps
11
+ } = props;
12
+ if (Object.keys(restProps).length > 0) {
13
+ throw new Error(`Unknown props given to useUpdatedEvent: ${Object.keys(restProps).join(", ")}`);
14
+ }
15
+ const s = useShape({
16
+ active,
17
+ debounce,
18
+ model,
19
+ onUpdated
20
+ });
21
+ const debounceCallback = useMemo(() => {
22
+ if (typeof debounce == "number") {
23
+ return debounceFunction(s.p.onUpdated, debounce);
24
+ } else {
25
+ return debounceFunction(s.p.onUpdated);
26
+ }
27
+ }, [debounce]);
28
+ s.updateMeta({
29
+ debounceCallback
30
+ });
31
+ const onUpdatedCallback = useCallback((...args) => {
32
+ if (!s.p.active) {
33
+ return;
34
+ }
35
+ if (s.p.debounce) {
36
+ s.m.debounceCallback(...args);
37
+ } else {
38
+ s.p.onUpdated(...args);
39
+ }
40
+ }, []);
41
+ useLayoutEffect(() => {
42
+ let connectUpdated, onConnectedListener;
43
+ if (model) {
44
+ connectUpdated = ModelEvents.connectUpdated(model, onUpdatedCallback);
45
+ if (onConnected) {
46
+ onConnectedListener = connectUpdated.events.addListener("connected", onConnected);
47
+ }
48
+ }
49
+ return () => {
50
+ if (onConnectedListener) {
51
+ connectUpdated.events.removeListener("connected", onConnected);
52
+ }
53
+ if (connectUpdated) {
54
+ connectUpdated.unsubscribe();
55
+ }
56
+ };
57
+ }, [model?.id()]);
58
+ };
59
+ export default apiMakerUseUpdatedEvent;
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJkZWJvdW5jZUZ1bmN0aW9uIiwiTW9kZWxFdmVudHMiLCJ1c2VTaGFwZSIsImFwaU1ha2VyVXNlVXBkYXRlZEV2ZW50IiwibW9kZWwiLCJvblVwZGF0ZWQiLCJwcm9wcyIsImFjdGl2ZSIsImRlYm91bmNlIiwib25Db25uZWN0ZWQiLCJyZXN0UHJvcHMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiRXJyb3IiLCJqb2luIiwicyIsImRlYm91bmNlQ2FsbGJhY2siLCJwIiwidXBkYXRlTWV0YSIsIm9uVXBkYXRlZENhbGxiYWNrIiwiYXJncyIsIm0iLCJjb25uZWN0VXBkYXRlZCIsIm9uQ29ubmVjdGVkTGlzdGVuZXIiLCJldmVudHMiLCJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwidW5zdWJzY3JpYmUiLCJpZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtdXBkYXRlZC1ldmVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgZGVib3VuY2VGdW5jdGlvbiBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50c1wiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy91c2Utc2hhcGVcIlxuXG5jb25zdCBhcGlNYWtlclVzZVVwZGF0ZWRFdmVudCA9IChtb2RlbCwgb25VcGRhdGVkLCBwcm9wcyA9IHt9KSA9PiB7XG4gIGNvbnN0IHthY3RpdmUgPSB0cnVlLCBkZWJvdW5jZSwgb25Db25uZWN0ZWQsIC4uLnJlc3RQcm9wc30gPSBwcm9wc1xuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gdXNlVXBkYXRlZEV2ZW50OiAke09iamVjdC5rZXlzKHJlc3RQcm9wcykuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBjb25zdCBzID0gdXNlU2hhcGUoe2FjdGl2ZSwgZGVib3VuY2UsIG1vZGVsLCBvblVwZGF0ZWR9KVxuXG4gIGNvbnN0IGRlYm91bmNlQ2FsbGJhY2sgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGRlYm91bmNlID09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiBkZWJvdW5jZUZ1bmN0aW9uKHMucC5vblVwZGF0ZWQsIGRlYm91bmNlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25VcGRhdGVkKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlXSlcblxuICBzLnVwZGF0ZU1ldGEoe2RlYm91bmNlQ2FsbGJhY2t9KVxuXG4gIGNvbnN0IG9uVXBkYXRlZENhbGxiYWNrID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoIXMucC5hY3RpdmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChzLnAuZGVib3VuY2UpIHtcbiAgICAgIHMubS5kZWJvdW5jZUNhbGxiYWNrKC4uLmFyZ3MpXG4gICAgfSBlbHNlIHtcbiAgICAgIHMucC5vblVwZGF0ZWQoLi4uYXJncylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbm5lY3RVcGRhdGVkLCBvbkNvbm5lY3RlZExpc3RlbmVyXG5cbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIGNvbm5lY3RVcGRhdGVkID0gTW9kZWxFdmVudHMuY29ubmVjdFVwZGF0ZWQobW9kZWwsIG9uVXBkYXRlZENhbGxiYWNrKVxuXG4gICAgICBpZiAob25Db25uZWN0ZWQpIHtcbiAgICAgICAgb25Db25uZWN0ZWRMaXN0ZW5lciA9IGNvbm5lY3RVcGRhdGVkLmV2ZW50cy5hZGRMaXN0ZW5lcihcImNvbm5lY3RlZFwiLCBvbkNvbm5lY3RlZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG9uQ29ubmVjdGVkTGlzdGVuZXIpIHtcbiAgICAgICAgY29ubmVjdFVwZGF0ZWQuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuXG4gICAgICBpZiAoY29ubmVjdFVwZGF0ZWQpIHtcbiAgICAgICAgY29ubmVjdFVwZGF0ZWQudW5zdWJzY3JpYmUoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW21vZGVsPy5pZCgpXSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXBpTWFrZXJVc2VVcGRhdGVkRXZlbnRcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsV0FBVyxFQUFFQyxlQUFlLEVBQUVDLE9BQU8sUUFBTyxPQUFPO0FBQzNELE9BQU9DLGdCQUFnQixNQUFNLFVBQVU7QUFDdkMsT0FBT0MsV0FBVyxNQUFNLGdCQUFnQjtBQUN4QyxPQUFPQyxRQUFRLE1BQU0saUNBQWlDO0FBRXRELE1BQU1DLHVCQUF1QixHQUFHQSxDQUFDQyxLQUFLLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLO0VBQ2hFLE1BQU07SUFBQ0MsTUFBTSxHQUFHLElBQUk7SUFBRUMsUUFBUTtJQUFFQyxXQUFXO0lBQUUsR0FBR0M7RUFBUyxDQUFDLEdBQUdKLEtBQUs7RUFFbEUsSUFBSUssTUFBTSxDQUFDQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ3JDLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDJDQUEyQ0gsTUFBTSxDQUFDQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztFQUNqRztFQUVBLE1BQU1DLENBQUMsR0FBR2QsUUFBUSxDQUFDO0lBQUNLLE1BQU07SUFBRUMsUUFBUTtJQUFFSixLQUFLO0lBQUVDO0VBQVMsQ0FBQyxDQUFDO0VBRXhELE1BQU1ZLGdCQUFnQixHQUFHbEIsT0FBTyxDQUFDLE1BQU07SUFDckMsSUFBSSxPQUFPUyxRQUFRLElBQUksUUFBUSxFQUFFO01BQy9CLE9BQU9SLGdCQUFnQixDQUFDZ0IsQ0FBQyxDQUFDRSxDQUFDLENBQUNiLFNBQVMsRUFBRUcsUUFBUSxDQUFDO0lBQ2xELENBQUMsTUFBTTtNQUNMLE9BQU9SLGdCQUFnQixDQUFDZ0IsQ0FBQyxDQUFDRSxDQUFDLENBQUNiLFNBQVMsQ0FBQztJQUN4QztFQUNGLENBQUMsRUFBRSxDQUFDRyxRQUFRLENBQUMsQ0FBQztFQUVkUSxDQUFDLENBQUNHLFVBQVUsQ0FBQztJQUFDRjtFQUFnQixDQUFDLENBQUM7RUFFaEMsTUFBTUcsaUJBQWlCLEdBQUd2QixXQUFXLENBQUMsQ0FBQyxHQUFHd0IsSUFBSSxLQUFLO0lBQ2pELElBQUksQ0FBQ0wsQ0FBQyxDQUFDRSxDQUFDLENBQUNYLE1BQU0sRUFBRTtNQUNmO0lBQ0Y7SUFFQSxJQUFJUyxDQUFDLENBQUNFLENBQUMsQ0FBQ1YsUUFBUSxFQUFFO01BQ2hCUSxDQUFDLENBQUNNLENBQUMsQ0FBQ0wsZ0JBQWdCLENBQUMsR0FBR0ksSUFBSSxDQUFDO0lBQy9CLENBQUMsTUFBTTtNQUNMTCxDQUFDLENBQUNFLENBQUMsQ0FBQ2IsU0FBUyxDQUFDLEdBQUdnQixJQUFJLENBQUM7SUFDeEI7RUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU52QixlQUFlLENBQUMsTUFBTTtJQUNwQixJQUFJeUIsY0FBYyxFQUFFQyxtQkFBbUI7SUFFdkMsSUFBSXBCLEtBQUssRUFBRTtNQUNUbUIsY0FBYyxHQUFHdEIsV0FBVyxDQUFDc0IsY0FBYyxDQUFDbkIsS0FBSyxFQUFFZ0IsaUJBQWlCLENBQUM7TUFFckUsSUFBSVgsV0FBVyxFQUFFO1FBQ2ZlLG1CQUFtQixHQUFHRCxjQUFjLENBQUNFLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDLFdBQVcsRUFBRWpCLFdBQVcsQ0FBQztNQUNuRjtJQUNGO0lBRUEsT0FBTyxNQUFNO01BQ1gsSUFBSWUsbUJBQW1CLEVBQUU7UUFDdkJELGNBQWMsQ0FBQ0UsTUFBTSxDQUFDRSxjQUFjLENBQUMsV0FBVyxFQUFFbEIsV0FBVyxDQUFDO01BQ2hFO01BRUEsSUFBSWMsY0FBYyxFQUFFO1FBQ2xCQSxjQUFjLENBQUNLLFdBQVcsQ0FBQyxDQUFDO01BQzlCO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDeEIsS0FBSyxFQUFFeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxlQUFlMUIsdUJBQXVCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,30 @@
1
+ import events from "./events";
2
+ import { useCallback } from "react";
3
+ import useEventEmitter from "./use-event-emitter";
4
+ import useShape from "set-state-compare/src/use-shape";
5
+ const useValidationErrors = callback => {
6
+ const s = useShape({
7
+ callback
8
+ });
9
+ s.useStates({
10
+ validationErrors: []
11
+ });
12
+ const onValidationErrors = useCallback(validationErrors => {
13
+ const matchedValidationErrors = [];
14
+ for (const validationError of validationErrors.getValidationErrors()) {
15
+ if (s.p.callback(validationError)) {
16
+ validationError.setHandled();
17
+ matchedValidationErrors.push(validationError);
18
+ }
19
+ }
20
+ s.set({
21
+ validationErrors: matchedValidationErrors
22
+ });
23
+ }, []);
24
+ useEventEmitter(events, "onValidationErrors", onValidationErrors);
25
+ return {
26
+ validationErrors: s.s.validationErrors
27
+ };
28
+ };
29
+ export default useValidationErrors;
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJldmVudHMiLCJ1c2VDYWxsYmFjayIsInVzZUV2ZW50RW1pdHRlciIsInVzZVNoYXBlIiwidXNlVmFsaWRhdGlvbkVycm9ycyIsImNhbGxiYWNrIiwicyIsInVzZVN0YXRlcyIsInZhbGlkYXRpb25FcnJvcnMiLCJvblZhbGlkYXRpb25FcnJvcnMiLCJtYXRjaGVkVmFsaWRhdGlvbkVycm9ycyIsInZhbGlkYXRpb25FcnJvciIsImdldFZhbGlkYXRpb25FcnJvcnMiLCJwIiwic2V0SGFuZGxlZCIsInB1c2giLCJzZXQiXSwic291cmNlcyI6WyIuLi9zcmMvdXNlLXZhbGlkYXRpb24tZXJyb3JzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBldmVudHMgZnJvbSBcIi4vZXZlbnRzXCJcbmltcG9ydCB7dXNlQ2FsbGJhY2t9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5cbmNvbnN0IHVzZVZhbGlkYXRpb25FcnJvcnMgPSAoY2FsbGJhY2spID0+IHtcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHtjYWxsYmFja30pXG5cbiAgcy51c2VTdGF0ZXMoe3ZhbGlkYXRpb25FcnJvcnM6IFtdfSlcblxuICBjb25zdCBvblZhbGlkYXRpb25FcnJvcnMgPSB1c2VDYWxsYmFjaygodmFsaWRhdGlvbkVycm9ycykgPT4ge1xuICAgIGNvbnN0IG1hdGNoZWRWYWxpZGF0aW9uRXJyb3JzID0gW11cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbkVycm9yIG9mIHZhbGlkYXRpb25FcnJvcnMuZ2V0VmFsaWRhdGlvbkVycm9ycygpKSB7XG4gICAgICBpZiAocy5wLmNhbGxiYWNrKHZhbGlkYXRpb25FcnJvcikpIHtcbiAgICAgICAgdmFsaWRhdGlvbkVycm9yLnNldEhhbmRsZWQoKVxuICAgICAgICBtYXRjaGVkVmFsaWRhdGlvbkVycm9ycy5wdXNoKHZhbGlkYXRpb25FcnJvcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzLnNldCh7XG4gICAgICB2YWxpZGF0aW9uRXJyb3JzOiBtYXRjaGVkVmFsaWRhdGlvbkVycm9yc1xuICAgIH0pXG4gIH0sIFtdKVxuXG4gIHVzZUV2ZW50RW1pdHRlcihldmVudHMsIFwib25WYWxpZGF0aW9uRXJyb3JzXCIsIG9uVmFsaWRhdGlvbkVycm9ycylcblxuICByZXR1cm4ge1xuICAgIHZhbGlkYXRpb25FcnJvcnM6IHMucy52YWxpZGF0aW9uRXJyb3JzXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlVmFsaWRhdGlvbkVycm9yc1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sVUFBVTtBQUM3QixTQUFRQyxXQUFXLFFBQU8sT0FBTztBQUNqQyxPQUFPQyxlQUFlLE1BQU0scUJBQXFCO0FBQ2pELE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFFdEQsTUFBTUMsbUJBQW1CLEdBQUlDLFFBQVEsSUFBSztFQUN4QyxNQUFNQyxDQUFDLEdBQUdILFFBQVEsQ0FBQztJQUFDRTtFQUFRLENBQUMsQ0FBQztFQUU5QkMsQ0FBQyxDQUFDQyxTQUFTLENBQUM7SUFBQ0MsZ0JBQWdCLEVBQUU7RUFBRSxDQUFDLENBQUM7RUFFbkMsTUFBTUMsa0JBQWtCLEdBQUdSLFdBQVcsQ0FBRU8sZ0JBQWdCLElBQUs7SUFDM0QsTUFBTUUsdUJBQXVCLEdBQUcsRUFBRTtJQUVsQyxLQUFLLE1BQU1DLGVBQWUsSUFBSUgsZ0JBQWdCLENBQUNJLG1CQUFtQixDQUFDLENBQUMsRUFBRTtNQUNwRSxJQUFJTixDQUFDLENBQUNPLENBQUMsQ0FBQ1IsUUFBUSxDQUFDTSxlQUFlLENBQUMsRUFBRTtRQUNqQ0EsZUFBZSxDQUFDRyxVQUFVLENBQUMsQ0FBQztRQUM1QkosdUJBQXVCLENBQUNLLElBQUksQ0FBQ0osZUFBZSxDQUFDO01BQy9DO0lBQ0Y7SUFFQUwsQ0FBQyxDQUFDVSxHQUFHLENBQUM7TUFDSlIsZ0JBQWdCLEVBQUVFO0lBQ3BCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTlIsZUFBZSxDQUFDRixNQUFNLEVBQUUsb0JBQW9CLEVBQUVTLGtCQUFrQixDQUFDO0VBRWpFLE9BQU87SUFDTEQsZ0JBQWdCLEVBQUVGLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDRTtFQUN4QixDQUFDO0FBQ0gsQ0FBQztBQUVELGVBQWVKLG1CQUFtQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,51 @@
1
+ import BaseComponent from "../base-component";
2
+ import memo from "set-state-compare/src/memo";
3
+ import PropTypes from "prop-types";
4
+ import propTypesExact from "prop-types-exact";
5
+ import { shapeComponent } from "set-state-compare/src/shape-component";
6
+ import Text from "./text";
7
+ export default memo(shapeComponent(class ApiMakerUtilsCard extends BaseComponent {
8
+ static propTypes = propTypesExact({
9
+ children: PropTypes.node,
10
+ controls: PropTypes.node,
11
+ dataSet: PropTypes.object,
12
+ header: PropTypes.string,
13
+ style: PropTypes.object
14
+ });
15
+ render() {
16
+ const {
17
+ children,
18
+ controls,
19
+ dataSet,
20
+ header,
21
+ style
22
+ } = this.props;
23
+ const {
24
+ component,
25
+ ...restDataSet
26
+ } = dataSet || {};
27
+ const actualDataSet = Object.assign({
28
+ component: classNames("api-maker/utils/card", component)
29
+ }, restDataSet);
30
+ const actualStyle = Object.assign({
31
+ backgroundColor: "#fff",
32
+ borderRadius: 15,
33
+ padding: 30
34
+ }, style);
35
+ return /*#__PURE__*/React.createElement(View, {
36
+ dataSet: actualDataSet,
37
+ style: actualStyle
38
+ }, controls && /*#__PURE__*/React.createElement(View, {
39
+ style: {
40
+ position: "absolute",
41
+ top: 15,
42
+ right: 15
43
+ }
44
+ }, controls), header && /*#__PURE__*/React.createElement(Text, {
45
+ style: {
46
+ fontSize: 24
47
+ }
48
+ }, header), children);
49
+ }
50
+ }));
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0Iiwic2hhcGVDb21wb25lbnQiLCJUZXh0IiwiQXBpTWFrZXJVdGlsc0NhcmQiLCJwcm9wVHlwZXMiLCJjaGlsZHJlbiIsIm5vZGUiLCJjb250cm9scyIsImRhdGFTZXQiLCJvYmplY3QiLCJoZWFkZXIiLCJzdHJpbmciLCJzdHlsZSIsInJlbmRlciIsInByb3BzIiwiY29tcG9uZW50IiwicmVzdERhdGFTZXQiLCJhY3R1YWxEYXRhU2V0IiwiT2JqZWN0IiwiYXNzaWduIiwiY2xhc3NOYW1lcyIsImFjdHVhbFN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyUmFkaXVzIiwicGFkZGluZyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIlZpZXciLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiZm9udFNpemUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2FyZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzQ2FyZCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICBjb250cm9sczogUHJvcFR5cGVzLm5vZGUsXG4gICAgZGF0YVNldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBoZWFkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3RcbiAgfSlcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NoaWxkcmVuLCBjb250cm9scywgZGF0YVNldCwgaGVhZGVyLCBzdHlsZX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge2NvbXBvbmVudCwgLi4ucmVzdERhdGFTZXR9ID0gZGF0YVNldCB8fCB7fVxuICAgIGNvbnN0IGFjdHVhbERhdGFTZXQgPSBPYmplY3QuYXNzaWduKFxuICAgICAge2NvbXBvbmVudDogY2xhc3NOYW1lcyhcImFwaS1tYWtlci91dGlscy9jYXJkXCIsIGNvbXBvbmVudCl9LFxuICAgICAgcmVzdERhdGFTZXRcbiAgICApXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDE1LFxuICAgICAgICBwYWRkaW5nOiAzMFxuICAgICAgfSxcbiAgICAgIHN0eWxlXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IGRhdGFTZXQ9e2FjdHVhbERhdGFTZXR9IHN0eWxlPXthY3R1YWxTdHlsZX0+XG4gICAgICAgIHtjb250cm9scyAmJlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXt7cG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdG9wOiAxNSwgcmlnaHQ6IDE1fX0+XG4gICAgICAgICAgICB7Y29udHJvbHN9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICB9XG4gICAgICAgIHtoZWFkZXIgJiZcbiAgICAgICAgICA8VGV4dCBzdHlsZT17e2ZvbnRTaXplOiAyNH19PlxuICAgICAgICAgICAge2hlYWRlcn1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIH1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxufSkpXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGFBQWEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxPQUFPQyxTQUFTLE1BQU0sWUFBWTtBQUNsQyxPQUFPQyxjQUFjLE1BQU0sa0JBQWtCO0FBQzdDLFNBQVFDLGNBQWMsUUFBTyx1Q0FBdUM7QUFDcEUsT0FBT0MsSUFBSSxNQUFNLFFBQVE7QUFFekIsZUFBZUosSUFBSSxDQUFDRyxjQUFjLENBQUMsTUFBTUUsaUJBQWlCLFNBQVNOLGFBQWEsQ0FBQztFQUMvRSxPQUFPTyxTQUFTLEdBQUdKLGNBQWMsQ0FBQztJQUNoQ0ssUUFBUSxFQUFFTixTQUFTLENBQUNPLElBQUk7SUFDeEJDLFFBQVEsRUFBRVIsU0FBUyxDQUFDTyxJQUFJO0lBQ3hCRSxPQUFPLEVBQUVULFNBQVMsQ0FBQ1UsTUFBTTtJQUN6QkMsTUFBTSxFQUFFWCxTQUFTLENBQUNZLE1BQU07SUFDeEJDLEtBQUssRUFBRWIsU0FBUyxDQUFDVTtFQUNuQixDQUFDLENBQUM7RUFFRkksTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDUixRQUFRO01BQUVFLFFBQVE7TUFBRUMsT0FBTztNQUFFRSxNQUFNO01BQUVFO0lBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0UsS0FBSztJQUMvRCxNQUFNO01BQUNDLFNBQVM7TUFBRSxHQUFHQztJQUFXLENBQUMsR0FBR1IsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNUyxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUNqQztNQUFDSixTQUFTLEVBQUVLLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRUwsU0FBUztJQUFDLENBQUMsRUFDMURDLFdBQ0YsQ0FBQztJQUNELE1BQU1LLFdBQVcsR0FBR0gsTUFBTSxDQUFDQyxNQUFNLENBQy9CO01BQ0VHLGVBQWUsRUFBRSxNQUFNO01BQ3ZCQyxZQUFZLEVBQUUsRUFBRTtNQUNoQkMsT0FBTyxFQUFFO0lBQ1gsQ0FBQyxFQUNEWixLQUNGLENBQUM7SUFFRCxvQkFDRWEsS0FBQSxDQUFBQyxhQUFBLENBQUNDLElBQUk7TUFBQ25CLE9BQU8sRUFBRVMsYUFBYztNQUFDTCxLQUFLLEVBQUVTO0lBQVksR0FDOUNkLFFBQVEsaUJBQ1BrQixLQUFBLENBQUFDLGFBQUEsQ0FBQ0MsSUFBSTtNQUFDZixLQUFLLEVBQUU7UUFBQ2dCLFFBQVEsRUFBRSxVQUFVO1FBQUVDLEdBQUcsRUFBRSxFQUFFO1FBQUVDLEtBQUssRUFBRTtNQUFFO0lBQUUsR0FDckR2QixRQUNHLENBQUMsRUFFUkcsTUFBTSxpQkFDTGUsS0FBQSxDQUFBQyxhQUFBLENBQUN4QixJQUFJO01BQUNVLEtBQUssRUFBRTtRQUFDbUIsUUFBUSxFQUFFO01BQUU7SUFBRSxHQUN6QnJCLE1BQ0csQ0FBQyxFQUVSTCxRQUNHLENBQUM7RUFFWDtBQUNGLENBQUMsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,78 @@
1
+ import BaseComponent from "../base-component";
2
+ import { CheckBox, Pressable, View } from "react-native";
3
+ import memo from "set-state-compare/src/memo";
4
+ import PropTypes from "prop-types";
5
+ import propTypesExact from "prop-types-exact";
6
+ import React from "react";
7
+ import { shapeComponent } from "set-state-compare/src/shape-component";
8
+ import Text from "./text";
9
+ export default memo(shapeComponent(class ApiMakerUtilsCheckbox extends BaseComponent {
10
+ static defaultProps = {
11
+ label: undefined
12
+ };
13
+ static propTypes = propTypesExact({
14
+ checked: PropTypes.bool,
15
+ dataSet: PropTypes.object,
16
+ defaultChecked: PropTypes.bool,
17
+ label: PropTypes.string,
18
+ onCheckedChange: PropTypes.func,
19
+ style: PropTypes.object
20
+ });
21
+ setup() {
22
+ this.useStates({
23
+ checked: this.props.defaultChecked
24
+ });
25
+ this.isChecked = this.calculateChecked();
26
+ }
27
+ calculateChecked() {
28
+ if ("checked" in this.props) {
29
+ return this.p.checked;
30
+ } else {
31
+ return this.s.checked;
32
+ }
33
+ }
34
+ render() {
35
+ const {
36
+ isChecked
37
+ } = this.tt;
38
+ const {
39
+ label
40
+ } = this.p;
41
+ const {
42
+ dataSet
43
+ } = this.props;
44
+ const actualStyle = Object.assign({
45
+ flexDirection: "row",
46
+ alignItems: "center"
47
+ }, this.props.style);
48
+ const actualDataSet = Object.assign({
49
+ checked: isChecked
50
+ }, dataSet);
51
+ return /*#__PURE__*/React.createElement(View, {
52
+ dataSet: {
53
+ component: "api-maker/utils/checkbox"
54
+ },
55
+ style: actualStyle
56
+ }, /*#__PURE__*/React.createElement(CheckBox, {
57
+ dataSet: actualDataSet,
58
+ onValueChange: this.tt.onValueChange,
59
+ value: isChecked
60
+ }), label && /*#__PURE__*/React.createElement(Pressable, {
61
+ onPress: this.tt.onLabelPressed
62
+ }, /*#__PURE__*/React.createElement(Text, {
63
+ style: {
64
+ marginLeft: 3
65
+ }
66
+ }, label)));
67
+ }
68
+ onLabelPressed = () => this.p.onCheckedChange(!this.tt.isChecked);
69
+ onValueChange = e => {
70
+ if (this.props.onCheckedChange) {
71
+ this.p.onCheckedChange(e);
72
+ }
73
+ this.setState({
74
+ checked: !this.tt.isChecked
75
+ });
76
+ };
77
+ }));
78
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiQ2hlY2tCb3giLCJQcmVzc2FibGUiLCJWaWV3IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJzaGFwZUNvbXBvbmVudCIsIlRleHQiLCJBcGlNYWtlclV0aWxzQ2hlY2tib3giLCJkZWZhdWx0UHJvcHMiLCJsYWJlbCIsInVuZGVmaW5lZCIsInByb3BUeXBlcyIsImNoZWNrZWQiLCJib29sIiwiZGF0YVNldCIsIm9iamVjdCIsImRlZmF1bHRDaGVja2VkIiwic3RyaW5nIiwib25DaGVja2VkQ2hhbmdlIiwiZnVuYyIsInN0eWxlIiwic2V0dXAiLCJ1c2VTdGF0ZXMiLCJwcm9wcyIsImlzQ2hlY2tlZCIsImNhbGN1bGF0ZUNoZWNrZWQiLCJwIiwicyIsInJlbmRlciIsInR0IiwiYWN0dWFsU3R5bGUiLCJPYmplY3QiLCJhc3NpZ24iLCJmbGV4RGlyZWN0aW9uIiwiYWxpZ25JdGVtcyIsImFjdHVhbERhdGFTZXQiLCJjcmVhdGVFbGVtZW50IiwiY29tcG9uZW50Iiwib25WYWx1ZUNoYW5nZSIsInZhbHVlIiwib25QcmVzcyIsIm9uTGFiZWxQcmVzc2VkIiwibWFyZ2luTGVmdCIsImUiLCJzZXRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jaGVja2JveC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCB7Q2hlY2tCb3gsIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzQ2hlY2tib3ggZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBsYWJlbDogdW5kZWZpbmVkXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNoZWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRhdGFTZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVmYXVsdENoZWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQ2hlY2tlZENoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3RcbiAgfSlcblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjaGVja2VkOiB0aGlzLnByb3BzLmRlZmF1bHRDaGVja2VkXG4gICAgfSlcbiAgICB0aGlzLmlzQ2hlY2tlZCA9IHRoaXMuY2FsY3VsYXRlQ2hlY2tlZCgpXG4gIH1cblxuICBjYWxjdWxhdGVDaGVja2VkKCkge1xuICAgIGlmIChcImNoZWNrZWRcIiBpbiB0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLmNoZWNrZWRcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucy5jaGVja2VkXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpc0NoZWNrZWR9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtsYWJlbH0gPSB0aGlzLnBcbiAgICBjb25zdCB7ZGF0YVNldH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCJ9LFxuICAgICAgdGhpcy5wcm9wcy5zdHlsZVxuICAgIClcbiAgICBjb25zdCBhY3R1YWxEYXRhU2V0ID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgY2hlY2tlZDogaXNDaGVja2VkXG4gICAgICB9LFxuICAgICAgZGF0YVNldFxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt7Y29tcG9uZW50OiBcImFwaS1tYWtlci91dGlscy9jaGVja2JveFwifX1cbiAgICAgICAgc3R5bGU9e2FjdHVhbFN0eWxlfVxuICAgICAgPlxuICAgICAgICA8Q2hlY2tCb3ggZGF0YVNldD17YWN0dWFsRGF0YVNldH0gb25WYWx1ZUNoYW5nZT17dGhpcy50dC5vblZhbHVlQ2hhbmdlfSB2YWx1ZT17aXNDaGVja2VkfSAvPlxuICAgICAgICB7bGFiZWwgJiZcbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25MYWJlbFByZXNzZWR9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3ttYXJnaW5MZWZ0OiAzfX0+XG4gICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIG9uTGFiZWxQcmVzc2VkID0gKCkgPT4gdGhpcy5wLm9uQ2hlY2tlZENoYW5nZSghdGhpcy50dC5pc0NoZWNrZWQpXG5cbiAgb25WYWx1ZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMub25DaGVja2VkQ2hhbmdlKSB7XG4gICAgICB0aGlzLnAub25DaGVja2VkQ2hhbmdlKGUpXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMudHQu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
@@ -0,0 +1,163 @@
1
+ import { shapeComponent, ShapeComponent } from "set-state-compare/src/shape-component";
2
+ import React, { useMemo } from "react";
3
+ import Checkbox from "./checkbox";
4
+ import { digs } from "diggerize";
5
+ import { useForm } from "../form";
6
+ import * as inflection from "inflection";
7
+ import InvalidFeedback from "./invalid-feedback";
8
+ import memo from "set-state-compare/src/memo";
9
+ import PropTypes from "prop-types";
10
+ import propTypesExact from "prop-types-exact";
11
+ import Text from "./text";
12
+ import useInput from "../use-input";
13
+ import { View } from "react-native";
14
+ const OptionElement = memo(shapeComponent(class OptionElement extends ShapeComponent {
15
+ static propTypes = propTypesExact({
16
+ checked: PropTypes.bool.isRequired,
17
+ inputName: PropTypes.string.isRequired,
18
+ onChange: PropTypes.func.isRequired,
19
+ option: PropTypes.array.isRequired
20
+ });
21
+ render() {
22
+ const {
23
+ checked,
24
+ inputName,
25
+ option
26
+ } = this.p;
27
+ return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Checkbox, {
28
+ checked: checked,
29
+ dataSet: {
30
+ component: "api-maker/utils/checkboxes/option",
31
+ name: inputName,
32
+ value: option[1]
33
+ },
34
+ label: option[0],
35
+ onCheckedChange: this.tt.onChange
36
+ }));
37
+ }
38
+ onChange = checked => this.p.onChange({
39
+ checked,
40
+ option: this.p.option
41
+ });
42
+ }));
43
+ export default memo(shapeComponent(class ApiMakerUtilsCheckboxes extends ShapeComponent {
44
+ static propTypes = propTypesExact({
45
+ attribute: PropTypes.string,
46
+ defaultValue: PropTypes.array,
47
+ label: PropTypes.string,
48
+ labelClassName: PropTypes.string,
49
+ model: PropTypes.object,
50
+ name: PropTypes.string,
51
+ onChange: PropTypes.func,
52
+ options: PropTypes.array.isRequired
53
+ });
54
+ setup() {
55
+ const {
56
+ inputProps,
57
+ wrapperOpts
58
+ } = useInput({
59
+ props: this.props
60
+ });
61
+ this.generatedId = useMemo(() => Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15), []);
62
+ this.setInstance({
63
+ form: useForm(),
64
+ inputProps,
65
+ wrapperOpts
66
+ });
67
+ this.useStates({
68
+ checkedOptions: () => {
69
+ if (Array.isArray(this.props.defaultValue)) return this.props.defaultValue;
70
+ if (this.props.defaultValue) return [this.props.defaultValue];
71
+ return [];
72
+ }
73
+ });
74
+ useMemo(() => {
75
+ if (this.form && inputProps.name) {
76
+ this.form.setValue(inputProps.name, this.s.checkedOptions);
77
+ }
78
+ }, []);
79
+ }
80
+ render() {
81
+ const {
82
+ wrapperOpts
83
+ } = this.tt;
84
+ const {
85
+ errors
86
+ } = digs(wrapperOpts, "errors");
87
+ return /*#__PURE__*/React.createElement(View, {
88
+ dataSet: {
89
+ component: "api-maker/utils/checkboxes"
90
+ }
91
+ }, /*#__PURE__*/React.createElement(Text, {
92
+ style: {
93
+ fontWeight: "bold"
94
+ }
95
+ }, this.tt.wrapperOpts.label), this.props.options.map(option => /*#__PURE__*/React.createElement(OptionElement, {
96
+ checked: this.isChecked(option),
97
+ inputName: this.inputName(),
98
+ key: option[1],
99
+ onChange: this.tt.onOptionChecked,
100
+ option: option
101
+ })), errors.length > 0 && /*#__PURE__*/React.createElement(InvalidFeedback, {
102
+ errors: errors
103
+ }));
104
+ }
105
+ inputDefaultValue() {
106
+ const {
107
+ attribute,
108
+ defaultValue,
109
+ model
110
+ } = this.props;
111
+ if (defaultValue) {
112
+ return defaultValue;
113
+ } else if (attribute && model) {
114
+ if (!model[attribute]) throw `No such attribute: ${attribute}`;
115
+ return this.props.model[attribute]();
116
+ }
117
+ }
118
+ inputName() {
119
+ if (this.props.name) {
120
+ return `${this.props.name}[]`;
121
+ } else if (this.props.model) {
122
+ return `${this.props.model.modelClassData().paramKey}[${inflection.underscore(this.props.attribute)}]`;
123
+ }
124
+ }
125
+ isChecked = option => this.s.checkedOptions.includes(option[1]);
126
+ onOptionChecked = ({
127
+ checked,
128
+ option
129
+ }) => {
130
+ const {
131
+ inputProps,
132
+ form
133
+ } = this.tt;
134
+ const {
135
+ name
136
+ } = inputProps;
137
+ let newOptions;
138
+ if (checked) {
139
+ newOptions = this.s.checkedOptions.concat([option[1]]);
140
+ this.setState({
141
+ checkedOptions: newOptions
142
+ });
143
+ } else {
144
+ newOptions = this.s.checkedOptions.filter(value => value != option[1]);
145
+ this.setState({
146
+ checkedOptions: newOptions
147
+ });
148
+ }
149
+ console.log({
150
+ checkedOptions: this.s.checkedOptions
151
+ });
152
+ if (this.props.onChange) {
153
+ this.p.onChange({
154
+ checked,
155
+ option
156
+ });
157
+ }
158
+ if (form && name) {
159
+ form.setValue(name, newOptions);
160
+ }
161
+ };
162
+ }));
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzaGFwZUNvbXBvbmVudCIsIlNoYXBlQ29tcG9uZW50IiwiUmVhY3QiLCJ1c2VNZW1vIiwiQ2hlY2tib3giLCJkaWdzIiwidXNlRm9ybSIsImluZmxlY3Rpb24iLCJJbnZhbGlkRmVlZGJhY2siLCJtZW1vIiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJUZXh0IiwidXNlSW5wdXQiLCJWaWV3IiwiT3B0aW9uRWxlbWVudCIsInByb3BUeXBlcyIsImNoZWNrZWQiLCJib29sIiwiaXNSZXF1aXJlZCIsImlucHV0TmFtZSIsInN0cmluZyIsIm9uQ2hhbmdlIiwiZnVuYyIsIm9wdGlvbiIsImFycmF5IiwicmVuZGVyIiwicCIsImNyZWF0ZUVsZW1lbnQiLCJkYXRhU2V0IiwiY29tcG9uZW50IiwibmFtZSIsInZhbHVlIiwibGFiZWwiLCJvbkNoZWNrZWRDaGFuZ2UiLCJ0dCIsIkFwaU1ha2VyVXRpbHNDaGVja2JveGVzIiwiYXR0cmlidXRlIiwiZGVmYXVsdFZhbHVlIiwibGFiZWxDbGFzc05hbWUiLCJtb2RlbCIsIm9iamVjdCIsIm9wdGlvbnMiLCJzZXR1cCIsImlucHV0UHJvcHMiLCJ3cmFwcGVyT3B0cyIsInByb3BzIiwiZ2VuZXJhdGVkSWQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJzdWJzdHJpbmciLCJzZXRJbnN0YW5jZSIsImZvcm0iLCJ1c2VTdGF0ZXMiLCJjaGVja2VkT3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNldFZhbHVlIiwicyIsImVycm9ycyIsInN0eWxlIiwiZm9udFdlaWdodCIsIm1hcCIsImlzQ2hlY2tlZCIsImtleSIsIm9uT3B0aW9uQ2hlY2tlZCIsImxlbmd0aCIsImlucHV0RGVmYXVsdFZhbHVlIiwibW9kZWxDbGFzc0RhdGEiLCJwYXJhbUtleSIsInVuZGVyc2NvcmUiLCJpbmNsdWRlcyIsIm5ld09wdGlvbnMiLCJjb25jYXQiLCJzZXRTdGF0ZSIsImZpbHRlciIsImNvbnNvbGUiLCJsb2ciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2hlY2tib3hlcy5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzaGFwZUNvbXBvbmVudCwgU2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIlxuaW1wb3J0IHtkaWdzfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCB7dXNlRm9ybX0gZnJvbSBcIi4uL2Zvcm1cIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgSW52YWxpZEZlZWRiYWNrIGZyb20gXCIuL2ludmFsaWQtZmVlZGJhY2tcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBUZXh0IGZyb20gXCIuL3RleHRcIlxuaW1wb3J0IHVzZUlucHV0IGZyb20gXCIuLi91c2UtaW5wdXRcIlxuaW1wb3J0IHtWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcblxuY29uc3QgT3B0aW9uRWxlbWVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgT3B0aW9uRWxlbWVudCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjaGVja2VkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGlucHV0TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9wdGlvbjogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWRcbiAgfSlcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NoZWNrZWQsIGlucHV0TmFtZSwgb3B0aW9ufSA9IHRoaXMucFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3ID5cbiAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgICBkYXRhU2V0PXt7XG4gICAgICAgICAgICBjb21wb25lbnQ6IFwiYXBpLW1ha2VyL3V0aWxzL2NoZWNrYm94ZXMvb3B0aW9uXCIsXG4gICAgICAgICAgICBuYW1lOiBpbnB1dE5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uWzFdXG4gICAgICAgICAgfX1cbiAgICAgICAgICBsYWJlbD17b3B0aW9uWzBdfVxuICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17dGhpcy50dC5vbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkNoYW5nZSA9IChjaGVja2VkKSA9PiB0aGlzLnAub25DaGFuZ2Uoe2NoZWNrZWQsIG9wdGlvbjogdGhpcy5wLm9wdGlvbn0pXG59KSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzQ2hlY2tib3hlcyBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBhdHRyaWJ1dGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGFiZWxDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWRcbiAgfSlcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7aW5wdXRQcm9wcywgd3JhcHBlck9wdHN9ID0gdXNlSW5wdXQoe3Byb3BzOiB0aGlzLnByb3BzfSlcblxuICAgIHRoaXMuZ2VuZXJhdGVkSWQgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDE1KSArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNSksXG4gICAgICBbXVxuICAgIClcblxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe1xuICAgICAgZm9ybTogdXNlRm9ybSgpLFxuICAgICAgaW5wdXRQcm9wcyxcbiAgICAgIHdyYXBwZXJPcHRzXG4gICAgfSlcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjaGVja2VkT3B0aW9uczogKCkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSkpIHJldHVybiB0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUpIHJldHVybiBbdGhpcy5wcm9wcy5kZWZhdWx0VmFsdWVdXG5cbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9XG4gICAgfSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybSAmJiBpbnB1dFByb3BzLm5hbWUpIHtcbiAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKGlucHV0UHJvcHMubmFtZSwgdGhpcy5zLmNoZWNrZWRPcHRpb25zKVxuICAgICAgfVxuICAgIH0sIFtdKVxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCB7d3JhcHBlck9wdHN9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtlcnJvcnN9ID0gZGlncyh3cmFwcGVyT3B0cywgXCJlcnJvcnNcIilcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt7Y29tcG9uZW50OiBcImFwaS1tYWtlci91dGlscy9jaGVja2JveGVzXCJ9fT5cbiAgICAgICAgPFRleHQgc3R5bGU9e3tmb250V2VpZ2h0OiBcImJvbGRcIn19PlxuICAgICAgICAgIHt0aGlzLnR0LndyYXBwZXJPcHRzLmxhYmVsfVxuICAgICAgICA8L1RleHQ+XG4gICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKChvcHRpb24pID0+XG4gICAgICAgICAgPE9wdGlvbkVsZW1lbnRcbiAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMuaXNDaGVja2VkKG9wdGlvbil9XG4gICAgICAgICAgICBpbnB1dE5hbWU9e3RoaXMuaW5wdXROYW1lKCl9XG4gICAgICAgICAgICBrZXk9e29wdGlvblsxXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uT3B0aW9uQ2hlY2tlZH1cbiAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtlcnJvcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIDxJbnZhbGlkRmVlZGJhY2sgZXJyb3JzPXtlcnJvcnN9IC8+XG4gICAgICAgIH1cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBpbnB1dERlZmF1bHRWYWx1ZSAoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlLCBtb2RlbH0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlXG4gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUgJiYgbW9kZWwpIHtcbiAgICAgIGlmICghbW9kZWxbYXR0cmlidXRlXSkgdGhyb3cgYE5vIHN1Y2ggYXR0cmlidXRlOiAke2F0dHJpYnV0ZX1gXG5cbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm1vZGVsW2F0dHJpYnV0ZV0oKVxuICAgIH1cbiAgfVxuXG4gIGlucHV0TmFtZSAoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMucHJvcHMubmFtZX1bXWBcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMubW9kZWwpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnByb3BzLm1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkucGFyYW1LZXl9WyR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMucHJvcHMuYXR0cmlidXRlKX1dYFxuICAgIH1cbiAgfVxuXG4gIGlzQ2hlY2tlZCA9IChvcHRpb24pID0+IHRoaXMucy5jaGVja2VkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb25bMV0pXG5cbiAgb25PcHRpb25DaGVja2VkID0gKHtjaGVja2VkLCBvcHRpb259KSA9PiB7XG4gICAgY29uc3Qge2lucHV0UHJvcHMsIGZvcm19ID0gdGhpcy50dFxuICAgIGNvbnN0IHtuYW1lfSA9IGlucHV0UHJvcHNcbiAgICBsZXQgbmV3T3B0aW9uc1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld09wdGlvbnMgPSB0aGlzLnMuY2hlY2tlZE9wdGlvbnMuY29uY2F0KFtvcHRpb25bMV1dKVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkT3B0aW9uczogbmV3T3B0aW9uc30pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld09wdGlvbnMgPSB0aGlzLnMuY2hlY2tlZE9wdGlvbnMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT0gb3B0aW9uWzFdKVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkT3B0aW9uczogbmV3T3B0aW9uc30pXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coe2NoZWNrZWRPcHRpb25zOiB0aGlzLnMuY2hlY2tlZE9wdGlvbnN9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMucC5vbkNoYW5nZSh7Y2hlY2tlZCwgb3B0aW9ufSlcbiAgICB9XG5cbiAgICBpZiAoZm9ybSAmJiBuYW1lKSB7XG4gICAgICBmb3JtLnNldFZhbHVlKG5hbWUsIG5ld09wdGlvbnMpXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsY0FBYyxFQUFFQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BGLE9BQU9DLEtBQUssSUFBR0MsT0FBTyxRQUFPLE9BQU87QUFDcEMsT0FBT0MsUUFBUSxNQUFNLFlBQVk7QUFDakMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsU0FBUUMsT0FBTyxRQUFPLFNBQVM7QUFDL0IsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxlQUFlLE1BQU0sb0JBQW9CO0FBQ2hELE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxPQUFPQyxJQUFJLE1BQU0sUUFBUTtBQUN6QixPQUFPQyxRQUFRLE1BQU0sY0FBYztBQUNuQyxTQUFRQyxJQUFJLFFBQU8sY0FBYztBQUVqQyxNQUFNQyxhQUFhLEdBQUdOLElBQUksQ0FBQ1QsY0FBYyxDQUFDLE1BQU1lLGFBQWEsU0FBU2QsY0FBYyxDQUFDO0VBQ25GLE9BQU9lLFNBQVMsR0FBR0wsY0FBYyxDQUFDO0lBQ2hDTSxPQUFPLEVBQUVQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDQyxVQUFVO0lBQ2xDQyxTQUFTLEVBQUVWLFNBQVMsQ0FBQ1csTUFBTSxDQUFDRixVQUFVO0lBQ3RDRyxRQUFRLEVBQUVaLFNBQVMsQ0FBQ2EsSUFBSSxDQUFDSixVQUFVO0lBQ25DSyxNQUFNLEVBQUVkLFNBQVMsQ0FBQ2UsS0FBSyxDQUFDTjtFQUMxQixDQUFDLENBQUM7RUFFRk8sTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDVCxPQUFPO01BQUVHLFNBQVM7TUFBRUk7SUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDRyxDQUFDO0lBRTNDLG9CQUNFekIsS0FBQSxDQUFBMEIsYUFBQSxDQUFDZCxJQUFJLHFCQUNIWixLQUFBLENBQUEw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
@@ -0,0 +1,18 @@
1
+ import React, { createContext, useContext } from "react";
2
+ import memo from "set-state-compare/src/memo";
3
+ const DefaultStyleContext = /*#__PURE__*/createContext({
4
+ Text: {}
5
+ });
6
+ const useDefaultStyle = () => {
7
+ const defaultStyle = useContext(DefaultStyleContext);
8
+ return defaultStyle;
9
+ };
10
+ const WithDefaultStyle = memo(props => {
11
+ const defaultStyle = useContext(DefaultStyleContext);
12
+ const newDefaultStyle = Object.assign({}, defaultStyle, props.style);
13
+ return /*#__PURE__*/React.createElement(DefaultStyleContext.Provider, {
14
+ value: newDefaultStyle
15
+ }, props.children);
16
+ });
17
+ export { useDefaultStyle, WithDefaultStyle };
18
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwibWVtbyIsIkRlZmF1bHRTdHlsZUNvbnRleHQiLCJUZXh0IiwidXNlRGVmYXVsdFN0eWxlIiwiZGVmYXVsdFN0eWxlIiwiV2l0aERlZmF1bHRTdHlsZSIsInByb3BzIiwibmV3RGVmYXVsdFN0eWxlIiwiT2JqZWN0IiwiYXNzaWduIiwic3R5bGUiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RlZmF1bHQtc3R5bGUuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuXG5jb25zdCBEZWZhdWx0U3R5bGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gIFRleHQ6IHt9XG59KVxuXG5jb25zdCB1c2VEZWZhdWx0U3R5bGUgPSAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRTdHlsZSA9IHVzZUNvbnRleHQoRGVmYXVsdFN0eWxlQ29udGV4dClcblxuICByZXR1cm4gZGVmYXVsdFN0eWxlXG59XG5cbmNvbnN0IFdpdGhEZWZhdWx0U3R5bGUgPSBtZW1vKChwcm9wcykgPT4ge1xuICBjb25zdCBkZWZhdWx0U3R5bGUgPSB1c2VDb250ZXh0KERlZmF1bHRTdHlsZUNvbnRleHQpXG4gIGNvbnN0IG5ld0RlZmF1bHRTdHlsZSA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTdHlsZSwgcHJvcHMuc3R5bGUpXG5cbiAgcmV0dXJuIChcbiAgICA8RGVmYXVsdFN0eWxlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmV3RGVmYXVsdFN0eWxlfT5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L0RlZmF1bHRTdHlsZUNvbnRleHQuUHJvdmlkZXI+XG4gIClcbn0pXG5cbmV4cG9ydCB7dXNlRGVmYXVsdFN0eWxlLCBXaXRoRGVmYXVsdFN0eWxlfVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQUdDLGFBQWEsRUFBRUMsVUFBVSxRQUFPLE9BQU87QUFDdEQsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUU3QyxNQUFNQyxtQkFBbUIsZ0JBQUdILGFBQWEsQ0FBQztFQUN4Q0ksSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNQyxlQUFlLEdBQUdBLENBQUEsS0FBTTtFQUM1QixNQUFNQyxZQUFZLEdBQUdMLFVBQVUsQ0FBQ0UsbUJBQW1CLENBQUM7RUFFcEQsT0FBT0csWUFBWTtBQUNyQixDQUFDO0FBRUQsTUFBTUMsZ0JBQWdCLEdBQUdMLElBQUksQ0FBRU0sS0FBSyxJQUFLO0VBQ3ZDLE1BQU1GLFlBQVksR0FBR0wsVUFBVSxDQUFDRSxtQkFBbUIsQ0FBQztFQUNwRCxNQUFNTSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFTCxZQUFZLEVBQUVFLEtBQUssQ0FBQ0ksS0FBSyxDQUFDO0VBRXBFLG9CQUNFYixLQUFBLENBQUFjLGFBQUEsQ0FBQ1YsbUJBQW1CLENBQUNXLFFBQVE7SUFBQ0MsS0FBSyxFQUFFTjtFQUFnQixHQUNsREQsS0FBSyxDQUFDUSxRQUNxQixDQUFDO0FBRW5DLENBQUMsQ0FBQztBQUVGLFNBQVFYLGVBQWUsRUFBRUUsZ0JBQWdCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,23 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import BaseComponent from "../base-component";
3
+ import FontAwesomeIcon from "react-native-vector-icons/FontAwesome";
4
+ import memo from "set-state-compare/src/memo";
5
+ import React from "react";
6
+ import { shapeComponent } from "set-state-compare/src/shape-component";
7
+ import { useDefaultStyle } from "./default-style";
8
+ export default memo(shapeComponent(class ApiMakerUtilsIcon extends BaseComponent {
9
+ render() {
10
+ const defaultStyle = useDefaultStyle();
11
+ const {
12
+ style,
13
+ ...restProps
14
+ } = this.props;
15
+ const actualStyle = Object.assign({
16
+ color: defaultStyle.Text.color
17
+ }, style);
18
+ return /*#__PURE__*/React.createElement(FontAwesomeIcon, _extends({
19
+ style: actualStyle
20
+ }, restProps));
21
+ }
22
+ }));
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiRm9udEF3ZXNvbWVJY29uIiwibWVtbyIsIlJlYWN0Iiwic2hhcGVDb21wb25lbnQiLCJ1c2VEZWZhdWx0U3R5bGUiLCJBcGlNYWtlclV0aWxzSWNvbiIsInJlbmRlciIsImRlZmF1bHRTdHlsZSIsInN0eWxlIiwicmVzdFByb3BzIiwicHJvcHMiLCJhY3R1YWxTdHlsZSIsIk9iamVjdCIsImFzc2lnbiIsImNvbG9yIiwiVGV4dCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pY29uLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IEZvbnRBd2Vzb21lSWNvbiBmcm9tIFwicmVhY3QtbmF0aXZlLXZlY3Rvci1pY29ucy9Gb250QXdlc29tZVwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQge3VzZURlZmF1bHRTdHlsZX0gZnJvbSBcIi4vZGVmYXVsdC1zdHlsZVwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJVdGlsc0ljb24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdHlsZSA9IHVzZURlZmF1bHRTdHlsZSgpXG4gICAgY29uc3Qge3N0eWxlLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtjb2xvcjogZGVmYXVsdFN0eWxlLlRleHQuY29sb3J9LFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvbnRBd2Vzb21lSWNvbiBzdHlsZT17YWN0dWFsU3R5bGV9IHsuLi5yZXN0UHJvcHN9IC8+XG4gICAgKVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLGFBQWEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsZUFBZSxNQUFNLHVDQUF1QztBQUNuRSxPQUFPQyxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLFNBQVFDLGNBQWMsUUFBTyx1Q0FBdUM7QUFDcEUsU0FBUUMsZUFBZSxRQUFPLGlCQUFpQjtBQUUvQyxlQUFlSCxJQUFJLENBQUNFLGNBQWMsQ0FBQyxNQUFNRSxpQkFBaUIsU0FBU04sYUFBYSxDQUFDO0VBQy9FTyxNQUFNQSxDQUFBLEVBQUc7SUFDUCxNQUFNQyxZQUFZLEdBQUdILGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU07TUFBQ0ksS0FBSztNQUFFLEdBQUdDO0lBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztJQUN4QyxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUMvQjtNQUFDQyxLQUFLLEVBQUVQLFlBQVksQ0FBQ1EsSUFBSSxDQUFDRDtJQUFLLENBQUMsRUFDaENOLEtBQ0YsQ0FBQztJQUVELG9CQUNFTixLQUFBLENBQUFjLGFBQUEsQ0FBQ2hCLGVBQWUsRUFBQWlCLFFBQUE7TUFBQ1QsS0FBSyxFQUFFRztJQUFZLEdBQUtGLFNBQVMsQ0FBRyxDQUFDO0VBRTFEO0FBQ0YsQ0FBQyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,19 @@
1
+ import { shapeComponent, ShapeComponent } from "set-state-compare/src/shape-component";
2
+ import memo from "set-state-compare/src/memo";
3
+ import PropTypes from "prop-types";
4
+ import propTypesExact from "prop-types-exact";
5
+ import React from "react";
6
+ import Text from "./text";
7
+ export default memo(shapeComponent(class ApiMakerUtilsInvalidFeedback extends ShapeComponent {
8
+ static propTypes = propTypesExact({
9
+ message: PropTypes.string.isRequired
10
+ });
11
+ render() {
12
+ return /*#__PURE__*/React.createElement(Text, {
13
+ style: {
14
+ color: "red"
15
+ }
16
+ }, this.p.message);
17
+ }
18
+ }));
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzaGFwZUNvbXBvbmVudCIsIlNoYXBlQ29tcG9uZW50IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJUZXh0IiwiQXBpTWFrZXJVdGlsc0ludmFsaWRGZWVkYmFjayIsInByb3BUeXBlcyIsIm1lc3NhZ2UiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY29sb3IiLCJwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ludmFsaWQtZmVlZGJhY2suanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2hhcGVDb21wb25lbnQsIFNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzSW52YWxpZEZlZWRiYWNrIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFRleHQgc3R5bGU9e3tjb2xvcjogXCJyZWRcIn19PlxuICAgICAgICB7dGhpcy5wLm1lc3NhZ2V9XG4gICAgICA8L1RleHQ+XG4gICAgKVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsY0FBYyxFQUFFQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BGLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxJQUFJLE1BQU0sUUFBUTtBQUV6QixlQUFlSixJQUFJLENBQUNGLGNBQWMsQ0FBQyxNQUFNTyw0QkFBNEIsU0FBU04sY0FBYyxDQUFDO0VBQzNGLE9BQU9PLFNBQVMsR0FBR0osY0FBYyxDQUFDO0lBQ2hDSyxPQUFPLEVBQUVOLFNBQVMsQ0FBQ08sTUFBTSxDQUFDQztFQUM1QixDQUFDLENBQUM7RUFFRkMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1Asb0JBQ0VQLEtBQUEsQ0FBQVEsYUFBQSxDQUFDUCxJQUFJO01BQUNRLEtBQUssRUFBRTtRQUFDQyxLQUFLLEVBQUU7TUFBSztJQUFFLEdBQ3pCLElBQUksQ0FBQ0MsQ0FBQyxDQUFDUCxPQUNKLENBQUM7RUFFWDtBQUNGLENBQUMsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,62 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import { Modal, Pressable, View } from "react-native";
3
+ import BaseComponent from "../base-component";
4
+ import Card from "./card";
5
+ import Icon from "../utils/icon";
6
+ import memo from "set-state-compare/src/memo";
7
+ import React from "react";
8
+ import { shapeComponent } from "set-state-compare/src/shape-component";
9
+ import useBreakpoint from "../use-breakpoint";
10
+ export default memo(shapeComponent(class ApiMakerUtilsComponent extends BaseComponent {
11
+ render() {
12
+ const {
13
+ xs,
14
+ sm
15
+ } = useBreakpoint();
16
+ const {
17
+ children,
18
+ dataSet,
19
+ ...restProps
20
+ } = this.props;
21
+ const actualDataSet = Object.assign({
22
+ component: "api-maker/utils/modal"
23
+ }, dataSet);
24
+ let width, maxWidth;
25
+ if (xs || sm) {
26
+ width = "95%";
27
+ } else {
28
+ width = "80%";
29
+ maxWidth = 800;
30
+ }
31
+ return /*#__PURE__*/React.createElement(Modal, _extends({
32
+ dataSet: actualDataSet
33
+ }, restProps), /*#__PURE__*/React.createElement(View, {
34
+ style: {
35
+ alignItems: "center",
36
+ justifyContent: "center",
37
+ width: "100%",
38
+ height: "100%",
39
+ backgroundColor: "rgba(0, 0, 0, 0.8)"
40
+ }
41
+ }, /*#__PURE__*/React.createElement(Card, {
42
+ controls: this.cardHeaderControls(),
43
+ style: {
44
+ width,
45
+ maxWidth
46
+ }
47
+ }, children)));
48
+ }
49
+ cardHeaderControls() {
50
+ return /*#__PURE__*/React.createElement(Pressable, {
51
+ onPress: this.tt.onModalClosePress,
52
+ style: {
53
+ marginLeft: "auto",
54
+ padding: 5
55
+ }
56
+ }, /*#__PURE__*/React.createElement(Icon, {
57
+ name: "remove"
58
+ }));
59
+ }
60
+ onModalClosePress = () => this.props.onRequestClose && this.props.onRequestClose();
61
+ }));
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RhbCIsIlByZXNzYWJsZSIsIlZpZXciLCJCYXNlQ29tcG9uZW50IiwiQ2FyZCIsIkljb24iLCJtZW1vIiwiUmVhY3QiLCJzaGFwZUNvbXBvbmVudCIsInVzZUJyZWFrcG9pbnQiLCJBcGlNYWtlclV0aWxzQ29tcG9uZW50IiwicmVuZGVyIiwieHMiLCJzbSIsImNoaWxkcmVuIiwiZGF0YVNldCIsInJlc3RQcm9wcyIsInByb3BzIiwiYWN0dWFsRGF0YVNldCIsIk9iamVjdCIsImFzc2lnbiIsImNvbXBvbmVudCIsIndpZHRoIiwibWF4V2lkdGgiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJzdHlsZSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImhlaWdodCIsImJhY2tncm91bmRDb2xvciIsImNvbnRyb2xzIiwiY2FyZEhlYWRlckNvbnRyb2xzIiwib25QcmVzcyIsInR0Iiwib25Nb2RhbENsb3NlUHJlc3MiLCJtYXJnaW5MZWZ0IiwicGFkZGluZyIsIm5hbWUiLCJvblJlcXVlc3RDbG9zZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tb2RhbC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RhbCwgUHJlc3NhYmxlLCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi9jYXJkXCJcbmltcG9ydCBJY29uIGZyb20gXCIuLi91dGlscy9pY29uXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCB1c2VCcmVha3BvaW50IGZyb20gXCIuLi91c2UtYnJlYWtwb2ludFwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJVdGlsc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge3hzLCBzbX0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCB7Y2hpbGRyZW4sIGRhdGFTZXQsIC4uLnJlc3RQcm9wc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgYWN0dWFsRGF0YVNldCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGNvbXBvbmVudDogXCJhcGktbWFrZXIvdXRpbHMvbW9kYWxcIlxuICAgICAgfSxcbiAgICAgIGRhdGFTZXRcbiAgICApXG4gICAgbGV0IHdpZHRoLCBtYXhXaWR0aFxuXG4gICAgaWYgKHhzIHx8IHNtKSB7XG4gICAgICB3aWR0aCA9IFwiOTUlXCJcbiAgICB9IGVsc2Uge1xuICAgICAgd2lkdGggPSBcIjgwJVwiXG4gICAgICBtYXhXaWR0aCA9IDgwMFxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kYWwgZGF0YVNldD17YWN0dWFsRGF0YVNldH0gey4uLnJlc3RQcm9wc30+XG4gICAgICAgIDxWaWV3XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjgpXCJcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNvbnRyb2xzPXt0aGlzLmNhcmRIZWFkZXJDb250cm9scygpfVxuICAgICAgICAgICAgc3R5bGU9e3t3aWR0aCwgbWF4V2lkdGh9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvTW9kYWw+XG4gICAgKVxuICB9XG5cbiAgY2FyZEhlYWRlckNvbnRyb2xzKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25Nb2RhbENsb3NlUHJlc3N9IHN0eWxlPXt7bWFyZ2luTGVmdDogXCJhdXRvXCIsIHBhZGRpbmc6IDV9fT5cbiAgICAgICAgPEljb24gbmFtZT1cInJlbW92ZVwiIC8+XG4gICAgICA8L1ByZXNzYWJsZT5cbiAgICApXG4gIH1cblxuICBvbk1vZGFsQ2xvc2VQcmVzcyA9ICgpID0+IHRoaXMucHJvcHMub25SZXF1ZXN0Q2xvc2UgJiYgdGhpcy5wcm9wcy5vblJlcXVlc3RDbG9zZSgpXG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEtBQUssRUFBRUMsU0FBUyxFQUFFQyxJQUFJLFFBQU8sY0FBYztBQUNuRCxPQUFPQyxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLE9BQU9DLElBQUksTUFBTSxRQUFRO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsU0FBUUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRSxPQUFPQyxhQUFhLE1BQU0sbUJBQW1CO0FBRTdDLGVBQWVILElBQUksQ0FBQ0UsY0FBYyxDQUFDLE1BQU1FLHNCQUFzQixTQUFTUCxhQUFhLENBQUM7RUFDcEZRLE1BQU1BLENBQUEsRUFBRztJQUNQLE1BQU07TUFBQ0MsRUFBRTtNQUFFQztJQUFFLENBQUMsR0FBR0osYUFBYSxDQUFDLENBQUM7SUFDaEMsTUFBTTtNQUFDSyxRQUFRO01BQUVDLE9BQU87TUFBRSxHQUFHQztJQUFTLENBQUMsR0FBRyxJQUFJLENBQUNDLEtBQUs7SUFDcEQsTUFBTUMsYUFBYSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FDakM7TUFDRUMsU0FBUyxFQUFFO0lBQ2IsQ0FBQyxFQUNETixPQUNGLENBQUM7SUFDRCxJQUFJTyxLQUFLLEVBQUVDLFFBQVE7SUFFbkIsSUFBSVgsRUFBRSxJQUFJQyxFQUFFLEVBQUU7TUFDWlMsS0FBSyxHQUFHLEtBQUs7SUFDZixDQUFDLE1BQU07TUFDTEEsS0FBSyxHQUFHLEtBQUs7TUFDYkMsUUFBUSxHQUFHLEdBQUc7SUFDaEI7SUFFQSxvQkFDRWhCLEtBQUEsQ0FBQWlCLGFBQUEsQ0FBQ3hCLEtBQUssRUFBQXlCLFFBQUE7TUFBQ1YsT0FBTyxFQUFFRztJQUFjLEdBQUtGLFNBQVMsZ0JBQzFDVCxLQUFBLENBQUFpQixhQUFBLENBQUN0QixJQUFJO01BQ0h3QixLQUFLLEVBQUU7UUFDTEMsVUFBVSxFQUFFLFFBQVE7UUFDcEJDLGNBQWMsRUFBRSxRQUFRO1FBQ3hCTixLQUFLLEVBQUUsTUFBTTtRQUNiTyxNQUFNLEVBQUUsTUFBTTtRQUNkQyxlQUFlLEVBQUU7TUFDbkI7SUFBRSxnQkFFRnZCLEtBQUEsQ0FBQWlCLGFBQUEsQ0FBQ3BCLElBQUk7TUFDSDJCLFFBQVEsRUFBRSxJQUFJLENBQUNDLGtCQUFrQixDQUFDLENBQUU7TUFDcENOLEtBQUssRUFBRTtRQUFDSixLQUFLO1FBQUVDO01BQVE7SUFBRSxHQUV4QlQsUUFDRyxDQUNGLENBQ0QsQ0FBQztFQUVaO0VBRUFrQixrQkFBa0JBLENBQUEsRUFBRztJQUNuQixvQkFDRXpCLEtBQUEsQ0FBQWlCLGFBQUEsQ0FBQ3ZCLFNBQVM7TUFBQ2dDLE9BQU8sRUFBRSxJQUFJLENBQUNDLEVBQUUsQ0FBQ0MsaUJBQWtCO01BQUNULEtBQUssRUFBRTtRQUFDVSxVQUFVLEVBQUUsTUFBTTtRQUFFQyxPQUFPLEVBQUU7TUFBQztJQUFFLGdCQUNyRjlCLEtBQUEsQ0FBQWlCLGFBQUEsQ0FBQ25CLElBQUk7TUFBQ2lDLElBQUksRUFBQztJQUFRLENBQUUsQ0FDWixDQUFDO0VBRWhCO0VBRUFILGlCQUFpQixHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDbEIsS0FBSyxDQUFDc0IsY0FBYyxJQUFJLElBQUksQ0FBQ3RCLEtBQUssQ0FBQ3NCLGNBQWMsQ0FBQyxDQUFDO0FBQ3BGLENBQUMsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119