girder-large-image-annotation 1.32.7.dev2__tar.gz → 1.32.7.dev4__tar.gz

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 (91) hide show
  1. {girder_large_image_annotation-1.32.7.dev2/girder_large_image_annotation.egg-info → girder_large_image_annotation-1.32.7.dev4}/PKG-INFO +3 -3
  2. girder_large_image_annotation-1.32.7.dev4/girder_large_image_annotation/web_client/collections/ElementCollection.js +47 -0
  3. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/models/AnnotationModel.js +28 -13
  4. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4/girder_large_image_annotation.egg-info}/PKG-INFO +3 -3
  5. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation.egg-info/requires.txt +2 -2
  6. girder_large_image_annotation-1.32.7.dev2/girder_large_image_annotation/web_client/collections/ElementCollection.js +0 -8
  7. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/LICENSE +0 -0
  8. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/README.rst +0 -0
  9. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/docs/annotations.rst +0 -0
  10. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/docs/plottable.rst +0 -0
  11. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/__init__.py +0 -0
  12. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/constants.py +0 -0
  13. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/handlers.py +0 -0
  14. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/models/__init__.py +0 -0
  15. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/models/annotation.py +0 -0
  16. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/models/annotationelement.py +0 -0
  17. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/rest/__init__.py +0 -0
  18. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/rest/annotation.py +0 -0
  19. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/utils/__init__.py +0 -0
  20. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/convert.js +0 -0
  21. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/convertFeatures.js +0 -0
  22. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/defaults/circle.js +0 -0
  23. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/defaults/ellipse.js +0 -0
  24. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/defaults/index.js +0 -0
  25. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/defaults/point.js +0 -0
  26. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/defaults/polyline.js +0 -0
  27. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/defaults/rectangle.js +0 -0
  28. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/common.js +0 -0
  29. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/convert.js +0 -0
  30. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/array.js +0 -0
  31. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/index.js +0 -0
  32. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/point.js +0 -0
  33. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/index.js +0 -0
  34. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/circle.js +0 -0
  35. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/ellipse.js +0 -0
  36. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/index.js +0 -0
  37. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/line.js +0 -0
  38. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/point.js +0 -0
  39. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/polygon.js +0 -0
  40. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/rectangle.js +0 -0
  41. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geometry/circle.js +0 -0
  42. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geometry/ellipse.js +0 -0
  43. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geometry/index.js +0 -0
  44. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geometry/point.js +0 -0
  45. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geometry/polyline.js +0 -0
  46. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/geometry/rectangle.js +0 -0
  47. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/index.js +0 -0
  48. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/rotate.js +0 -0
  49. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/annotations/style.js +0 -0
  50. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/collections/AnnotationCollection.js +0 -0
  51. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/collections/index.js +0 -0
  52. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/index.js +0 -0
  53. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/main.js +0 -0
  54. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/models/ElementModel.js +0 -0
  55. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/models/index.js +0 -0
  56. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/package.json +0 -0
  57. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/routes.js +0 -0
  58. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/stylesheets/annotationListWidget.styl +0 -0
  59. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/stylesheets/itemList.styl +0 -0
  60. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/templates/annotationListWidget.pug +0 -0
  61. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/templates/imageViewerAnnotationList.pug +0 -0
  62. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/templates/largeImageAnnotationConfig.pug +0 -0
  63. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/annotationListWidget.js +0 -0
  64. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/configView.js +0 -0
  65. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/hierarchyWidget.js +0 -0
  66. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/imageViewerSelectWidget.js +0 -0
  67. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/imageViewerWidget/base.js +0 -0
  68. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/imageViewerWidget/geojs.js +0 -0
  69. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/imageViewerWidget/index.js +0 -0
  70. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/index.js +0 -0
  71. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation/web_client/views/itemList.js +0 -0
  72. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation.egg-info/SOURCES.txt +0 -0
  73. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation.egg-info/dependency_links.txt +0 -0
  74. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation.egg-info/entry_points.txt +0 -0
  75. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation.egg-info/not-zip-safe +0 -0
  76. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/girder_large_image_annotation.egg-info/top_level.txt +0 -0
  77. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/pyproject.toml +0 -0
  78. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/setup.cfg +0 -0
  79. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/setup.py +0 -0
  80. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/__init__.py +0 -0
  81. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/conftest.py +0 -0
  82. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/girder_utilities.py +0 -0
  83. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/test_annotations.py +0 -0
  84. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/test_annotations_rest.py +0 -0
  85. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/test_web_client.py +0 -0
  86. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/web_client_specs/.eslintrc +0 -0
  87. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/web_client_specs/annotationListSpec.js +0 -0
  88. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/web_client_specs/annotationSpec.js +0 -0
  89. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/web_client_specs/geojsAnnotationSpec.js +0 -0
  90. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/web_client_specs/geojsSpec.js +0 -0
  91. {girder_large_image_annotation-1.32.7.dev2 → girder_large_image_annotation-1.32.7.dev4}/test_annotation/web_client_specs/sample_annotation.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-large-image-annotation
