@arpproject/recrate 0.1.7-test3 → 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 -28
  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 -104
  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,58 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { DatePicker } from 'antd';
3
- import dayjs from 'dayjs';
4
- import { useTranslation } from 'react-i18next';
5
- import { checkDateIsValid } from './date-libs';
6
-
7
- export interface DateProps {
8
- property: string;
9
- value?: string;
10
- onSaveProperty: (data: { property: string; value: string }) => void;
11
- }
12
-
13
- const DateComponent: React.FC<DateProps> = ({
14
- property,
15
- value,
16
- onSaveProperty
17
- }) => {
18
- const { t } = useTranslation();
19
- const [internalValue, setInternalValue] = useState<dayjs.Dayjs | null>(
20
- value ? dayjs(value) : null
21
- );
22
- const [isValidDate, setIsValidDate] = useState<boolean>(checkDateIsValid(value));
23
-
24
- useEffect(() => {
25
- setInternalValue(value ? dayjs(value) : null);
26
- setIsValidDate(checkDateIsValid(value));
27
- }, [value]);
28
-
29
- const handleDateChange = (newValue: dayjs.Dayjs | null, dateString: string | string[]) => {
30
- setInternalValue(newValue);
31
- if (newValue && checkDateIsValid(newValue.toString())) {
32
- onSaveProperty({
33
- property,
34
- value: newValue.startOf('day').toISOString()
35
- });
36
- }
37
- };
38
-
39
- return (
40
- <div className="flex flex-col describo-property-type-date">
41
- <DatePicker
42
- value={internalValue}
43
- onChange={handleDateChange}
44
- format="YYYY-MM-DD"
45
- placeholder={t('pick_a_date') || 'Pick a date'}
46
- size="middle"
47
- allowClear={true}
48
- />
49
- {!isValidDate && (
50
- <span style={{ color: 'red', fontSize: '0.875rem' }}>
51
- {t('invalid_date_value', { value })}
52
- </span>
53
- )}
54
- </div>
55
- );
56
- };
57
-
58
- export default DateComponent;
@@ -1,32 +0,0 @@
1
- import React from 'react';
2
- import { StoryFn, Meta } from '@storybook/react';
3
- import DateTimeComponent from './DateTime';
4
- import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
5
- import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
6
-
7
- export default {
8
- title: 'Primitives/DateTime',
9
- component: DateTimeComponent,
10
- argTypes: {
11
- value: {
12
- options: ['2022-03-02', '2022-09-28T02:20:56.521', new Date().toISOString()],
13
- control: { type: 'radio' }
14
- },
15
- onSaveProperty: { action: 'saveProperty' }
16
- },
17
- decorators: [
18
- (Story) => (
19
- <LocalizationProvider dateAdapter={AdapterDayjs}>
20
- <Story />
21
- </LocalizationProvider>
22
- )
23
- ]
24
- } as Meta<typeof DateTimeComponent>;
25
-
26
- const Template: StoryFn<typeof DateTimeComponent> = (args) => <DateTimeComponent {...args} />;
27
-
28
- export const Default = Template.bind({});
29
- Default.args = {
30
- property: 'date',
31
- value: '2022-03-02'
32
- };
@@ -1,64 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { DatePicker } from 'antd';
3
- import dayjs from 'dayjs';
4
- import { useTranslation } from 'react-i18next';
5
- import { checkDateIsValid } from './date-libs';
6
-
7
- export interface DateTimeProps {
8
- property: string;
9
- value?: string;
10
- onSaveProperty: (data: { property: string; value: string }) => void;
11
- }
12
-
13
- const DateTimeComponent: React.FC<DateTimeProps> = ({
14
- property,
15
- value,
16
- onSaveProperty
17
- }) => {
18
- const { t } = useTranslation();
19
- const [internalValue, setInternalValue] = useState<dayjs.Dayjs | null>(
20
- value ? dayjs(value) : null
21
- );
22
- const [isValidDate, setIsValidDate] = useState<boolean>(checkDateIsValid(value));
23
-
24
- useEffect(() => {
25
- setInternalValue(value ? dayjs(value) : null);
26
- setIsValidDate(checkDateIsValid(value));
27
- }, [value]);
28
-
29
- const handleDateTimeChange = (newValue: dayjs.Dayjs | null, dateString: string | string[]) => {
30
- setInternalValue(newValue);
31
- try {
32
- if (newValue && checkDateIsValid(newValue.toString())) {
33
- onSaveProperty({
34
- property,
35
- value: newValue.toISOString()
36
- });
37
- setIsValidDate(true);
38
- }
39
- } catch (error) {
40
- setIsValidDate(false);
41
- }
42
- };
43
-
44
- return (
45
- <div className="flex flex-col w-full describo-property-type-datetime">
46
- <DatePicker
47
- showTime
48
- value={internalValue}
49
- onChange={handleDateTimeChange}
50
- format="YYYY-MM-DD HH:mm:ss"
51
- placeholder={t('pick_a_datetime') || 'Pick a date and time'}
52
- style={{ width: '100%' }}
53
- size="middle"
54
- />
55
- {!isValidDate && (
56
- <span style={{ color: 'red', fontSize: '12px' }}>
57
- {t('invalid_datetime_value', { value })}
58
- </span>
59
- )}
60
- </div>
61
- );
62
- };
63
-
64
- export default DateTimeComponent;
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- import { StoryFn, Meta } from '@storybook/react';
3
- import Geo from './Geo';
4
- import { CrateManagerContext } from '../Shell';
5
-
6
- export default {
7
- title: 'Primitives/Geo',
8
- component: Geo,
9
- parameters: {
10
- layout: 'centered',
11
- },
12
- } as Meta<typeof Geo>;
13
-
14
- const mockEntities = [
15
- {
16
- '@id': 'geo_1',
17
- '@type': 'GeoCoordinates',
18
- name: 'Test Location',
19
- geojson: {
20
- type: 'Feature',
21
- geometry: {
22
- type: 'Point',
23
- coordinates: [144.9631, -37.8136],
24
- },
25
- },
26
- },
27
- ];
28
-
29
- const mockCrateManager = {
30
- getEntities: ({ limit, type }: { limit?: number; type?: string }) => {
31
- // Only return mockEntities if type matches
32
- if (!type || type === 'GeoCoordinates') return mockEntities;
33
- return [];
34
- },
35
- addBlankNode: (type: string) => ({ '@id': 'blank_node', '@type': type }),
36
- deleteEntity: ({ id }: { id: string }) => {},
37
- };
38
-
39
- const Template: StoryFn<typeof Geo> = (args) => (
40
- <CrateManagerContext.Provider value={mockCrateManager}>
41
- <Geo {...args} />
42
- </CrateManagerContext.Provider>
43
- );
44
-
45
- export const Default = Template.bind({});
46
- Default.args = {
47
- property: 'location',
48
- onCreateEntity: (data) => console.log('Create entity:', data),
49
- onLinkEntity: (data) => console.log('Link entity:', data),
50
- };
51
-
52
- export const WithExistingEntities = Template.bind({});
53
- WithExistingEntities.args = {
54
- property: 'location',
55
- onCreateEntity: (data) => console.log('Create entity:', data),
56
- onLinkEntity: (data) => console.log('Link entity:', data),
57
- };
@@ -1,225 +0,0 @@
1
- import React, { useContext, useEffect, useRef, useState } from "react";
2
- import {
3
- Divider,
4
- Form,
5
- Input,
6
- Select,
7
- Radio,
8
- Typography
9
- } from "antd";
10
- import L from "leaflet";
11
- import "leaflet/dist/leaflet.css";
12
- import AreaSelectInit from "./Map.SelectArea.js";
13
- import { geojsonToWKT } from "@terraformer/wkt";
14
- import flattenDeep from "lodash/flattenDeep";
15
- import { CrateManagerContext } from '../Shell';
16
-
17
- import icon from "leaflet/dist/images/marker-icon.png";
18
- import iconShadow from "leaflet/dist/images/marker-shadow.png";
19
-
20
- L.Marker.prototype.options.icon = L.icon({
21
- iconUrl: icon,
22
- shadowUrl: iconShadow,
23
- });
24
-
25
- AreaSelectInit(L);
26
-
27
- type LeafletMapWithSelectArea = L.Map & { selectArea?: any };
28
-
29
- const GeoInputComponent = ({
30
- property,
31
- onCreateEntity,
32
- onLinkEntity,
33
- }: {
34
- property: string;
35
- onCreateEntity: (args: { property: string; json: any }) => void;
36
- onLinkEntity: (args: { property: string; json: any }) => void;
37
- }) => {
38
- const mapRef = useRef<LeafletMapWithSelectArea | null>(null);
39
- const [mode, setMode] = useState("box");
40
- const [locationName, setLocationName] = useState("");
41
- const [feature, setFeature] = useState<any>(null);
42
- const [existingEntities, setExistingEntities] = useState<any[]>([]);
43
- const [selectValue, setSelectValue] = useState("");
44
- const locationNameRef = useRef(locationName);
45
-
46
- const crateManager = useContext(CrateManagerContext);
47
-
48
- useEffect(() => {
49
- mapRef.current = L.map("map", {
50
- center: [0, 0],
51
- zoom: 1,
52
- });
53
-
54
- init();
55
-
56
- return () => {
57
- mapRef.current?.off();
58
- mapRef.current?.remove();
59
- };
60
- }, []);
61
-
62
- useEffect(() => {
63
- updateHandlers();
64
- }, [mode]);
65
-
66
- useEffect(() => {
67
- locationNameRef.current = locationName;
68
- }, [locationName]);
69
-
70
- const init = async () => {
71
- await loadGeoDataInCrate();
72
-
73
- L.tileLayer(
74
- "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
75
- {
76
- attribution:
77
- "Tiles © Esri — Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012",
78
- minZoom: 1,
79
- maxZoom: 16,
80
- }
81
- ).addTo(mapRef.current!);
82
-
83
- // Let Leaflet fully mount and register `selectArea`
84
- setTimeout(() => updateHandlers(), 200);
85
- };
86
-
87
- const loadGeoDataInCrate = () => {
88
- const geometryClasses = ["Geo", "Geomtery", "GeoShape", "GeoCoordinates"];
89
- let geos = geometryClasses.map((g) => [
90
- ...crateManager.getEntities({ limit: 5, type: g }),
91
- ]);
92
- setExistingEntities(flattenDeep(geos));
93
- };
94
-
95
- const updateHandlers = () => {
96
- if (!mapRef.current) return;
97
- if (!(mapRef.current as LeafletMapWithSelectArea).selectArea) return;
98
-
99
- if (mode === "box") {
100
- mapRef.current.off("click");
101
- (mapRef.current as LeafletMapWithSelectArea).selectArea.enable();
102
- (mapRef.current as LeafletMapWithSelectArea).selectArea.setShiftKey(true);
103
- mapRef.current.on("areaselected", handleAreaSelect);
104
- } else {
105
- (mapRef.current as LeafletMapWithSelectArea).selectArea.disable();
106
- mapRef.current.off("areaselected");
107
- mapRef.current.on("click", handlePointSelect);
108
- }
109
- };
110
-
111
- const handleAreaSelect = (e: any) => {
112
- const bounds = e.bounds;
113
- const geoJSON = {
114
- type: "Feature",
115
- geometry: {
116
- type: "Polygon",
117
- coordinates: [[
118
- [bounds.getNorthEast().lng, bounds.getNorthEast().lat],
119
- [bounds.getSouthEast().lng, bounds.getSouthEast().lat],
120
- [bounds.getSouthWest().lng, bounds.getSouthWest().lat],
121
- [bounds.getNorthWest().lng, bounds.getNorthWest().lat],
122
- ]],
123
- },
124
- };
125
- const entity = { "@type": "GeoShape", geojson: geoJSON };
126
- setFeature(entity);
127
- emitFeature(entity);
128
- };
129
-
130
- const handlePointSelect = (e: any) => {
131
- const latlng = e.latlng;
132
- const geoJSON = {
133
- type: "Feature",
134
- geometry: {
135
- type: "Point",
136
- coordinates: [latlng.lng, latlng.lat],
137
- },
138
- };
139
- const entity = { "@type": "GeoCoordinates", geojson: geoJSON };
140
- setFeature(entity);
141
- emitFeature(entity);
142
- };
143
-
144
- const emitFeature = (feat: any) => {
145
- let node = crateManager.addBlankNode("Geometry");
146
- let entity = {
147
- ...node,
148
- name: locationNameRef.current,
149
- geojson: JSON.stringify(feat.geojson),
150
- asWKT: geojsonToWKT(feat.geojson.geometry),
151
- };
152
- crateManager.deleteEntity({ id: node["@id"] });
153
- onCreateEntity({ property, json: entity });
154
- };
155
-
156
- const handleSelectChange = (value: string) => {
157
- setSelectValue(value);
158
- const entity = existingEntities.find((e) => e["@id"] === value);
159
- onLinkEntity({ property, json: entity });
160
- };
161
-
162
- return (
163
- <div className="flex flex-col text-gray-600 describo-property-type-geo">
164
- <div className="flex flex-col space-y-4">
165
- {existingEntities.length > 0 && (
166
- <>
167
- <Typography.Title level={5}>Select Existing Location</Typography.Title>
168
- <Form.Item label="Select">
169
- <Select
170
- value={selectValue}
171
- onChange={handleSelectChange}
172
- style={{ width: '100%' }}
173
- >
174
- {existingEntities.map((entity) => (
175
- <Select.Option key={entity["@id"]} value={entity["@id"]}>
176
- {entity.name}
177
- </Select.Option>
178
- ))}
179
- </Select>
180
- </Form.Item>
181
- <Divider className="border border-gray-400" />
182
- </>
183
- )}
184
-
185
- <div className="flex flex-col space-y-2">
186
- <Typography.Title level={5}>Define Location</Typography.Title>
187
- <Input
188
- size="middle"
189
- placeholder="Provide name for location"
190
- value={locationName}
191
- onChange={(e) => setLocationName(e.target.value)}
192
- />
193
-
194
- <div className="flex flex-row space-x-4">
195
- <Radio.Group
196
- value={mode}
197
- onChange={(e) => {
198
- setMode(e.target.value);
199
- updateHandlers();
200
- }}
201
- >
202
- <Radio value="box">Select Region</Radio>
203
- <Radio value="point">Select Point</Radio>
204
- </Radio.Group>
205
-
206
- {mode === "box" && (
207
- <Typography.Text className="pt-1 text-gray-600">
208
- Press Shift and drag to select region
209
- </Typography.Text>
210
- )}
211
- {mode === "point" && (
212
- <Typography.Text className="pt-1 text-gray-600">
213
- Click on map to select point
214
- </Typography.Text>
215
- )}
216
- </div>
217
- </div>
218
-
219
- <div id="map" className="map-style" style={{ width: 700, height: 500 }}></div>
220
- </div>
221
- </div>
222
- );
223
- };
224
-
225
- export default GeoInputComponent;