diff --git a/externs/oli.js b/externs/oli.js
index a05d12fa0e..8c08fccd2b 100644
--- a/externs/oli.js
+++ b/externs/oli.js
@@ -17,7 +17,6 @@ oli.CollectionEvent;
/**
* The element that is added to or removed from the collection.
* @type {*}
- * @todo api
*/
oli.CollectionEvent.prototype.element;
@@ -29,7 +28,6 @@ oli.DragBoxEvent;
/**
* @type {ol.Coordinate}
- * @todo api
*/
oli.DragBoxEvent.prototype.coordinate;
@@ -42,7 +40,6 @@ oli.DrawEvent;
/**
* The feature being drawn.
* @type {ol.Feature}
- * @todo api
*/
oli.DrawEvent.prototype.feature;
@@ -63,21 +60,18 @@ oli.MapBrowserEvent;
/**
* @type {ol.Coordinate}
- * @todo api
*/
oli.MapBrowserEvent.prototype.coordinate;
/**
* @type {Event}
- * @todo api
*/
oli.MapBrowserEvent.prototype.originalEvent;
/**
* @type {ol.Pixel}
- * @todo api
*/
oli.MapBrowserEvent.prototype.pixel;
@@ -103,21 +97,18 @@ oli.interaction.DragAndDropEvent;
/**
* @type {Array.
|undefined}
- * @todo api
*/
oli.interaction.DragAndDropEvent.prototype.features;
/**
* @type {ol.proj.Projection|undefined}
- * @todo api
*/
oli.interaction.DragAndDropEvent.prototype.projection;
/**
* @type {File}
- * @todo api
*/
oli.interaction.DragAndDropEvent.prototype.file;
@@ -130,14 +121,12 @@ oli.render.Event;
* Canvas context. Only available when a Canvas renderer is used, null
* otherwise.
* @type {CanvasRenderingContext2D|null|undefined}
- * @todo api
*/
oli.render.Event.prototype.context;
/**
* @type {olx.FrameState|undefined}
- * @todo api
*/
oli.render.Event.prototype.frameState;
@@ -145,7 +134,6 @@ oli.render.Event.prototype.frameState;
/**
* WebGL context. Only available when a WebGL renderer is used, null otherwise.
* @type {ol.webgl.Context|null|undefined}
- * @todo api
*/
oli.render.Event.prototype.glContext;
@@ -153,7 +141,6 @@ oli.render.Event.prototype.glContext;
/**
* For canvas, this is an instance of {@link ol.render.canvas.Immediate}.
* @type {ol.render.IVectorContext|undefined}
- * @todo api
*/
oli.render.Event.prototype.vectorContext;
@@ -166,6 +153,5 @@ oli.source.VectorEvent;
/**
* The feature being added or removed.
* @type {ol.Feature}
- * @todo api
*/
oli.source.VectorEvent.prototype.feature;
diff --git a/externs/readme.md b/externs/readme.md
index 9315b6b6c0..68253b3448 100644
--- a/externs/readme.md
+++ b/externs/readme.md
@@ -8,14 +8,14 @@ These two files are special externs that belong to ol3, and this document explai
### Prevent class properties from being renamed
-For events, we make properties available to the application. Other than methods, which can be made available by just marking them with the `@api` annotation, properties are exported using `oli.js`:
+For events, we make properties available to the application. Other than methods, which can be made available by just marking them with the `@api` annotation directly where they are defined, properties need to be added to `oli.js` in addition:
+
```js
/** @interface */
oli.MapBrowserEvent;
/**
* @type {ol.Coordinate}
- * @todo api
*/
oli.MapBrowserEvent.prototype.coordinate;
```
@@ -32,6 +32,7 @@ ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) {
/**
* @type {ol.Coordinate}
+ * @todo api
*/
this.coordinate = map.getEventCoordinate(this.originalEvent);
diff --git a/src/ol/collection.js b/src/ol/collection.js
index d3101fb36d..1c64540447 100644
--- a/src/ol/collection.js
+++ b/src/ol/collection.js
@@ -47,6 +47,7 @@ ol.CollectionEvent = function(type, opt_element, opt_target) {
/**
* The element that is added to or removed from the collection.
* @type {*}
+ * @todo api
*/
this.element = opt_element;
diff --git a/src/ol/interaction/draganddropinteraction.js b/src/ol/interaction/draganddropinteraction.js
index a2e4547024..c3c1adc4c3 100644
--- a/src/ol/interaction/draganddropinteraction.js
+++ b/src/ol/interaction/draganddropinteraction.js
@@ -205,16 +205,19 @@ ol.interaction.DragAndDropEvent =
/**
* @type {Array.|undefined}
+ * @todo api
*/
this.features = opt_features;
/**
* @type {File}
+ * @todo api
*/
this.file = file;
/**
* @type {ol.proj.Projection|undefined}
+ * @todo api
*/
this.projection = opt_projection;
diff --git a/src/ol/interaction/dragboxinteraction.js b/src/ol/interaction/dragboxinteraction.js
index 67540e9647..c016f974b5 100644
--- a/src/ol/interaction/dragboxinteraction.js
+++ b/src/ol/interaction/dragboxinteraction.js
@@ -59,6 +59,7 @@ ol.DragBoxEvent = function(type, coordinate) {
* The coordinate of the drag event.
* @const
* @type {ol.Coordinate}
+ * @todo api
*/
this.coordinate = coordinate;
diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js
index 722b99cae6..f06df46bfd 100644
--- a/src/ol/interaction/drawinteraction.js
+++ b/src/ol/interaction/drawinteraction.js
@@ -56,6 +56,7 @@ ol.DrawEvent = function(type, feature) {
/**
* The feature being drawn.
* @type {ol.Feature}
+ * @todo api
*/
this.feature = feature;
diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js
index e2dfb5dab1..5704354ca3 100644
--- a/src/ol/mapbrowserevent.js
+++ b/src/ol/mapbrowserevent.js
@@ -41,16 +41,19 @@ ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) {
/**
* @const
* @type {Event}
+ * @todo api
*/
this.originalEvent = browserEvent.getBrowserEvent();
/**
* @type {ol.Coordinate}
+ * @todo api
*/
this.coordinate = map.getEventCoordinate(this.originalEvent);
/**
* @type {ol.Pixel}
+ * @todo api
*/
this.pixel = map.getEventPixel(this.originalEvent);
diff --git a/src/ol/render/renderevent.js b/src/ol/render/renderevent.js
index 69ab5aedcc..a152b5d6fa 100644
--- a/src/ol/render/renderevent.js
+++ b/src/ol/render/renderevent.js
@@ -47,11 +47,13 @@ ol.render.Event = function(
/**
* @type {ol.render.IVectorContext|undefined}
+ * @todo api
*/
this.vectorContext = opt_vectorContext;
/**
* @type {olx.FrameState|undefined}
+ * @todo api
*/
this.frameState = opt_frameState;
@@ -59,6 +61,7 @@ ol.render.Event = function(
* Canvas context. Only available when a Canvas renderer is used,
* null otherwise.
* @type {CanvasRenderingContext2D|null|undefined}
+ * @todo api
*/
this.context = opt_context;
@@ -66,6 +69,7 @@ ol.render.Event = function(
* WebGL context. Only available when a WebGL renderer is used, null
* otherwise.
* @type {ol.webgl.Context|null|undefined}
+ * @todo api
*/
this.glContext = opt_glContext;
diff --git a/src/ol/source/vectorsource.js b/src/ol/source/vectorsource.js
index e16c38130b..92b726bb8f 100644
--- a/src/ol/source/vectorsource.js
+++ b/src/ol/source/vectorsource.js
@@ -404,6 +404,7 @@ ol.source.VectorEvent = function(type, opt_feature) {
/**
* The feature being added or removed.
* @type {ol.Feature|undefined}
+ * @todo api
*/
this.feature = opt_feature;