3
- Version: 1.32.7.dev2
3
+ Version: 1.32.7.dev4
4
4
  Summary: A Girder plugin to store and display annotations on large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,7 +19,7 @@ Requires-Python: >=3.8
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: jsonschema>=2.5.1
22
- Requires-Dist: girder-large-image>=1.32.7.dev2
22
+ Requires-Dist: girder-large-image>=1.32.7.dev4
23
23
  Requires-Dist: orjson
24
24
  Provides-Extra: compute
25
25
  Requires-Dist: openpyxl; extra == "compute"
@@ -28,7 +28,7 @@ Requires-Dist: pandas>=2.2; python_version >= "3.9" and extra == "compute"
28
28
  Requires-Dist: python-calamine; python_version >= "3.9" and extra == "compute"
29
29
  Requires-Dist: umap-learn; extra == "compute"
30
30
  Provides-Extra: tasks
31
- Requires-Dist: girder-large-image[tasks]>=1.32.7.dev2; extra == "tasks"
31
+ Requires-Dist: girder-large-image[tasks]>=1.32.7.dev4; extra == "tasks"
32
32
  Dynamic: author
33
33
  Dynamic: author-email
34
34
  Dynamic: classifier
@@ -0,0 +1,47 @@
1
+ import Backbone from 'backbone';
2
+
3
+ import ElementModel from '../models/ElementModel';
4
+
5
+ export default Backbone.Collection.extend({
6
+ initialize: function () {
7
+ this.on('add', this.track_addition, this);
8
+ this.on('remove', this.track_remove, this);
9
+ this.on('change', this.track_change, this);
10
+ },
11
+
12
+ model: ElementModel,
13
+ comparator: undefined,
14
+
15
+ track_addition: function (element) {
16
+ if (!this.annotation || !this.annotation.get || !this.annotation.get('_version')) {
17
+ return;
18
+ }
19
+ if (!this.annotation._changeLog) {
20
+ this.annotation._changeLog = {};
21
+ }
22
+ this.annotation._changeLog[element.id] = {op: 'add', path: `elements/id:${element.id}`, value: element.toJSON()};
23
+ },
24
+
25
+ track_remove: function (element) {
26
+ if (!this.annotation || !this.annotation.get || !this.annotation.get('_version')) {
27
+ return;
28
+ }
29
+ if (!this.annotation._changeLog) {
30
+ this.annotation._changeLog = {};
31
+ }
32
+ if (this.annotation._changeLog[element.id] && this.annotation._changeLog[element.id].op === 'add') {
33
+ delete this.annotation._changeLog[element.id];
34
+ } else {
35
+ this.annotation._changeLog[element.id] = {op: 'remove', path: `elements/id:${element.id}`};
36
+ }
37
+ },
38
+ track_change: function (element) {
39
+ if (!this.annotation || !this.annotation.get || !this.annotation.get('_version')) {
40
+ return;
41
+ }
42
+ if (!this.annotation._changeLog) {
43
+ this.annotation._changeLog = {};
44
+ }
45
+ this.annotation._changeLog[element.id] = {op: 'replace', path: `elements/id:${element.id}`, value: element.toJSON()};
46
+ }
47
+ });
@@ -283,11 +283,12 @@ const AnnotationModel = AccessControlledModel.extend({
283
283
  * attribute is required.
284
284
  */
285
285
  save(options) {
286
- const data = _.extend({}, this.get('annotation'));
287
286
  let url;
288
287
  let method;
289
288
  const isNew = this.isNew();
290
-
289
+ if (isNew && this._changeLog) {
290
+ delete this._changeLog;
291
+ }
291
292
  if (isNew) {
292
293
  if (!this.get('itemId')) {
293
294
  throw new Error('itemId is required to save new annotations');
@@ -302,21 +303,35 @@ const AnnotationModel = AccessControlledModel.extend({
302
303
  this.attributes.updatedId = getCurrentUser().id; // eslint-disable-line backbone/no-model-attributes
303
304
  }
304
305
  }
306
+ let data;
305
307
 
306
- if (this._pageElements === false || isNew) {
307
- this._pageElements = false;
308
- data.elements = _.map(data.elements, (element) => {
309
- element = _.extend({}, element);
310
- if (element.label && !element.label.value) {
311
- delete element.label;
308
+ if (this._changeLog) {
309
+ method = 'PATCH';
310
+ const annot = this.get('annotation');
311
+ data = Object.values(this._changeLog);
312
+ Object.keys(annot).forEach((k) => {
313
+ if (k !== 'elements') {
314
+ data.push({op: 'replace', path: k, value: annot[k]});
312
315
  }
313
- return element;
314
316
  });
317
+ delete this._changeLog;
315
318
  } else {
316
- delete data.elements;
317
- // we don't want to override an annotation with a partial response
318
- if (this._pageElements === true) {
319
- console.warn('Cannot save elements of a paged annotation');
319
+ data = _.extend({}, this.get('annotation'));
320
+ if (this._pageElements === false || isNew) {
321
+ this._pageElements = false;
322
+ data.elements = _.map(data.elements, (element) => {
323
+ element = _.extend({}, element);
324
+ if (element.label && !element.label.value) {
325
+ delete element.label;
326
+ }
327
+ return element;
328
+ });
329
+ } else {
330
+ delete data.elements;
331
+ // we don't want to override an annotation with a partial response
332
+ if (this._pageElements === true) {
333
+ console.warn('Cannot save elements of a paged annotation');
334
+ }
320
335
  }
321
336
  }
322
337
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-large-image-annotation
3
- Version: 1.32.7.dev2
3
+ Version: 1.32.7.dev4
4
4
  Summary: A Girder plugin to store and display annotations on large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,7 +19,7 @@ Requires-Python: >=3.8
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: jsonschema>=2.5.1
22
- Requires-Dist: girder-large-image>=1.32.7.dev2
22
+ Requires-Dist: girder-large-image>=1.32.7.dev4
23
23
  Requires-Dist: orjson
24
24
  Provides-Extra: compute
25
25
  Requires-Dist: openpyxl; extra == "compute"
@@ -28,7 +28,7 @@ Requires-Dist: pandas>=2.2; python_version >= "3.9" and extra == "compute"
28
28
  Requires-Dist: python-calamine; python_version >= "3.9" and extra == "compute"
29
29
  Requires-Dist: umap-learn; extra == "compute"
30
30
  Provides-Extra: tasks
31
- Requires-Dist: girder-large-image[tasks]>=1.32.7.dev2; extra == "tasks"
31
+ Requires-Dist: girder-large-image[tasks]>=1.32.7.dev4; extra == "tasks"
32
32
  Dynamic: author
33
33
  Dynamic: author-email
34
34
  Dynamic: classifier
@@ -1,5 +1,5 @@
1
1
  jsonschema>=2.5.1
2
- girder-large-image>=1.32.7.dev2
2
+ girder-large-image>=1.32.7.dev4
3
3
  orjson
4
4
 
5
5
  [compute]
@@ -14,4 +14,4 @@ pandas>=2.2
14
14
  python-calamine
15
15
 
16
16
  [tasks]
17
- girder-large-image[tasks]>=1.32.7.dev2
17
+ girder-large-image[tasks]>=1.32.7.dev4
@@ -1,8 +0,0 @@
1
- import Backbone from 'backbone';
2
-
3
- import ElementModel from '../models/ElementModel';
4
-
5
- export default Backbone.Collection.extend({
6
- model: ElementModel,
7
- comparator: undefined
8
- });