@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,34 @@
1
+ import { camelize } from "inflection";
2
+ import useQueryParams from "on-location-changed/build/use-query-params";
3
+ const calculateQParams = (defaultParams, queryParams, searchKey) => {
4
+ if (searchKey in queryParams) {
5
+ return JSON.parse(queryParams[searchKey]);
6
+ } else if (defaultParams) {
7
+ return {
8
+ ...defaultParams
9
+ };
10
+ }
11
+ return {};
12
+ };
13
+ const useSorting = ({
14
+ defaultParams,
15
+ query
16
+ }) => {
17
+ const queryParams = useQueryParams();
18
+ const searchKey = query.queryArgs.searchKey || "q";
19
+ const qParams = calculateQParams(defaultParams, queryParams, searchKey);
20
+ let matchSortParam;
21
+ if (typeof qParams.s == "string") {
22
+ matchSortParam = qParams.s?.match(/^(.+?)( asc| desc|)$/);
23
+ }
24
+ const sortAttribute = matchSortParam ? camelize(matchSortParam[1], true) : null;
25
+ const sortMode = matchSortParam ? matchSortParam[2].trim() : null;
26
+ return {
27
+ qParams,
28
+ searchKey,
29
+ sortAttribute,
30
+ sortMode
31
+ };
32
+ };
33
+ export default useSorting;
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYW1lbGl6ZSIsInVzZVF1ZXJ5UGFyYW1zIiwiY2FsY3VsYXRlUVBhcmFtcyIsImRlZmF1bHRQYXJhbXMiLCJxdWVyeVBhcmFtcyIsInNlYXJjaEtleSIsIkpTT04iLCJwYXJzZSIsInVzZVNvcnRpbmciLCJxdWVyeSIsInF1ZXJ5QXJncyIsInFQYXJhbXMiLCJtYXRjaFNvcnRQYXJhbSIsInMiLCJtYXRjaCIsInNvcnRBdHRyaWJ1dGUiLCJzb3J0TW9kZSIsInRyaW0iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvdXNlLXNvcnRpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjYW1lbGl6ZX0gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXNcIlxuXG5jb25zdCBjYWxjdWxhdGVRUGFyYW1zID0gKGRlZmF1bHRQYXJhbXMsIHF1ZXJ5UGFyYW1zLCBzZWFyY2hLZXkpID0+IHtcbiAgaWYgKHNlYXJjaEtleSBpbiBxdWVyeVBhcmFtcykge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHF1ZXJ5UGFyYW1zW3NlYXJjaEtleV0pXG4gIH0gZWxzZSBpZiAoZGVmYXVsdFBhcmFtcykge1xuICAgIHJldHVybiB7Li4uZGVmYXVsdFBhcmFtc31cbiAgfVxuXG4gIHJldHVybiB7fVxufVxuXG5jb25zdCB1c2VTb3J0aW5nID0gKHtkZWZhdWx0UGFyYW1zLCBxdWVyeX0pID0+IHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG4gIGNvbnN0IHNlYXJjaEtleSA9IHF1ZXJ5LnF1ZXJ5QXJncy5zZWFyY2hLZXkgfHwgXCJxXCJcbiAgY29uc3QgcVBhcmFtcyA9IGNhbGN1bGF0ZVFQYXJhbXMoZGVmYXVsdFBhcmFtcywgcXVlcnlQYXJhbXMsIHNlYXJjaEtleSlcbiAgbGV0IG1hdGNoU29ydFBhcmFtXG5cbiAgaWYgKHR5cGVvZiBxUGFyYW1zLnMgPT0gXCJzdHJpbmdcIikge1xuICAgIG1hdGNoU29ydFBhcmFtID0gcVBhcmFtcy5zPy5tYXRjaCgvXiguKz8pKCBhc2N8IGRlc2N8KSQvKVxuICB9XG5cbiAgY29uc3Qgc29ydEF0dHJpYnV0ZSA9IG1hdGNoU29ydFBhcmFtID8gY2FtZWxpemUobWF0Y2hTb3J0UGFyYW1bMV0sIHRydWUpIDogbnVsbFxuICBjb25zdCBzb3J0TW9kZSA9IG1hdGNoU29ydFBhcmFtID8gbWF0Y2hTb3J0UGFyYW1bMl0udHJpbSgpIDogbnVsbFxuXG4gIHJldHVybiB7XG4gICAgcVBhcmFtcyxcbiAgICBzZWFyY2hLZXksXG4gICAgc29ydEF0dHJpYnV0ZSxcbiAgICBzb3J0TW9kZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNvcnRpbmdcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxRQUFPLFlBQVk7QUFDbkMsT0FBT0MsY0FBYyxNQUFNLDRDQUE0QztBQUV2RSxNQUFNQyxnQkFBZ0IsR0FBR0EsQ0FBQ0MsYUFBYSxFQUFFQyxXQUFXLEVBQUVDLFNBQVMsS0FBSztFQUNsRSxJQUFJQSxTQUFTLElBQUlELFdBQVcsRUFBRTtJQUM1QixPQUFPRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsV0FBVyxDQUFDQyxTQUFTLENBQUMsQ0FBQztFQUMzQyxDQUFDLE1BQU0sSUFBSUYsYUFBYSxFQUFFO0lBQ3hCLE9BQU87TUFBQyxHQUFHQTtJQUFhLENBQUM7RUFDM0I7RUFFQSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxNQUFNSyxVQUFVLEdBQUdBLENBQUM7RUFBQ0wsYUFBYTtFQUFFTTtBQUFLLENBQUMsS0FBSztFQUM3QyxNQUFNTCxXQUFXLEdBQUdILGNBQWMsQ0FBQyxDQUFDO0VBQ3BDLE1BQU1JLFNBQVMsR0FBR0ksS0FBSyxDQUFDQyxTQUFTLENBQUNMLFNBQVMsSUFBSSxHQUFHO0VBQ2xELE1BQU1NLE9BQU8sR0FBR1QsZ0JBQWdCLENBQUNDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxTQUFTLENBQUM7RUFDdkUsSUFBSU8sY0FBYztFQUVsQixJQUFJLE9BQU9ELE9BQU8sQ0FBQ0UsQ0FBQyxJQUFJLFFBQVEsRUFBRTtJQUNoQ0QsY0FBYyxHQUFHRCxPQUFPLENBQUNFLENBQUMsRUFBRUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0VBQzNEO0VBRUEsTUFBTUMsYUFBYSxHQUFHSCxjQUFjLEdBQUdaLFFBQVEsQ0FBQ1ksY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUk7RUFDL0UsTUFBTUksUUFBUSxHQUFHSixjQUFjLEdBQUdBLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBRWpFLE9BQU87SUFDTE4sT0FBTztJQUNQTixTQUFTO0lBQ1RVLGFBQWE7SUFDYkM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVELGVBQWVSLFVBQVUiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,75 @@
1
+ import { Animated, Easing } from "react-native";
2
+ import { digg } from "diggerize";
3
+ export default class TableWidths {
4
+ constructor({
5
+ columns,
6
+ table,
7
+ width
8
+ }) {
9
+ this.columns = columns;
10
+ this.tableWidth = width;
11
+ this.table = table;
12
+ this.setWidths();
13
+ }
14
+ setWidths() {
15
+ this.columnsWidths = {};
16
+ let widthLeft = this.tableWidth;
17
+ const updateData = [];
18
+
19
+ // Set widths that are defined
20
+ for (const columnIndex in this.columns) {
21
+ const column = this.columns[columnIndex];
22
+ const tableSettingColumn = column.tableSettingColumn;
23
+ if (column.animatedPosition) throw new Error("Column already had an animated position");
24
+ column.animatedPosition = new Animated.ValueXY();
25
+ column.animatedZIndex = new Animated.Value(0);
26
+ if (tableSettingColumn.hasWidth()) {
27
+ if (column.animatedWidth) throw new Error("Column already had an animated width");
28
+ column.animatedWidth = new Animated.Value(tableSettingColumn.width());
29
+ column.width = tableSettingColumn.width();
30
+ widthLeft -= tableSettingColumn.width();
31
+ }
32
+ }
33
+
34
+ // Calculate how many columns are shown
35
+ const columnsWithoutWidth = this.columns.filter(column => !column.tableSettingColumn.hasWidth());
36
+ let amountOfColumns = columnsWithoutWidth.length;
37
+ amountOfColumns++; // Actions column
38
+
39
+ if (this.table.p.workplace) amountOfColumns++;
40
+
41
+ // Set widths of columns without
42
+ for (const columnIndex in this.columns) {
43
+ const column = this.columns[columnIndex];
44
+ const tableSettingColumn = column.tableSettingColumn;
45
+ if (!tableSettingColumn.hasWidth()) {
46
+ let newWidth = widthLeft / amountOfColumns;
47
+ if (newWidth < 200) newWidth = 200;
48
+ column.animatedWidth = new Animated.Value(newWidth);
49
+ column.width = newWidth;
50
+ updateData << {
51
+ id: tableSettingColumn.id(),
52
+ width: newWidth
53
+ };
54
+ }
55
+ }
56
+ if (updateData.length > 0) {
57
+ // FIXME: Should update the columns on the backend if anything changed
58
+ }
59
+ }
60
+ getWidthOfColumn(identifier) {
61
+ const column = this.columns.find(column => column.tableSettingColumn.identifier() == identifier);
62
+ if (!column) throw new Error(`No such column: ${identifier}`);
63
+ return digg(column, "width");
64
+ }
65
+ setWidthOfColumn({
66
+ identifier,
67
+ width
68
+ }) {
69
+ const column = this.columns.find(column => column.tableSettingColumn.identifier() == identifier);
70
+ if (!column) throw new Error(`No such column: ${identifier}`);
71
+ column.width = width;
72
+ column.animatedWidth.setValue(width);
73
+ }
74
+ }
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBbmltYXRlZCIsIkVhc2luZyIsImRpZ2ciLCJUYWJsZVdpZHRocyIsImNvbnN0cnVjdG9yIiwiY29sdW1ucyIsInRhYmxlIiwid2lkdGgiLCJ0YWJsZVdpZHRoIiwic2V0V2lkdGhzIiwiY29sdW1uc1dpZHRocyIsIndpZHRoTGVmdCIsInVwZGF0ZURhdGEiLCJjb2x1bW5JbmRleCIsImNvbHVtbiIsInRhYmxlU2V0dGluZ0NvbHVtbiIsImFuaW1hdGVkUG9zaXRpb24iLCJFcnJvciIsIlZhbHVlWFkiLCJhbmltYXRlZFpJbmRleCIsIlZhbHVlIiwiaGFzV2lkdGgiLCJhbmltYXRlZFdpZHRoIiwiY29sdW1uc1dpdGhvdXRXaWR0aCIsImZpbHRlciIsImFtb3VudE9mQ29sdW1ucyIsImxlbmd0aCIsInAiLCJ3b3JrcGxhY2UiLCJuZXdXaWR0aCIsImlkIiwiZ2V0V2lkdGhPZkNvbHVtbiIsImlkZW50aWZpZXIiLCJmaW5kIiwic2V0V2lkdGhPZkNvbHVtbiIsInNldFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL3dpZHRocy5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBbmltYXRlZCwgRWFzaW5nfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlV2lkdGhzIHtcbiAgY29uc3RydWN0b3Ioe2NvbHVtbnMsIHRhYmxlLCB3aWR0aH0pIHtcbiAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zXG4gICAgdGhpcy50YWJsZVdpZHRoID0gd2lkdGhcbiAgICB0aGlzLnRhYmxlID0gdGFibGVcbiAgICB0aGlzLnNldFdpZHRocygpXG4gIH1cblxuICBzZXRXaWR0aHMoKSB7XG4gICAgdGhpcy5jb2x1bW5zV2lkdGhzID0ge31cblxuICAgIGxldCB3aWR0aExlZnQgPSB0aGlzLnRhYmxlV2lkdGhcbiAgICBjb25zdCB1cGRhdGVEYXRhID0gW11cblxuICAgIC8vIFNldCB3aWR0aHMgdGhhdCBhcmUgZGVmaW5lZFxuICAgIGZvciAoY29uc3QgY29sdW1uSW5kZXggaW4gdGhpcy5jb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbY29sdW1uSW5kZXhdXG4gICAgICBjb25zdCB0YWJsZVNldHRpbmdDb2x1bW4gPSBjb2x1bW4udGFibGVTZXR0aW5nQ29sdW1uXG5cbiAgICAgIGlmIChjb2x1bW4uYW5pbWF0ZWRQb3NpdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiQ29sdW1uIGFscmVhZHkgaGFkIGFuIGFuaW1hdGVkIHBvc2l0aW9uXCIpXG5cbiAgICAgIGNvbHVtbi5hbmltYXRlZFBvc2l0aW9uID0gbmV3IEFuaW1hdGVkLlZhbHVlWFkoKVxuICAgICAgY29sdW1uLmFuaW1hdGVkWkluZGV4ID0gbmV3IEFuaW1hdGVkLlZhbHVlKDApXG5cbiAgICAgIGlmICh0YWJsZVNldHRpbmdDb2x1bW4uaGFzV2lkdGgoKSkge1xuICAgICAgICBpZiAoY29sdW1uLmFuaW1hdGVkV2lkdGgpIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbiBhbHJlYWR5IGhhZCBhbiBhbmltYXRlZCB3aWR0aFwiKVxuXG4gICAgICAgIGNvbHVtbi5hbmltYXRlZFdpZHRoID0gbmV3IEFuaW1hdGVkLlZhbHVlKHRhYmxlU2V0dGluZ0NvbHVtbi53aWR0aCgpKVxuICAgICAgICBjb2x1bW4ud2lkdGggPSB0YWJsZVNldHRpbmdDb2x1bW4ud2lkdGgoKVxuXG4gICAgICAgIHdpZHRoTGVmdCAtPSB0YWJsZVNldHRpbmdDb2x1bW4ud2lkdGgoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSBob3cgbWFueSBjb2x1bW5zIGFyZSBzaG93blxuICAgIGNvbnN0IGNvbHVtbnNXaXRob3V0V2lkdGggPSB0aGlzLmNvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+ICFjb2x1bW4udGFibGVTZXR0aW5nQ29sdW1uLmhhc1dpZHRoKCkpXG4gICAgbGV0IGFtb3VudE9mQ29sdW1ucyA9IGNvbHVtbnNXaXRob3V0V2lkdGgubGVuZ3RoXG5cbiAgICBhbW91bnRPZkNvbHVtbnMrKyAvLyBBY3Rpb25zIGNvbHVtblxuXG4gICAgaWYgKHRoaXMudGFibGUucC53b3JrcGxhY2UpIGFtb3VudE9mQ29sdW1ucysrXG5cbiAgICAvLyBTZXQgd2lkdGhzIG9mIGNvbHVtbnMgd2l0aG91dFxuICAgIGZvciAoY29uc3QgY29sdW1uSW5kZXggaW4gdGhpcy5jb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbY29sdW1uSW5kZXhdXG4gICAgICBjb25zdCB0YWJsZVNldHRpbmdDb2x1bW4gPSBjb2x1bW4udGFibGVTZXR0aW5nQ29sdW1uXG5cbiAgICAgIGlmICghdGFibGVTZXR0aW5nQ29sdW1uLmhhc1dpZHRoKCkpIHtcbiAgICAgICAgbGV0IG5ld1dpZHRoID0gd2lkdGhMZWZ0IC8gYW1vdW50T2ZDb2x1bW5zXG5cbiAgICAgICAgaWYgKG5ld1dpZHRoIDwgMjAwKSBuZXdXaWR0aCA9IDIwMFxuXG4gICAgICAgIGNvbHVtbi5hbmltYXRlZFdpZHRoID0gbmV3IEFuaW1hdGVkLlZhbHVlKG5ld1dpZHRoKVxuICAgICAgICBjb2x1bW4ud2lkdGggPSBuZXdXaWR0aFxuXG4gICAgICAgIHVwZGF0ZURhdGEgPDwge1xuICAgICAgICAgIGlkOiB0YWJsZVNldHRpbmdDb2x1bW4uaWQoKSxcbiAgICAgICAgICB3aWR0aDogbmV3V2lkdGhcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZJWE1FOiBTaG91bGQgdXBkYXRlIHRoZSBjb2x1bW5zIG9uIHRoZSBiYWNrZW5kIGlmIGFueXRoaW5nIGNoYW5nZWRcbiAgICB9XG4gIH1cblxuICBnZXRXaWR0aE9mQ29sdW1uKGlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKVxuXG4gICAgaWYgKCFjb2x1bW4pIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCBjb2x1bW46ICR7aWRlbnRpZmllcn1gKVxuXG4gICAgcmV0dXJuIGRpZ2coY29sdW1uLCBcIndpZHRoXCIpXG4gIH1cblxuICBzZXRXaWR0aE9mQ29sdW1uKHtpZGVudGlmaWVyLCB3aWR0aH0pIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKVxuXG4gICAgaWYgKCFjb2x1bW4pIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCBjb2x1bW46ICR7aWRlbnRpZmllcn1gKVxuXG4gICAgY29sdW1uLndpZHRoID0gd2lkdGhcbiAgICBjb2x1bW4uYW5pbWF0ZWRXaWR0aC5zZXRWYWx1ZSh3aWR0aClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxRQUFRLEVBQUVDLE1BQU0sUUFBTyxjQUFjO0FBQzdDLFNBQVFDLElBQUksUUFBTyxXQUFXO0FBRTlCLGVBQWUsTUFBTUMsV0FBVyxDQUFDO0VBQy9CQyxXQUFXQSxDQUFDO0lBQUNDLE9BQU87SUFBRUMsS0FBSztJQUFFQztFQUFLLENBQUMsRUFBRTtJQUNuQyxJQUFJLENBQUNGLE9BQU8sR0FBR0EsT0FBTztJQUN0QixJQUFJLENBQUNHLFVBQVUsR0FBR0QsS0FBSztJQUN2QixJQUFJLENBQUNELEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNHLFNBQVMsQ0FBQyxDQUFDO0VBQ2xCO0VBRUFBLFNBQVNBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUV2QixJQUFJQyxTQUFTLEdBQUcsSUFBSSxDQUFDSCxVQUFVO0lBQy9CLE1BQU1JLFVBQVUsR0FB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
@@ -0,0 +1,125 @@
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 React, { useEffect, useMemo, useRef } from "react";
3
+ import BaseComponent from "../base-component";
4
+ import classNames from "classnames";
5
+ import Collection from "../collection";
6
+ import memo from "set-state-compare/src/memo";
7
+ import PropTypes from "prop-types";
8
+ import propTypesExact from "prop-types-exact";
9
+ import { shapeComponent } from "set-state-compare/src/shape-component";
10
+ import { simpleObjectDifferent } from "set-state-compare/src/diff-utils";
11
+ import useModelEvent from "../use-model-event";
12
+ const Checkbox = memo(shapeComponent(class Checkbox extends BaseComponent {
13
+ render() {
14
+ const {
15
+ indeterminate,
16
+ ...restProps
17
+ } = this.props;
18
+ const checkboxRef = useRef();
19
+ useEffect(() => {
20
+ checkboxRef.current.indeterminate = indeterminate;
21
+ });
22
+ return /*#__PURE__*/React.createElement("input", _extends({
23
+ ref: checkboxRef,
24
+ type: "checkbox"
25
+ }, restProps));
26
+ }
27
+ }));
28
+ export default memo(shapeComponent(class ApiMakerTableWorkerPluginsCheckAllCheckbox extends BaseComponent {
29
+ static propTypes = propTypesExact({
30
+ currentWorkplace: PropTypes.object,
31
+ query: PropTypes.instanceOf(Collection),
32
+ style: PropTypes.object
33
+ });
34
+ setup() {
35
+ this.useStates({
36
+ checked: false,
37
+ indeterminate: false
38
+ });
39
+ useMemo(() => {
40
+ this.updateAllChecked();
41
+ }, []);
42
+ useModelEvent(this.props.currentWorkplace, "workplace_links_created", this.tt.onLinksCreated);
43
+ useModelEvent(this.props.currentWorkplace, "workplace_links_destroyed", this.tt.onLinksDestroyed);
44
+ }
45
+ componentDidUpdate(prevProps) {
46
+ const previousParams = prevProps.query.params();
47
+ const currentParams = this.props.query.params();
48
+ if (simpleObjectDifferent(previousParams, currentParams)) {
49
+ this.updateAllChecked();
50
+ }
51
+ }
52
+ async updateAllChecked() {
53
+ const {
54
+ query,
55
+ currentWorkplace
56
+ } = this.props;
57
+ const queryLinksStatusResult = await currentWorkplace.queryLinksStatus({
58
+ query
59
+ });
60
+ const allChecked = queryLinksStatusResult.all_checked;
61
+ const someChecked = queryLinksStatusResult.some_checked;
62
+ this.setState({
63
+ checked: allChecked,
64
+ indeterminate: someChecked
65
+ });
66
+ }
67
+ render() {
68
+ const {
69
+ className,
70
+ style
71
+ } = this.props;
72
+ const {
73
+ checked,
74
+ indeterminate
75
+ } = this.state;
76
+ return /*#__PURE__*/React.createElement(Checkbox, {
77
+ checked: checked,
78
+ className: classNames("api-maker--table--worker-plugins-check-all-checkbox", className),
79
+ indeterminate: indeterminate,
80
+ onChange: this.onCheckedChanged,
81
+ style: style
82
+ });
83
+ }
84
+ modelClassName = () => this.props.query.modelClass().modelClassData().name;
85
+ onCheckedChanged = async e => {
86
+ e.preventDefault();
87
+ const {
88
+ currentWorkplace,
89
+ query
90
+ } = this.props;
91
+ const checkbox = e.target;
92
+ if (checkbox.checked) {
93
+ await currentWorkplace.addQuery({
94
+ query
95
+ });
96
+ this.setState({
97
+ checked: true,
98
+ indeterminate: false
99
+ });
100
+ } else {
101
+ await currentWorkplace.removeQuery({
102
+ query
103
+ });
104
+ this.setState({
105
+ checked: false,
106
+ indeterminate: false
107
+ });
108
+ }
109
+ };
110
+ onLinksCreated = ({
111
+ args
112
+ }) => {
113
+ if (args.created[this.modelClassName()]) {
114
+ this.updateAllChecked();
115
+ }
116
+ };
117
+ onLinksDestroyed = ({
118
+ args
119
+ }) => {
120
+ if (args.destroyed[this.modelClassName()]) {
121
+ this.updateAllChecked();
122
+ }
123
+ };
124
+ }));
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJCYXNlQ29tcG9uZW50IiwiY2xhc3NOYW1lcyIsIkNvbGxlY3Rpb24iLCJtZW1vIiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJzaGFwZUNvbXBvbmVudCIsInNpbXBsZU9iamVjdERpZmZlcmVudCIsInVzZU1vZGVsRXZlbnQiLCJDaGVja2JveCIsInJlbmRlciIsImluZGV0ZXJtaW5hdGUiLCJyZXN0UHJvcHMiLCJwcm9wcyIsImNoZWNrYm94UmVmIiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJlZiIsInR5cGUiLCJBcGlNYWtlclRhYmxlV29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3giLCJwcm9wVHlwZXMiLCJjdXJyZW50V29ya3BsYWNlIiwib2JqZWN0IiwicXVlcnkiLCJpbnN0YW5jZU9mIiwic3R5bGUiLCJzZXR1cCIsInVzZVN0YXRlcyIsImNoZWNrZWQiLCJ1cGRhdGVBbGxDaGVja2VkIiwidHQiLCJvbkxpbmtzQ3JlYXRlZCIsIm9uTGlua3NEZXN0cm95ZWQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2aW91c1BhcmFtcyIsInBhcmFtcyIsImN1cnJlbnRQYXJhbXMiLCJxdWVyeUxpbmtzU3RhdHVzUmVzdWx0IiwicXVlcnlMaW5rc1N0YXR1cyIsImFsbENoZWNrZWQiLCJhbGxfY2hlY2tlZCIsInNvbWVDaGVja2VkIiwic29tZV9jaGVja2VkIiwic2V0U3RhdGUiLCJjbGFzc05hbWUiLCJzdGF0ZSIsIm9uQ2hhbmdlIiwib25DaGVja2VkQ2hhbmdlZCIsIm1vZGVsQ2xhc3NOYW1lIiwibW9kZWxDbGFzcyIsIm1vZGVsQ2xhc3NEYXRhIiwibmFtZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNoZWNrYm94IiwidGFyZ2V0IiwiYWRkUXVlcnkiLCJyZW1vdmVRdWVyeSIsImFyZ3MiLCJjcmVhdGVkIiwiZGVzdHJveWVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL3dvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSBcIi4uL2NvbGxlY3Rpb25cIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCB7c2ltcGxlT2JqZWN0RGlmZmVyZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL2RpZmYtdXRpbHNcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudFwiXG5cbmNvbnN0IENoZWNrYm94ID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBDaGVja2JveCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2luZGV0ZXJtaW5hdGUsIC4uLnJlc3RQcm9wc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgY2hlY2tib3hSZWYgPSB1c2VSZWYoKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNoZWNrYm94UmVmLmN1cnJlbnQuaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGVcbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dCByZWY9e2NoZWNrYm94UmVmfSB0eXBlPVwiY2hlY2tib3hcIiB7Li4ucmVzdFByb3BzfSAvPlxuICAgIClcbiAgfVxufSkpXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJUYWJsZVdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY3VycmVudFdvcmtwbGFjZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBxdWVyeTogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29sbGVjdGlvbiksXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3RcbiAgfSlcblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlXG4gICAgfSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKClcbiAgICB9LCBbXSlcblxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5wcm9wcy5jdXJyZW50V29ya3BsYWNlLCBcIndvcmtwbGFjZV9saW5rc19jcmVhdGVkXCIsIHRoaXMudHQub25MaW5rc0NyZWF0ZWQpXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnByb3BzLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgY29uc3QgcHJldmlvdXNQYXJhbXMgPSBwcmV2UHJvcHMucXVlcnkucGFyYW1zKClcbiAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gdGhpcy5wcm9wcy5xdWVyeS5wYXJhbXMoKVxuXG4gICAgaWYgKHNpbXBsZU9iamVjdERpZmZlcmVudChwcmV2aW91c1BhcmFtcywgY3VycmVudFBhcmFtcykpIHtcbiAgICAgIHRoaXMudXBkYXRlQWxsQ2hlY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlQWxsQ2hlY2tlZCgpIHtcbiAgICBjb25zdCB7cXVlcnksIGN1cnJlbnRXb3JrcGxhY2V9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHF1ZXJ5TGlua3NTdGF0dXNSZXN1bHQgPSBhd2FpdCBjdXJyZW50V29ya3BsYWNlLnF1ZXJ5TGlua3NTdGF0dXMoe3F1ZXJ5fSlcbiAgICBjb25zdCBhbGxDaGVja2VkID0gcXVlcnlMaW5rc1N0YXR1c1Jlc3VsdC5hbGxfY2hlY2tlZFxuICAgIGNvbnN0IHNvbWVDaGVja2VkID0gcXVlcnlMaW5rc1N0YXR1c1Jlc3VsdC5zb21lX2NoZWNrZWRcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY2hlY2tlZDogYWxsQ2hlY2tlZCxcbiAgICAgIGluZGV0ZXJtaW5hdGU6IHNvbWVDaGVja2VkXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge2NoZWNrZWQsIGluZGV0ZXJtaW5hdGV9ID0gdGhpcy5zdGF0ZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDaGVja2JveFxuICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJhcGktbWFrZXItLXRhYmxlLS13b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3hcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgaW5kZXRlcm1pbmF0ZT17aW5kZXRlcm1pbmF0ZX1cbiAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGVja2VkQ2hhbmdlZH1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBtb2RlbENsYXNzTmFtZSA9ICgpID0+IHRoaXMucHJvcHMucXVlcnkubW9kZWxDbGFzcygpLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuXG4gIG9uQ2hlY2tlZENoYW5nZWQgPSBhc3luYyAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgY29uc3Qge2N1cnJlbnRXb3JrcGxhY2UsIHF1ZXJ5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBjaGVja2JveCA9IGUudGFyZ2V0XG5cbiAgICBpZiAoY2hlY2tib3guY2hlY2tlZCkge1xuICAgICAgYXdhaXQgY3VycmVudFdvcmtwbGFjZS5hZGRRdWVyeSh7cXVlcnl9KVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogdHJ1ZSwgaW5kZXRlcm1pbmF0ZTogZmFsc2V9KVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBjdXJyZW50V29ya3BsYWNlLnJlbW92ZVF1ZXJ5KHtxdWVyeX0pXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiBmYWxzZSwgaW5kZXRlcm1pbmF0ZTogZmFsc2V9KVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NDcmVhdGVkID0gKHthcmdzfSkgPT4ge1xuICAgIGlmIChhcmdzLmNyZWF0ZWRbdGhpcy5tb2RlbENsYXNzTmFtZSgpXSkge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKClcbiAgICB9XG4gIH1cblxuICBvbkxpbmtzRGVzdHJveWVkID0gKHthcmdzfSkgPT4ge1xuICAgIGlmIChhcmdzLmRlc3Ryb3llZFt0aGlzLm1vZGVsQ2xhc3NOYW1lKCldKSB7XG4gICAgICB0aGlzLnVwZGF0ZUFsbENoZWNrZWQoKVxuICAgIH1cbiAgfVxufSkpXG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxLQUFLLElBQUdDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLFFBQU8sT0FBTztBQUN2RCxPQUFPQyxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLE9BQU9DLFVBQVUsTUFBTSxZQUFZO0FBQ25DLE9BQU9DLFVBQVUsTUFBTSxlQUFlO0FBQ3RDLE9BQU9D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
@@ -0,0 +1,115 @@
1
+ import React, { useMemo } from "react";
2
+ import BaseComponent from "../base-component";
3
+ import classNames from "classnames";
4
+ import { digg } from "diggerize";
5
+ import memo from "set-state-compare/src/memo";
6
+ import modelClassRequire from "../model-class-require";
7
+ import PropTypes from "prop-types";
8
+ import PropTypesExact from "prop-types-exact";
9
+ import { shapeComponent } from "set-state-compare/src/shape-component";
10
+ import useModelEvent from "../use-model-event";
11
+ const Workplace = modelClassRequire("Workplace");
12
+ export default memo(shapeComponent(class ApiMakerTableWorkerPluginsCheckbox extends BaseComponent {
13
+ static propTypes = PropTypesExact({
14
+ currentWorkplace: PropTypes.object,
15
+ model: PropTypes.object.isRequired,
16
+ style: PropTypes.object
17
+ });
18
+ setup() {
19
+ this.useStates({
20
+ checked: false,
21
+ linkLoaded: false
22
+ });
23
+ useMemo(() => {
24
+ this.loadCurrentLink();
25
+ }, []);
26
+ useModelEvent(this.p.currentWorkplace, "workplace_links_created", this.tt.onLinksCreated);
27
+ useModelEvent(this.p.currentWorkplace, "workplace_links_destroyed", this.tt.onLinksDestroyed);
28
+ }
29
+ async loadCurrentLink() {
30
+ const {
31
+ model
32
+ } = this.props;
33
+ const response = await Workplace.linkFor({
34
+ model_class: model.modelClassData().name,
35
+ model_id: model.id()
36
+ });
37
+ const link = digg(response, "link");
38
+ this.setState({
39
+ checked: Boolean(link),
40
+ linkLoaded: true
41
+ });
42
+ }
43
+ render() {
44
+ const {
45
+ className,
46
+ model,
47
+ style
48
+ } = this.props;
49
+ const {
50
+ checked,
51
+ linkLoaded
52
+ } = this.state;
53
+ if (!linkLoaded) {
54
+ return null;
55
+ }
56
+ return /*#__PURE__*/React.createElement("input", {
57
+ checked: checked,
58
+ className: classNames("api-maker--table--worker-plugins-checkbox", className),
59
+ "data-checked": checked,
60
+ "data-model-id": model.id(),
61
+ onChange: this.tt.onCheckedChanged,
62
+ style: style,
63
+ type: "checkbox"
64
+ });
65
+ }
66
+ onCheckedChanged = e => {
67
+ e.preventDefault();
68
+ const {
69
+ model
70
+ } = this.props;
71
+ const checked = e.target.checked;
72
+ if (checked) {
73
+ Workplace.createLink({
74
+ model_class: model.modelClassData().name,
75
+ model_id: model.id()
76
+ });
77
+ } else {
78
+ const modelClassName = model.modelClassData().name;
79
+ const params = {
80
+ models: {}
81
+ };
82
+ params.models[modelClassName] = [model.id()];
83
+ Workplace.destroyLinks(params);
84
+ }
85
+ };
86
+ onLinksCreated = ({
87
+ args
88
+ }) => {
89
+ const {
90
+ model
91
+ } = this.p;
92
+ const id = model.id();
93
+ const modelClassName = model.modelClassData().name;
94
+ if (args.created[modelClassName] && args.created[modelClassName].includes(id)) {
95
+ this.setState({
96
+ checked: true
97
+ });
98
+ }
99
+ };
100
+ onLinksDestroyed = ({
101
+ args
102
+ }) => {
103
+ const {
104
+ model
105
+ } = this.p;
106
+ const id = model.id();
107
+ const modelClassName = model.modelClassData().name;
108
+ if (args.destroyed[modelClassName] && args.destroyed[modelClassName].includes(id)) {
109
+ this.setState({
110
+ checked: false
111
+ });
112
+ }
113
+ };
114
+ }));
115
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJCYXNlQ29tcG9uZW50IiwiY2xhc3NOYW1lcyIsImRpZ2ciLCJtZW1vIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJQcm9wVHlwZXMiLCJQcm9wVHlwZXNFeGFjdCIsInNoYXBlQ29tcG9uZW50IiwidXNlTW9kZWxFdmVudCIsIldvcmtwbGFjZSIsIkFwaU1ha2VyVGFibGVXb3JrZXJQbHVnaW5zQ2hlY2tib3giLCJwcm9wVHlwZXMiLCJjdXJyZW50V29ya3BsYWNlIiwib2JqZWN0IiwibW9kZWwiLCJpc1JlcXVpcmVkIiwic3R5bGUiLCJzZXR1cCIsInVzZVN0YXRlcyIsImNoZWNrZWQiLCJsaW5rTG9hZGVkIiwibG9hZEN1cnJlbnRMaW5rIiwicCIsInR0Iiwib25MaW5rc0NyZWF0ZWQiLCJvbkxpbmtzRGVzdHJveWVkIiwicHJvcHMiLCJyZXNwb25zZSIsImxpbmtGb3IiLCJtb2RlbF9jbGFzcyIsIm1vZGVsQ2xhc3NEYXRhIiwibmFtZSIsIm1vZGVsX2lkIiwiaWQiLCJsaW5rIiwic2V0U3RhdGUiLCJCb29sZWFuIiwicmVuZGVyIiwiY2xhc3NOYW1lIiwic3RhdGUiLCJjcmVhdGVFbGVtZW50Iiwib25DaGFuZ2UiLCJvbkNoZWNrZWRDaGFuZ2VkIiwidHlwZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsImNyZWF0ZUxpbmsiLCJtb2RlbENsYXNzTmFtZSIsInBhcmFtcyIsIm1vZGVscyIsImRlc3Ryb3lMaW5rcyIsImFyZ3MiLCJjcmVhdGVkIiwiaW5jbHVkZXMiLCJkZXN0cm95ZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvd29ya2VyLXBsdWdpbnMtY2hlY2tib3guanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4uL21vZGVsLWNsYXNzLXJlcXVpcmVcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudFwiXG5cbmNvbnN0IFdvcmtwbGFjZSA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlXCIpXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJUYWJsZVdvcmtlclBsdWdpbnNDaGVja2JveCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGN1cnJlbnRXb3JrcGxhY2U6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgbGlua0xvYWRlZDogZmFsc2VcbiAgICB9KVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRDdXJyZW50TGluaygpXG4gICAgfSwgW10pXG5cbiAgICB1c2VNb2RlbEV2ZW50KHRoaXMucC5jdXJyZW50V29ya3BsYWNlLCBcIndvcmtwbGFjZV9saW5rc19jcmVhdGVkXCIsIHRoaXMudHQub25MaW5rc0NyZWF0ZWQpXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnAuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfZGVzdHJveWVkXCIsIHRoaXMudHQub25MaW5rc0Rlc3Ryb3llZClcbiAgfVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50TGluaygpIHtcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgV29ya3BsYWNlLmxpbmtGb3Ioe21vZGVsX2NsYXNzOiBtb2RlbC5tb2RlbENsYXNzRGF0YSgpLm5hbWUsIG1vZGVsX2lkOiBtb2RlbC5pZCgpfSlcbiAgICBjb25zdCBsaW5rID0gZGlnZyhyZXNwb25zZSwgXCJsaW5rXCIpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNoZWNrZWQ6IEJvb2xlYW4obGluayksXG4gICAgICBsaW5rTG9hZGVkOiB0cnVlXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBtb2RlbCwgc3R5bGV9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtjaGVja2VkLCBsaW5rTG9hZGVkfSA9IHRoaXMuc3RhdGVcblxuICAgIGlmICghbGlua0xvYWRlZCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGUtLXdvcmtlci1wbHVnaW5zLWNoZWNrYm94XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIGRhdGEtY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgZGF0YS1tb2RlbC1pZD17bW9kZWwuaWQoKX1cbiAgICAgICAgb25DaGFuZ2U9e3RoaXMudHQub25DaGVja2VkQ2hhbmdlZH1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGNvbnN0IHttb2RlbH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgY2hlY2tlZCA9IGUudGFyZ2V0LmNoZWNrZWRcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBXb3JrcGxhY2UuY3JlYXRlTGluayh7bW9kZWxfY2xhc3M6IG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgbW9kZWxfaWQ6IG1vZGVsLmlkKCl9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuICAgICAgY29uc3QgcGFyYW1zID0ge21vZGVsczoge319XG5cbiAgICAgIHBhcmFtcy5tb2RlbHNbbW9kZWxDbGFzc05hbWVdID0gW21vZGVsLmlkKCldXG5cbiAgICAgIFdvcmtwbGFjZS5kZXN0cm95TGlua3MocGFyYW1zKVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NDcmVhdGVkID0gKHthcmdzfSkgPT4ge1xuICAgIGNvbnN0IHttb2RlbH0gPSB0aGlzLnBcbiAgICBjb25zdCBpZCA9IG1vZGVsLmlkKClcbiAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuXG4gICAgaWYgKGFyZ3MuY3JlYXRlZFttb2RlbENsYXNzTmFtZV0gJiYgYXJncy5jcmVhdGVkW21vZGVsQ2xhc3NOYW1lXS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6IHRydWV9KVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NEZXN0cm95ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgY29uc3Qge21vZGVsfSA9IHRoaXMucFxuICAgIGNvbnN0IGlkID0gbW9kZWwuaWQoKVxuICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gbW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lXG5cbiAgICBpZiAoYXJncy5kZXN0cm95ZWRbbW9kZWxDbGFzc05hbWVdICYmIGFyZ3MuZGVzdHJveWVkW21vZGVsQ2xhc3NOYW1lXS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6IGZhbHNlfSlcbiAgICB9XG4gIH1cbn0pKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQUdDLE9BQU8sUUFBTyxPQUFPO0FBQ3BDLE9BQU9DLGFBQWEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsVUFBVSxNQUFNLFlBQVk7QUFDbkMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxPQUFPQyxpQkFBaUIsTUFBTSx3QkFBd0I7QUFDdEQsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BFLE9BQU9DLGFBQWEsTUFBTSxvQkFBb0I7QUFFOUMsTUFBTUMsU0FBUyxHQUFHTCxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7QUFFaEQsZUFBZUQsSUFBSSxDQUFDSSxjQUFjLENBQUMsTUFBTUcsa0NBQWtDLFNBQVNWLGFBQWEsQ0FBQztFQUNoRyxPQUFPVyxTQUFTLEdBQUdMLGNBQWMsQ0FBQztJQUNoQ00sZ0JBQWdCLEVBQUVQLFNBQVMsQ0FBQ1EsTUFBTTtJQUNsQ0MsS0FBSyxFQUFFVCxTQUFTLENBQUNRLE1BQU0sQ0FBQ0UsVUFBVTtJQUNsQ0MsS0FBSyxFQUFFWCxTQUFTLENBQUNRO0VBQ25CLENBQUMsQ0FBQztFQUVGSSxLQUFLQSxDQUFBLEVBQUc7SUFDTixJQUFJLENBQUNDLFNBQVMsQ0FBQztNQUNiQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxVQUFVLEVBQUU7SUFDZCxDQUFDLENBQUM7SUFFRnJCLE9BQU8sQ0FBQyxNQUFNO01BQ1osSUFBSSxD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
@@ -0,0 +1,10 @@
1
+ export default function apiMakerTranslatedAttributes(attributeNames, availableLocales) {
2
+ const translatedAttributes = [];
3
+ for (const attribute of attributeNames) {
4
+ for (const locale of availableLocales) {
5
+ translatedAttributes.push(`${attribute}${locale.substring(0, 1).toUpperCase()}${locale.substring(1, 99)}`);
6
+ }
7
+ }
8
+ return translatedAttributes;
9
+ }
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcGlNYWtlclRyYW5zbGF0ZWRBdHRyaWJ1dGVzIiwiYXR0cmlidXRlTmFtZXMiLCJhdmFpbGFibGVMb2NhbGVzIiwidHJhbnNsYXRlZEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGUiLCJsb2NhbGUiLCJwdXNoIiwic3Vic3RyaW5nIiwidG9VcHBlckNhc2UiXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNsYXRlZC1hdHRyaWJ1dGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwaU1ha2VyVHJhbnNsYXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlTmFtZXMsIGF2YWlsYWJsZUxvY2FsZXMpIHtcbiAgY29uc3QgdHJhbnNsYXRlZEF0dHJpYnV0ZXMgPSBbXVxuXG4gIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgYXZhaWxhYmxlTG9jYWxlcykge1xuICAgICAgdHJhbnNsYXRlZEF0dHJpYnV0ZXMucHVzaChgJHthdHRyaWJ1dGV9JHtsb2NhbGUuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCl9JHtsb2NhbGUuc3Vic3RyaW5nKDEsIDk5KX1gKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cmFuc2xhdGVkQXR0cmlidXRlc1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLFNBQVNBLDRCQUE0QkEsQ0FBQ0MsY0FBYyxFQUFFQyxnQkFBZ0IsRUFBRTtFQUNyRixNQUFNQyxvQkFBb0IsR0FBRyxFQUFFO0VBRS9CLEtBQUssTUFBTUMsU0FBUyxJQUFJSCxjQUFjLEVBQUU7SUFDdEMsS0FBSyxNQUFNSSxNQUFNLElBQUlILGdCQUFnQixFQUFFO01BQ3JDQyxvQkFBb0IsQ0FBQ0csSUFBSSxDQUFDLEdBQUdGLFNBQVMsR0FBR0MsTUFBTSxDQUFDRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQyxHQUFHSCxNQUFNLENBQUNFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1RztFQUNGO0VBRUEsT0FBT0osb0JBQW9CO0FBQzdCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,12 @@
1
+ import { digg } from "diggerize";
2
+ import I18nOnSteroids from "i18n-on-steroids";
3
+ import translatedCollectionsData from "translated-collections-data.json";
4
+ export default class ApiMakerTranslatedCollections {
5
+ static get(modelClass, collectionName) {
6
+ const locale = I18nOnSteroids.getCurrent().locale;
7
+ const modelClassName = digg(modelClass.modelClassData(), "name");
8
+ const collection = digg(translatedCollectionsData, modelClassName, collectionName, locale, "collection_array");
9
+ return collection;
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiSTE4bk9uU3Rlcm9pZHMiLCJ0cmFuc2xhdGVkQ29sbGVjdGlvbnNEYXRhIiwiQXBpTWFrZXJUcmFuc2xhdGVkQ29sbGVjdGlvbnMiLCJnZXQiLCJtb2RlbENsYXNzIiwiY29sbGVjdGlvbk5hbWUiLCJsb2NhbGUiLCJnZXRDdXJyZW50IiwibW9kZWxDbGFzc05hbWUiLCJtb2RlbENsYXNzRGF0YSIsImNvbGxlY3Rpb24iXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNsYXRlZC1jb2xsZWN0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IEkxOG5PblN0ZXJvaWRzIGZyb20gXCJpMThuLW9uLXN0ZXJvaWRzXCJcbmltcG9ydCB0cmFuc2xhdGVkQ29sbGVjdGlvbnNEYXRhIGZyb20gXCJ0cmFuc2xhdGVkLWNvbGxlY3Rpb25zLWRhdGEuanNvblwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyVHJhbnNsYXRlZENvbGxlY3Rpb25zIHtcbiAgc3RhdGljIGdldCAobW9kZWxDbGFzcywgY29sbGVjdGlvbk5hbWUpIHtcbiAgICBjb25zdCBsb2NhbGUgPSBJMThuT25TdGVyb2lkcy5nZXRDdXJyZW50KCkubG9jYWxlXG4gICAgY29uc3QgbW9kZWxDbGFzc05hbWUgPSBkaWdnKG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IGRpZ2codHJhbnNsYXRlZENvbGxlY3Rpb25zRGF0YSwgbW9kZWxDbGFzc05hbWUsIGNvbGxlY3Rpb25OYW1lLCBsb2NhbGUsIFwiY29sbGVjdGlvbl9hcnJheVwiKVxuXG4gICAgcmV0dXJuIGNvbGxlY3Rpb25cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxjQUFjLE1BQU0sa0JBQWtCO0FBQzdDLE9BQU9DLHlCQUF5QixNQUFNLGtDQUFrQztBQUV4RSxlQUFlLE1BQU1DLDZCQUE2QixDQUFDO0VBQ2pELE9BQU9DLEdBQUdBLENBQUVDLFVBQVUsRUFBRUMsY0FBYyxFQUFFO0lBQ3RDLE1BQU1DLE1BQU0sR0FBR04sY0FBYyxDQUFDTyxVQUFVLENBQUMsQ0FBQyxDQUFDRCxNQUFNO0lBQ2pELE1BQU1FLGNBQWMsR0FBR1QsSUFBSSxDQUFDSyxVQUFVLENBQUNLLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2hFLE1BQU1DLFVBQVUsR0FBR1gsSUFBSSxDQUFDRSx5QkFBeUIsRUFBRU8sY0FBYyxFQUFFSCxjQUFjLEVBQUVDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQztJQUU5RyxPQUFPSSxVQUFVO0VBQ25CO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,76 @@
1
+ import { digg } from "diggerize";
2
+ import ModelEvents from "./model-events";
3
+ import PropTypes from "prop-types";
4
+ import propTypesExact from "prop-types-exact";
5
+ import React from "react";
6
+ export default class ApiMakerUpdatedAttribute extends React.PureComponent {
7
+ static propTypes = propTypesExact({
8
+ attribute: PropTypes.string,
9
+ model: PropTypes.object.isRequired,
10
+ onValue: PropTypes.func
11
+ });
12
+ constructor(props) {
13
+ super(props);
14
+ this.state = {
15
+ model: this.props.model
16
+ };
17
+ }
18
+ componentDidMount() {
19
+ this.setAttribute();
20
+ this.connect();
21
+ }
22
+ componentWillUnmount() {
23
+ // Apparently 'componentWillUnmount' can be called without 'componentDidMount' was called. Several bug reports on this.
24
+ if (this.connectUpdated) {
25
+ this.connectUpdated.unsubscribe();
26
+ }
27
+ }
28
+ connect() {
29
+ this.connectUpdated = ModelEvents.connectUpdated(this.props.model, args => {
30
+ if (!this.props.attribute || args.model.isAttributeLoaded(this.props.attribute)) {
31
+ this.setState({
32
+ model: args.model
33
+ }, () => this.setAttribute());
34
+ } else {
35
+ this.loadModelWithAttribute();
36
+ }
37
+ });
38
+ }
39
+
40
+ // This loads the model from the backend with the primary key and the attribute and calls setAttribute
41
+ async loadModelWithAttribute() {
42
+ const id = this.props.model.primaryKey();
43
+ const modelClass = this.props.model.modelClass();
44
+ const modelName = digg(modelClass.modelClassData(), "name");
45
+ const primaryKey = digg(modelClass.modelClassData(), "primaryKey");
46
+ const args = {};
47
+ args[`${primaryKey}_eq`] = id;
48
+ const select = {};
49
+ select[modelName] = [primaryKey, this.props.attribute];
50
+ const model = await modelClass.ransack(args).select(select).first();
51
+ this.setState({
52
+ model
53
+ }, () => this.setAttribute());
54
+ }
55
+ setAttribute() {
56
+ let newValue;
57
+ if (this.props.onValue) {
58
+ newValue = this.props.onValue.apply(null, [{
59
+ model: this.state.model
60
+ }]);
61
+ } else {
62
+ if (!this.state.model[this.props.attribute]) {
63
+ throw new Error(`No such method: ${digg(this.state.model.modelClassData(), "name")}#${this.props.attribute}()`);
64
+ }
65
+ newValue = this.state.model[this.props.attribute].apply(this.state.model);
66
+ }
67
+ this.setState({
68
+ value: newValue
69
+ });
70
+ }
71
+ render() {
72
+ if (this.state.value === undefined) return null;
73
+ return this.state.value;
74
+ }
75
+ }
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiTW9kZWxFdmVudHMiLCJQcm9wVHlwZXMiLCJwcm9wVHlwZXNFeGFjdCIsIlJlYWN0IiwiQXBpTWFrZXJVcGRhdGVkQXR0cmlidXRlIiwiUHVyZUNvbXBvbmVudCIsInByb3BUeXBlcyIsImF0dHJpYnV0ZSIsInN0cmluZyIsIm1vZGVsIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsIm9uVmFsdWUiLCJmdW5jIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJzZXRBdHRyaWJ1dGUiLCJjb25uZWN0IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJjb25uZWN0VXBkYXRlZCIsInVuc3Vic2NyaWJlIiwiYXJncyIsImlzQXR0cmlidXRlTG9hZGVkIiwic2V0U3RhdGUiLCJsb2FkTW9kZWxXaXRoQXR0cmlidXRlIiwiaWQiLCJwcmltYXJ5S2V5IiwibW9kZWxDbGFzcyIsIm1vZGVsTmFtZSIsIm1vZGVsQ2xhc3NEYXRhIiwic2VsZWN0IiwicmFuc2FjayIsImZpcnN0IiwibmV3VmFsdWUiLCJhcHBseSIsIkVycm9yIiwidmFsdWUiLCJyZW5kZXIiLCJ1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi9zcmMvdXBkYXRlZC1hdHRyaWJ1dGUuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlclVwZGF0ZWRBdHRyaWJ1dGUgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBhdHRyaWJ1dGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBvblZhbHVlOiBQcm9wVHlwZXMuZnVuY1xuICB9KVxuXG4gIGNvbnN0cnVjdG9yIChwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBtb2RlbDogdGhpcy5wcm9wcy5tb2RlbFxuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50ICgpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgpXG4gICAgdGhpcy5jb25uZWN0KClcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50ICgpIHtcbiAgICAvLyBBcHBhcmVudGx5ICdjb21wb25lbnRXaWxsVW5tb3VudCcgY2FuIGJlIGNhbGxlZCB3aXRob3V0ICdjb21wb25lbnREaWRNb3VudCcgd2FzIGNhbGxlZC4gU2V2ZXJhbCBidWcgcmVwb3J0cyBvbiB0aGlzLlxuICAgIGlmICh0aGlzLmNvbm5lY3RVcGRhdGVkKSB7XG4gICAgICB0aGlzLmNvbm5lY3RVcGRhdGVkLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cblxuICBjb25uZWN0ICgpIHtcbiAgICB0aGlzLmNvbm5lY3RVcGRhdGVkID0gTW9kZWxFdmVudHMuY29ubmVjdFVwZGF0ZWQodGhpcy5wcm9wcy5tb2RlbCwgKGFyZ3MpID0+IHtcbiAgICAgIGlmICghdGhpcy5wcm9wcy5hdHRyaWJ1dGUgfHwgYXJncy5tb2RlbC5pc0F0dHJpYnV0ZUxvYWRlZCh0aGlzLnByb3BzLmF0dHJpYnV0ZSkpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICB7bW9kZWw6IGFyZ3MubW9kZWx9LFxuICAgICAgICAgICgpID0+IHRoaXMuc2V0QXR0cmlidXRlKClcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkTW9kZWxXaXRoQXR0cmlidXRlKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLy8gVGhpcyBsb2FkcyB0aGUgbW9kZWwgZnJvbSB0aGUgYmFja2VuZCB3aXRoIHRoZSBwcmltYXJ5IGtleSBhbmQgdGhlIGF0dHJpYnV0ZSBhbmQgY2FsbHMgc2V0QXR0cmlidXRlXG4gIGFzeW5jIGxvYWRNb2RlbFdpdGhBdHRyaWJ1dGUgKCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5wcm9wcy5tb2RlbC5wcmltYXJ5S2V5KClcbiAgICBjb25zdCBtb2RlbENsYXNzID0gdGhpcy5wcm9wcy5tb2RlbC5tb2RlbENsYXNzKClcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBkaWdnKG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgY29uc3QgcHJpbWFyeUtleSA9IGRpZ2cobW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcInByaW1hcnlLZXlcIilcblxuICAgIGNvbnN0IGFyZ3MgPSB7fVxuICAgIGFyZ3NbYCR7cHJpbWFyeUtleX1fZXFgXSA9IGlkXG5cbiAgICBjb25zdCBzZWxlY3QgPSB7fVxuICAgIHNlbGVjdFttb2RlbE5hbWVdID0gW3ByaW1hcnlLZXksIHRoaXMucHJvcHMuYXR0cmlidXRlXVxuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBtb2RlbENsYXNzXG4gICAgICAucmFuc2FjayhhcmdzKVxuICAgICAgLnNlbGVjdChzZWxlY3QpXG4gICAgICAuZmlyc3QoKVxuXG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHttb2RlbH0sXG4gICAgICAoKSA9PiB0aGlzLnNldEF0dHJpYnV0ZSgpXG4gICAgKVxuICB9XG5cbiAgc2V0QXR0cmlidXRlICgpIHtcbiAgICBsZXQgbmV3VmFsdWVcblxuICAgIGlmICh0aGlzLnByb3BzLm9uVmFsdWUpIHtcbiAgICAgIG5ld1ZhbHVlID0gdGhpcy5wcm9wcy5vblZhbHVlLmFwcGx5KG51bGwsIFt7bW9kZWw6IHRoaXMuc3RhdGUubW9kZWx9XSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnN0YXRlLm1vZGVsW3RoaXMucHJvcHMuYXR0cmlidXRlXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggbWV0aG9kOiAke2RpZ2codGhpcy5zdGF0ZS5tb2RlbC5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIil9IyR7dGhpcy5wcm9wcy5hdHRyaWJ1dGV9KClgKVxuICAgICAgfVxuXG4gICAgICBuZXdWYWx1ZSA9IHRoaXMuc3RhdGUubW9kZWxbdGhpcy5wcm9wcy5hdHRyaWJ1dGVdLmFwcGx5KHRoaXMuc3RhdGUubW9kZWwpXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICB2YWx1ZTogbmV3VmFsdWVcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWVcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxXQUFXLE1BQU0sZ0JBQWdCO0FBQ3hDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFFekIsZUFBZSxNQUFNQyx3QkFBd0IsU0FBU0QsS0FBSyxDQUFDRSxhQUFhLENBQUM7RUFDeEUsT0FBT0MsU0FBUyxHQUFHSixjQUFjLENBQUM7SUFDaENLLFNBQVMsRUFBRU4sU0FBUyxDQUFDTyxNQUFNO0lBQzNCQyxLQUFLLEVBQUVSLFNBQVMsQ0FBQ1MsTUFBTSxDQUFDQyxVQUFVO0lBQ2xDQyxPQUFPLEVBQUVYLFNBQVMsQ0FBQ1k7RUFDckIsQ0FBQyxDQUFDO0VBRUZDLFdBQVdBLENBQUVDLEtBQUssRUFBRTtJQUNsQixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHO01BQ1hQLEtBQUssRUFB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
@@ -0,0 +1,15 @@
1
+ import escapeStringRegexp from "escape-string-regexp";
2
+ const replaces = {
3
+ " ": "+",
4
+ "&": "%26",
5
+ "#": "%23",
6
+ "+": "%2B",
7
+ "/": "%2F",
8
+ "?": "%3F"
9
+ };
10
+ const regexp = new RegExp(`(${Object.keys(replaces).map(escapeStringRegexp).join("|")})`, "g");
11
+ const urlEncode = string => {
12
+ return String(string).replaceAll(regexp, character => replaces[character]);
13
+ };
14
+ export default urlEncode;
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlc2NhcGVTdHJpbmdSZWdleHAiLCJyZXBsYWNlcyIsInJlZ2V4cCIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJqb2luIiwidXJsRW5jb2RlIiwic3RyaW5nIiwiU3RyaW5nIiwicmVwbGFjZUFsbCIsImNoYXJhY3RlciJdLCJzb3VyY2VzIjpbIi4uL3NyYy91cmwtZW5jb2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlc2NhcGVTdHJpbmdSZWdleHAgZnJvbSBcImVzY2FwZS1zdHJpbmctcmVnZXhwXCJcblxuY29uc3QgcmVwbGFjZXMgPSB7XG4gIFwiIFwiOiBcIitcIixcbiAgXCImXCI6IFwiJTI2XCIsXG4gIFwiI1wiOiBcIiUyM1wiLFxuICBcIitcIjogXCIlMkJcIixcbiAgXCIvXCI6IFwiJTJGXCIsXG4gIFwiP1wiOiBcIiUzRlwiXG59XG5cbmNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoYCgke09iamVjdC5rZXlzKHJlcGxhY2VzKS5tYXAoZXNjYXBlU3RyaW5nUmVnZXhwKS5qb2luKFwifFwiKX0pYCwgXCJnXCIpXG5cbmNvbnN0IHVybEVuY29kZSA9IChzdHJpbmcpID0+IHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2VBbGwocmVnZXhwLCAoY2hhcmFjdGVyKSA9PiByZXBsYWNlc1tjaGFyYWN0ZXJdKVxufVxuXG5leHBvcnQgZGVmYXVsdCB1cmxFbmNvZGVcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0Esa0JBQWtCLE1BQU0sc0JBQXNCO0FBRXJELE1BQU1DLFFBQVEsR0FBRztFQUNmLEdBQUcsRUFBRSxHQUFHO0VBQ1IsR0FBRyxFQUFFLEtBQUs7RUFDVixHQUFHLEVBQUUsS0FBSztFQUNWLEdBQUcsRUFBRSxLQUFLO0VBQ1YsR0FBRyxFQUFFLEtBQUs7RUFDVixHQUFHLEVBQUU7QUFDUCxDQUFDO0FBRUQsTUFBTUMsTUFBTSxHQUFHLElBQUlDLE1BQU0sQ0FBQyxJQUFJQyxNQUFNLENBQUNDLElBQUksQ0FBQ0osUUFBUSxDQUFDLENBQUNLLEdBQUcsQ0FBQ04sa0JBQWtCLENBQUMsQ0FBQ08sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBRTlGLE1BQU1DLFNBQVMsR0FBSUMsTUFBTSxJQUFLO0VBQzVCLE9BQU9DLE1BQU0sQ0FBQ0QsTUFBTSxDQUFDLENBQUNFLFVBQVUsQ0FBQ1QsTUFBTSxFQUFHVSxTQUFTLElBQUtYLFFBQVEsQ0FBQ1csU0FBUyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELGVBQWVKLFNBQVMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,71 @@
1
+ import { useCallback, useLayoutEffect } from "react";
2
+ import config from "./config";
3
+ import { Dimensions } from "react-native";
4
+ import * as inflection from "inflection";
5
+ import isExpo from "./is-expo";
6
+ import useShape from "set-state-compare/src/use-shape";
7
+ const calculateBreakPoint = windowObject => {
8
+ let windowWidth;
9
+ if (isExpo) {
10
+ windowWidth = windowObject.width;
11
+ } else {
12
+ // Use 'window.innerWidth' outside Expo because sometimes window width excludes scroll
13
+ windowWidth = window.innerWidth;
14
+ }
15
+ const result = {};
16
+ for (const breakpointData of config.getBreakPoints()) {
17
+ const breakpoint = breakpointData[0];
18
+ const width = breakpointData[1];
19
+ if (!result.name && windowWidth >= width) {
20
+ result.name = breakpoint;
21
+ result[`${breakpoint}Down`] = true;
22
+ } else {
23
+ result[`${breakpoint}Down`] = !result.name;
24
+ }
25
+ result[`${breakpoint}Up`] = Boolean(result.name);
26
+ }
27
+ if (result.name) {
28
+ return result;
29
+ }
30
+ throw new Error(`Couldn't not find breakpoint from window width: ${windowWidth}`);
31
+ };
32
+ const sizeTypes = ["down", "up"];
33
+ const useBreakpoint = () => {
34
+ const s = useShape();
35
+ const onCalled = useCallback(({
36
+ window: windowObject
37
+ }) => {
38
+ const breakpoint = calculateBreakPoint(windowObject);
39
+ if (breakpoint.name != s.s.breakpoint.name) {
40
+ s.set({
41
+ breakpoint
42
+ });
43
+ }
44
+ }, []);
45
+ s.useStates({
46
+ breakpoint: () => calculateBreakPoint(Dimensions.get("window"))
47
+ });
48
+ const styling = useCallback(args => {
49
+ const style = Object.assign({}, args.base);
50
+ for (const breakpointData of apiMakerConfig.getBreakPoints()) {
51
+ const breakpoint = breakpointData[0];
52
+ for (const sizeType of sizeTypes) {
53
+ const breakpointWithSizeType = `${breakpoint}${inflection.camelize(sizeType)}`;
54
+ if (args[breakpointWithSizeType] && s.s.breakpoint[breakpointWithSizeType]) {
55
+ Object.assign(style, args[breakpointWithSizeType]);
56
+ }
57
+ }
58
+ }
59
+ return style;
60
+ }, []);
61
+ useLayoutEffect(() => {
62
+ const subscription = Dimensions.addEventListener("change", onCalled);
63
+ return () => subscription?.remove();
64
+ });
65
+ return {
66
+ styling,
67
+ ...s.s.breakpoint
68
+ };
69
+ };
70
+ export default useBreakpoint;
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsImNvbmZpZyIsIkRpbWVuc2lvbnMiLCJpbmZsZWN0aW9uIiwiaXNFeHBvIiwidXNlU2hhcGUiLCJjYWxjdWxhdGVCcmVha1BvaW50Iiwid2luZG93T2JqZWN0Iiwid2luZG93V2lkdGgiLCJ3aWR0aCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJyZXN1bHQiLCJicmVha3BvaW50RGF0YSIsImdldEJyZWFrUG9pbnRzIiwiYnJlYWtwb2ludCIsIm5hbWUiLCJCb29sZWFuIiwiRXJyb3IiLCJzaXplVHlwZXMiLCJ1c2VCcmVha3BvaW50IiwicyIsIm9uQ2FsbGVkIiwic2V0IiwidXNlU3RhdGVzIiwiZ2V0Iiwic3R5bGluZyIsImFyZ3MiLCJzdHlsZSIsIk9iamVjdCIsImFzc2lnbiIsImJhc2UiLCJhcGlNYWtlckNvbmZpZyIsInNpemVUeXBlIiwiYnJlYWtwb2ludFdpdGhTaXplVHlwZSIsImNhbWVsaXplIiwic3Vic2NyaXB0aW9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtYnJlYWtwb2ludC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuL2NvbmZpZ1wiXG5pbXBvcnQge0RpbWVuc2lvbnN9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgaXNFeHBvIGZyb20gXCIuL2lzLWV4cG9cIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvdXNlLXNoYXBlXCJcblxuY29uc3QgY2FsY3VsYXRlQnJlYWtQb2ludCA9ICh3aW5kb3dPYmplY3QpID0+IHtcbiAgbGV0IHdpbmRvd1dpZHRoXG5cbiAgaWYgKGlzRXhwbykge1xuICAgIHdpbmRvd1dpZHRoID0gd2luZG93T2JqZWN0LndpZHRoXG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlICd3aW5kb3cuaW5uZXJXaWR0aCcgb3V0c2lkZSBFeHBvIGJlY2F1c2Ugc29tZXRpbWVzIHdpbmRvdyB3aWR0aCBleGNsdWRlcyBzY3JvbGxcbiAgICB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7fVxuXG4gIGZvciAoY29uc3QgYnJlYWtwb2ludERhdGEgb2YgY29uZmlnLmdldEJyZWFrUG9pbnRzKCkpIHtcbiAgICBjb25zdCBicmVha3BvaW50ID0gYnJlYWtwb2ludERhdGFbMF1cbiAgICBjb25zdCB3aWR0aCA9IGJyZWFrcG9pbnREYXRhWzFdXG5cbiAgICBpZiAoIXJlc3VsdC5uYW1lICYmIHdpbmRvd1dpZHRoID49IHdpZHRoKSB7XG4gICAgICByZXN1bHQubmFtZSA9IGJyZWFrcG9pbnRcbiAgICAgIHJlc3VsdFtgJHticmVha3BvaW50fURvd25gXSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2Ake2JyZWFrcG9pbnR9RG93bmBdID0gIXJlc3VsdC5uYW1lXG4gICAgfVxuXG4gICAgcmVzdWx0W2Ake2JyZWFrcG9pbnR9VXBgXSA9IEJvb2xlYW4ocmVzdWx0Lm5hbWUpXG4gIH1cblxuICBpZiAocmVzdWx0Lm5hbWUpIHtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IG5vdCBmaW5kIGJyZWFrcG9pbnQgZnJvbSB3aW5kb3cgd2lkdGg6ICR7d2luZG93V2lkdGh9YClcbn1cblxuY29uc3Qgc2l6ZVR5cGVzID0gW1wiZG93blwiLCBcInVwXCJdXG5cbmNvbnN0IHVzZUJyZWFrcG9pbnQgPSAoKSA9PiB7XG4gIGNvbnN0IHMgPSB1c2VTaGFwZSgpXG4gIGNvbnN0IG9uQ2FsbGVkID0gdXNlQ2FsbGJhY2soKHt3aW5kb3c6IHdpbmRvd09iamVjdH0pID0+IHtcbiAgICBjb25zdCBicmVha3BvaW50ID0gY2FsY3VsYXRlQnJlYWtQb2ludCh3aW5kb3dPYmplY3QpXG5cbiAgICBpZiAoYnJlYWtwb2ludC5uYW1lICE9IHMucy5icmVha3BvaW50Lm5hbWUpIHtcbiAgICAgIHMuc2V0KHticmVha3BvaW50fSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHMudXNlU3RhdGVzKHtcbiAgICBicmVha3BvaW50OiAoKSA9PiBjYWxjdWxhdGVCcmVha1BvaW50KERpbWVuc2lvbnMuZ2V0KFwid2luZG93XCIpKVxuICB9KVxuXG4gIGNvbnN0IHN0eWxpbmcgPSB1c2VDYWxsYmFjaygoYXJncykgPT4ge1xuICAgIGNvbnN0IHN0eWxlID0gT2JqZWN0LmFzc2lnbih7fSwgYXJncy5iYXNlKVxuXG4gICAgZm9yIChjb25zdCBicmVha3BvaW50RGF0YSBvZiBhcGlNYWtlckNvbmZpZy5nZXRCcmVha1BvaW50cygpKSB7XG4gICAgICBjb25zdCBicmVha3BvaW50ID0gYnJlYWtwb2ludERhdGFbMF1cblxuICAgICAgZm9yIChjb25zdCBzaXplVHlwZSBvZiBzaXplVHlwZXMpIHtcbiAgICAgICAgY29uc3QgYnJlYWtwb2ludFdpdGhTaXplVHlwZSA9IGAke2JyZWFrcG9pbnR9JHtpbmZsZWN0aW9uLmNhbWVsaXplKHNpemVUeXBlKX1gXG5cbiAgICAgICAgaWYgKGFyZ3NbYnJlYWtwb2ludFdpdGhTaXplVHlwZV0gJiYgcy5zLmJyZWFrcG9pbnRbYnJlYWtwb2ludFdpdGhTaXplVHlwZV0pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHN0eWxlLCBhcmdzW2JyZWFrcG9pbnRXaXRoU2l6ZVR5cGVdKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlXG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gRGltZW5zaW9ucy5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIG9uQ2FsbGVkKVxuXG4gICAgcmV0dXJuICgpID0+IHN1YnNjcmlwdGlvbj8ucmVtb3ZlKClcbiAgfSlcblxuICByZXR1cm4ge1xuICAgIHN0eWxpbmcsXG4gICAgLi4ucy5zLmJyZWFrcG9pbnRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VCcmVha3BvaW50XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFdBQVcsRUFBRUMsZUFBZSxRQUFPLE9BQU87QUFDbEQsT0FBT0MsTUFBTSxNQUFNLFVBQVU7QUFDN0IsU0FBUUMsVUFBVSxRQUFPLGNBQWM7QUFDdkMsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxNQUFNLE1BQU0sV0FBVztBQUM5QixPQUFPQyxRQUFRLE1BQU0saUNBQWlDO0FBRXRELE1BQU1DLG1CQUFtQixHQUFJQyxZQUFZLElBQUs7RUFDNUMsSUFBSUMsV0FBVztFQUVmLElBQUlKLE1BQU0sRUFBRTtJQUNWSSxXQUFXLEdBQUdELFlBQVksQ0FBQ0UsS0FBSztFQUNsQyxDQUFDLE1BQU07SUFDTDtJQUNBRCxXQUFXLEdBQUdFLE1BQU0sQ0FBQ0MsVUFBVTtFQUNqQztFQUVBLE1BQU1DLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFFakIsS0FBSyxNQUFNQyxjQUFjLElBQUlaLE1BQU0sQ0FBQ2EsY0FBYyxDQUFDLENBQUMsRUFBRTtJQUNwRCxNQUFNQyxVQUFVLEdBQUdGLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTUosS0FBSyxHQUFHSSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBRS9CLElBQUksQ0FBQ0QsTUFBTSxDQUFDSSxJQUFJLElBQUlSLFdBQVcsSUFBSUMsS0FBSyxFQUFFO01BQ3hDRyxNQUFNLENBQUNJLElBQUksR0FBR0QsVUFBVTtNQUN4QkgsTUFBTSxDQUFDLEdBQUdHLFVBQVUsTUFBTSxDQUFDLEdBQUcsSUFBSTtJQUNwQyxDQUFDLE1BQU07TUFDTEgsTUFBTSxDQUFDLEdBQUdHLFVBQVUsTUFBTSxDQUFDLEdBQUcsQ0FBQ0gsTUFB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