@arpproject/recrate 0.1.2

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 (286) hide show
  1. package/.eslintrc.json +37 -0
  2. package/.storybook/main.ts +40 -0
  3. package/.storybook/preview.tsx +46 -0
  4. package/LICENCE +18 -0
  5. package/README.md +83 -0
  6. package/babel.config.json +5 -0
  7. package/dist/app/App.d.ts +2 -0
  8. package/dist/app/EmbeddedComponent.d.ts +3 -0
  9. package/dist/app/index.d.ts +0 -0
  10. package/dist/app/lookup.d.ts +82 -0
  11. package/dist/crate-builder/CrateManager/contexts.d.ts +6 -0
  12. package/dist/crate-builder/CrateManager/crate-manager-benchmarking.spec.d.ts +1 -0
  13. package/dist/crate-builder/CrateManager/crate-manager-loading-exporting.spec.d.ts +1 -0
  14. package/dist/crate-builder/CrateManager/crate-manager-operations.spec.d.ts +0 -0
  15. package/dist/crate-builder/CrateManager/crate-manager.d.ts +641 -0
  16. package/dist/crate-builder/CrateManager/crate-manager.spec.d.ts +1 -0
  17. package/dist/crate-builder/CrateManager/lib.d.ts +26 -0
  18. package/dist/crate-builder/CrateManager/lib.spec.d.ts +1 -0
  19. package/dist/crate-builder/CrateManager/profile-manager.d.ts +143 -0
  20. package/dist/crate-builder/CrateManager/profile-manager.spec.d.ts +1 -0
  21. package/dist/crate-builder/CrateManager/schema-type-definitions.json.d.ts +35125 -0
  22. package/dist/crate-builder/CrateManager/validate-identifier.d.ts +10 -0
  23. package/dist/crate-builder/CrateManager/validate-identifier.spec.d.ts +1 -0
  24. package/dist/crate-builder/RenderEntity/Add.d.ts +26 -0
  25. package/dist/crate-builder/RenderEntity/AddControl.d.ts +14 -0
  26. package/dist/crate-builder/RenderEntity/AddControl.stories.d.ts +29 -0
  27. package/dist/crate-builder/RenderEntity/AutoComplete.d.ts +12 -0
  28. package/dist/crate-builder/RenderEntity/BulkAdd.d.ts +10 -0
  29. package/dist/crate-builder/RenderEntity/DeleteProperty.d.ts +8 -0
  30. package/dist/crate-builder/RenderEntity/DialogAddProperty.d.ts +9 -0
  31. package/dist/crate-builder/RenderEntity/DialogBrowseEntities.d.ts +8 -0
  32. package/dist/crate-builder/RenderEntity/DialogEditContext.d.ts +8 -0
  33. package/dist/crate-builder/RenderEntity/DialogPreviewCrate.d.ts +7 -0
  34. package/dist/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.d.ts +13 -0
  35. package/dist/crate-builder/RenderEntity/DialogSaveEntityTemplate.d.ts +14 -0
  36. package/dist/crate-builder/RenderEntity/DisplayPropertyName.d.ts +8 -0
  37. package/dist/crate-builder/RenderEntity/DisplayPropertyName.stories.d.ts +6 -0
  38. package/dist/crate-builder/RenderEntity/EntityId.d.ts +13 -0
  39. package/dist/crate-builder/RenderEntity/EntityName.d.ts +13 -0
  40. package/dist/crate-builder/RenderEntity/EntityProperty.d.ts +19 -0
  41. package/dist/crate-builder/RenderEntity/EntityPropertyInstance.d.ts +25 -0
  42. package/dist/crate-builder/RenderEntity/EntityType.d.ts +12 -0
  43. package/dist/crate-builder/RenderEntity/ItemLink.d.ts +14 -0
  44. package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.d.ts +23 -0
  45. package/dist/crate-builder/RenderEntity/PaginateLinkedEntities.stories.d.ts +7 -0
  46. package/dist/crate-builder/RenderEntity/PropertyHelp.d.ts +6 -0
  47. package/dist/crate-builder/RenderEntity/RenderControls.d.ts +22 -0
  48. package/dist/crate-builder/RenderEntity/RenderLinkedItem.d.ts +20 -0
  49. package/dist/crate-builder/RenderEntity/RenderPropertyHelp.d.ts +6 -0
  50. package/dist/crate-builder/RenderEntity/RenderReverseConnections.d.ts +16 -0
  51. package/dist/crate-builder/RenderEntity/RenderTypes.d.ts +6 -0
  52. package/dist/crate-builder/RenderEntity/Shell2.d.ts +14 -0
  53. package/dist/crate-builder/RenderEntity/UnlinkEntity.d.ts +14 -0
  54. package/dist/crate-builder/RenderEntity/auto-complete.lib.d.ts +25 -0
  55. package/dist/crate-builder/RenderEntity/keys.d.ts +4 -0
  56. package/dist/crate-builder/RenderEntity/layout.d.ts +14 -0
  57. package/dist/crate-builder/RenderEntity/layout.spec.d.ts +1 -0
  58. package/dist/crate-builder/Shell.d.ts +40 -0
  59. package/dist/crate-builder/editor-state.d.ts +72 -0
  60. package/dist/crate-builder/helpers.d.ts +9 -0
  61. package/dist/crate-builder/i18n.d.ts +2 -0
  62. package/dist/crate-builder/lib/validate-iri.d.ts +6 -0
  63. package/dist/crate-builder/locales/en.d.ts +79 -0
  64. package/dist/crate-builder/locales/hu.d.ts +79 -0
  65. package/dist/crate-builder/primitives/Boolean.d.ts +11 -0
  66. package/dist/crate-builder/primitives/Boolean.stories.d.ts +7 -0
  67. package/dist/crate-builder/primitives/Date.d.ts +11 -0
  68. package/dist/crate-builder/primitives/Date.stories.d.ts +5 -0
  69. package/dist/crate-builder/primitives/DateTime.d.ts +11 -0
  70. package/dist/crate-builder/primitives/DateTime.stories.d.ts +5 -0
  71. package/dist/crate-builder/primitives/Geo.d.ts +12 -0
  72. package/dist/crate-builder/primitives/Geo.stories.d.ts +26 -0
  73. package/dist/crate-builder/primitives/Map.SelectArea.d.ts +9 -0
  74. package/dist/crate-builder/primitives/Map.d.ts +15 -0
  75. package/dist/crate-builder/primitives/Map.stories.d.ts +6 -0
  76. package/dist/crate-builder/primitives/Number.d.ts +16 -0
  77. package/dist/crate-builder/primitives/Number.stories.d.ts +10 -0
  78. package/dist/crate-builder/primitives/Select.d.ts +15 -0
  79. package/dist/crate-builder/primitives/Select.stories.d.ts +9 -0
  80. package/dist/crate-builder/primitives/SelectObject.d.ts +13 -0
  81. package/dist/crate-builder/primitives/SelectObject.stories.d.ts +5 -0
  82. package/dist/crate-builder/primitives/SelectUrl.d.ts +14 -0
  83. package/dist/crate-builder/primitives/SelectUrl.stories.d.ts +7 -0
  84. package/dist/crate-builder/primitives/Text.d.ts +19 -0
  85. package/dist/crate-builder/primitives/Text.stories.d.ts +13 -0
  86. package/dist/crate-builder/primitives/Time.d.ts +11 -0
  87. package/dist/crate-builder/primitives/Time.stories.d.ts +7 -0
  88. package/dist/crate-builder/primitives/Url.d.ts +11 -0
  89. package/dist/crate-builder/primitives/Url.stories.d.ts +7 -0
  90. package/dist/crate-builder/primitives/Value.d.ts +7 -0
  91. package/dist/crate-builder/primitives/Value.stories.d.ts +7 -0
  92. package/dist/crate-builder/primitives/date-libs.d.ts +1 -0
  93. package/dist/crate-builder/property-definitions.d.ts +78 -0
  94. package/dist/crate-builder/store.d.ts +8 -0
  95. package/dist/favicon.ico +0 -0
  96. package/dist/index.d.ts +3 -0
  97. package/dist/index.html +43 -0
  98. package/dist/logo192.png +0 -0
  99. package/dist/logo512.png +0 -0
  100. package/dist/manifest.json +25 -0
  101. package/dist/marker-icon.png +0 -0
  102. package/dist/marker-shadow.png +0 -0
  103. package/dist/recrate.es.js +158699 -0
  104. package/dist/recrate.umd.js +158717 -0
  105. package/dist/robots.txt +3 -0
  106. package/dist/style.css +1721 -0
  107. package/dist/types.d.ts +42 -0
  108. package/docker-compose.yml +30 -0
  109. package/docs/.nojekyll +1 -0
  110. package/docs/assets/highlight.css +99 -0
  111. package/docs/assets/icons.js +18 -0
  112. package/docs/assets/icons.svg +1 -0
  113. package/docs/assets/main.js +60 -0
  114. package/docs/assets/navigation.js +1 -0
  115. package/docs/assets/search.js +1 -0
  116. package/docs/assets/style.css +1448 -0
  117. package/docs/classes/src_crate_builder_CrateManager_crate_manager.CrateManager.html +240 -0
  118. package/docs/classes/src_crate_builder_CrateManager_profile_manager.ProfileManager.html +42 -0
  119. package/docs/classes/src_crate_builder_editor_state.EditorState.html +28 -0
  120. package/docs/classes/src_crate_builder_types.CrateManagerType.html +57 -0
  121. package/docs/classes/src_crate_builder_types.ProfileManagerType.html +13 -0
  122. package/docs/functions/src_crate_builder_CrateManager_lib.isURL.html +2 -0
  123. package/docs/functions/src_crate_builder_CrateManager_lib.mintNewCrate.html +3 -0
  124. package/docs/functions/src_crate_builder_CrateManager_lib.normalise.html +5 -0
  125. package/docs/functions/src_crate_builder_CrateManager_lib.normaliseEntityType.html +1 -0
  126. package/docs/index.html +58 -0
  127. package/docs/interfaces/src_crate_builder_types.NormalisedCrate.html +3 -0
  128. package/docs/interfaces/src_crate_builder_types.NormalisedEntityDefinition.html +4 -0
  129. package/docs/interfaces/src_crate_builder_types.NormalisedProfile.html +9 -0
  130. package/docs/interfaces/src_crate_builder_types.ProfileLayout.html +2 -0
  131. package/docs/interfaces/src_crate_builder_types.ProfileLayoutGroup.html +9 -0
  132. package/docs/interfaces/src_crate_builder_types.UnverifiedCrate.html +3 -0
  133. package/docs/interfaces/src_crate_builder_types.UnverifiedEntityDefinition.html +4 -0
  134. package/docs/modules/src_crate_builder_CrateManager_crate_manager.html +2 -0
  135. package/docs/modules/src_crate_builder_CrateManager_lib.html +6 -0
  136. package/docs/modules/src_crate_builder_CrateManager_profile_manager.html +2 -0
  137. package/docs/modules/src_crate_builder_editor_state.html +2 -0
  138. package/docs/modules/src_crate_builder_types.html +16 -0
  139. package/docs/types/src_crate_builder_types.EntityReference.html +1 -0
  140. package/docs/types/src_crate_builder_types.NormalisedContext.html +1 -0
  141. package/docs/types/src_crate_builder_types.PrimitiveType.html +1 -0
  142. package/docs/types/src_crate_builder_types.ProfileAssociation.html +1 -0
  143. package/docs/types/src_crate_builder_types.ProfileInput.html +1 -0
  144. package/docs/types/src_crate_builder_types.UnverifiedContext.html +1 -0
  145. package/docs/variables/src_crate_builder_CrateManager_lib.urlProtocols.html +1 -0
  146. package/index.html +13 -0
  147. package/load-data-packs.cjs +38 -0
  148. package/package.json +135 -0
  149. package/postcss.config.cjs +6 -0
  150. package/public/favicon.ico +0 -0
  151. package/public/index.html +43 -0
  152. package/public/logo192.png +0 -0
  153. package/public/logo512.png +0 -0
  154. package/public/manifest.json +25 -0
  155. package/public/marker-icon.png +0 -0
  156. package/public/marker-shadow.png +0 -0
  157. package/public/robots.txt +3 -0
  158. package/react-app-env.d.ts +1 -0
  159. package/rollup.config.js +26 -0
  160. package/src/app/App.tsx +13 -0
  161. package/src/app/EmbeddedComponent.tsx +432 -0
  162. package/src/app/index.html +20 -0
  163. package/src/app/index.tsx +19 -0
  164. package/src/app/lookup.ts +141 -0
  165. package/src/app/override-styles.css +96 -0
  166. package/src/crate-builder/CrateManager/contexts/1.1-context.jsonld +2660 -0
  167. package/src/crate-builder/CrateManager/contexts/1.2-DRAFT-context.jsonld +2918 -0
  168. package/src/crate-builder/CrateManager/contexts.ts +42 -0
  169. package/src/crate-builder/CrateManager/crate-manager-benchmarking.spec.ts +31 -0
  170. package/src/crate-builder/CrateManager/crate-manager-loading-exporting.spec.ts +431 -0
  171. package/src/crate-builder/CrateManager/crate-manager-operations.spec.ts +298 -0
  172. package/src/crate-builder/CrateManager/crate-manager.spec.ts +2336 -0
  173. package/src/crate-builder/CrateManager/crate-manager.ts +2111 -0
  174. package/src/crate-builder/CrateManager/lib.spec.ts +133 -0
  175. package/src/crate-builder/CrateManager/lib.ts +170 -0
  176. package/src/crate-builder/CrateManager/profile-manager.spec.ts +593 -0
  177. package/src/crate-builder/CrateManager/profile-manager.ts +367 -0
  178. package/src/crate-builder/CrateManager/schema-type-definitions.json +35122 -0
  179. package/src/crate-builder/CrateManager/validate-identifier.spec.ts +82 -0
  180. package/src/crate-builder/CrateManager/validate-identifier.ts +65 -0
  181. package/src/crate-builder/RenderEntity/Add.tsx +249 -0
  182. package/src/crate-builder/RenderEntity/AddControl.stories.tsx +126 -0
  183. package/src/crate-builder/RenderEntity/AddControl.tsx +84 -0
  184. package/src/crate-builder/RenderEntity/AutoComplete.tsx +215 -0
  185. package/src/crate-builder/RenderEntity/BulkAdd.tsx +136 -0
  186. package/src/crate-builder/RenderEntity/DeleteProperty.tsx +33 -0
  187. package/src/crate-builder/RenderEntity/DialogAddProperty.tsx +83 -0
  188. package/src/crate-builder/RenderEntity/DialogBrowseEntities.tsx +136 -0
  189. package/src/crate-builder/RenderEntity/DialogEditContext.tsx +107 -0
  190. package/src/crate-builder/RenderEntity/DialogPreviewCrate.tsx +54 -0
  191. package/src/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.tsx +65 -0
  192. package/src/crate-builder/RenderEntity/DialogSaveEntityTemplate.tsx +87 -0
  193. package/src/crate-builder/RenderEntity/DisplayPropertyName.stories.tsx +30 -0
  194. package/src/crate-builder/RenderEntity/DisplayPropertyName.tsx +21 -0
  195. package/src/crate-builder/RenderEntity/EntityId.tsx +75 -0
  196. package/src/crate-builder/RenderEntity/EntityName.tsx +49 -0
  197. package/src/crate-builder/RenderEntity/EntityProperty.tsx +188 -0
  198. package/src/crate-builder/RenderEntity/EntityPropertyInstance.tsx +255 -0
  199. package/src/crate-builder/RenderEntity/EntityType.tsx +95 -0
  200. package/src/crate-builder/RenderEntity/ItemLink.tsx +37 -0
  201. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.stories.tsx +43 -0
  202. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.tsx +141 -0
  203. package/src/crate-builder/RenderEntity/PropertyHelp.tsx +39 -0
  204. package/src/crate-builder/RenderEntity/RenderControls.tsx +278 -0
  205. package/src/crate-builder/RenderEntity/RenderLinkedItem.tsx +139 -0
  206. package/src/crate-builder/RenderEntity/RenderPropertyHelp.tsx +41 -0
  207. package/src/crate-builder/RenderEntity/RenderReverseConnections.tsx +150 -0
  208. package/src/crate-builder/RenderEntity/RenderTypes.tsx +102 -0
  209. package/src/crate-builder/RenderEntity/Shell2.tsx +576 -0
  210. package/src/crate-builder/RenderEntity/UnlinkEntity.tsx +30 -0
  211. package/src/crate-builder/RenderEntity/auto-complete.lib.ts +184 -0
  212. package/src/crate-builder/RenderEntity/keys.ts +4 -0
  213. package/src/crate-builder/RenderEntity/layout.spec.js +593 -0
  214. package/src/crate-builder/RenderEntity/layout.ts +220 -0
  215. package/src/crate-builder/Shell.tsx +323 -0
  216. package/src/crate-builder/component.css +65 -0
  217. package/src/crate-builder/editor-state.ts +114 -0
  218. package/src/crate-builder/helpers.ts +16 -0
  219. package/src/crate-builder/i18n.ts +22 -0
  220. package/src/crate-builder/lib/validate-iri.js +69 -0
  221. package/src/crate-builder/lib/validate-iri.ts +57 -0
  222. package/src/crate-builder/locales/en.js +149 -0
  223. package/src/crate-builder/locales/hu.js +147 -0
  224. package/src/crate-builder/primitives/Boolean.stories.tsx +33 -0
  225. package/src/crate-builder/primitives/Boolean.tsx +67 -0
  226. package/src/crate-builder/primitives/Date.stories.tsx +32 -0
  227. package/src/crate-builder/primitives/Date.tsx +58 -0
  228. package/src/crate-builder/primitives/DateTime.stories.tsx +32 -0
  229. package/src/crate-builder/primitives/DateTime.tsx +64 -0
  230. package/src/crate-builder/primitives/Geo.stories.tsx +57 -0
  231. package/src/crate-builder/primitives/Geo.tsx +225 -0
  232. package/src/crate-builder/primitives/Map.SelectArea.js +359 -0
  233. package/src/crate-builder/primitives/Map.stories.tsx +61 -0
  234. package/src/crate-builder/primitives/Map.tsx +124 -0
  235. package/src/crate-builder/primitives/Number.stories.tsx +74 -0
  236. package/src/crate-builder/primitives/Number.tsx +166 -0
  237. package/src/crate-builder/primitives/Select.stories.tsx +66 -0
  238. package/src/crate-builder/primitives/Select.tsx +122 -0
  239. package/src/crate-builder/primitives/SelectObject.stories.tsx +29 -0
  240. package/src/crate-builder/primitives/SelectObject.tsx +105 -0
  241. package/src/crate-builder/primitives/SelectUrl.stories.tsx +42 -0
  242. package/src/crate-builder/primitives/SelectUrl.tsx +110 -0
  243. package/src/crate-builder/primitives/Text.stories.tsx +106 -0
  244. package/src/crate-builder/primitives/Text.tsx +197 -0
  245. package/src/crate-builder/primitives/Time.stories.tsx +38 -0
  246. package/src/crate-builder/primitives/Time.tsx +71 -0
  247. package/src/crate-builder/primitives/Url.stories.tsx +43 -0
  248. package/src/crate-builder/primitives/Url.tsx +75 -0
  249. package/src/crate-builder/primitives/Value.stories.tsx +37 -0
  250. package/src/crate-builder/primitives/Value.tsx +30 -0
  251. package/src/crate-builder/primitives/date-libs.ts +12 -0
  252. package/src/crate-builder/profile-schema.json +145 -0
  253. package/src/crate-builder/property-definitions.ts +78 -0
  254. package/src/crate-builder/store.ts +14 -0
  255. package/src/crate-builder/tailwind.css +7 -0
  256. package/src/crate-builder/types.d.ts +318 -0
  257. package/src/examples/collection/collections-entity-example.json +131 -0
  258. package/src/examples/collection/crate-builder-entity-example.json +33 -0
  259. package/src/examples/item/complex-collection/ro-crate-metadata.json +174 -0
  260. package/src/examples/item/complex-item/ro-crate-metadata.json +769 -0
  261. package/src/examples/item/crate-with-language.json +38 -0
  262. package/src/examples/item/empty/ro-crate-metadata.json +20 -0
  263. package/src/examples/item/item-with-relationship-and-action/ro-crate-metadata.json +66 -0
  264. package/src/examples/item/large-crate/ro-crate-metadata.json +5762 -0
  265. package/src/examples/item/multiple-types/ro-crate-metadata.json +20 -0
  266. package/src/examples/item/ridiculously-big-collection/ro-crate-metadata.json +162977 -0
  267. package/src/examples/profile/aroma.complex.profile.json +11098 -0
  268. package/src/examples/profile/aroma.profile.json +9158 -0
  269. package/src/examples/profile/nyingarn-item-profile.json +426 -0
  270. package/src/examples/profile/profile-to-test-inverse-associations.json +73 -0
  271. package/src/examples/profile/profile-to-test-multiple-types.json +31 -0
  272. package/src/examples/profile/profile-with-all-primitives-and-groups.json +207 -0
  273. package/src/examples/profile/profile-with-all-primitives.json +244 -0
  274. package/src/examples/profile/profile-with-constraints.json +446 -0
  275. package/src/examples/profile/profile-with-resolve.json +57 -0
  276. package/src/examples/profile/vocabulary-creation-profile.json +231 -0
  277. package/src/images.d.ts +5 -0
  278. package/src/index.ts +10 -0
  279. package/src/types.ts +104 -0
  280. package/tailwind.config.js +20 -0
  281. package/tsconfig.app.json +31 -0
  282. package/tsconfig.json +26 -0
  283. package/typedoc.json +11 -0
  284. package/update-deps.sh +4 -0
  285. package/vite-env.d.ts +1 -0
  286. package/vite.config.ts +41 -0
