@arpproject/recrate 0.1.7 → 0.1.8

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 (188) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/recrate.css +4 -4
  3. package/dist/recrate.es.js +34674 -114061
  4. package/package.json +41 -32
  5. package/.eslintrc.json +0 -37
  6. package/.storybook/main.ts +0 -40
  7. package/.storybook/preview.tsx +0 -46
  8. package/babel.config.json +0 -5
  9. package/docker-compose.yml +0 -30
  10. package/docs/.nojekyll +0 -1
  11. package/docs/assets/highlight.css +0 -99
  12. package/docs/assets/icons.js +0 -18
  13. package/docs/assets/icons.svg +0 -1
  14. package/docs/assets/main.js +0 -60
  15. package/docs/assets/navigation.js +0 -1
  16. package/docs/assets/search.js +0 -1
  17. package/docs/assets/style.css +0 -1448
  18. package/docs/classes/src_crate_builder_CrateManager_crate_manager.CrateManager.html +0 -240
  19. package/docs/classes/src_crate_builder_CrateManager_profile_manager.ProfileManager.html +0 -42
  20. package/docs/classes/src_crate_builder_editor_state.EditorState.html +0 -28
  21. package/docs/classes/src_crate_builder_types.CrateManagerType.html +0 -57
  22. package/docs/classes/src_crate_builder_types.ProfileManagerType.html +0 -13
  23. package/docs/functions/src_crate_builder_CrateManager_lib.isURL.html +0 -2
  24. package/docs/functions/src_crate_builder_CrateManager_lib.mintNewCrate.html +0 -3
  25. package/docs/functions/src_crate_builder_CrateManager_lib.normalise.html +0 -5
  26. package/docs/functions/src_crate_builder_CrateManager_lib.normaliseEntityType.html +0 -1
  27. package/docs/index.html +0 -58
  28. package/docs/interfaces/src_crate_builder_types.NormalisedCrate.html +0 -3
  29. package/docs/interfaces/src_crate_builder_types.NormalisedEntityDefinition.html +0 -4
  30. package/docs/interfaces/src_crate_builder_types.NormalisedProfile.html +0 -9
  31. package/docs/interfaces/src_crate_builder_types.ProfileLayout.html +0 -2
  32. package/docs/interfaces/src_crate_builder_types.ProfileLayoutGroup.html +0 -9
  33. package/docs/interfaces/src_crate_builder_types.UnverifiedCrate.html +0 -3
  34. package/docs/interfaces/src_crate_builder_types.UnverifiedEntityDefinition.html +0 -4
  35. package/docs/modules/src_crate_builder_CrateManager_crate_manager.html +0 -2
  36. package/docs/modules/src_crate_builder_CrateManager_lib.html +0 -6
  37. package/docs/modules/src_crate_builder_CrateManager_profile_manager.html +0 -2
  38. package/docs/modules/src_crate_builder_editor_state.html +0 -2
  39. package/docs/modules/src_crate_builder_types.html +0 -16
  40. package/docs/types/src_crate_builder_types.EntityReference.html +0 -1
  41. package/docs/types/src_crate_builder_types.NormalisedContext.html +0 -1
  42. package/docs/types/src_crate_builder_types.PrimitiveType.html +0 -1
  43. package/docs/types/src_crate_builder_types.ProfileAssociation.html +0 -1
  44. package/docs/types/src_crate_builder_types.ProfileInput.html +0 -1
  45. package/docs/types/src_crate_builder_types.UnverifiedContext.html +0 -1
  46. package/docs/variables/src_crate_builder_CrateManager_lib.urlProtocols.html +0 -1
  47. package/index.html +0 -13
  48. package/load-data-packs.cjs +0 -38
  49. package/postcss.config.cjs +0 -6
  50. package/public/favicon.ico +0 -0
  51. package/public/index.html +0 -43
  52. package/public/logo192.png +0 -0
  53. package/public/logo512.png +0 -0
  54. package/public/manifest.json +0 -25
  55. package/public/marker-icon.png +0 -0
  56. package/public/marker-shadow.png +0 -0
  57. package/public/robots.txt +0 -3
  58. package/react-app-env.d.ts +0 -1
  59. package/rollup.config.js +0 -26
  60. package/src/app/App.tsx +0 -13
  61. package/src/app/EmbeddedComponent.tsx +0 -432
  62. package/src/app/index.html +0 -20
  63. package/src/app/index.tsx +0 -19
  64. package/src/app/lookup.ts +0 -141
  65. package/src/app/override-styles.css +0 -96
  66. package/src/crate-builder/CrateManager/contexts/1.1-context.jsonld +0 -2660
  67. package/src/crate-builder/CrateManager/contexts/1.2-DRAFT-context.jsonld +0 -2918
  68. package/src/crate-builder/CrateManager/contexts.ts +0 -42
  69. package/src/crate-builder/CrateManager/crate-manager-benchmarking.spec.ts +0 -31
  70. package/src/crate-builder/CrateManager/crate-manager-loading-exporting.spec.ts +0 -431
  71. package/src/crate-builder/CrateManager/crate-manager-operations.spec.ts +0 -298
  72. package/src/crate-builder/CrateManager/crate-manager.spec.ts +0 -2336
  73. package/src/crate-builder/CrateManager/crate-manager.ts +0 -2111
  74. package/src/crate-builder/CrateManager/lib.spec.ts +0 -133
  75. package/src/crate-builder/CrateManager/lib.ts +0 -170
  76. package/src/crate-builder/CrateManager/profile-manager.spec.ts +0 -593
  77. package/src/crate-builder/CrateManager/profile-manager.ts +0 -367
  78. package/src/crate-builder/CrateManager/schema-type-definitions.json +0 -35122
  79. package/src/crate-builder/CrateManager/validate-identifier.spec.ts +0 -82
  80. package/src/crate-builder/CrateManager/validate-identifier.ts +0 -65
  81. package/src/crate-builder/RenderEntity/Add.tsx +0 -249
  82. package/src/crate-builder/RenderEntity/AddControl.stories.tsx +0 -126
  83. package/src/crate-builder/RenderEntity/AddControl.tsx +0 -84
  84. package/src/crate-builder/RenderEntity/AutoComplete.tsx +0 -215
  85. package/src/crate-builder/RenderEntity/BulkAdd.tsx +0 -136
  86. package/src/crate-builder/RenderEntity/DeleteProperty.tsx +0 -33
  87. package/src/crate-builder/RenderEntity/DialogAddProperty.tsx +0 -83
  88. package/src/crate-builder/RenderEntity/DialogBrowseEntities.tsx +0 -136
  89. package/src/crate-builder/RenderEntity/DialogEditContext.tsx +0 -107
  90. package/src/crate-builder/RenderEntity/DialogPreviewCrate.tsx +0 -54
  91. package/src/crate-builder/RenderEntity/DialogSaveCrateAsTemplate.tsx +0 -65
  92. package/src/crate-builder/RenderEntity/DialogSaveEntityTemplate.tsx +0 -87
  93. package/src/crate-builder/RenderEntity/DisplayPropertyName.stories.tsx +0 -30
  94. package/src/crate-builder/RenderEntity/DisplayPropertyName.tsx +0 -21
  95. package/src/crate-builder/RenderEntity/EntityId.tsx +0 -75
  96. package/src/crate-builder/RenderEntity/EntityName.tsx +0 -49
  97. package/src/crate-builder/RenderEntity/EntityProperty.tsx +0 -188
  98. package/src/crate-builder/RenderEntity/EntityPropertyInstance.tsx +0 -255
  99. package/src/crate-builder/RenderEntity/EntityType.tsx +0 -95
  100. package/src/crate-builder/RenderEntity/ItemLink.tsx +0 -37
  101. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.stories.tsx +0 -43
  102. package/src/crate-builder/RenderEntity/PaginateLinkedEntities.tsx +0 -141
  103. package/src/crate-builder/RenderEntity/PropertyHelp.tsx +0 -39
  104. package/src/crate-builder/RenderEntity/RenderControls.tsx +0 -278
  105. package/src/crate-builder/RenderEntity/RenderLinkedItem.tsx +0 -139
  106. package/src/crate-builder/RenderEntity/RenderPropertyHelp.tsx +0 -41
  107. package/src/crate-builder/RenderEntity/RenderReverseConnections.tsx +0 -150
  108. package/src/crate-builder/RenderEntity/RenderTypes.tsx +0 -102
  109. package/src/crate-builder/RenderEntity/Shell2.tsx +0 -576
  110. package/src/crate-builder/RenderEntity/UnlinkEntity.tsx +0 -30
  111. package/src/crate-builder/RenderEntity/auto-complete.lib.ts +0 -184
  112. package/src/crate-builder/RenderEntity/keys.ts +0 -4
  113. package/src/crate-builder/RenderEntity/layout.spec.js +0 -593
  114. package/src/crate-builder/RenderEntity/layout.ts +0 -220
  115. package/src/crate-builder/Shell.tsx +0 -337
  116. package/src/crate-builder/component.css +0 -65
  117. package/src/crate-builder/editor-state.ts +0 -114
  118. package/src/crate-builder/emotionCache.ts +0 -8
  119. package/src/crate-builder/helpers.ts +0 -16
  120. package/src/crate-builder/i18n.ts +0 -22
  121. package/src/crate-builder/lib/validate-iri.js +0 -69
  122. package/src/crate-builder/lib/validate-iri.ts +0 -57
  123. package/src/crate-builder/locales/en.js +0 -149
  124. package/src/crate-builder/locales/hu.js +0 -147
  125. package/src/crate-builder/primitives/Boolean.stories.tsx +0 -33
  126. package/src/crate-builder/primitives/Boolean.tsx +0 -67
  127. package/src/crate-builder/primitives/Date.stories.tsx +0 -32
  128. package/src/crate-builder/primitives/Date.tsx +0 -58
  129. package/src/crate-builder/primitives/DateTime.stories.tsx +0 -32
  130. package/src/crate-builder/primitives/DateTime.tsx +0 -64
  131. package/src/crate-builder/primitives/Geo.stories.tsx +0 -57
  132. package/src/crate-builder/primitives/Geo.tsx +0 -225
  133. package/src/crate-builder/primitives/Map.SelectArea.js +0 -359
  134. package/src/crate-builder/primitives/Map.stories.tsx +0 -61
  135. package/src/crate-builder/primitives/Map.tsx +0 -124
  136. package/src/crate-builder/primitives/Number.stories.tsx +0 -74
  137. package/src/crate-builder/primitives/Number.tsx +0 -166
  138. package/src/crate-builder/primitives/Select.stories.tsx +0 -66
  139. package/src/crate-builder/primitives/Select.tsx +0 -121
  140. package/src/crate-builder/primitives/SelectObject.stories.tsx +0 -29
  141. package/src/crate-builder/primitives/SelectObject.tsx +0 -105
  142. package/src/crate-builder/primitives/SelectUrl.stories.tsx +0 -42
  143. package/src/crate-builder/primitives/SelectUrl.tsx +0 -110
  144. package/src/crate-builder/primitives/Text.stories.tsx +0 -106
  145. package/src/crate-builder/primitives/Text.tsx +0 -197
  146. package/src/crate-builder/primitives/Time.stories.tsx +0 -38
  147. package/src/crate-builder/primitives/Time.tsx +0 -71
  148. package/src/crate-builder/primitives/Url.stories.tsx +0 -43
  149. package/src/crate-builder/primitives/Url.tsx +0 -75
  150. package/src/crate-builder/primitives/Value.stories.tsx +0 -37
  151. package/src/crate-builder/primitives/Value.tsx +0 -30
  152. package/src/crate-builder/primitives/date-libs.ts +0 -12
  153. package/src/crate-builder/profile-schema.json +0 -145
  154. package/src/crate-builder/property-definitions.ts +0 -78
  155. package/src/crate-builder/recrate.css +0 -3
  156. package/src/crate-builder/store.ts +0 -14
  157. package/src/crate-builder/tailwind.css +0 -5
  158. package/src/crate-builder/types.d.ts +0 -318
  159. package/src/examples/collection/collections-entity-example.json +0 -131
  160. package/src/examples/collection/crate-builder-entity-example.json +0 -33
  161. package/src/examples/item/complex-collection/ro-crate-metadata.json +0 -174
  162. package/src/examples/item/complex-item/ro-crate-metadata.json +0 -769
  163. package/src/examples/item/crate-with-language.json +0 -38
  164. package/src/examples/item/empty/ro-crate-metadata.json +0 -20
  165. package/src/examples/item/item-with-relationship-and-action/ro-crate-metadata.json +0 -66
  166. package/src/examples/item/large-crate/ro-crate-metadata.json +0 -5762
  167. package/src/examples/item/multiple-types/ro-crate-metadata.json +0 -20
  168. package/src/examples/item/ridiculously-big-collection/ro-crate-metadata.json +0 -162977
  169. package/src/examples/profile/aroma.complex.profile.json +0 -11098
  170. package/src/examples/profile/aroma.profile.json +0 -9158
  171. package/src/examples/profile/nyingarn-item-profile.json +0 -426
  172. package/src/examples/profile/profile-to-test-inverse-associations.json +0 -73
  173. package/src/examples/profile/profile-to-test-multiple-types.json +0 -31
  174. package/src/examples/profile/profile-with-all-primitives-and-groups.json +0 -207
  175. package/src/examples/profile/profile-with-all-primitives.json +0 -244
  176. package/src/examples/profile/profile-with-constraints.json +0 -446
  177. package/src/examples/profile/profile-with-resolve.json +0 -57
  178. package/src/examples/profile/vocabulary-creation-profile.json +0 -231
  179. package/src/images.d.ts +0 -5
  180. package/src/index.ts +0 -12
  181. package/src/types.ts +0 -104
  182. package/tailwind.config.js +0 -21
  183. package/tsconfig.app.json +0 -31
  184. package/tsconfig.json +0 -26
  185. package/typedoc.json +0 -11
  186. package/update-deps.sh +0 -4
  187. package/vite-env.d.ts +0 -1
  188. package/vite.config.ts +0 -46
