@arpproject/recrate 0.1.7-test5 → 0.1.7-test6

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 (276) hide show
  1. package/dist/app/App.d.ts +2 -0
  2. package/dist/app/EmbeddedComponent.d.ts +3 -0
  3. package/dist/app/index.d.ts +0 -0
  4. package/dist/app/lookup.d.ts +82 -0
  5. package/dist/crate-builder/CrateManager/contexts.d.ts +6 -0
  6. package/dist/crate-builder/CrateManager/crate-manager-benchmarking.spec.d.ts +1 -0
  7. package/dist/crate-builder/CrateManager/crate-manager-loading-exporting.spec.d.ts +1 -0
  8. package/dist/crate-builder/CrateManager/crate-manager-operations.spec.d.ts +0 -0
  9. package/dist/crate-builder/CrateManager/crate-manager.d.ts +641 -0
  10. package/dist/crate-builder/CrateManager/crate-manager.spec.d.ts +1 -0
  11. package/dist/crate-builder/CrateManager/lib.d.ts +26 -0
  12. package/dist/crate-builder/CrateManager/lib.spec.d.ts +1 -0
  13. package/dist/crate-builder/CrateManager/profile-manager.d.ts +143 -0
  14. package/dist/crate-builder/CrateManager/profile-manager.spec.d.ts +1 -0
  15. package/{src/crate-builder/CrateManager/schema-type-definitions.json → dist/crate-builder/CrateManager/schema-type-definitions.json.d.ts} +4 -1
  16. package/dist/crate-builder/CrateManager/validate-identifier.d.ts +10 -0
  17. package/dist/crate-builder/CrateManager/validate-identifier.spec.d.ts +1 -0
  18. package/dist/crate-builder/RenderEntity/Add.d.ts +26 -0
  19. package/dist/crate-builder/RenderEntity/AddControl.d.ts +14 -0
  20. package/dist/crate-builder/RenderEntity/AddControl.stories.d.ts +29 -0
  21. package/dist/crate-builder/RenderEntity/AutoComplete.d.ts +12 -0
  22. package/dist/crate-builder/RenderEntity/BulkAdd.d.ts +10 -0
  23. package/dist/crate-builder/RenderEntity/DeleteProperty.d.ts +8 -0
  24. package/dist/crate-builder/RenderEntity/DialogAddProperty.d.ts +9 -0
  25. package/dist/crate-builder/RenderEntity/DialogBrowseEntities.d.ts +8 -0
  26. package/dist/crate-builder/RenderEntity/DialogEditContext.d.ts +8 -0
  27. package/dist/crate-builder/RenderEntity/DialogPreviewCrate.d.ts +7 -0
  28. package/dist/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.d.ts +13 -0
  29. package/dist/crate-builder/RenderEntity/DialogSaveEntityTemplate.d.ts +14 -0
  30. package/dist/crate-builder/RenderEntity/DisplayPropertyName.d.ts +8 -0
  31. package/dist/crate-builder/RenderEntity/DisplayPropertyName.stories.d.ts +6 -0
  32. package/dist/crate-builder/RenderEntity/EntityId.d.ts +13 -0
  33. package/dist/crate-builder/RenderEntity/EntityName.d.ts +13 -0
  34. package/dist/crate-builder/RenderEntity/EntityProperty.d.ts +19 -0
  35. package/dist/crate-builder/RenderEntity/EntityPropertyInstance.d.ts +25 -0
  36. package/dist/crate-builder/RenderEntity/EntityType.d.ts +12 -0
  37. package/dist/crate-builder/RenderEntity/ItemLink.d.ts +14 -0
  38. package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.d.ts +23 -0
  39. package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.stories.d.ts +7 -0
  40. package/dist/crate-builder/RenderEntity/PropertyHelp.d.ts +6 -0
  41. package/dist/crate-builder/RenderEntity/RenderControls.d.ts +22 -0
  42. package/dist/crate-builder/RenderEntity/RenderLinkedItem.d.ts +20 -0
  43. package/dist/crate-builder/RenderEntity/RenderPropertyHelp.d.ts +6 -0
  44. package/dist/crate-builder/RenderEntity/RenderReverseConnections.d.ts +16 -0
  45. package/dist/crate-builder/RenderEntity/RenderTypes.d.ts +6 -0
  46. package/dist/crate-builder/RenderEntity/Shell2.d.ts +14 -0
  47. package/dist/crate-builder/RenderEntity/UnlinkEntity.d.ts +14 -0
  48. package/dist/crate-builder/RenderEntity/auto-complete.lib.d.ts +25 -0
  49. package/dist/crate-builder/RenderEntity/keys.d.ts +4 -0
  50. package/dist/crate-builder/RenderEntity/layout.d.ts +14 -0
  51. package/dist/crate-builder/RenderEntity/layout.spec.d.ts +1 -0
  52. package/dist/crate-builder/Shell.d.ts +40 -0
  53. package/dist/crate-builder/editor-state.d.ts +72 -0
  54. package/dist/crate-builder/emotionCache.d.ts +1 -0
  55. package/dist/crate-builder/helpers.d.ts +9 -0
  56. package/dist/crate-builder/i18n.d.ts +2 -0
  57. package/dist/crate-builder/lib/validate-iri.d.ts +6 -0
  58. package/dist/crate-builder/locales/en.d.ts +79 -0
  59. package/dist/crate-builder/locales/hu.d.ts +79 -0
  60. package/dist/crate-builder/primitives/Boolean.d.ts +11 -0
  61. package/dist/crate-builder/primitives/Boolean.stories.d.ts +7 -0
  62. package/dist/crate-builder/primitives/Date.d.ts +11 -0
  63. package/dist/crate-builder/primitives/Date.stories.d.ts +5 -0
  64. package/dist/crate-builder/primitives/DateTime.d.ts +11 -0
  65. package/dist/crate-builder/primitives/DateTime.stories.d.ts +5 -0
  66. package/dist/crate-builder/primitives/Geo.d.ts +12 -0
  67. package/dist/crate-builder/primitives/Geo.stories.d.ts +26 -0
  68. package/dist/crate-builder/primitives/Map.SelectArea.d.ts +9 -0
  69. package/dist/crate-builder/primitives/Map.d.ts +15 -0
  70. package/dist/crate-builder/primitives/Map.stories.d.ts +6 -0
  71. package/dist/crate-builder/primitives/Number.d.ts +16 -0
  72. package/dist/crate-builder/primitives/Number.stories.d.ts +10 -0
  73. package/dist/crate-builder/primitives/Select.d.ts +15 -0
  74. package/dist/crate-builder/primitives/Select.stories.d.ts +9 -0
  75. package/dist/crate-builder/primitives/SelectObject.d.ts +13 -0
  76. package/dist/crate-builder/primitives/SelectObject.stories.d.ts +5 -0
  77. package/dist/crate-builder/primitives/SelectUrl.d.ts +14 -0
  78. package/dist/crate-builder/primitives/SelectUrl.stories.d.ts +7 -0
  79. package/dist/crate-builder/primitives/Text.d.ts +19 -0
  80. package/dist/crate-builder/primitives/Text.stories.d.ts +13 -0
  81. package/dist/crate-builder/primitives/Time.d.ts +11 -0
  82. package/dist/crate-builder/primitives/Time.stories.d.ts +7 -0
  83. package/dist/crate-builder/primitives/Url.d.ts +11 -0
  84. package/dist/crate-builder/primitives/Url.stories.d.ts +7 -0
  85. package/dist/crate-builder/primitives/Value.d.ts +7 -0
  86. package/dist/crate-builder/primitives/Value.stories.d.ts +7 -0
  87. package/dist/crate-builder/primitives/date-libs.d.ts +1 -0
  88. package/dist/crate-builder/property-definitions.d.ts +78 -0
  89. package/dist/crate-builder/store.d.ts +8 -0
  90. package/dist/index.d.ts +5 -0
  91. package/dist/recrate.css +1896 -0
  92. package/dist/recrate.es.js +38508 -0
  93. package/dist/types.d.ts +42 -0
  94. package/package.json +31 -24
  95. package/.eslintrc.json +0 -37
  96. package/.storybook/main.ts +0 -40
  97. package/.storybook/preview.tsx +0 -46
  98. package/babel.config.json +0 -5
  99. package/docker-compose.yml +0 -30
  100. package/docs/.nojekyll +0 -1
  101. package/docs/assets/highlight.css +0 -99
  102. package/docs/assets/icons.js +0 -18
  103. package/docs/assets/icons.svg +0 -1
  104. package/docs/assets/main.js +0 -60
  105. package/docs/assets/navigation.js +0 -1
  106. package/docs/assets/search.js +0 -1
  107. package/docs/assets/style.css +0 -1448
  108. package/docs/classes/src_crate_builder_CrateManager_crate_manager.CrateManager.html +0 -240
  109. package/docs/classes/src_crate_builder_CrateManager_profile_manager.ProfileManager.html +0 -42
  110. package/docs/classes/src_crate_builder_editor_state.EditorState.html +0 -28
  111. package/docs/classes/src_crate_builder_types.CrateManagerType.html +0 -57
  112. package/docs/classes/src_crate_builder_types.ProfileManagerType.html +0 -13
  113. package/docs/functions/src_crate_builder_CrateManager_lib.isURL.html +0 -2
  114. package/docs/functions/src_crate_builder_CrateManager_lib.mintNewCrate.html +0 -3
  115. package/docs/functions/src_crate_builder_CrateManager_lib.normalise.html +0 -5
  116. package/docs/functions/src_crate_builder_CrateManager_lib.normaliseEntityType.html +0 -1
  117. package/docs/index.html +0 -58
  118. package/docs/interfaces/src_crate_builder_types.NormalisedCrate.html +0 -3
  119. package/docs/interfaces/src_crate_builder_types.NormalisedEntityDefinition.html +0 -4
  120. package/docs/interfaces/src_crate_builder_types.NormalisedProfile.html +0 -9
  121. package/docs/interfaces/src_crate_builder_types.ProfileLayout.html +0 -2
  122. package/docs/interfaces/src_crate_builder_types.ProfileLayoutGroup.html +0 -9
  123. package/docs/interfaces/src_crate_builder_types.UnverifiedCrate.html +0 -3
  124. package/docs/interfaces/src_crate_builder_types.UnverifiedEntityDefinition.html +0 -4
  125. package/docs/modules/src_crate_builder_CrateManager_crate_manager.html +0 -2
  126. package/docs/modules/src_crate_builder_CrateManager_lib.html +0 -6
  127. package/docs/modules/src_crate_builder_CrateManager_profile_manager.html +0 -2
  128. package/docs/modules/src_crate_builder_editor_state.html +0 -2
  129. package/docs/modules/src_crate_builder_types.html +0 -16
  130. package/docs/types/src_crate_builder_types.EntityReference.html +0 -1
  131. package/docs/types/src_crate_builder_types.NormalisedContext.html +0 -1
  132. package/docs/types/src_crate_builder_types.PrimitiveType.html +0 -1
  133. package/docs/types/src_crate_builder_types.ProfileAssociation.html +0 -1
  134. package/docs/types/src_crate_builder_types.ProfileInput.html +0 -1
  135. package/docs/types/src_crate_builder_types.UnverifiedContext.html +0 -1
  136. package/docs/variables/src_crate_builder_CrateManager_lib.urlProtocols.html +0 -1
  137. package/index.html +0 -13
  138. package/load-data-packs.cjs +0 -38
  139. package/postcss.config.cjs +0 -6
  140. package/react-app-env.d.ts +0 -1
  141. package/rollup.config.js +0 -26
  142. package/src/app/App.tsx +0 -13
  143. package/src/app/EmbeddedComponent.tsx +0 -432
  144. package/src/app/index.html +0 -20
  145. package/src/app/index.tsx +0 -19
  146. package/src/app/lookup.ts +0 -141
  147. package/src/app/override-styles.css +0 -96
  148. package/src/crate-builder/CrateManager/contexts/1.1-context.jsonld +0 -2660
  149. package/src/crate-builder/CrateManager/contexts/1.2-DRAFT-context.jsonld +0 -2918
  150. package/src/crate-builder/CrateManager/contexts.ts +0 -42
  151. package/src/crate-builder/CrateManager/crate-manager-benchmarking.spec.ts +0 -31
  152. package/src/crate-builder/CrateManager/crate-manager-loading-exporting.spec.ts +0 -431
  153. package/src/crate-builder/CrateManager/crate-manager-operations.spec.ts +0 -298
  154. package/src/crate-builder/CrateManager/crate-manager.spec.ts +0 -2336
  155. package/src/crate-builder/CrateManager/crate-manager.ts +0 -2111
  156. package/src/crate-builder/CrateManager/lib.spec.ts +0 -133
  157. package/src/crate-builder/CrateManager/lib.ts +0 -170
  158. package/src/crate-builder/CrateManager/profile-manager.spec.ts +0 -593
  159. package/src/crate-builder/CrateManager/profile-manager.ts +0 -367
  160. package/src/crate-builder/CrateManager/validate-identifier.spec.ts +0 -82
  161. package/src/crate-builder/CrateManager/validate-identifier.ts +0 -65
  162. package/src/crate-builder/RenderEntity/Add.tsx +0 -249
  163. package/src/crate-builder/RenderEntity/AddControl.stories.tsx +0 -126
  164. package/src/crate-builder/RenderEntity/AddControl.tsx +0 -84
  165. package/src/crate-builder/RenderEntity/AutoComplete.tsx +0 -215
  166. package/src/crate-builder/RenderEntity/BulkAdd.tsx +0 -136
  167. package/src/crate-builder/RenderEntity/DeleteProperty.tsx +0 -33
  168. package/src/crate-builder/RenderEntity/DialogAddProperty.tsx +0 -83
  169. package/src/crate-builder/RenderEntity/DialogBrowseEntities.tsx +0 -136
  170. package/src/crate-builder/RenderEntity/DialogEditContext.tsx +0 -107
  171. package/src/crate-builder/RenderEntity/DialogPreviewCrate.tsx +0 -54
  172. package/src/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.tsx +0 -65
  173. package/src/crate-builder/RenderEntity/DialogSaveEntityTemplate.tsx +0 -87
  174. package/src/crate-builder/RenderEntity/DisplayPropertyName.stories.tsx +0 -30
  175. package/src/crate-builder/RenderEntity/DisplayPropertyName.tsx +0 -21
  176. package/src/crate-builder/RenderEntity/EntityId.tsx +0 -75
  177. package/src/crate-builder/RenderEntity/EntityName.tsx +0 -49
  178. package/src/crate-builder/RenderEntity/EntityProperty.tsx +0 -188
  179. package/src/crate-builder/RenderEntity/EntityPropertyInstance.tsx +0 -255
  180. package/src/crate-builder/RenderEntity/EntityType.tsx +0 -95
  181. package/src/crate-builder/RenderEntity/ItemLink.tsx +0 -37
  182. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.stories.tsx +0 -43
  183. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.tsx +0 -141
  184. package/src/crate-builder/RenderEntity/PropertyHelp.tsx +0 -39
  185. package/src/crate-builder/RenderEntity/RenderControls.tsx +0 -278
  186. package/src/crate-builder/RenderEntity/RenderLinkedItem.tsx +0 -139
  187. package/src/crate-builder/RenderEntity/RenderPropertyHelp.tsx +0 -41
  188. package/src/crate-builder/RenderEntity/RenderReverseConnections.tsx +0 -150
  189. package/src/crate-builder/RenderEntity/RenderTypes.tsx +0 -102
  190. package/src/crate-builder/RenderEntity/Shell2.tsx +0 -576
  191. package/src/crate-builder/RenderEntity/UnlinkEntity.tsx +0 -30
  192. package/src/crate-builder/RenderEntity/auto-complete.lib.ts +0 -184
  193. package/src/crate-builder/RenderEntity/keys.ts +0 -4
  194. package/src/crate-builder/RenderEntity/layout.spec.js +0 -593
  195. package/src/crate-builder/RenderEntity/layout.ts +0 -220
  196. package/src/crate-builder/Shell.tsx +0 -337
  197. package/src/crate-builder/component.css +0 -65
  198. package/src/crate-builder/editor-state.ts +0 -114
  199. package/src/crate-builder/emotionCache.ts +0 -8
  200. package/src/crate-builder/helpers.ts +0 -16
  201. package/src/crate-builder/i18n.ts +0 -22
  202. package/src/crate-builder/lib/validate-iri.ts +0 -57
  203. package/src/crate-builder/locales/en.js +0 -149
  204. package/src/crate-builder/locales/hu.js +0 -147
  205. package/src/crate-builder/primitives/Boolean.stories.tsx +0 -33
  206. package/src/crate-builder/primitives/Boolean.tsx +0 -67
  207. package/src/crate-builder/primitives/Date.stories.tsx +0 -32
  208. package/src/crate-builder/primitives/Date.tsx +0 -58
  209. package/src/crate-builder/primitives/DateTime.stories.tsx +0 -32
  210. package/src/crate-builder/primitives/DateTime.tsx +0 -64
  211. package/src/crate-builder/primitives/Geo.stories.tsx +0 -57
  212. package/src/crate-builder/primitives/Geo.tsx +0 -225
  213. package/src/crate-builder/primitives/Map.SelectArea.js +0 -359
  214. package/src/crate-builder/primitives/Map.stories.tsx +0 -61
  215. package/src/crate-builder/primitives/Map.tsx +0 -124
  216. package/src/crate-builder/primitives/Number.stories.tsx +0 -74
  217. package/src/crate-builder/primitives/Number.tsx +0 -166
  218. package/src/crate-builder/primitives/Select.stories.tsx +0 -66
  219. package/src/crate-builder/primitives/Select.tsx +0 -121
  220. package/src/crate-builder/primitives/SelectObject.stories.tsx +0 -29
  221. package/src/crate-builder/primitives/SelectObject.tsx +0 -105
  222. package/src/crate-builder/primitives/SelectUrl.stories.tsx +0 -42
  223. package/src/crate-builder/primitives/SelectUrl.tsx +0 -110
  224. package/src/crate-builder/primitives/Text.stories.tsx +0 -106
  225. package/src/crate-builder/primitives/Text.tsx +0 -197
  226. package/src/crate-builder/primitives/Time.stories.tsx +0 -38
  227. package/src/crate-builder/primitives/Time.tsx +0 -71
  228. package/src/crate-builder/primitives/Url.stories.tsx +0 -43
  229. package/src/crate-builder/primitives/Url.tsx +0 -75
  230. package/src/crate-builder/primitives/Value.stories.tsx +0 -37
  231. package/src/crate-builder/primitives/Value.tsx +0 -30
  232. package/src/crate-builder/primitives/date-libs.ts +0 -12
  233. package/src/crate-builder/profile-schema.json +0 -145
  234. package/src/crate-builder/property-definitions.ts +0 -78
  235. package/src/crate-builder/recrate.css +0 -3
  236. package/src/crate-builder/store.ts +0 -14
  237. package/src/crate-builder/tailwind.css +0 -5
  238. package/src/crate-builder/types.d.ts +0 -318
  239. package/src/examples/collection/collections-entity-example.json +0 -131
  240. package/src/examples/collection/crate-builder-entity-example.json +0 -33
  241. package/src/examples/item/complex-collection/ro-crate-metadata.json +0 -174
  242. package/src/examples/item/complex-item/ro-crate-metadata.json +0 -769
  243. package/src/examples/item/crate-with-language.json +0 -38
  244. package/src/examples/item/empty/ro-crate-metadata.json +0 -20
  245. package/src/examples/item/item-with-relationship-and-action/ro-crate-metadata.json +0 -66
  246. package/src/examples/item/large-crate/ro-crate-metadata.json +0 -5762
  247. package/src/examples/item/multiple-types/ro-crate-metadata.json +0 -20
  248. package/src/examples/item/ridiculously-big-collection/ro-crate-metadata.json +0 -162977
  249. package/src/examples/profile/aroma.complex.profile.json +0 -11098
  250. package/src/examples/profile/aroma.profile.json +0 -9158
  251. package/src/examples/profile/nyingarn-item-profile.json +0 -426
  252. package/src/examples/profile/profile-to-test-inverse-associations.json +0 -73
  253. package/src/examples/profile/profile-to-test-multiple-types.json +0 -31
  254. package/src/examples/profile/profile-with-all-primitives-and-groups.json +0 -207
  255. package/src/examples/profile/profile-with-all-primitives.json +0 -244
  256. package/src/examples/profile/profile-with-constraints.json +0 -446
  257. package/src/examples/profile/profile-with-resolve.json +0 -57
  258. package/src/examples/profile/vocabulary-creation-profile.json +0 -231
  259. package/src/images.d.ts +0 -5
  260. package/src/index.ts +0 -12
  261. package/src/types.ts +0 -104
  262. package/tailwind.config.js +0 -21
  263. package/tsconfig.app.json +0 -31
  264. package/tsconfig.json +0 -26
  265. package/typedoc.json +0 -11
  266. package/update-deps.sh +0 -4
  267. package/vite-env.d.ts +0 -1
  268. package/vite.config.ts +0 -67
  269. /package/{public → dist}/favicon.ico +0 -0
  270. /package/{public → dist}/index.html +0 -0
  271. /package/{public → dist}/logo192.png +0 -0
  272. /package/{public → dist}/logo512.png +0 -0
  273. /package/{public → dist}/manifest.json +0 -0
  274. /package/{public → dist}/marker-icon.png +0 -0
  275. /package/{public → dist}/marker-shadow.png +0 -0
  276. /package/{public → dist}/robots.txt +0 -0
