@kaspernj/api-maker 1.0.446 → 1.0.447

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 (357) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +4 -0
  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/index.js +105 -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 +128 -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 +130 -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 +3 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +279 -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 +53 -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 +109 -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-model-class.js +24 -0
  52. package/build/events.js +5 -0
  53. package/build/form.js +83 -0
  54. package/build/index.js +3 -0
  55. package/build/inputs/attachment.js +121 -0
  56. package/build/inputs/auto-submit.js +36 -0
  57. package/build/inputs/checkbox.js +145 -0
  58. package/build/inputs/checkboxes.js +111 -0
  59. package/build/inputs/id-for-component.js +15 -0
  60. package/build/inputs/input-wrapper.js +18 -0
  61. package/build/inputs/input.js +230 -0
  62. package/build/inputs/money.js +179 -0
  63. package/build/inputs/name-for-component.js +13 -0
  64. package/build/inputs/select.js +92 -0
  65. package/build/instance-of-class-name.js +23 -0
  66. package/build/key-value-store.js +53 -0
  67. package/build/link.js +68 -0
  68. package/build/logger.js +30 -0
  69. package/build/modal.js +37 -0
  70. package/build/model-class-require.js +13 -0
  71. package/build/model-events.js +30 -0
  72. package/build/model-name.js +28 -0
  73. package/build/model-prop-type.js +101 -0
  74. package/build/model-recipes-loader.js +32 -0
  75. package/build/model-recipes-model-loader.js +357 -0
  76. package/build/models-response-reader.js +40 -0
  77. package/build/models.js +8 -0
  78. package/build/money-formatter.js +77 -0
  79. package/build/not-loaded-error.js +2 -0
  80. package/build/params.js +60 -0
  81. package/build/preloaded.js +38 -0
  82. package/build/resize-observer.js +11 -0
  83. package/build/result.js +13 -0
  84. package/build/router/route.js +262 -0
  85. package/build/router/switch.js +72 -0
  86. package/build/router.js +57 -0
  87. package/build/routes-native.js +202 -0
  88. package/build/routes.js +50 -0
  89. package/build/run-last.js +35 -0
  90. package/build/serializer.js +63 -0
  91. package/build/services.js +20 -0
  92. package/build/session-status-updater.js +126 -0
  93. package/build/source-maps-loader.js +171 -0
  94. package/build/super-admin/config-reader.js +84 -0
  95. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  96. package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
  97. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  98. package/build/super-admin/edit-page/edit-attribute.js +76 -0
  99. package/build/super-admin/edit-page.js +120 -0
  100. package/build/super-admin/has-edit-config.js +12 -0
  101. package/build/super-admin/index-page.js +24 -0
  102. package/build/super-admin/index.js +180 -0
  103. package/build/super-admin/layout/header/index.js +151 -0
  104. package/build/super-admin/layout/index.js +109 -0
  105. package/build/super-admin/layout/menu/index.js +93 -0
  106. package/build/super-admin/layout/menu/menu-content.js +40 -0
  107. package/build/super-admin/layout/menu/menu-item.js +83 -0
  108. package/build/super-admin/layout/no-access.js +25 -0
  109. package/build/super-admin/model-class-table.js +61 -0
  110. package/build/super-admin/models.js +8 -0
  111. package/build/super-admin/show-nav.js +49 -0
  112. package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
  113. package/build/super-admin/show-page/index.js +141 -0
  114. package/build/super-admin/show-reflection-actions.js +47 -0
  115. package/build/super-admin/show-reflection-link.js +46 -0
  116. package/build/super-admin/show-reflection-page.js +47 -0
  117. package/build/table/column-content.js +112 -0
  118. package/build/table/column-identifier.js +18 -0
  119. package/build/table/column-visible.js +7 -0
  120. package/build/table/components/column.js +20 -0
  121. package/build/table/components/flat-list.js +20 -0
  122. package/build/table/components/header.js +25 -0
  123. package/build/table/components/row.js +25 -0
  124. package/build/table/filters/attribute-element.js +43 -0
  125. package/build/table/filters/filter-form.js +392 -0
  126. package/build/table/filters/filter.js +89 -0
  127. package/build/table/filters/index.js +182 -0
  128. package/build/table/filters/load-search-modal.js +174 -0
  129. package/build/table/filters/reflection-element.js +36 -0
  130. package/build/table/filters/save-search-modal.js +86 -0
  131. package/build/table/filters/scope-element.js +41 -0
  132. package/build/table/header-column-content.js +67 -0
  133. package/build/table/header-column.js +144 -0
  134. package/build/table/header-select.js +104 -0
  135. package/build/table/model-callback-args.js +10 -0
  136. package/build/table/model-column.js +87 -0
  137. package/build/table/model-row.js +179 -0
  138. package/build/table/select-calculator.js +63 -0
  139. package/build/table/settings/column-row.js +97 -0
  140. package/build/table/settings/download-action.js +78 -0
  141. package/build/table/settings/index.js +92 -0
  142. package/build/table/table-settings.js +219 -0
  143. package/build/table/table.js +972 -0
  144. package/build/table/use-sorting.js +34 -0
  145. package/build/table/widths.js +75 -0
  146. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  147. package/build/table/worker-plugins-checkbox.js +115 -0
  148. package/build/translated-attributes.js +10 -0
  149. package/build/translated-collections.js +11 -0
  150. package/build/updated-attribute.js +76 -0
  151. package/build/url-encode.js +15 -0
  152. package/build/use-breakpoint.js +44 -0
  153. package/build/use-can-can.js +55 -0
  154. package/build/use-collection.js +225 -0
  155. package/build/use-created-event.js +52 -0
  156. package/build/use-current-user.js +73 -0
  157. package/build/use-destroyed-event.js +60 -0
  158. package/build/use-event-emitter.js +13 -0
  159. package/build/use-event-listener.js +16 -0
  160. package/build/use-input.js +140 -0
  161. package/build/use-model-event.js +60 -0
  162. package/build/use-model.js +169 -0
  163. package/build/use-resize-observer.js +23 -0
  164. package/build/use-router.js +102 -0
  165. package/build/use-screen-layout.js +39 -0
  166. package/build/use-updated-event.js +60 -0
  167. package/build/use-validation-errors.js +30 -0
  168. package/build/utils/card.js +51 -0
  169. package/build/utils/checkbox.js +48 -0
  170. package/build/utils/default-style.js +18 -0
  171. package/build/utils/modal.js +61 -0
  172. package/build/utils/text.js +18 -0
  173. package/build/validation-error.js +28 -0
  174. package/build/validation-errors.js +98 -0
  175. package/build/with-collection.js +13 -0
  176. package/build/with-current-user.js +9 -0
  177. package/build/with-model.js +14 -0
  178. package/build/with-router.js +21 -0
  179. package/expo-module.config.json +17 -0
  180. package/ios/ApiMaker.podspec +29 -0
  181. package/ios/ApiMakerModule.swift +48 -0
  182. package/ios/ApiMakerView.swift +38 -0
  183. package/package.json +35 -15
  184. package/src/{api.mjs → api.js} +5 -5
  185. package/src/{base-error.mjs → base-error.js} +1 -1
  186. package/src/base-model/{attribute.mjs → attribute.js} +1 -1
  187. package/src/base-model/{reflection.mjs → reflection.js} +1 -1
  188. package/src/{base-model.mjs → base-model.js} +14 -14
  189. package/src/bootstrap/attribute-row/index.jsx +2 -2
  190. package/src/bootstrap/attribute-rows.jsx +1 -1
  191. package/src/bootstrap/card.jsx +1 -1
  192. package/src/bootstrap/checkbox.jsx +1 -1
  193. package/src/bootstrap/checkboxes.jsx +1 -1
  194. package/src/bootstrap/input.jsx +1 -1
  195. package/src/bootstrap/paginate.jsx +2 -2
  196. package/src/bootstrap/sort-link.jsx +3 -3
  197. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
  198. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
  199. package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
  200. package/src/{can-can.mjs → can-can.js} +1 -1
  201. package/src/collection-loader.jsx +2 -2
  202. package/src/{collection.mjs → collection.js} +3 -3
  203. package/src/{commands-pool.mjs → commands-pool.js} +11 -11
  204. package/src/{custom-error.mjs → custom-error.js} +1 -1
  205. package/src/{deserializer.mjs → deserializer.js} +2 -2
  206. package/src/{destroy-error.mjs → destroy-error.js} +1 -1
  207. package/src/{devise.mjs → devise.js} +5 -9
  208. package/src/draggable-sort/index.jsx +3 -3
  209. package/src/draggable-sort/item.jsx +2 -2
  210. package/src/{error-logger.mjs → error-logger.js} +1 -1
  211. package/src/event-connection.jsx +1 -1
  212. package/src/event-model-class.jsx +1 -1
  213. package/src/form.jsx +1 -1
  214. package/src/index.js +3 -0
  215. package/src/inputs/attachment.jsx +2 -2
  216. package/src/inputs/checkbox.jsx +7 -6
  217. package/src/inputs/checkboxes.jsx +1 -1
  218. package/src/inputs/input-wrapper.jsx +1 -1
  219. package/src/inputs/input.jsx +8 -7
  220. package/src/inputs/money.jsx +3 -3
  221. package/src/inputs/select.jsx +1 -1
  222. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  223. package/src/link.jsx +2 -2
  224. package/src/modal.jsx +1 -1
  225. package/src/{model-class-require.mjs → model-class-require.js} +4 -2
  226. package/src/{model-events.mjs → model-events.js} +1 -1
  227. package/src/{model-name.mjs → model-name.js} +1 -1
  228. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  229. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
  230. package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
  231. package/src/models.js +7 -0
  232. package/src/{models.mjs.erb → models.js.erb} +1 -1
  233. package/src/{params.mjs → params.js} +2 -2
  234. package/src/{preloaded.mjs → preloaded.js} +1 -1
  235. package/src/resize-observer.jsx +1 -1
  236. package/src/router/route.jsx +1 -1
  237. package/src/router/switch.jsx +1 -1
  238. package/src/router.jsx +1 -1
  239. package/src/{routes-native.mjs → routes-native.js} +1 -1
  240. package/src/{services.mjs → services.js} +1 -1
  241. package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
  242. package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
  243. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
  244. package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
  245. package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
  246. package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
  247. package/src/super-admin/edit-page.jsx +2 -2
  248. package/src/super-admin/has-edit-config.js +1 -1
  249. package/src/super-admin/index-page.jsx +1 -1
  250. package/src/super-admin/index.jsx +7 -7
  251. package/src/super-admin/layout/header/index.jsx +2 -2
  252. package/src/super-admin/layout/index.jsx +3 -3
  253. package/src/super-admin/layout/menu/index.jsx +3 -3
  254. package/src/super-admin/layout/menu/menu-content.jsx +2 -2
  255. package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
  256. package/src/super-admin/layout/no-access.jsx +2 -2
  257. package/src/super-admin/model-class-table.jsx +3 -3
  258. package/src/super-admin/models.js +1 -1
  259. package/src/super-admin/show-nav.jsx +2 -2
  260. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
  261. package/src/super-admin/show-page/index.jsx +2 -2
  262. package/src/super-admin/show-reflection-actions.jsx +1 -1
  263. package/src/super-admin/show-reflection-link.jsx +1 -1
  264. package/src/super-admin/show-reflection-page.jsx +1 -1
  265. package/src/table/column-content.jsx +1 -1
  266. package/src/table/filters/filter-form.jsx +1 -1
  267. package/src/table/filters/index.jsx +5 -3
  268. package/src/table/filters/load-search-modal.jsx +6 -4
  269. package/src/table/filters/save-search-modal.jsx +4 -4
  270. package/src/table/header-select.jsx +1 -1
  271. package/src/table/model-column.jsx +1 -1
  272. package/src/table/model-row.jsx +2 -2
  273. package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
  274. package/src/table/settings/column-row.jsx +2 -2
  275. package/src/table/settings/download-action.jsx +3 -3
  276. package/src/table/settings/index.jsx +3 -3
  277. package/src/table/table-settings.js +5 -4
  278. package/src/table/table.jsx +8 -8
  279. package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
  280. package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
  281. package/src/table/worker-plugins-checkbox.jsx +2 -2
  282. package/src/{translated-collections.mjs → translated-collections.js} +1 -1
  283. package/src/updated-attribute.jsx +1 -1
  284. package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
  285. package/src/use-can-can.js +55 -0
  286. package/src/{use-collection.mjs → use-collection.js} +4 -4
  287. package/src/{use-created-event.mjs → use-created-event.js} +2 -2
  288. package/src/{use-current-user.mjs → use-current-user.js} +6 -5
  289. package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
  290. package/src/{use-input.mjs → use-input.js} +5 -5
  291. package/src/use-model-event.js +2 -2
  292. package/src/{use-model.mjs → use-model.js} +4 -4
  293. package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
  294. package/src/use-router.jsx +2 -2
  295. package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
  296. package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
  297. package/src/utils/checkbox.jsx +2 -2
  298. package/src/{validation-error.mjs → validation-error.js} +1 -1
  299. package/src/{validation-errors.mjs → validation-errors.js} +1 -1
  300. package/src/with-current-user.jsx +1 -1
  301. package/src/with-model.jsx +1 -1
  302. package/__tests__/base-model.test.mjs +0 -71
  303. package/__tests__/cable-connection-pool.test.mjs +0 -227
  304. package/__tests__/cable-subscription-pool.test.mjs +0 -27
  305. package/__tests__/can-can.test.mjs +0 -34
  306. package/__tests__/collection.test.mjs +0 -51
  307. package/__tests__/custom-error.test.mjs +0 -13
  308. package/__tests__/model-name.test.mjs +0 -34
  309. package/__tests__/model-prop-type.test.mjs +0 -113
  310. package/__tests__/params.test.mjs +0 -40
  311. package/__tests__/routes-native.test.mjs +0 -104
  312. package/__tests__/routes.test.mjs +0 -47
  313. package/__tests__/serializer.test.mjs +0 -30
  314. package/__tests__/support/task.mjs +0 -27
  315. package/__tests__/support/user.mjs +0 -32
  316. package/index.js +0 -1
  317. package/jest.config.js +0 -9
  318. package/src/event-created.jsx +0 -12
  319. package/src/event-destroyed.jsx +0 -25
  320. package/src/event-emitter-listener.jsx +0 -10
  321. package/src/event-listener.jsx +0 -25
  322. package/src/event-updated.jsx +0 -27
  323. package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
  324. package/src/use-can-can.mjs +0 -48
  325. package/src/with-can-can.jsx +0 -12
  326. package/webpack.config.js +0 -15
  327. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  328. /package/src/base-model/{column.mjs → column.js} +0 -0
  329. /package/src/base-model/{scope.mjs → scope.js} +0 -0
  330. /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
  331. /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
  332. /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
  333. /package/src/{config.mjs → config.js} +0 -0
  334. /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
  335. /package/src/draggable-sort/{controller.mjs → controller.js} +0 -0
  336. /package/src/{error-messages.mjs → error-messages.js} +0 -0
  337. /package/src/{events.mjs → events.js} +0 -0
  338. /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
  339. /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
  340. /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
  341. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  342. /package/src/{logger.mjs → logger.js} +0 -0
  343. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  344. /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
  345. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  346. /package/src/{result.mjs → result.js} +0 -0
  347. /package/src/{routes.mjs → routes.js} +0 -0
  348. /package/src/{run-last.mjs → run-last.js} +0 -0
  349. /package/src/{serializer.mjs → serializer.js} +0 -0
  350. /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
  351. /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
  352. /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
  353. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
  354. /package/src/{url-encode.mjs → url-encode.js} +0 -0
  355. /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
  356. /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
  357. /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
