@@ -6,8 +6,6 @@ var util = require('../util');
6
6
var adder = require ( './adder' ) ;
7
7
var editor = require ( './editor' ) ;
8
8
var highlighter = require ( './highlighter' ) ;
9
- var markdown = require ( './markdown' ) ;
10
- var tags = require ( './tags' ) ;
11
9
var textselector = require ( './textselector' ) ;
12
10
var viewer = require ( './viewer' ) ;
13
11
@@ -194,20 +192,37 @@ function addPermissionsCheckboxes(editor, app) {
194
192
*
195
193
* A DOM element to which to bind event listeners. Defaults to
196
194
* ``document.body``, allowing annotation of the whole document.
195
+ *
196
+ * .. attribute:: options.editorExtensions
197
+ *
198
+ * An array of editor extensions. See the
199
+ * :class:`~annotator.ui.editor.Editor` documentation for details of editor
200
+ * extensions.
201
+ *
202
+ * .. attribute:: options.viewerExtensions
203
+ *
204
+ * An array of viewer extensions. See the
205
+ * :class:`~annotator.ui.viewer.Viewer` documentation for details of viewer
206
+ * extensions.
207
+ *
208
+ * .. attribute:: options.viewerRenderer
209
+ *
210
+ * An annotation renderer for the viewer. See the
211
+ * :class:`~annotator.ui.viewer.Viewer` documentation for details of
212
+ * renderers.
213
+ *
197
214
*/
198
215
function main ( options ) {
199
216
if ( typeof options === 'undefined' || options === null ) {
200
217
options = { } ;
201
218
}
202
219
203
- var element = options . element || util . getGlobal ( ) . document . body ;
204
- // FIXME: restore readOnly mode
205
- //
206
- // options: # Configuration options
207
- // # Start Annotator in read-only mode. No controls will be shown.
208
- // readOnly: false
220
+ options . element = options . element || util . getGlobal ( ) . document . body ;
221
+ options . editorExtensions = options . editorExtensions || [ ] ;
222
+ options . viewerExtensions = options . viewerExtensions || [ ] ;
223
+
209
224
// Local helpers
210
- var makeAnnotation = annotationFactory ( element , '.annotator-hl' ) ;
225
+ var makeAnnotation = annotationFactory ( options . element , '.annotator-hl' ) ;
211
226
212
227
// Object to hold local state
213
228
var s = {
@@ -222,15 +237,16 @@ function main(options) {
222
237
} ) ;
223
238
s . adder . attach ( ) ;
224
239
225
- s . tags = tags . tags ( { } ) ;
226
- s . editor = new editor . Editor ( { extensions : [ s . tags . createEditorField ] } ) ;
240
+ s . editor = new editor . Editor ( {
241
+ extensions : options . editorExtensions
242
+ } ) ;
227
243
s . editor . attach ( ) ;
228
244
229
245
addPermissionsCheckboxes ( s . editor , app ) ;
230
246
231
- s . highlighter = new highlighter . Highlighter ( element ) ;
247
+ s . highlighter = new highlighter . Highlighter ( options . element ) ;
232
248
233
- s . textselector = new textselector . TextSelector ( element , {
249
+ s . textselector = new textselector . TextSelector ( options . element , {
234
250
onSelection : function ( ranges , event ) {
235
251
if ( ranges . length > 0 ) {
236
252
var annotation = makeAnnotation ( ranges ) ;
@@ -242,7 +258,7 @@ function main(options) {
242
258
}
243
259
} ) ;
244
260
245
- var viewerOpts = {
261
+ s . viewer = new viewer . Viewer ( {
246
262
onEdit : function ( ann ) {
247
263
// Copy the interaction point from the shown viewer:
248
264
s . interactionPoint = util . $ ( s . viewer . element )
@@ -254,28 +270,15 @@ function main(options) {
254
270
app . annotations [ 'delete' ] ( ann ) ;
255
271
} ,
256
272
permitEdit : function ( ann ) {
257
- return app . authz . permits (
258
- 'update' ,
259
- ann ,
260
- app . ident . who ( )
261
- ) ;
273
+ return app . authz . permits ( 'update' , ann , app . ident . who ( ) ) ;
262
274
} ,
263
275
permitDelete : function ( ann ) {
264
- return app . authz . permits (
265
- 'delete' ,
266
- ann ,
267
- app . ident . who ( )
268
- ) ;
276
+ return app . authz . permits ( 'delete' , ann , app . ident . who ( ) ) ;
269
277
} ,
270
- extensions : [ s . tags . createViewerField ] ,
271
- autoViewHighlights : element
272
- } ;
273
-
274
- if ( g . Showdown && typeof g . Showdown . converter === 'function' ) {
275
- viewerOpts . renderText = markdown . markdown ( ) . convert ;
276
- }
277
-
278
- s . viewer = new viewer . Viewer ( viewerOpts ) ;
278
+ autoViewHighlights : options . element ,
279
+ extensions : options . viewerExtensions ,
280
+ renderer : options . viewerRenderer
281
+ } ) ;
279
282
s . viewer . attach ( ) ;
280
283
281
284
injectDynamicStyle ( ) ;
0 commit comments