@@ -0,0 +1,145 @@
1
+ {
2
+ "title": "Validate Profile",
3
+ "description": "Validate a describo profile",
4
+ "type": "object",
5
+ "properties": {
6
+ "metadata": {
7
+ "description": "Metadata about this profile",
8
+ "type": "object",
9
+ "properties": {
10
+ "name": { "type": "string" },
11
+ "description": { "type": "string" },
12
+ "version": { "type": "number" },
13
+ "keywords": { "type": "array", "items": { "type": "string" } },
14
+ "warnMissingProperty": { "type": "boolean" },
15
+ "enableEntityTimestamps": { "type": "boolean" }
16
+ },
17
+ "required": ["name", "description", "version"],
18
+ "additionalProperties": false
19
+ },
20
+ "context": {
21
+ "anyOf": [{ "type": "array" }, { "type": "string" }, { "type": "object" }]
22
+ },
23
+ "propertyAssociations": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "properties": {
28
+ "property": { "type": "string" },
29
+ "propertyId": { "type": "string" },
30
+ "inverse": {
31
+ "type": "object",
32
+ "properties": {
33
+ "property": { "type": "string" },
34
+ "propertyId": { "type": "string" }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ },
40
+ "layouts": {
41
+ "description": "Layout definitions for property groups",
42
+ "type": "array",
43
+ "items": {
44
+ "type": "object",
45
+ "properties": {
46
+ "appliesTo": { "type": "array", "items": { "type": "string" } },
47
+ "^[A-Z,a-z]*": {
48
+ "type": "object",
49
+ "properties": {
50
+ "label": { "type": "string" },
51
+ "description": { "type": "string" },
52
+ "order": { "type": "string" }
53
+ },
54
+ "required": ["label", "description", "order"]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ "resolve": {
60
+ "description": "Configuration to resolve property associations",
61
+ "type": "array",
62
+ "items": {
63
+ "type": "object",
64
+ "properties": {
65
+ "types": { "type": "array", "items": { "type": "string" } },
66
+ "properties": { "type": "array", "items": { "type": "string" } }
67
+ },
68
+ "required": ["types", "properties"],
69
+ "additionalProperties": false
70
+ }
71
+ },
72
+ "localisation": {
73
+ "description": "Configuration to localise class names",
74
+ "type": "object",
75
+ "patternProperties": {
76
+ "^[A-Z,a-z]*": {
77
+ "type": "string"
78
+ }
79
+ }
80
+ },
81
+ "classes": {
82
+ "description": "Class definitions",
83
+ "type": "object",
84
+ "patternProperties": {
85
+ "^[A-Z,a-z]*": {
86
+ "type": "object",
87
+ "properties": {
88
+ "definition": {
89
+ "type": "string",
90
+ "enum": ["inherit", "override"]
91
+ },
92
+ "subClassOf": { "type": "array", "items": { "type": "string" } },
93
+ "inputs": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "object",
97
+ "properties": {
98
+ "id": { "type": "string" },
99
+ "name": { "type": "string" },
100
+ "label": { "type": "string" },
101
+ "multiple": { "type": "boolean" },
102
+ "required": { "type": "boolean" },
103
+ "hide": { "type": "boolean" },
104
+ "readonly": { "type": "boolean" },
105
+ "group": { "type": "string" },
106
+ "type": {
107
+ "anyOf": [
108
+ { "type": "array", "items": { "type": "string" } },
109
+ {
110
+ "type": "string",
111
+ "enum": ["Select", "MultiSelect", "Value"]
112
+ }
113
+ ]
114
+ }
115
+ },
116
+ "required": ["id", "name", "type"],
117
+ "additionalProperties": true
118
+ }
119
+ },
120
+ "label": { "type": "string" }
121
+ },
122
+ "required": ["definition", "subClassOf", "inputs"],
123
+ "additionalProperties": false
124
+ }
125
+ }
126
+ },
127
+ "lookup": {
128
+ "description": "Lookup definitions",
129
+ "type": "object",
130
+ "patternProperties": {
131
+ "^[A-Z,a-z]*": {
132
+ "type": "object",
133
+ "properties": {
134
+ "fields": { "type": "array" },
135
+ "datapacks": { "type": "array", "items": { "type": "string" } }
136
+ },
137
+ "required": ["fields", "datapacks"],
138
+ "additionalProperties": false
139
+ }
140
+ }
141
+ }
142
+ },
143
+ "required": ["metadata", "classes"],
144
+ "additionalProperties": false
145
+ }
@@ -0,0 +1,78 @@
1
+ export const propertyDefinitions = {
2
+ crate: {
3
+ type: [Object, undefined],
4
+ },
5
+ profile: {
6
+ type: [Object, undefined],
7
+ },
8
+ entityId: {
9
+ type: [String, undefined],
10
+ },
11
+ lookup: {
12
+ type: [Object, undefined],
13
+ },
14
+ enableContextEditor: {
15
+ type: Boolean,
16
+ default: true,
17
+ validator: (val: boolean) => [true, false].includes(val),
18
+ },
19
+ enableCratePreview: {
20
+ type: Boolean,
21
+ default: true,
22
+ validator: (val: boolean) => [true, false].includes(val),
23
+ },
24
+ enableBrowseEntities: {
25
+ type: Boolean,
26
+ default: true,
27
+ validator: (val: boolean) => [true, false].includes(val),
28
+ },
29
+ enableTemplateSave: {
30
+ type: Boolean,
31
+ default: false,
32
+ validator: (val: boolean) => [true, false].includes(val),
33
+ },
34
+ enableReverseLinkBrowser: {
35
+ type: Boolean,
36
+ default: false,
37
+ validator: (val: boolean) => [true, false].includes(val),
38
+ },
39
+ enableUrlMarkup: {
40
+ type: Boolean,
41
+ default: true,
42
+ validator: (val: boolean) => [true, false].includes(val),
43
+ },
44
+ enableEntityTimestamps: {
45
+ type: Boolean,
46
+ default: false,
47
+ validator: (val: boolean) => [true, false].includes(val),
48
+ },
49
+ purgeUnlinkedEntities: {
50
+ type: Boolean,
51
+ default: true,
52
+ validator: (val: boolean) => [true, false].includes(val),
53
+ },
54
+ readonly: {
55
+ type: Boolean,
56
+ default: false,
57
+ validator: (val: boolean) => [true, false].includes(val),
58
+ },
59
+ webComponent: {
60
+ type: Boolean,
61
+ default: false,
62
+ validator: (val: boolean) => [true, false].includes(val),
63
+ },
64
+ tabLocation: {
65
+ type: String,
66
+ default: "left",
67
+ validator: (val: string) => ["top", "bottom", "left", "right"].includes(val),
68
+ },
69
+ showControls: {
70
+ type: Boolean,
71
+ default: true,
72
+ validator: (val: boolean) => [true, false].includes(val),
73
+ },
74
+ language: {
75
+ type: String,
76
+ default: "en",
77
+ },
78
+ };
@@ -0,0 +1,14 @@
1
+ import { create } from 'zustand';
2
+ import { EditorState } from "./editor-state";
3
+
4
+ interface Store {
5
+ configuration: Record<string, any>;
6
+ editorState: EditorState;
7
+ setConfiguration: (config: Record<string, any>) => void;
8
+ }
9
+
10
+ export const useStateStore = create<Store>((set) => ({
11
+ configuration: {},
12
+ editorState: new EditorState(),
13
+ setConfiguration: (config) => set({ configuration: config }),
14
+ }));
@@ -0,0 +1,7 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* a {
6
+ @apply text-blue-600 text-lg tracking-wide;
7
+ } */
@@ -0,0 +1,318 @@
1
+ // CRATE RELATED DEFINITIONS
2
+ // Entity Type Definition
3
+ export type PrimitiveType = string | number | boolean;
4
+
5
+ export type EntityReference = {
6
+ "@id": string;
7
+ };
8
+
9
+ export interface UnverifiedEntityDefinition {
10
+ "@id"?: string;
11
+ "@type"?: (string | number | boolean)[] | string | number | boolean;
12
+ name?: string;
13
+ [key: string]:
14
+ | (PrimitiveType | EntityReference | undefined | null)[]
15
+ | PrimitiveType
16
+ | EntityReference;
17
+ }
18
+
19
+ export interface NormalisedEntityDefinition {
20
+ "@id": string;
21
+ "@type": string[];
22
+ name: string;
23
+ [key: string]: (PrimitiveType | EntityReference)[];
24
+ }
25
+
26
+ // Context Type Definition
27
+ export type UnverifiedContext = any;
28
+
29
+ type NormalisedContext = [
30
+ ...string[],
31
+ {
32
+ [key: string]: string;
33
+ },
34
+ ];
35
+
36
+ // Crate Type Definition
37
+ export interface UnverifiedCrate {
38
+ "@context": UnverifiedContext;
39
+ "@graph": UnverifiedEntityDefinition[];
40
+ }
41
+
42
+ export interface NormalisedCrate {
43
+ "@context": NormalisedContext;
44
+ "@graph": NormalisedEntityDefinition[];
45
+ }
46
+
47
+ export class CrateManagerType {
48
+ crate: {
49
+ "@context": NormalisedContext;
50
+ "@graph": Array<NormalisedEntityDefinition | undefined>;
51
+ };
52
+ pm: ProfileManagerType;
53
+ reverse: {
54
+ [key: string]: any;
55
+ };
56
+ graphLength: number;
57
+ rootDescriptor?: number;
58
+ rootDataset?: number;
59
+ entityIdIndex: {
60
+ [key: string]: number;
61
+ };
62
+ providedContext: UnverifiedContext;
63
+ contextDefinitions: { [key: string]: boolean };
64
+ localContext: { [key: string]: string };
65
+ entityTypes: { [key: string]: number };
66
+ entityTimestamps: Boolean;
67
+ blankNodes: string[];
68
+ coreProperties: string[];
69
+ errors: {
70
+ hasError: Boolean;
71
+ init: { description: string; messages: string[] };
72
+ missingIdentifier: { description: string; entity: UnverifiedEntityDefinition[] };
73
+ missingTypeDefinition: { description: string; entity: UnverifiedEntityDefinition[] };
74
+ invalidIdentifier: { description: string; entity: UnverifiedEntityDefinition[] };
75
+ };
76
+ warnings: {
77
+ hasWarning: Boolean;
78
+ init: { description: string; messages: string[] };
79
+ invalidIdentifier: { description: string; entity: UnverifiedEntityDefinition[] };
80
+ };
81
+ constructor({
82
+ crate,
83
+ pm,
84
+ context = undefined,
85
+ entityTimestamps = false,
86
+ }: {
87
+ crate: UnverifiedCrate;
88
+ pm: ProfileManagerType;
89
+ context: UnverifiedContext;
90
+ entityTimestamps: Boolean;
91
+ });
92
+ getContext(): NormalisedContext;
93
+ setContext(context: NormalisedContext);
94
+ setProfileManager(pm: ProfileManagerType);
95
+ getRootDataset(): NormalisedEntityDefinition;
96
+ getEntity({
97
+ id,
98
+ stub = false,
99
+ link = true,
100
+ materialise = true,
101
+ }: {
102
+ id: string;
103
+ stub?: boolean;
104
+ link?: boolean;
105
+ materialise?: boolean;
106
+ }): NormalisedEntityDefinition | undefined;
107
+ getEntityTypes(): string[];
108
+ *getEntities(
109
+ params: { limit?: number; query?: string; type?: string } = {
110
+ limit: undefined,
111
+ query: undefined,
112
+ type: undefined,
113
+ }
114
+ ): Generator<NormalisedEntityDefinition>;
115
+ locateEntity({
116
+ entityIds,
117
+ strict = true,
118
+ }: {
119
+ entityIds: string[];
120
+ strict?: boolean;
121
+ }): NormalisedEntityDefinition[] | undefined;
122
+ resolveLinkedEntityAssociations({
123
+ entity,
124
+ profile,
125
+ }: {
126
+ entity: NormalisedEntityDefinition;
127
+ profile: NormalisedProfile;
128
+ }):
129
+ | {
130
+ property: string;
131
+ "@id": string;
132
+ "@type": string[];
133
+ name: string;
134
+ }[]
135
+ | [];
136
+ addEntity(entity: UnverifiedEntityDefinition): NormalisedEntityDefinition;
137
+ addBlankNode(type: string): NormalisedEntityDefinition;
138
+ addFileOrFolder({
139
+ path,
140
+ type = "File",
141
+ }: {
142
+ path: string;
143
+ type: string;
144
+ }): NormalisedEntityDefinition;
145
+ addFile(path: string): NormalisedEntityDefinition;
146
+ addFolder(path: string): NormalisedEntityDefinition;
147
+ deleteEntity({ id }: { id: string });
148
+ setProperty({
149
+ id,
150
+ property,
151
+ propertyId,
152
+ value,
153
+ }: {
154
+ id: string;
155
+ property: string;
156
+ propertyId?: string;
157
+ value: PrimitiveType | EntityReference;
158
+ }): boolean | undefined;
159
+ updateProperty({
160
+ id,
161
+ property,
162
+ idx,
163
+ value,
164
+ }: {
165
+ id: string;
166
+ property: string;
167
+ idx?: number;
168
+ value: PrimitiveType | PrimitiveType[] | EntityReference;
169
+ }): NormalisedEntityDefinition | undefined | string;
170
+ deleteProperty({ id, property, idx }: { id: string; property: string; idx?: number });
171
+ ingestAndLink({
172
+ id = undefined,
173
+ property = undefined,
174
+ propertyId = undefined,
175
+ json = {},
176
+ }: {
177
+ id: string | undefined;
178
+ property: string | undefined;
179
+ propertyId: string | undefined;
180
+ json: UnverifiedEntityDefinition;
181
+ });
182
+ flatten(json: UnverifiedEntityDefinition): NormalisedEntityDefinition[];
183
+ linkEntity({
184
+ id,
185
+ property,
186
+ propertyId = undefined,
187
+ value,
188
+ }: {
189
+ id: string;
190
+ property: string;
191
+ propertyId?: string;
192
+ value: { "@id": string };
193
+ }): void;
194
+ unlinkEntity({
195
+ id = undefined,
196
+ property = undefined,
197
+ value = undefined,
198
+ stop = false,
199
+ }: {
200
+ id: string | undefined;
201
+ property: string | undefined;
202
+ value: { "@id": string } | undefined;
203
+ stop?: boolean;
204
+ });
205
+ purgeUnlinkedEntities(): void;
206
+ exportCrate(): NormalisedCrate;
207
+ exportEntityTemplate({
208
+ id,
209
+ resolveDepth = 0,
210
+ }: {
211
+ id: string;
212
+ resolveDepth: number;
213
+ }): NormalisedEntityDefinition;
214
+ getErrors(): errorsInterface;
215
+ getWarnings(): warningsInterface;
216
+ __updateContext({ name, id }: { name: string; id?: string }): void;
217
+ __normaliseContext(context: UnverifiedContext): NormalisedContext;
218
+ __storeEntityType(entity: NormalisedEntityDefinition): void;
219
+ __removeEntityType(entity: NormalisedEntityDefinition);
220
+ __collectAllDefinitions(context: NormalisedContext): { [key: string]: boolean };
221
+ __setError(error: keyof typeof this.errors, entity: string | UnverifiedEntityDefinition);
222
+ __setWarning(warning: keyof typeof this.warnings, entity: string | UnverifiedEntityDefinition);
223
+ __materialiseEntity({ id }: { id: string }): NormalisedEntityDefinition;
224
+ __confirmNoClash({
225
+ entity,
226
+ mintNewId = true,
227
+ }: {
228
+ entity: NormalisedEntityDefinition;
229
+ mintNewId?: boolean;
230
+ }): NormalisedEntityDefinition | boolean;
231
+ __updateEntityId({ oldId, newId }: { oldId: string; newId: string });
232
+ __addReverse({ id, property, value }: { id: string; property: string; value: EntityReference });
233
+ __removeAssociations(entity: NormalisedEntityDefinition): NormalisedEntityDefinition;
234
+ }
235
+
236
+ // PROFILE RELATED DEFINITIONS
237
+ export interface ProfileLayoutGroup {
238
+ name: string;
239
+ label: string;
240
+ description?: string;
241
+ order?: number;
242
+ inputs: ProfileInput[];
243
+ properties?: string[];
244
+ hasData?: boolean;
245
+ missingRequiredData?: boolean;
246
+ }
247
+ export interface ProfileLayout {
248
+ appliesTo: string[];
249
+ [key: string]: ProfileLayoutGroup;
250
+ }
251
+
252
+ export type ProfileAssociation = {
253
+ property: string;
254
+ propertyId: string;
255
+ inverse: { property: string; propertyId: string };
256
+ };
257
+
258
+ export type ProfileInput = {
259
+ id: string;
260
+ name: string;
261
+ label?: string;
262
+ help?: string;
263
+ required?: boolean;
264
+ multiple?: boolean;
265
+ hide?: boolean;
266
+ group?: string;
267
+ type: string[];
268
+ style?: "checkbox" | "radio" | "dropdown";
269
+ handledMultipleValues?: boolean;
270
+ values?: string[] | { "@id": string; "@type": string; name: string }[];
271
+ };
272
+ export interface NormalisedProfile {
273
+ metadata: {
274
+ name: string;
275
+ id: string;
276
+ description: string;
277
+ version: number | string;
278
+ keywords: string | string[];
279
+ warnMissingProperty: boolean;
280
+ };
281
+ context?: string | (string | { [key: string]: string })[] | { [key: string]: string };
282
+ layouts?: ProfileLayout[];
283
+ resolve?: {
284
+ types: string[];
285
+ properties: string[];
286
+ }[];
287
+ propertyAssociations?: ProfileAssociation[];
288
+ localisation?: { [key: string]: string };
289
+ lookup?: {
290
+ [key: string]: { fields: stringp[]; datapacks: string[] };
291
+ };
292
+ classes: {
293
+ [className: string]: {
294
+ definition: "override" | "inherit";
295
+ subClassOf: string[];
296
+ inputs: ProfileInput[];
297
+ };
298
+ };
299
+ }
300
+
301
+ export class ProfileManagerType {
302
+ profile: Profile;
303
+ context?: any;
304
+ $key?: number;
305
+ constructor({ profile }: { profile: Profile });
306
+ getLayout({ entity }: { entity: Entity }): Layout | null;
307
+ getPropertyAssociations(): { [key: string]: { property: string; propertyId?: string } };
308
+ getClasses(): string[];
309
+ getEntityTypeHierarchy({ entity }: { entity: Entity }): string[];
310
+ getPropertyDefinition({ property, entity }: { property: string; entity: Entity }): {
311
+ propertyDefinition: any;
312
+ };
313
+ mapTypeHierarchies({ types }: { types: string[] }): string[];
314
+ getInputsFromProfile({ entity }: { entity: Entity }): any[];
315
+ getAllInputs({ entity }: { entity: Entity }): { inputs: any[] };
316
+ getTypeDefinition({ entity }: { entity: Entity }): "inherit" | "override";
317
+ getTypeLabel(type: string): string;
318
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "describoId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
3
+ "@id": "#E000245",
4
+ "@type": "Entity",
5
+ "name": "School Bell Games",
6
+ "properties": {
7
+ "entityType": [
8
+ {
9
+ "propertyId": "iip3t9ggb7vuv95h062sgcerrzalz7ld",
10
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
11
+ "property": "entityType",
12
+ "tgtEntityId": "hykc9sqehehwrh900ll0pvs9resjbmx4",
13
+ "tgtEntity": {
14
+ "@id": "#Playground%20Game%20-%20Miscellaneous%20Activities",
15
+ "@type": "EntityType",
16
+ "name": "Playground Game - Miscellaneous Activities"
17
+ }
18
+ }
19
+ ],
20
+ "identifier": [
21
+ {
22
+ "propertyId": "lcg05iv9eprttsp705tfogh1apm7tii0",
23
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
24
+ "property": "identifier",
25
+ "value": "E000245"
26
+ }
27
+ ],
28
+ "efunction": [
29
+ {
30
+ "propertyId": "j1zboiqcf56bs3jszkf5tdtg8y0xbs44",
31
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
32
+ "property": "efunction",
33
+ "value": "Language Play, Playground Game, Quiet Play"
34
+ }
35
+ ],
36
+ "esumnote": [
37
+ {
38
+ "propertyId": "jqphzadq9pwb4gfurr3roba1lpvhs28i",
39
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
40
+ "property": "esumnote",
41
+ "value": "At some schools the bell provokes certain play activities."
42
+ }
43
+ ],
44
+ "efullnote": [
45
+ {
46
+ "propertyId": "qmn9qu0ltk0ta7ldphgzwgegvuzw0m0l",
47
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
48
+ "property": "efullnote",
49
+ "value": "<H4>At Erskineville</H4>\r\n\r\nWaiting for the Bell\r\n\r\nTha Whole School is involved\r\n\r\n<em>Please see the attached sheet for full details of how the game worked.</em>\r\n\r\n<H4>At BBC</H4>\r\n\r\nSaved by the bell\r\n\r\nPlayers: Any number\r\nBoys\r\nAge: 8\r\n\r\nWhen the bell goes, someone can say, “Saved by the bell!” and that saves the game until the next play time when it can be continued. In cricket, the person batting stays in, in other games players who are tagged by ‘It’ after they’ve said “Saved by the bell!” are not ‘It’, etc.\r\n\r\n(JMcK note: There is a similar function in electronic video games, where players can save the game at a certain point and resume playing when they want to.)"
50
+ }
51
+ ],
52
+ "eappenddate": [
53
+ {
54
+ "propertyId": "c9oph2tz0k2j6a784gnytdnhx4y0w22m",
55
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
56
+ "property": "eappenddate",
57
+ "value": "2009-03-20 15:34:43"
58
+ }
59
+ ],
60
+ "relationshipObject": [
61
+ {
62
+ "propertyId": "tu62i83pl38ifqq2qtv7o01iqqpk7476",
63
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
64
+ "property": "relationshipObject",
65
+ "tgtEntityId": "a3m9hunrx7ira5mwea8pfe8ksmb70305",
66
+ "tgtEntity": {
67
+ "@id": "#E000011",
68
+ "@type": "Entity",
69
+ "name": "McKinty, Judith"
70
+ }
71
+ },
72
+ {
73
+ "propertyId": "vj7vz80ip88f7jsy43gk4vwfpcztly0o",
74
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
75
+ "property": "relationshipObject",
76
+ "tgtEntityId": "v43mdyp7i1z9jphhlf0f2c38n4pv1laz",
77
+ "tgtEntity": {
78
+ "@id": "#E000233",
79
+ "@type": "Entity",
80
+ "name": "Erskineville Public School"
81
+ }
82
+ },
83
+ {
84
+ "propertyId": "d1mdul4lf10lanflfh1k1cm7pxaxwphd",
85
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
86
+ "property": "relationshipObject",
87
+ "tgtEntityId": "u8qciqnf77gycqfu114atwcrfq3ow1kp",
88
+ "tgtEntity": {
89
+ "@id": "#E000352",
90
+ "@type": "Entity",
91
+ "name": "Brisbane Boys College"
92
+ }
93
+ }
94
+ ],
95
+ "relationshipSubject": [
96
+ {
97
+ "propertyId": "tsl8pakdltn56gla8rxl2wdkgi932cu0",
98
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
99
+ "property": "relationshipSubject",
100
+ "tgtEntityId": "v43mdyp7i1z9jphhlf0f2c38n4pv1laz",
101
+ "tgtEntity": {
102
+ "@id": "#E000233",
103
+ "@type": "Entity",
104
+ "name": "Erskineville Public School"
105
+ }
106
+ },
107
+ {
108
+ "propertyId": "oqir5ek9px3jm4s45k1ti76s9xu4pnl6",
109
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
110
+ "property": "relationshipSubject",
111
+ "tgtEntityId": "a3m9hunrx7ira5mwea8pfe8ksmb70305",
112
+ "tgtEntity": {
113
+ "@id": "#E000011",
114
+ "@type": "Entity",
115
+ "name": "McKinty, Judith"
116
+ }
117
+ },
118
+ {
119
+ "propertyId": "n1qy3uk9bz78bf4qnz11kv5sxacn84k4",
120
+ "srcEntityId": "zk9xqkuvq4s4ij0mrp45s1p0liy4b2wf",
121
+ "property": "relationshipSubject",
122
+ "tgtEntityId": "u8qciqnf77gycqfu114atwcrfq3ow1kp",
123
+ "tgtEntity": {
124
+ "@id": "#E000352",
125
+ "@type": "Entity",
126
+ "name": "Brisbane Boys College"
127
+ }
128
+ }
129
+ ]
130
+ }
131
+ }