@@ -1,249 +0,0 @@
1
- import React, { useState, useMemo, useContext } from 'react';
2
- import { useTranslation } from 'react-i18next';
3
- import AddControl from './AddControl';
4
- import Text from '../primitives/Text';
5
- import Date from '../primitives/Date';
6
- import DateTime from '../primitives/DateTime';
7
- import Time from '../primitives/Time';
8
- import Number from '../primitives/Number';
9
- import Url from '../primitives/Url';
10
- import Select from '../primitives/Select';
11
- import SelectUrl from '../primitives/SelectUrl';
12
- import SelectObject from '../primitives/SelectObject';
13
- import Geo from '../primitives/Geo';
14
- import AutoComplete from './AutoComplete';
15
- import Boolean from '../primitives/Boolean';
16
- import BulkAdd from './BulkAdd';
17
- import { ProfileManagerContext } from '../Shell';
18
-
19
- interface AddProps {
20
- property: string;
21
- definition: {
22
- id: string;
23
- type?: string;
24
- // Text-specific properties
25
- minLength?: number;
26
- maxLength?: number;
27
- regex?: string;
28
- dateFormat?: string[];
29
- // Number-specific properties
30
- minValue?: number;
31
- maxValue?: number;
32
- numberType?: string[];
33
- // Select-specific properties
34
- values?: string[];
35
- style?: 'dropdown' | 'radio' | 'checkbox';
36
- [key: string]: any;
37
- };
38
- embedded?: boolean;
39
- placeholder?: string;
40
- crateManager: any;
41
- onCreateProperty: (data: any) => void;
42
- onCreateEntity: (data: any) => void;
43
- onLinkEntity: (data: any) => void;
44
- }
45
-
46
- const Add: React.FC<AddProps> = ({
47
- property,
48
- definition,
49
- embedded = false,
50
- placeholder,
51
- crateManager,
52
- onCreateProperty,
53
- onCreateEntity,
54
- onLinkEntity
55
- }) => {
56
- const { t } = useTranslation();
57
- const profileManager = useContext(ProfileManagerContext);
58
-
59
- const [addType, setAddType] = useState<string | undefined>();
60
- const [localisedAddType, setLocalisedAddType] = useState<string | undefined>();
61
-
62
- const primitives = [
63
- 'Text', 'TextArea', 'Date', 'DateTime', 'Time',
64
- 'Number', 'Float', 'Integer', 'URL', 'Value',
65
- 'Select', 'SelectURL', 'SelectObject', 'Geo',
66
- 'Geometry', 'GeoCoordinates', 'GeoShape', 'Boolean'
67
- ];
68
-
69
- const types = useMemo(() => {
70
- if (!definition.type || definition.type === 'Value') return '';
71
- return definition.type;
72
- }, [definition.type]);
73
-
74
- const addSimpleType = useMemo(() => {
75
- return primitives.includes(addType || '');
76
- }, [addType, primitives]);
77
-
78
- const close = () => {
79
- setAddType(undefined);
80
- setLocalisedAddType(undefined);
81
- };
82
-
83
- const add = ({ type }: { type: string }) => {
84
- setAddType(type);
85
- setLocalisedAddType(profileManager?.getTypeLabel(type));
86
- };
87
-
88
- const bulkAdd = () => {
89
- setAddType('bulkAdd');
90
- };
91
-
92
- const createProperty = (data: any) => {
93
- onCreateProperty({ ...data, propertyId: definition.id });
94
- close();
95
- };
96
-
97
- const createEntity = (data: any) => {
98
- onCreateEntity({ ...data, property, propertyId: definition.id });
99
- close();
100
- };
101
-
102
- const linkEntity = (data: any) => {
103
- onLinkEntity({ ...data, property, propertyId: definition.id });
104
- close();
105
- };
106
-
107
- return (
108
- <div
109
- className={`flex flex-col my-2 p-1 rounded ${
110
- addType ? 'bg-indigo-200' : ''
111
- } ${addType?.match(/geo/gi) ? 'max-w-[715px]' : ''}`}
112
- >
113
- <AddControl
114
- crateManager={crateManager}
115
- types={types}
116
- selectedType={addType || ''}
117
- primitives={primitives}
118
- onAdd={add}
119
- onBulkAdd={bulkAdd}
120
- onClose={close}
121
- />
122
-
123
- {addSimpleType && (
124
- <div className="p-1">
125
- {addType === 'Text' && (
126
- <Text
127
- property={property}
128
- type="text"
129
- definition={definition}
130
- onSaveProperty={createProperty}
131
- placeholder={placeholder || t('add_text') || 'Add text'}
132
- />
133
- )}
134
- {addType === 'TextArea' && (
135
- <Text
136
- property={property}
137
- type="textarea"
138
- definition={definition}
139
- onSaveProperty={createProperty}
140
- placeholder={placeholder}
141
- />
142
- )}
143
- {addType === 'Date' && (
144
- <Date
145
- property={property}
146
- onSaveProperty={createProperty}
147
- />
148
- )}
149
- {addType === 'DateTime' && (
150
- <DateTime
151
- property={property}
152
- onSaveProperty={createProperty}
153
- />
154
- )}
155
- {addType && ['Number', 'Float', 'Integer'].includes(addType) && (
156
- <Number
157
- property={property}
158
- definition={definition}
159
- onSaveProperty={createProperty}
160
- />
161
- )}
162
- {addType === 'Time' && (
163
- <Time
164
- property={property}
165
- onSaveProperty={createProperty}
166
- />
167
- )}
168
- {addType === 'Select' && definition.values && (
169
- <Select
170
- property={property}
171
- definition={{
172
- values: definition.values,
173
- style: definition.style
174
- }}
175
- onSaveProperty={createProperty}
176
- />
177
- )}
178
- {addType === 'URL' && (
179
- <Url
180
- property={property}
181
- onCreateEntity={createEntity}
182
- />
183
- )}
184
- {addType === 'SelectURL' && definition.values && (
185
- <SelectUrl
186
- property={property}
187
- definition={{
188
- values: definition.values
189
- }}
190
- onCreateEntity={createEntity}
191
- />
192
- )}
193
- {addType === 'SelectObject' && definition.values && (
194
- <SelectObject
195
- property={property}
196
- definition={{
197
- values: definition.values
198
- }}
199
- onCreateEntity={createEntity}
200
- />
201
- )}
202
- {addType && ['Geo', 'Geometry', 'GeoCoordinates', 'GeoShape'].includes(addType) && (
203
- <Geo
204
- property={property}
205
- //onSaveProperty={createProperty}
206
- onCreateEntity={createEntity}
207
- onLinkEntity={linkEntity}
208
- />
209
- )}
210
- {addType === 'Boolean' && (
211
- <Boolean
212
- property={property}
213
- onSaveProperty={createProperty}
214
- />
215
- )}
216
- </div>
217
- )}
218
-
219
- {addType === 'bulkAdd' && (
220
- <BulkAdd
221
- types={types}
222
- primitives={primitives}
223
- onCreateEntity={createEntity}
224
- />
225
- )}
226
-
227
- {!addSimpleType && addType && addType !== 'bulkAdd' && (
228
- <div className="describo-property-type-entity">
229
- <div className="p-1 flex flex-row space-x-2 divide-y divide-gray-300 text-gray-600">
230
- <div className="w-full">
231
- {addType === 'ANY' ? (
232
- <div>{t('associate_any_prompt')}</div>
233
- ) : (
234
- <div>{t('associate_existing_prompt', { addType: localisedAddType || addType })}</div>
235
- )}
236
- <AutoComplete
237
- type={addType || ''}
238
- onLinkEntity={linkEntity}
239
- onCreateEntity={createEntity}
240
- />
241
- </div>
242
- </div>
243
- </div>
244
- )}
245
- </div>
246
- );
247
- };
248
-
249
- export default Add;
@@ -1,126 +0,0 @@
1
- import React from 'react';
2
- import { StoryFn, Meta } from '@storybook/react';
3
- import AddControl from './AddControl';
4
- import { ProfileManager } from '../CrateManager/profile-manager';
5
-
6
- const profileManager = new ProfileManager({});
7
-
8
- const crateManager = {
9
- getEntities: () => [],
10
- profileManager,
11
- };
12
-
13
- export default {
14
- title: 'Components/AddControl',
15
- component: AddControl,
16
- argTypes: {
17
- embedded: {
18
- control: 'boolean',
19
- },
20
- onAdd: { action: 'add' },
21
- onBulkAdd: { action: 'bulkAdd' },
22
- onClose: { action: 'close' },
23
- },
24
- } as Meta;
25
-
26
- interface AddControlProps {
27
- crateManager: any;
28
- types: string | string[];
29
- selectedType: string;
30
- primitives: string[];
31
- onAdd: (data: { type: string }) => void;
32
- onBulkAdd: () => void;
33
- onClose: () => void;
34
- help?: string;
35
- multiple?: boolean;
36
- embedded?: boolean;
37
- values?: Array<string | { '@id': string; '@type': string; name: string }>;
38
- }
39
-
40
- const Template: StoryFn<AddControlProps> = (args) => <AddControl {...args} />;
41
-
42
- Template.args = {
43
- types: ['Text'],
44
- selectedType: '',
45
- primitives: ['Text'],
46
- onAdd: (data: { type: string }) => console.log('Add:', data),
47
- onBulkAdd: () => console.log('Bulk Add'),
48
- onClose: () => console.log('Close')
49
- };
50
-
51
- export const TextPrimitives = Template.bind({});
52
- TextPrimitives.args = {
53
- types: ['Text', 'TextArea', 'URL'],
54
- selectedType: '',
55
- primitives: ['Text', 'TextArea', 'URL'],
56
- help: 'some help text',
57
- multiple: true,
58
- embedded: false,
59
- };
60
-
61
- export const DateTimePrimitives = Template.bind({});
62
- DateTimePrimitives.args = {
63
- types: ['Date', 'DateTime', 'Time'],
64
- selectedType: '',
65
- primitives: ['Date', 'DateTime', 'Time'],
66
- help: 'some help text',
67
- multiple: true,
68
- embedded: false,
69
- };
70
-
71
- export const NumberPrimitives = Template.bind({});
72
- NumberPrimitives.args = {
73
- types: ['Number', 'Float', 'Integer'],
74
- selectedType: '',
75
- primitives: ['Number', 'Float', 'Integer'],
76
- help: 'some help text',
77
- multiple: true,
78
- embedded: false,
79
- };
80
-
81
- export const SelectPrimitive = Template.bind({});
82
- SelectPrimitive.args = {
83
- types: ['Select'],
84
- selectedType: '',
85
- primitives: ['Select'],
86
- help: 'some help text',
87
- multiple: true,
88
- embedded: false,
89
- values: ['a', 'b', 'c'],
90
- };
91
-
92
- export const SelectUrlPrimitive = Template.bind({});
93
- SelectUrlPrimitive.args = {
94
- types: ['SelectURL'],
95
- selectedType: '',
96
- primitives: ['SelectURL'],
97
- help: 'some help text',
98
- multiple: true,
99
- embedded: false,
100
- values: ['http://schema.org/name', 'https://schema.org/name', 'arcp://name,...'],
101
- };
102
-
103
- export const SelectObjectPrimitive = Template.bind({});
104
- SelectObjectPrimitive.args = {
105
- types: ['SelectObject'],
106
- selectedType: '',
107
- primitives: ['SelectObject'],
108
- help: 'some help text',
109
- multiple: true,
110
- embedded: false,
111
- values: [
112
- { '@id': '#1', '@type': 'Dataset', name: '1' },
113
- { '@id': '#2', '@type': 'Dataset', name: '2' },
114
- { '@id': '#3', '@type': 'Dataset', name: '3' },
115
- ],
116
- };
117
-
118
- export const GeoPrimitives = Template.bind({});
119
- GeoPrimitives.args = {
120
- types: ['Geo', 'GeoCoordinates', 'GeoShape'],
121
- selectedType: '',
122
- primitives: ['Geo', 'GeoCoordinates', 'GeoShape'],
123
- help: 'some help text',
124
- multiple: true,
125
- embedded: false,
126
- };
@@ -1,84 +0,0 @@
1
- import React from 'react';
2
- import { Button } from 'antd';
3
- import { PlusOutlined, CloseOutlined, StarOutlined } from '@ant-design/icons';
4
- import { difference } from 'lodash';
5
- import { useContext } from 'react';
6
- import { ProfileManagerContext } from '../Shell';
7
-
8
- interface AddControlProps {
9
- crateManager: any;
10
- types: string | string[];
11
- selectedType: string;
12
- primitives: string[];
13
- onAdd: (data: { type: string }) => void;
14
- onBulkAdd: () => void;
15
- onClose: () => void;
16
- }
17
-
18
- const AddControl: React.FC<AddControlProps> = ({
19
- types,
20
- selectedType,
21
- primitives,
22
- onAdd,
23
- onBulkAdd,
24
- onClose
25
- }) => {
26
- const profileManager = useContext(ProfileManagerContext);
27
- const notOnlyPrimitives = difference(
28
- Array.isArray(types) ? types : [types],
29
- [...primitives, 'ANY']
30
- );
31
-
32
- const getTypeLabelFromProfile = (type: string) => {
33
- return profileManager?.getTypeLabel(type);
34
- };
35
-
36
- const toggle = (type: string) => {
37
- if (selectedType === type) {
38
- onClose();
39
- } else {
40
- onAdd({ type });
41
- }
42
- };
43
-
44
- const handleBulkAdd = () => {
45
- if (selectedType === 'bulkAdd') {
46
- onClose();
47
- } else {
48
- onBulkAdd();
49
- }
50
- };
51
-
52
- return (
53
- <div className="flex flex-row flex-wrap">
54
- {(Array.isArray(types) ? types : [types]).map((type, idx) => (
55
- <div key={idx} className="m-1">
56
- <Button
57
- onClick={() => toggle(type)}
58
- type="primary"
59
- size="middle"
60
- className="focus:outline-none focus:border-2 focus:border-green-600"
61
- icon={(!selectedType || selectedType !== type) ? <PlusOutlined /> : <CloseOutlined />}
62
- >
63
- &nbsp;{getTypeLabelFromProfile(type)}
64
- </Button>
65
- </div>
66
- ))}
67
- {notOnlyPrimitives.length > 0 && (
68
- <div className="m-1">
69
- <Button
70
- onClick={handleBulkAdd}
71
- type="primary"
72
- size="middle"
73
- className="focus:outline-none focus:border-2 focus:border-green-600"
74
- icon={(!selectedType || selectedType !== 'bulkAdd') ? <StarOutlined /> : <CloseOutlined />}
75
- >
76
- &nbsp; Bulk Add
77
- </Button>
78
- </div>
79
- )}
80
- </div>
81
- );
82
- };
83
-
84
- export default AddControl;
@@ -1,215 +0,0 @@
1
- import React, { useState, useEffect, useContext } from 'react';
2
- import { Select, Input, Button, Typography } from 'antd';
3
- import { PlusOutlined } from '@ant-design/icons';
4
- import { useTranslation } from 'react-i18next';
5
- import debounce from 'lodash/debounce';
6
- import { CrateManagerContext, LookupsContext } from '../Shell';
7
- import { useStateStore } from '../store';
8
- import { Lookup, wrapPromise } from './auto-complete.lib';
9
-
10
- interface AutoCompleteProps {
11
- type: string;
12
- onLinkEntity: (data: { json: any }) => void;
13
- onCreateEntity: (data: { json: any }) => void;
14
- }
15
-
16
- interface MatchGroup {
17
- label: string;
18
- entities: any[];
19
- }
20
-
21
- const AutoComplete: React.FC<AutoCompleteProps> = ({ type, onLinkEntity, onCreateEntity }) => {
22
- const { t } = useTranslation();
23
- const crateManager = useContext(CrateManagerContext);
24
- const lookupHandler = useContext(LookupsContext);
25
- const state = useStateStore();
26
-
27
- const [loading, setLoading] = useState(false);
28
- const [selection, setSelection] = useState<any>(null);
29
- const [matches, setMatches] = useState<MatchGroup[]>([]);
30
- const [inputValue, setInputValue] = useState('');
31
-
32
- const promiseTimeout = 2500;
33
-
34
- const querySearch = async (queryString: string) => {
35
- setLoading(true);
36
-
37
- const lookup = new Lookup({
38
- config: crateManager?.profile?.lookup,
39
- lookup: lookupHandler,
40
- crateManager,
41
- });
42
-
43
- const newEntity = queryString ? [
44
- {
45
- type: 'new',
46
- '@id': queryString,
47
- '@type': type,
48
- name: queryString,
49
- },
50
- ] : [];
51
-
52
- const lookups = [];
53
-
54
- if (crateManager?.getEntities) {
55
- lookups.push(wrapPromise(lookup.getEntities(type, queryString), promiseTimeout));
56
- }
57
-
58
- if (lookupHandler?.dataPacks) {
59
- lookups.push(
60
- wrapPromise(lookup.dataPacks(type, queryString), promiseTimeout, {
61
- reason: 'External Lookup Timeout',
62
- })
63
- );
64
- }
65
-
66
- if (lookupHandler?.entityTemplates) {
67
- lookups.push(
68
- wrapPromise(lookup.entityTemplates(type, queryString), promiseTimeout, {
69
- reason: 'External Lookup Timeout',
70
- })
71
- );
72
- }
73
-
74
- if (lookupHandler?.entities) {
75
- lookups.push(
76
- wrapPromise(lookup.entities(type, queryString), promiseTimeout, {
77
- reason: 'External Lookup Timeout',
78
- })
79
- );
80
- }
81
-
82
- if (['Organisation', 'Organization'].includes(type) || type === 'ANY') {
83
- lookups.push(
84
- wrapPromise(lookup.ror(queryString), promiseTimeout, {
85
- reason: 'ROR Lookup Timeout',
86
- })
87
- );
88
- }
89
-
90
- const responses = await Promise.all(lookups);
91
- const newMatches: MatchGroup[] = [];
92
-
93
- responses.forEach((response) => {
94
- if (response.endpoint === 'internal' && response.documents?.length) {
95
- newMatches.push({
96
- label: t('associate_existing_entity'),
97
- entities: response.documents.map((e) => ({ ...e, type: 'internal' })).slice(0, 5),
98
- });
99
- } else if (response.endpoint === 'templates' && response.documents?.length) {
100
- newMatches.push({
101
- label: t('associate_entity_from_template'),
102
- entities: response.documents.map((entity) => ({
103
- ...entity,
104
- type: 'template',
105
- })),
106
- });
107
- } else if (response.endpoint === 'ror' && response.documents?.length) {
108
- newMatches.push({
109
- label: t('associate_organization_from_ror'),
110
- entities: response.documents.map((entity) => ({ ...entity, type: 'ror' })),
111
- });
112
- } else if (response.endpoint === 'entities' && response.documents?.length) {
113
- newMatches.push({
114
- label: t('associate_user_created_entity'),
115
- entities: response.documents.map((entity) => ({ ...entity, type: 'datapack' })),
116
- });
117
- } else if (response.endpoint === 'datapacks' && response.documents?.length) {
118
- newMatches.push({
119
- label: t('associate_from_datapack'),
120
- entities: response.documents.map((entity) => ({ ...entity, type: 'datapack' })),
121
- });
122
- }
123
- });
124
-
125
- if (type !== 'ANY') {
126
- newMatches.push({
127
- label: t('create_new_entity'),
128
- entities: newEntity,
129
- });
130
- }
131
-
132
- setMatches(newMatches);
133
- setLoading(false);
134
- };
135
-
136
- const debouncedQuerySearch = debounce(querySearch, 1000, { leading: true });
137
-
138
- useEffect(() => {
139
- querySearch('');
140
- }, [type]);
141
-
142
- const handleSelect = (value: string, option: any) => {
143
- const entity = option.entity;
144
- if (entity) {
145
- const updatedEntity = {
146
- ...entity,
147
- '@type': entity['@type'].split(', ').map((t: string) => t.trim()),
148
- };
149
-
150
- if (entity?.type === 'internal') {
151
- onLinkEntity({ json: updatedEntity });
152
- } else {
153
- onCreateEntity({ json: updatedEntity });
154
- }
155
- }
156
- setSelection(null);
157
- };
158
-
159
- const renderOption = (option: any) => {
160
- const entity = option.entity;
161
- if (!entity) return null;
162
-
163
- if (entity.type === 'new') {
164
- return (
165
- <Button
166
- size="middle"
167
- variant="solid"
168
- color="green"
169
- block
170
- icon={<PlusOutlined />}
171
- >
172
- {t('create_new_of_type', { type: entity['@type'] })}: {entity.name}
173
- </Button>
174
- );
175
- } else if (entity.type === 'datapack') {
176
- return (
177
- <div className="flex flex-row space-x-2">
178
- <Typography.Text>{entity['@type']}:</Typography.Text>
179
- <Typography.Text>{entity.name} ({entity['@id']})</Typography.Text>
180
- </div>
181
- );
182
- } else {
183
- return (
184
- <div className="flex flex-row space-x-2">
185
- <Typography.Text>{entity['@type']}:</Typography.Text>
186
- <Typography.Text>{entity.name || entity['@id']}</Typography.Text>
187
- </div>
188
- );
189
- }
190
- };
191
-
192
- return (
193
- <div className={loading ? 'opacity-50' : ''}>
194
- <Select
195
- showSearch
196
- size="middle"
197
- value={selection}
198
- placeholder={t('select_existing_or_create_new') || 'select an existing entity or create a new one'}
199
- defaultActiveFirstOption={false}
200
- filterOption={false}
201
- onSearch={debouncedQuerySearch}
202
- onChange={handleSelect}
203
- notFoundContent={loading ? 'Loading...' : 'No results'}
204
- options={matches.flatMap((group) => [
205
- { label: <Typography.Text strong>{group.label}</Typography.Text>, options: group.entities.map(entity => ({ label: renderOption({ entity }), value: entity['@id'], entity })) }
206
- ]).flatMap(group => [
207
- { label: group.label, options: group.options }
208
- ])}
209
- optionRender={(option) => option.label}
210
- />
211
- </div>
212
- );
213
- };
214
-
215
- export default AutoComplete;