@@ -1,359 +0,0 @@
1
- /**
2
- * L.Map.SelectArea - Area selection tool for leaflet
3
- *
4
- * @author Alexander Milevski <info@w8r.name>
5
- * @see https://github.com/w8r/leaflet-area-select
6
- * @license MIT
7
- * @preserve
8
- */
9
-
10
- // UMD
11
- export default function AreaSelectInit(L) {
12
- var trueFn = function () {
13
- return true;
14
- };
15
-
16
- /**
17
- * @class L.Map.SelectArea
18
- * @extends {L.Map.BoxZoom}
19
- */
20
- L.Map.SelectArea = L.Map.BoxZoom.extend({
21
- statics: {
22
- /**
23
- * @static
24
- * @type {String}
25
- */
26
- AREA_SELECTED: "areaselected",
27
-
28
- /**
29
- * @static
30
- * @type {String}
31
- */
32
- AREA_SELECT_START: "areaselectstart",
33
-
34
- /**
35
- * @static
36
- * @type {String}
37
- */
38
- AREA_SELECTION_TOGGLED: "areaselecttoggled",
39
- },
40
-
41
- options: {
42
- shiftKey: false,
43
- ctrlKey: true,
44
- validate: trueFn,
45
- autoDisable: false,
46
- cursor: "crosshair",
47
- },
48
-
49
- /**
50
- * @param {L.Map} map
51
- * @constructor
52
- */
53
- initialize: function (map, options) {
54
- L.Util.setOptions(this, options || {});
55
- L.Map.BoxZoom.prototype.initialize.call(this, map);
56
-
57
- /**
58
- * @type {Function}
59
- */
60
- this._validate = null;
61
-
62
- /**
63
- * @type {Boolean}
64
- */
65
- this._moved = false;
66
-
67
- /**
68
- * @type {Boolean}
69
- */
70
- this._autoDisable = !this.options.ctrlKey && this.options.autoDisable;
71
-
72
- /**
73
- * @type {L.Point}
74
- */
75
- this._lastLayerPoint = null;
76
-
77
- /**
78
- * @type {String|Null}
79
- */
80
- this._beforeCursor = null;
81
-
82
- this.setValidate(this.options.validate);
83
- this.setAutoDisable(this.options.autoDisable);
84
- },
85
-
86
- /**
87
- * @param {Function=} validate
88
- * @return {SelectArea}
89
- */
90
- setValidate: function (validate) {
91
- var handler = this;
92
- if (typeof validate !== "function") {
93
- validate = trueFn;
94
- }
95
- this._validate = function (layerPoint) {
96
- return validate.call(handler, layerPoint);
97
- };
98
- return this;
99
- },
100
-
101
- /**
102
- * @param {Boolean} autoDisable
103
- */
104
- setAutoDisable: function (autoDisable) {
105
- this._autoDisable = !!autoDisable;
106
- },
107
-
108
- /**
109
- * @param {Boolean} on
110
- */
111
- setControlKey: function (on) {
112
- var wasEnabled = this._enabled;
113
- if (wasEnabled) this.disable();
114
- this.options.ctrlKey = !!on;
115
- if (on) this.options.shiftKey = false;
116
- if (wasEnabled) this.enable();
117
- },
118
-
119
- /**
120
- * @param {Boolean} on
121
- */
122
- setShiftKey: function (on) {
123
- var wasEnabled = this._enabled;
124
- if (wasEnabled) this.disable();
125
- this.options.shiftKey = !!on;
126
- if (on) this.options.ctrlKey = false;
127
- if (wasEnabled) this.enable();
128
- },
129
-
130
- /**
131
- * Disable dragging or zoombox
132
- * @param {Function=} validate
133
- * @param {Boolean=} autoDisable
134
- */
135
- enable: function (validate, autoDisable) {
136
- if (this.options.shiftKey) {
137
- if (this._map.boxZoom) {
138
- this._map.boxZoom.disable();
139
- }
140
- } else if (!this.options.ctrlKey) {
141
- this._map.dragging.disable();
142
- }
143
- L.Map.BoxZoom.prototype.enable.call(this);
144
-
145
- if (!this.options.ctrlKey) this._setCursor();
146
-
147
- if (validate) this.setValidate(validate);
148
- this.setAutoDisable(autoDisable);
149
-
150
- this._map.fire(L.Map.SelectArea.AREA_SELECTION_TOGGLED);
151
- },
152
-
153
- /**
154
- * Re-enable box zoom or dragging
155
- */
156
- disable: function () {
157
- L.Map.BoxZoom.prototype.disable.call(this);
158
-
159
- if (!this.options.ctrlKey) this._restoreCursor();
160
-
161
- if (this.options.shiftKey) {
162
- if (this._map.boxZoom) {
163
- this._map.boxZoom.enable();
164
- }
165
- } else {
166
- this._map.dragging.enable();
167
- }
168
-
169
- this._map.fire(L.Map.SelectArea.AREA_SELECTION_TOGGLED);
170
- },
171
-
172
- /**
173
- * Also listen to ESC to cancel interaction
174
- * @override
175
- */
176
- addHooks: function () {
177
- L.Map.BoxZoom.prototype.addHooks.call(this);
178
- L.DomEvent.on(document, "keyup", this._onKeyUp, this)
179
- .on(document, "keydown", this._onKeyPress, this)
180
- .on(document, "contextmenu", this._onMouseDown, this)
181
- .on(window, "blur", this._onBlur, this);
182
- this._map.on("dragstart", this._onMouseDown, this);
183
- },
184
-
185
- /**
186
- * @override
187
- */
188
- removeHooks: function () {
189
- L.Map.BoxZoom.prototype.removeHooks.call(this);
190
- L.DomEvent.off(document, "keyup", this._onKeyUp, this)
191
- .off(document, "keydown", this._onKeyPress, this)
192
- .off(document, "contextmenu", this._onMouseDown, this)
193
- .off(window, "blur", this._onBlur, this);
194
- this._map.off("dragstart", this._onMouseDown, this);
195
- },
196
-
197
- /**
198
- * @override
199
- */
200
- _onMouseDown: function (e) {
201
- this._moved = false;
202
- this._lastLayerPoint = null;
203
-
204
- if (
205
- (this.options.shiftKey && !e.shiftKey) ||
206
- (this.options.ctrlKey && !e.ctrlKey) ||
207
- (e.which !== 1 && e.button !== 1)
208
- ) {
209
- return false;
210
- }
211
-
212
- L.DomEvent.stop(e);
213
-
214
- var layerPoint = this._map.mouseEventToLayerPoint(e);
215
- if (!this._validate(layerPoint)) return false;
216
-
217
- L.DomUtil.disableTextSelection();
218
- L.DomUtil.disableImageDrag();
219
-
220
- this._startLayerPoint = layerPoint;
221
-
222
- L.DomEvent.on(document, "mousemove", this._onMouseMove, this)
223
- .on(document, "mouseup", this._onMouseUp, this)
224
- .on(document, "keydown", this._onKeyDown, this);
225
- },
226
-
227
- /**
228
- * @override
229
- */
230
- _onMouseMove: function (e) {
231
- if (!this._moved) {
232
- this._box = L.DomUtil.create("div", "leaflet-zoom-box", this._pane);
233
- L.DomUtil.setPosition(this._box, this._startLayerPoint);
234
- this._map.fire(L.Map.SelectArea.AREA_SELECT_START);
235
- }
236
-
237
- var startPoint = this._startLayerPoint;
238
- var box = this._box;
239
-
240
- var layerPoint = this._map.mouseEventToLayerPoint(e);
241
- var offset = layerPoint.subtract(startPoint);
242
-
243
- if (!this._validate(layerPoint)) return;
244
- this._lastLayerPoint = layerPoint;
245
-
246
- var newPos = new L.Point(
247
- Math.min(layerPoint.x, startPoint.x),
248
- Math.min(layerPoint.y, startPoint.y)
249
- );
250
-
251
- L.DomUtil.setPosition(box, newPos);
252
-
253
- this._moved = true;
254
-
255
- // TODO refactor: remove hardcoded 4 pixels
256
- box.style.width = Math.max(0, Math.abs(offset.x) - 4) + "px";
257
- box.style.height = Math.max(0, Math.abs(offset.y) - 4) + "px";
258
- },
259
-
260
- /**
261
- * General on/off toggle
262
- * @param {KeyboardEvent} e
263
- */
264
- _onKeyUp: function (e) {
265
- if (e.keyCode === 27) {
266
- if (this._moved && this._box) {
267
- this._finish();
268
- }
269
- // this.disable();
270
- } else if (this.options.ctrlKey) {
271
- this._restoreCursor();
272
- this._map.dragging.enable();
273
- }
274
- },
275
-
276
- /**
277
- * Key down listener to enable on ctrl-press
278
- * @param {KeyboardEvent} e
279
- */
280
- _onKeyPress: function (e) {
281
- if (
282
- this.options.ctrlKey &&
283
- (e.ctrlKey || e.type === "dragstart") &&
284
- this._beforeCursor === null
285
- ) {
286
- this._setCursor();
287
- this._map.dragging._draggable._onUp(e); // hardcore
288
- this._map.dragging.disable();
289
- }
290
- },
291
-
292
- /**
293
- * Window blur listener to restore state
294
- * @param {Event} e
295
- */
296
- _onBlur: function (e) {
297
- this._restoreCursor();
298
- this._map.dragging.enable();
299
- },
300
-
301
- /**
302
- * Set crosshair cursor
303
- */
304
- _setCursor: function () {
305
- this._beforeCursor = this._container.style.cursor;
306
- this._container.style.cursor = this.options.cursor;
307
- },
308
-
309
- /**
310
- * Restore status quo cursor
311
- */
312
- _restoreCursor: function () {
313
- this._container.style.cursor = this._beforeCursor;
314
- this._beforeCursor = null;
315
- },
316
-
317
- /**
318
- * @override
319
- */
320
- _onMouseUp: function (e) {
321
- this._finish();
322
-
323
- var map = this._map;
324
- var layerPoint = this._lastLayerPoint; // map.mouseEventToLayerPoint(e);
325
-
326
- if (!layerPoint || this._startLayerPoint.equals(layerPoint)) return;
327
- L.DomEvent.stop(e);
328
-
329
- var bounds = new L.LatLngBounds(
330
- map.layerPointToLatLng(this._startLayerPoint),
331
- map.layerPointToLatLng(layerPoint)
332
- );
333
-
334
- //map.fitBounds(bounds);
335
-
336
- if (this._autoDisable) {
337
- this.disable();
338
- } else {
339
- this._restoreCursor();
340
- }
341
-
342
- this._moved = false;
343
-
344
- L.Util.requestAnimFrame(function () {
345
- map.fire(L.Map.SelectArea.AREA_SELECTED, {
346
- bounds: bounds,
347
- });
348
- });
349
- },
350
- });
351
-
352
- // expose setting
353
- L.Map.mergeOptions({
354
- selectArea: false,
355
- });
356
-
357
- // register hook
358
- L.Map.addInitHook("addHandler", "selectArea", L.Map.SelectArea);
359
- }
@@ -1,61 +0,0 @@
1
- import React from 'react';
2
- import { StoryFn, Meta } from '@storybook/react';
3
- import Map from './Map';
4
-
5
- export default {
6
- title: 'Primitives/Map',
7
- component: Map,
8
- parameters: {
9
- layout: 'centered',
10
- },
11
- } as Meta<typeof Map>;
12
-
13
- const Template: StoryFn<typeof Map> = (args) => <Map {...args} />;
14
-
15
- const entities = [
16
- {
17
- "@id": "#geo_1",
18
- "@type": ["GeoCoordinates"],
19
- name: "geocoordinates",
20
- geojson: [
21
- JSON.stringify({
22
- type: "Feature",
23
- properties: { name: "Nyaki Nyaki / Njaki Njaki" },
24
- geometry: {
25
- type: "Point",
26
- coordinates: ["118.75508272649", "-32.390945191928"]
27
- }
28
- })
29
- ],
30
- },
31
- {
32
- "@id": "#geo_2",
33
- "@type": ["GeoShape"],
34
- name: "geoshape",
35
- geojson: [
36
- JSON.stringify({
37
- type: "Feature",
38
- geometry: {
39
- type: "Polygon",
40
- coordinates: [[[158.76561641693118,-7.710991655433217],[158.76561641693118,-47.040182144806664],[109.54686641693117,-47.040182144806664],[109.54686641693117,-7.710991655433217]]],
41
- }
42
- })
43
- ],
44
- },
45
- ];
46
-
47
- export const GeoJSONPoint = Template.bind({});
48
- GeoJSONPoint.args = {
49
- entity: entities[0],
50
- crateManager: {
51
- getEntity: ({ id }) => entities[0],
52
- },
53
- };
54
-
55
- export const GeoJSONArea = Template.bind({});
56
- GeoJSONArea.args = {
57
- entity: entities[1],
58
- crateManager: {
59
- getEntity: ({ id }) => entities[1],
60
- },
61
- };
@@ -1,124 +0,0 @@
1
- import React, { useEffect, useRef } from 'react';
2
- import "leaflet/dist/leaflet.css";
3
- import L from "leaflet";
4
- import { wktToGeoJSON } from "@terraformer/wkt";
5
-
6
- export interface MapProps {
7
- entity: {
8
- "@id": string;
9
- asWKT?: string[];
10
- geojson?: string[];
11
- };
12
- crateManager: {
13
- getEntity: (params: { id: string }) => any;
14
- };
15
- }
16
-
17
- const Map: React.FC<MapProps> = ({ entity, crateManager }) => {
18
- const mapRef = useRef<HTMLDivElement>(null);
19
- const mapInstance = useRef<L.Map | null>(null);
20
- const layers = useRef<L.Layer[]>([]);
21
- const mapId = btoa(entity["@id"]);
22
-
23
- useEffect(() => {
24
- if (!mapRef.current || !crateManager) return;
25
-
26
- // Initialize map
27
- const map = L.map(mapRef.current, {
28
- center: [0, 0],
29
- zoom: 1,
30
- scrollWheelZoom: false,
31
- touchZoom: false,
32
- });
33
-
34
- // Set default icon
35
- const DefaultIcon = L.icon({
36
- iconUrl: '/marker-icon.png',
37
- shadowUrl: '/marker-shadow.png',
38
- });
39
- L.Marker.prototype.options.icon = DefaultIcon;
40
-
41
- mapInstance.current = map;
42
- initMap(); // This will now have access to crateManager
43
-
44
- return () => {
45
- map.off();
46
- map.remove();
47
- };
48
- }, [crateManager]); // Add crateManager to dependencies
49
-
50
- const removeExistingLayers = () => {
51
- layers.current.forEach((layer) => mapInstance.current?.removeLayer(layer));
52
- layers.current = [];
53
- };
54
-
55
- const addFeatureGroup = (geoJSON: any[]) => {
56
- try {
57
- if (!mapInstance.current) return;
58
-
59
- const fg = L.featureGroup(
60
- geoJSON.map((json) =>
61
- L.geoJSON(json, {
62
- pointToLayer: (feature, latlng) => L.marker(latlng),
63
- })
64
- )
65
- );
66
-
67
- fg.setStyle({ color: "#334155", weight: 2, fill: false });
68
- fg.addTo(mapInstance.current);
69
- layers.current.push(fg);
70
-
71
- setTimeout(() => {
72
- try {
73
- mapInstance.current?.flyToBounds(fg.getBounds(), { maxZoom: 3, duration: 2 });
74
- } catch (error) {
75
- // swallow zoom errors as it's most likely to be because the map is no longer showing
76
- }
77
- }, 1500);
78
-
79
- return fg;
80
- } catch (error) {
81
- console.error(error);
82
- }
83
- };
84
-
85
- const initMap = async () => {
86
- if (!mapInstance.current || !crateManager) return;
87
-
88
- const currentEntity = crateManager.getEntity({ id: entity["@id"] });
89
- if (!currentEntity) return;
90
-
91
- // Add tile layer
92
- L.tileLayer(
93
- "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
94
- {
95
- attribution:
96
- "Tiles &copy; Esri &mdash; Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012",
97
- minZoom: 1,
98
- maxZoom: 16,
99
- }
100
- ).addTo(mapInstance.current);
101
-
102
- // we need to give leaflet and react and the dom a couple seconds before continuing
103
- await new Promise((resolve) => setTimeout(resolve, 200));
104
-
105
- // preference WKT in order to be conformant with the spec...
106
- if (currentEntity?.asWKT) {
107
- removeExistingLayers();
108
- await new Promise((resolve) => setTimeout(resolve, 200));
109
- const geojsons = currentEntity.asWKT.map((wkt: string) => wktToGeoJSON(wkt));
110
- addFeatureGroup(geojsons);
111
- } else if (currentEntity?.geojson) {
112
- const geojson = JSON.parse(currentEntity.geojson[0]);
113
- removeExistingLayers();
114
- await new Promise((resolve) => setTimeout(resolve, 200));
115
- addFeatureGroup([geojson]);
116
- }
117
- };
118
-
119
- return (
120
- <div id={mapId} className="w-[600px] h-[520px] describo-property-type-map" ref={mapRef} />
121
- );
122
- };
123
-
124
- export default Map;
@@ -1,74 +0,0 @@
1
- import React from 'react';
2
- import { Meta, StoryObj } from '@storybook/react';
3
- import NumberComponent from './Number';
4
-
5
- // Update i18n translations for number component
6
- import i18next from 'i18next';
7
-
8
- // Add translations if not already present
9
- if (!i18next.exists('invalid_number_value')) {
10
- i18next.addResourceBundle('en', 'translation', {
11
- invalid_number_value: 'Invalid number value: {{value}}',
12
- number_constraints_error_message: 'Number constraints not met: {{value}}'
13
- }, true, true);
14
- }
15
-
16
- const meta: Meta<typeof NumberComponent> = {
17
- component: NumberComponent,
18
- title: 'Primitives/Number',
19
- argTypes: {
20
- value: {
21
- control: { type: 'text' }
22
- },
23
- onSaveProperty: { action: 'saveProperty' },
24
- definition: { control: 'object' }
25
- }
26
- };
27
-
28
- export default meta;
29
-
30
- type Story = StoryObj<typeof NumberComponent>;
31
-
32
- export const SimpleNumber: Story = {
33
- args: {
34
- property: 'number',
35
- value: 1
36
- }
37
- };
38
-
39
- export const InvalidNumber: Story = {
40
- args: {
41
- property: 'number',
42
- value: 'not a number'
43
- }
44
- };
45
-
46
- export const WithMinValue: Story = {
47
- args: {
48
- property: 'number',
49
- value: 5,
50
- definition: {
51
- minValue: 10
52
- }
53
- }
54
- };
55
-
56
- export const WithMaxValue: Story = {
57
- args: {
58
- property: 'number',
59
- value: 15,
60
- definition: {
61
- maxValue: 10
62
- }
63
- }
64
- };
65
-
66
- export const WithNumberType: Story = {
67
- args: {
68
- property: 'number',
69
- value: 10.5,
70
- definition: {
71
- numberType: ['int'] // Only integers allowed
72
- }
73
- }
74
- };