@@ -0,0 +1,34 @@
1
+ import { camelize } from "inflection";
2
+ import useQueryParams from "on-location-changed/src/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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYW1lbGl6ZSIsInVzZVF1ZXJ5UGFyYW1zIiwiY2FsY3VsYXRlUVBhcmFtcyIsImRlZmF1bHRQYXJhbXMiLCJxdWVyeVBhcmFtcyIsInNlYXJjaEtleSIsIkpTT04iLCJwYXJzZSIsInVzZVNvcnRpbmciLCJxdWVyeSIsInF1ZXJ5QXJncyIsInFQYXJhbXMiLCJtYXRjaFNvcnRQYXJhbSIsInMiLCJtYXRjaCIsInNvcnRBdHRyaWJ1dGUiLCJzb3J0TW9kZSIsInRyaW0iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvdXNlLXNvcnRpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjYW1lbGl6ZX0gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL3NyYy91c2UtcXVlcnktcGFyYW1zXCJcblxuY29uc3QgY2FsY3VsYXRlUVBhcmFtcyA9IChkZWZhdWx0UGFyYW1zLCBxdWVyeVBhcmFtcywgc2VhcmNoS2V5KSA9PiB7XG4gIGlmIChzZWFyY2hLZXkgaW4gcXVlcnlQYXJhbXMpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShxdWVyeVBhcmFtc1tzZWFyY2hLZXldKVxuICB9IGVsc2UgaWYgKGRlZmF1bHRQYXJhbXMpIHtcbiAgICByZXR1cm4gey4uLmRlZmF1bHRQYXJhbXN9XG4gIH1cblxuICByZXR1cm4ge31cbn1cblxuY29uc3QgdXNlU29ydGluZyA9ICh7ZGVmYXVsdFBhcmFtcywgcXVlcnl9KSA9PiB7XG4gIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdXNlUXVlcnlQYXJhbXMoKVxuICBjb25zdCBzZWFyY2hLZXkgPSBxdWVyeS5xdWVyeUFyZ3Muc2VhcmNoS2V5IHx8IFwicVwiXG4gIGNvbnN0IHFQYXJhbXMgPSBjYWxjdWxhdGVRUGFyYW1zKGRlZmF1bHRQYXJhbXMsIHF1ZXJ5UGFyYW1zLCBzZWFyY2hLZXkpXG4gIGxldCBtYXRjaFNvcnRQYXJhbVxuXG4gIGlmICh0eXBlb2YgcVBhcmFtcy5zID09IFwic3RyaW5nXCIpIHtcbiAgICBtYXRjaFNvcnRQYXJhbSA9IHFQYXJhbXMucz8ubWF0Y2goL14oLis/KSggYXNjfCBkZXNjfCkkLylcbiAgfVxuXG4gIGNvbnN0IHNvcnRBdHRyaWJ1dGUgPSBtYXRjaFNvcnRQYXJhbSA/IGNhbWVsaXplKG1hdGNoU29ydFBhcmFtWzFdLCB0cnVlKSA6IG51bGxcbiAgY29uc3Qgc29ydE1vZGUgPSBtYXRjaFNvcnRQYXJhbSA/IG1hdGNoU29ydFBhcmFtWzJdLnRyaW0oKSA6IG51bGxcblxuICByZXR1cm4ge1xuICAgIHFQYXJhbXMsXG4gICAgc2VhcmNoS2V5LFxuICAgIHNvcnRBdHRyaWJ1dGUsXG4gICAgc29ydE1vZGVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTb3J0aW5nXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFFBQVEsUUFBTyxZQUFZO0FBQ25DLE9BQU9DLGNBQWMsTUFBTSwwQ0FBMEM7QUFFckUsTUFBTUMsZ0JBQWdCLEdBQUdBLENBQUNDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxTQUFTLEtBQUs7RUFDbEUsSUFBSUEsU0FBUyxJQUFJRCxXQUFXLEVBQUU7SUFDNUIsT0FBT0UsSUFBSSxDQUFDQyxLQUFLLENBQUNILFdBQVcsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7RUFDM0MsQ0FBQyxNQUFNLElBQUlGLGFBQWEsRUFBRTtJQUN4QixPQUFPO01BQUMsR0FBR0E7SUFBYSxDQUFDO0VBQzNCO0VBRUEsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBTUssVUFBVSxHQUFHQSxDQUFDO0VBQUNMLGFBQWE7RUFBRU07QUFBSyxDQUFDLEtBQUs7RUFDN0MsTUFBTUwsV0FBVyxHQUFHSCxjQUFjLENBQUMsQ0FBQztFQUNwQyxNQUFNSSxTQUFTLEdBQUdJLEtBQUssQ0FBQ0MsU0FBUyxDQUFDTCxTQUFTLElBQUksR0FBRztFQUNsRCxNQUFNTSxPQUFPLEdBQUdULGdCQUFnQixDQUFDQyxhQUFhLEVBQUVDLFdBQVcsRUFBRUMsU0FBUyxDQUFDO0VBQ3ZFLElBQUlPLGNBQWM7RUFFbEIsSUFBSSxPQUFPRCxPQUFPLENBQUNFLENBQUMsSUFBSSxRQUFRLEVBQUU7SUFDaENELGNBQWMsR0FBR0QsT0FBTyxDQUFDRSxDQUFDLEVBQUVDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztFQUMzRDtFQUVBLE1BQU1DLGFBQWEsR0FBR0gsY0FBYyxHQUFHWixRQUFRLENBQUNZLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJO0VBQy9FLE1BQU1JLFFBQVEsR0FBR0osY0FBYyxHQUFHQSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUNLLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSTtFQUVqRSxPQUFPO0lBQ0xOLE9BQU87SUFDUE4sU0FBUztJQUNUVSxhQUFhO0lBQ2JDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFRCxlQUFlUixVQUFVIiwiaWdub3JlTGlzdCI6W119
@@ -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 { 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwiQmFzZUNvbXBvbmVudCIsImNsYXNzTmFtZXMiLCJDb2xsZWN0aW9uIiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0Iiwic2hhcGVDb21wb25lbnQiLCJzaW1wbGVPYmplY3REaWZmZXJlbnQiLCJ1c2VNb2RlbEV2ZW50IiwiQ2hlY2tib3giLCJyZW5kZXIiLCJpbmRldGVybWluYXRlIiwicmVzdFByb3BzIiwicHJvcHMiLCJjaGVja2JveFJlZiIsImN1cnJlbnQiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJlZiIsInR5cGUiLCJBcGlNYWtlclRhYmxlV29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3giLCJwcm9wVHlwZXMiLCJjdXJyZW50V29ya3BsYWNlIiwib2JqZWN0IiwicXVlcnkiLCJpbnN0YW5jZU9mIiwic3R5bGUiLCJzZXR1cCIsInVzZVN0YXRlcyIsImNoZWNrZWQiLCJ1cGRhdGVBbGxDaGVja2VkIiwidHQiLCJvbkxpbmtzQ3JlYXRlZCIsIm9uTGlua3NEZXN0cm95ZWQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2aW91c1BhcmFtcyIsInBhcmFtcyIsImN1cnJlbnRQYXJhbXMiLCJxdWVyeUxpbmtzU3RhdHVzUmVzdWx0IiwicXVlcnlMaW5rc1N0YXR1cyIsImFsbENoZWNrZWQiLCJhbGxfY2hlY2tlZCIsInNvbWVDaGVja2VkIiwic29tZV9jaGVja2VkIiwic2V0U3RhdGUiLCJjbGFzc05hbWUiLCJzdGF0ZSIsIm9uQ2hhbmdlIiwib25DaGVja2VkQ2hhbmdlZCIsIm1vZGVsQ2xhc3NOYW1lIiwibW9kZWxDbGFzcyIsIm1vZGVsQ2xhc3NEYXRhIiwibmFtZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNoZWNrYm94IiwidGFyZ2V0IiwiYWRkUXVlcnkiLCJyZW1vdmVRdWVyeSIsImFyZ3MiLCJjcmVhdGVkIiwiZGVzdHJveWVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL3dvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tIFwiLi4vY29sbGVjdGlvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IHtzaW1wbGVPYmplY3REaWZmZXJlbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvZGlmZi11dGlsc1wiXG5pbXBvcnQgdXNlTW9kZWxFdmVudCBmcm9tIFwiLi4vdXNlLW1vZGVsLWV2ZW50XCJcblxuY29uc3QgQ2hlY2tib3ggPSBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIENoZWNrYm94IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7aW5kZXRlcm1pbmF0ZSwgLi4ucmVzdFByb3BzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBjaGVja2JveFJlZiA9IHVzZVJlZigpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY2hlY2tib3hSZWYuY3VycmVudC5pbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0IHJlZj17Y2hlY2tib3hSZWZ9IHR5cGU9XCJjaGVja2JveFwiIHsuLi5yZXN0UHJvcHN9IC8+XG4gICAgKVxuICB9XG59KSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclRhYmxlV29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3ggZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjdXJyZW50V29ya3BsYWNlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHF1ZXJ5OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb2xsZWN0aW9uKSxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgaW5kZXRlcm1pbmF0ZTogZmFsc2VcbiAgICB9KVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUFsbENoZWNrZWQoKVxuICAgIH0sIFtdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnByb3BzLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2NyZWF0ZWRcIiwgdGhpcy50dC5vbkxpbmtzQ3JlYXRlZClcbiAgICB1c2VNb2RlbEV2ZW50KHRoaXMucHJvcHMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfZGVzdHJveWVkXCIsIHRoaXMudHQub25MaW5rc0Rlc3Ryb3llZClcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBjb25zdCBwcmV2aW91c1BhcmFtcyA9IHByZXZQcm9wcy5xdWVyeS5wYXJhbXMoKVxuICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnByb3BzLnF1ZXJ5LnBhcmFtcygpXG5cbiAgICBpZiAoc2ltcGxlT2JqZWN0RGlmZmVyZW50KHByZXZpb3VzUGFyYW1zLCBjdXJyZW50UGFyYW1zKSkge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKClcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVBbGxDaGVja2VkKCkge1xuICAgIGNvbnN0IHtxdWVyeSwgY3VycmVudFdvcmtwbGFjZX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgcXVlcnlMaW5rc1N0YXR1c1Jlc3VsdCA9IGF3YWl0IGN1cnJlbnRXb3JrcGxhY2UucXVlcnlMaW5rc1N0YXR1cyh7cXVlcnl9KVxuICAgIGNvbnN0IGFsbENoZWNrZWQgPSBxdWVyeUxpbmtzU3RhdHVzUmVzdWx0LmFsbF9jaGVja2VkXG4gICAgY29uc3Qgc29tZUNoZWNrZWQgPSBxdWVyeUxpbmtzU3RhdHVzUmVzdWx0LnNvbWVfY2hlY2tlZFxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBjaGVja2VkOiBhbGxDaGVja2VkLFxuICAgICAgaW5kZXRlcm1pbmF0ZTogc29tZUNoZWNrZWRcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7Y2hlY2tlZCwgaW5kZXRlcm1pbmF0ZX0gPSB0aGlzLnN0YXRlXG5cbiAgICByZXR1cm4gKFxuICAgICAgPENoZWNrYm94XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGUtLXdvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveFwiLCBjbGFzc05hbWUpfVxuICAgICAgICBpbmRldGVybWluYXRlPXtpbmRldGVybWluYXRlfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoZWNrZWRDaGFuZ2VkfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIG1vZGVsQ2xhc3NOYW1lID0gKCkgPT4gdGhpcy5wcm9wcy5xdWVyeS5tb2RlbENsYXNzKCkubW9kZWxDbGFzc0RhdGEoKS5uYW1lXG5cbiAgb25DaGVja2VkQ2hhbmdlZCA9IGFzeW5jIChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBjb25zdCB7Y3VycmVudFdvcmtwbGFjZSwgcXVlcnl9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGNoZWNrYm94ID0gZS50YXJnZXRcblxuICAgIGlmIChjaGVja2JveC5jaGVja2VkKSB7XG4gICAgICBhd2FpdCBjdXJyZW50V29ya3BsYWNlLmFkZFF1ZXJ5KHtxdWVyeX0pXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiB0cnVlLCBpbmRldGVybWluYXRlOiBmYWxzZX0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGN1cnJlbnRXb3JrcGxhY2UucmVtb3ZlUXVlcnkoe3F1ZXJ5fSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6IGZhbHNlLCBpbmRldGVybWluYXRlOiBmYWxzZX0pXG4gICAgfVxuICB9XG5cbiAgb25MaW5rc0NyZWF0ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgaWYgKGFyZ3MuY3JlYXRlZFt0aGlzLm1vZGVsQ2xhc3NOYW1lKCldKSB7XG4gICAgICB0aGlzLnVwZGF0ZUFsbENoZWNrZWQoKVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NEZXN0cm95ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgaWYgKGFyZ3MuZGVzdHJveWVkW3RoaXMubW9kZWxDbGFzc05hbWUoKV0pIHtcbiAgICAgIHRoaXMudXBkYXRlQWxsQ2hlY2tlZCgpXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLFFBQU8sT0FBTztBQUNoRCxPQUFPQyxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLE9BQU9DLFVBQVUsTUFBTSxZQUFZO0FBQ25DLE9BQU9DLFVBQVUsTUFBTSxlQUFlO0FBQ3RDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7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
@@ -0,0 +1,115 @@
1
+ import BaseComponent from "../base-component";
2
+ import classNames from "classnames";
3
+ import { digg } from "diggerize";
4
+ import memo from "set-state-compare/src/memo";
5
+ import modelClassRequire from "../model-class-require";
6
+ import PropTypes from "prop-types";
7
+ import PropTypesExact from "prop-types-exact";
8
+ import { useMemo } from "react";
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
+ } = digs(this.props, "model");
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
+ } = digs(this.props, "model");
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiY2xhc3NOYW1lcyIsImRpZ2ciLCJtZW1vIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJQcm9wVHlwZXMiLCJQcm9wVHlwZXNFeGFjdCIsInVzZU1lbW8iLCJzaGFwZUNvbXBvbmVudCIsInVzZU1vZGVsRXZlbnQiLCJXb3JrcGxhY2UiLCJBcGlNYWtlclRhYmxlV29ya2VyUGx1Z2luc0NoZWNrYm94IiwicHJvcFR5cGVzIiwiY3VycmVudFdvcmtwbGFjZSIsIm9iamVjdCIsIm1vZGVsIiwiaXNSZXF1aXJlZCIsInN0eWxlIiwic2V0dXAiLCJ1c2VTdGF0ZXMiLCJjaGVja2VkIiwibGlua0xvYWRlZCIsImxvYWRDdXJyZW50TGluayIsInAiLCJ0dCIsIm9uTGlua3NDcmVhdGVkIiwib25MaW5rc0Rlc3Ryb3llZCIsInByb3BzIiwicmVzcG9uc2UiLCJsaW5rRm9yIiwibW9kZWxfY2xhc3MiLCJtb2RlbENsYXNzRGF0YSIsIm5hbWUiLCJtb2RlbF9pZCIsImlkIiwibGluayIsInNldFN0YXRlIiwiQm9vbGVhbiIsInJlbmRlciIsImNsYXNzTmFtZSIsInN0YXRlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50Iiwib25DaGFuZ2UiLCJvbkNoZWNrZWRDaGFuZ2VkIiwidHlwZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsImNyZWF0ZUxpbmsiLCJtb2RlbENsYXNzTmFtZSIsInBhcmFtcyIsIm1vZGVscyIsImRlc3Ryb3lMaW5rcyIsImFyZ3MiLCJkaWdzIiwiY3JlYXRlZCIsImluY2x1ZGVzIiwiZGVzdHJveWVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL3dvcmtlci1wbHVnaW5zLWNoZWNrYm94LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4uL21vZGVsLWNsYXNzLXJlcXVpcmVcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudFwiXG5cbmNvbnN0IFdvcmtwbGFjZSA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlXCIpXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJUYWJsZVdvcmtlclBsdWdpbnNDaGVja2JveCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGN1cnJlbnRXb3JrcGxhY2U6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgbGlua0xvYWRlZDogZmFsc2VcbiAgICB9KVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRDdXJyZW50TGluaygpXG4gICAgfSwgW10pXG5cbiAgICB1c2VNb2RlbEV2ZW50KHRoaXMucC5jdXJyZW50V29ya3BsYWNlLCBcIndvcmtwbGFjZV9saW5rc19jcmVhdGVkXCIsIHRoaXMudHQub25MaW5rc0NyZWF0ZWQpXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnAuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfZGVzdHJveWVkXCIsIHRoaXMudHQub25MaW5rc0Rlc3Ryb3llZClcbiAgfVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50TGluaygpIHtcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgV29ya3BsYWNlLmxpbmtGb3Ioe21vZGVsX2NsYXNzOiBtb2RlbC5tb2RlbENsYXNzRGF0YSgpLm5hbWUsIG1vZGVsX2lkOiBtb2RlbC5pZCgpfSlcbiAgICBjb25zdCBsaW5rID0gZGlnZyhyZXNwb25zZSwgXCJsaW5rXCIpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNoZWNrZWQ6IEJvb2xlYW4obGluayksXG4gICAgICBsaW5rTG9hZGVkOiB0cnVlXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBtb2RlbCwgc3R5bGV9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtjaGVja2VkLCBsaW5rTG9hZGVkfSA9IHRoaXMuc3RhdGVcblxuICAgIGlmICghbGlua0xvYWRlZCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGUtLXdvcmtlci1wbHVnaW5zLWNoZWNrYm94XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIGRhdGEtY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgZGF0YS1tb2RlbC1pZD17bW9kZWwuaWQoKX1cbiAgICAgICAgb25DaGFuZ2U9e3RoaXMudHQub25DaGVja2VkQ2hhbmdlZH1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGNvbnN0IHttb2RlbH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgY2hlY2tlZCA9IGUudGFyZ2V0LmNoZWNrZWRcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBXb3JrcGxhY2UuY3JlYXRlTGluayh7bW9kZWxfY2xhc3M6IG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgbW9kZWxfaWQ6IG1vZGVsLmlkKCl9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuICAgICAgY29uc3QgcGFyYW1zID0ge21vZGVsczoge319XG5cbiAgICAgIHBhcmFtcy5tb2RlbHNbbW9kZWxDbGFzc05hbWVdID0gW21vZGVsLmlkKCldXG5cbiAgICAgIFdvcmtwbGFjZS5kZXN0cm95TGlua3MocGFyYW1zKVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NDcmVhdGVkID0gKHthcmdzfSkgPT4ge1xuICAgIGNvbnN0IHttb2RlbH0gPSBkaWdzKHRoaXMucHJvcHMsIFwibW9kZWxcIilcbiAgICBjb25zdCBpZCA9IG1vZGVsLmlkKClcbiAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuXG4gICAgaWYgKGFyZ3MuY3JlYXRlZFttb2RlbENsYXNzTmFtZV0gJiYgYXJncy5jcmVhdGVkW21vZGVsQ2xhc3NOYW1lXS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6IHRydWV9KVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NEZXN0cm95ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgY29uc3Qge21vZGVsfSA9IGRpZ3ModGhpcy5wcm9wcywgXCJtb2RlbFwiKVxuICAgIGNvbnN0IGlkID0gbW9kZWwuaWQoKVxuICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gbW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lXG5cbiAgICBpZiAoYXJncy5kZXN0cm95ZWRbbW9kZWxDbGFzc05hbWVdICYmIGFyZ3MuZGVzdHJveWVkW21vZGVsQ2xhc3NOYW1lXS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6IGZhbHNlfSlcbiAgICB9XG4gIH1cbn0pKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLE9BQU9DLFVBQVUsTUFBTSxZQUFZO0FBQ25DLFNBQVFDLElBQUksUUFBTyxXQUFXO0FBQzlCLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsaUJBQWlCLE1BQU0sd0JBQXdCO0FBQ3RELE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsU0FBUUMsT0FBTyxRQUFPLE9BQU87QUFDN0IsU0FBUUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRSxPQUFPQyxhQUFhLE1BQU0sb0JBQW9CO0FBRTlDLE1BQU1DLFNBQVMsR0FBR04saUJBQWlCLENBQUMsV0FBVyxDQUFDO0FBRWhELGVBQWVELElBQUksQ0FBQ0ssY0FBYyxDQUFDLE1BQU1HLGtDQUFrQyxTQUFTWCxhQUFhLENBQUM7RUFDaEcsT0FBT1ksU0FBUyxHQUFHTixjQUFjLENBQUM7SUFDaENPLGdCQUFnQixFQUFFUixTQUFTLENBQUNTLE1BQU07SUFDbENDLEtBQUssRUFBRVYsU0FBUyxDQUFDUyxNQUFNLENBQUNFLFVBQVU7SUFDbENDLEtBQUssRUFBRVosU0FBUyxDQUFDUztFQUNuQixDQUFDLENBQUM7RUFFRkksS0FBS0EsQ0FBQSxFQUFHO0lBQ04sSUFBSSxDQUFDQyxTQUFTLENBQUM7TUFDYkMsT0FBTyxFQUFFLEtBQUs7TUFDZEMsVUFBVSxFQUFFO0lBQ2QsQ0FBQyxDQUFDO0lB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
@@ -0,0 +1,10 @@
1
+ export default function apiMakerTranslatedAttributes(attributeNames, availableLocales) {
2
+ 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcGlNYWtlclRyYW5zbGF0ZWRBdHRyaWJ1dGVzIiwiYXR0cmlidXRlTmFtZXMiLCJhdmFpbGFibGVMb2NhbGVzIiwidHJhbnNsYXRlZEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGUiLCJsb2NhbGUiLCJwdXNoIiwic3Vic3RyaW5nIiwidG9VcHBlckNhc2UiXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNsYXRlZC1hdHRyaWJ1dGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwaU1ha2VyVHJhbnNsYXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlTmFtZXMsIGF2YWlsYWJsZUxvY2FsZXMpIHtcbiAgdHJhbnNsYXRlZEF0dHJpYnV0ZXMgPSBbXVxuXG4gIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgYXZhaWxhYmxlTG9jYWxlcykge1xuICAgICAgdHJhbnNsYXRlZEF0dHJpYnV0ZXMucHVzaChgJHthdHRyaWJ1dGV9JHtsb2NhbGUuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCl9JHtsb2NhbGUuc3Vic3RyaW5nKDEsIDk5KX1gKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cmFuc2xhdGVkQXR0cmlidXRlc1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLFNBQVNBLDRCQUE0QkEsQ0FBQ0MsY0FBYyxFQUFFQyxnQkFBZ0IsRUFBRTtFQUNyRkMsb0JBQW9CLEdBQUcsRUFBRTtFQUV6QixLQUFLLE1BQU1DLFNBQVMsSUFBSUgsY0FBYyxFQUFFO0lBQ3RDLEtBQUssTUFBTUksTUFBTSxJQUFJSCxnQkFBZ0IsRUFBRTtNQUNyQ0Msb0JBQW9CLENBQUNHLElBQUksQ0FBQyxHQUFHRixTQUFTLEdBQUdDLE1BQU0sQ0FBQ0UsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsR0FBR0gsTUFBTSxDQUFDRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUc7RUFDRjtFQUVBLE9BQU9KLG9CQUFvQjtBQUM3QiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,11 @@
1
+ import { digg } from "diggerize";
2
+ import translatedCollectionsData from "../src/translated-collections-data.js.erb";
3
+ export default class ApiMakerTranslatedCollections {
4
+ static get(modelClass, collectionName) {
5
+ const locale = I18n.locale;
6
+ const modelClassName = digg(modelClass.modelClassData(), "name");
7
+ const collection = digg(translatedCollectionsData, modelClassName, collectionName, locale, "collection_array");
8
+ return collection;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwidHJhbnNsYXRlZENvbGxlY3Rpb25zRGF0YSIsIkFwaU1ha2VyVHJhbnNsYXRlZENvbGxlY3Rpb25zIiwiZ2V0IiwibW9kZWxDbGFzcyIsImNvbGxlY3Rpb25OYW1lIiwibG9jYWxlIiwiSTE4biIsIm1vZGVsQ2xhc3NOYW1lIiwibW9kZWxDbGFzc0RhdGEiLCJjb2xsZWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vc3JjL3RyYW5zbGF0ZWQtY29sbGVjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCB0cmFuc2xhdGVkQ29sbGVjdGlvbnNEYXRhIGZyb20gXCIuLi9zcmMvdHJhbnNsYXRlZC1jb2xsZWN0aW9ucy1kYXRhLmpzLmVyYlwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyVHJhbnNsYXRlZENvbGxlY3Rpb25zIHtcbiAgc3RhdGljIGdldCAobW9kZWxDbGFzcywgY29sbGVjdGlvbk5hbWUpIHtcbiAgICBjb25zdCBsb2NhbGUgPSBJMThuLmxvY2FsZVxuICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkaWdnKHRyYW5zbGF0ZWRDb2xsZWN0aW9uc0RhdGEsIG1vZGVsQ2xhc3NOYW1lLCBjb2xsZWN0aW9uTmFtZSwgbG9jYWxlLCBcImNvbGxlY3Rpb25fYXJyYXlcIilcblxuICAgIHJldHVybiBjb2xsZWN0aW9uXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MseUJBQXlCLE1BQU0sMkNBQTJDO0FBRWpGLGVBQWUsTUFBTUMsNkJBQTZCLENBQUM7RUFDakQsT0FBT0MsR0FBR0EsQ0FBRUMsVUFBVSxFQUFFQyxjQUFjLEVBQUU7SUFDdEMsTUFBTUMsTUFBTSxHQUFHQyxJQUFJLENBQUNELE1BQU07SUFDMUIsTUFBTUUsY0FBYyxHQUFHUixJQUFJLENBQUNJLFVBQVUsQ0FBQ0ssY0FBYyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEUsTUFBTUMsVUFBVSxHQUFHVixJQUFJLENBQUNDLHlCQUF5QixFQUFFTyxjQUFjLEVBQUVILGNBQWMsRUFBRUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDO0lBRTlHLE9BQU9JLFVBQVU7RUFDbkI7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -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,44 @@
1
+ import { useCallback, useLayoutEffect } from "react";
2
+ import apiMakerConfig from "@kaspernj/api-maker/build/config";
3
+ import { Dimensions } from "react-native";
4
+ import useShape from "set-state-compare/src/use-shape";
5
+ const calculateBreakPoint = window => {
6
+ const windowWidth = window.width;
7
+ const result = {};
8
+ for (const breakpointData of apiMakerConfig.getBreakPoints()) {
9
+ const breakpoint = breakpointData[0];
10
+ const width = breakpointData[1];
11
+ if (!result.name && windowWidth >= width) {
12
+ result.name = breakpoint;
13
+ }
14
+ result[`${breakpoint}Down`] = !result.name;
15
+ result[`${breakpoint}Up`] = Boolean(result.name);
16
+ }
17
+ if (result.name) {
18
+ return result;
19
+ }
20
+ throw new Error(`Couldn't not find breakpoint from window width: ${windowWidth}`);
21
+ };
22
+ const useBreakpoint = () => {
23
+ const s = useShape();
24
+ const onCalled = useCallback(({
25
+ window
26
+ }) => {
27
+ const breakpoint = calculateBreakPoint(window);
28
+ if (breakpoint.name != s.s.breakpoint.name) {
29
+ s.set({
30
+ breakpoint
31
+ });
32
+ }
33
+ }, []);
34
+ s.useStates({
35
+ breakpoint: () => calculateBreakPoint(Dimensions.get("window"))
36
+ });
37
+ useLayoutEffect(() => {
38
+ const subscription = Dimensions.addEventListener("change", onCalled);
39
+ return () => subscription?.remove();
40
+ });
41
+ return s.s.breakpoint;
42
+ };
43
+ export default useBreakpoint;
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsImFwaU1ha2VyQ29uZmlnIiwiRGltZW5zaW9ucyIsInVzZVNoYXBlIiwiY2FsY3VsYXRlQnJlYWtQb2ludCIsIndpbmRvdyIsIndpbmRvd1dpZHRoIiwid2lkdGgiLCJyZXN1bHQiLCJicmVha3BvaW50RGF0YSIsImdldEJyZWFrUG9pbnRzIiwiYnJlYWtwb2ludCIsIm5hbWUiLCJCb29sZWFuIiwiRXJyb3IiLCJ1c2VCcmVha3BvaW50IiwicyIsIm9uQ2FsbGVkIiwic2V0IiwidXNlU3RhdGVzIiwiZ2V0Iiwic3Vic2NyaXB0aW9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtYnJlYWtwb2ludC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgYXBpTWFrZXJDb25maWcgZnJvbSBcIkBrYXNwZXJuai9hcGktbWFrZXIvYnVpbGQvY29uZmlnXCJcbmltcG9ydCB7RGltZW5zaW9uc30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy91c2Utc2hhcGVcIlxuXG5jb25zdCBjYWxjdWxhdGVCcmVha1BvaW50ID0gKHdpbmRvdykgPT4ge1xuICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy53aWR0aFxuICBjb25zdCByZXN1bHQgPSB7fVxuXG4gIGZvciAoY29uc3QgYnJlYWtwb2ludERhdGEgb2YgYXBpTWFrZXJDb25maWcuZ2V0QnJlYWtQb2ludHMoKSkge1xuICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBicmVha3BvaW50RGF0YVswXVxuICAgIGNvbnN0IHdpZHRoID0gYnJlYWtwb2ludERhdGFbMV1cblxuICAgIGlmICghcmVzdWx0Lm5hbWUgJiYgd2luZG93V2lkdGggPj0gd2lkdGgpIHtcbiAgICAgIHJlc3VsdC5uYW1lID0gYnJlYWtwb2ludFxuICAgIH1cblxuICAgIHJlc3VsdFtgJHticmVha3BvaW50fURvd25gXSA9ICFyZXN1bHQubmFtZVxuICAgIHJlc3VsdFtgJHticmVha3BvaW50fVVwYF0gPSBCb29sZWFuKHJlc3VsdC5uYW1lKVxuICB9XG5cbiAgaWYgKHJlc3VsdC5uYW1lKSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBub3QgZmluZCBicmVha3BvaW50IGZyb20gd2luZG93IHdpZHRoOiAke3dpbmRvd1dpZHRofWApXG59XG5cbmNvbnN0IHVzZUJyZWFrcG9pbnQgPSAoKSA9PiB7XG4gIGNvbnN0IHMgPSB1c2VTaGFwZSgpXG4gIGNvbnN0IG9uQ2FsbGVkID0gdXNlQ2FsbGJhY2soKHt3aW5kb3d9KSA9PiB7XG4gICAgY29uc3QgYnJlYWtwb2ludCA9IGNhbGN1bGF0ZUJyZWFrUG9pbnQod2luZG93KVxuXG4gICAgaWYgKGJyZWFrcG9pbnQubmFtZSAhPSBzLnMuYnJlYWtwb2ludC5uYW1lKSB7XG4gICAgICBzLnNldCh7YnJlYWtwb2ludH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBzLnVzZVN0YXRlcyh7XG4gICAgYnJlYWtwb2ludDogKCkgPT4gY2FsY3VsYXRlQnJlYWtQb2ludChEaW1lbnNpb25zLmdldChcIndpbmRvd1wiKSlcbiAgfSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IERpbWVuc2lvbnMuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBvbkNhbGxlZClcblxuICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24/LnJlbW92ZSgpXG4gIH0pXG5cbiAgcmV0dXJuIHMucy5icmVha3BvaW50XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUJyZWFrcG9pbnRcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsV0FBVyxFQUFFQyxlQUFlLFFBQU8sT0FBTztBQUNsRCxPQUFPQyxjQUFjLE1BQU0sa0NBQWtDO0FBQzdELFNBQVFDLFVBQVUsUUFBTyxjQUFjO0FBQ3ZDLE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFFdEQsTUFBTUMsbUJBQW1CLEdBQUlDLE1BQU0sSUFBSztFQUN0QyxNQUFNQyxXQUFXLEdBQUdELE1BQU0sQ0FBQ0UsS0FBSztFQUNoQyxNQUFNQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBRWpCLEtBQUssTUFBTUMsY0FBYyxJQUFJUixjQUFjLENBQUNTLGNBQWMsQ0FBQyxDQUFDLEVBQUU7SUFDNUQsTUFBTUMsVUFBVSxHQUFHRixjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU1GLEtBQUssR0FBR0UsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUNELE1BQU0sQ0FBQ0ksSUFBSSxJQUFJTixXQUFXLElBQUlDLEtBQUssRUFBRTtNQUN4Q0MsTUFBTSxDQUFDSSxJQUFJLEdBQUdELFVBQVU7SUFDMUI7SUFFQUgsTUFBTSxDQUFDLEdBQUdHLFVBQVUsTUFBTSxDQUFDLEdBQUcsQ0FBQ0gsTUFBTSxDQUFDSSxJQUFJO0lBQzFDSixNQUFNLENBQUMsR0FBR0csVUFBVSxJQUFJLENBQUMsR0FBR0UsT0FBTyxDQUFDTCxNQUFNLENBQUNJLElBQUksQ0FBQztFQUNsRDtFQUVBLElBQUlKLE1BQU0sQ0FBQ0ksSUFBSSxFQUFFO0lBQ2YsT0FBT0osTUFBTTtFQUNmO0VBRUEsTUFBTSxJQUFJTSxLQUFLLENBQUMsbURBQW1EUixXQUFXLEVBQUUsQ0FBQztBQUNuRixDQUFDO0FBRUQsTUFBTVMsYUFBYSxHQUFHQSxDQUFBLEtBQU07RUFDMUIsTUFBTUMsQ0FBQyxHQUFHYixRQUFRLENBQUMsQ0FBQztFQUNwQixNQUFNYyxRQUFRLEdBQUdsQixXQUFXLENBQUMsQ0FBQztJQUFDTTtFQUFNLENBQUMsS0FBSztJQUN6QyxNQUFNTSxVQUFVLEdBQUdQLG1CQUFtQixDQUFDQyxNQUFNLENBQUM7SUFFOUMsSUFBSU0sVUFBVSxDQUFDQyxJQUFJLElBQUlJLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDTCxVQUFVLENBQUNDLElBQUksRUFBRTtNQUMxQ0ksQ0FBQyxDQUFDRSxHQUFHLENBQUM7UUFBQ1A7TUFBVSxDQUFDLENBQUM7SUFDckI7RUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU5LLENBQUMsQ0FBQ0csU0FBUyxDQUFDO0lBQ1ZSLFVBQVUsRUFBRUEsQ0FBQSxLQUFNUCxtQkFBbUIsQ0FBQ0YsVUFBVSxDQUFDa0IsR0FBRyxDQUFDLFFBQVEsQ0FBQztFQUNoRSxDQUFDLENBQUM7RUFFRnBCLGVBQWUsQ0FBQyxNQUFNO0lBQ3BCLE1BQU1xQixZQUFZLEdBQUduQixVQUFVLENBQUNvQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVMLFFBQVEsQ0FBQztJQUVwRSxPQUFPLE1BQU1JLFlBQVksRUFBRUUsTUFBTSxDQUFDLENBQUM7RUFDckMsQ0FBQyxDQUFDO0VBRUYsT0FBT1AsQ0FBQyxDQUFDQSxDQUFDLENBQUNMLFVBQVU7QUFDdkIsQ0FBQztBQUVELGVBQWVJLGFBQWEiLCJpZ25vcmVMaXN0IjpbXX0=