geojs 1.9.3 → 1.10.1

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.
package/geo.lean.js CHANGED
@@ -31,11 +31,9 @@ var geo_action = {
31
31
  zoom: 'geo_action_zoom',
32
32
  zoomrotate: 'geo_action_zoom_rotate',
33
33
  zoomselect: 'geo_action_zoomselect',
34
- // annotation actions
35
- annotation_line: 'geo_annotation_line',
36
- annotation_polygon: 'geo_annotation_polygon',
37
- annotation_rectangle: 'geo_annotation_rectangle',
38
- annotation_edit_handle: 'geo_annotation_edit_handle'
34
+ // annotation actions -- some are also added by the registry
35
+ annotation_edit_handle: 'geo_annotation_edit_handle',
36
+ annotation_cursor: 'geo_annotation_cursor'
39
37
  };
40
38
  module.exports = geo_action;
41
39
 
@@ -66,7 +64,8 @@ var annotationState = {
66
64
  create: 'create',
67
65
  done: 'done',
68
66
  highlight: 'highlight',
69
- edit: 'edit'
67
+ edit: 'edit',
68
+ cursor: 'cursor'
70
69
  };
71
70
  var annotationActionOwner = 'annotationAction';
72
71
  /**
@@ -221,6 +220,18 @@ var annotation = function annotation(type, args) {
221
220
  this.id = function () {
222
221
  return m_id;
223
222
  };
223
+ /**
224
+ * Assign a new id to this annotation.
225
+ *
226
+ * @returns {this}
227
+ */
228
+
229
+
230
+ this.newId = function () {
231
+ annotationId += 1;
232
+ m_id = annotationId;
233
+ return m_this;
234
+ };
224
235
  /**
225
236
  * Get or set the name of this annotation.
226
237
  *
@@ -399,6 +410,36 @@ var annotation = function annotation(type, args) {
399
410
  m_layer = arg;
400
411
  return m_this;
401
412
  };
413
+
414
+ this._cursorHandleMousemove = function (evt) {
415
+ m_this.layer()._handleMouseMoveModifiers(evt);
416
+
417
+ var center = m_this._cursorCenter;
418
+ var delta = {
419
+ x: evt.mapgcs.x - center.x,
420
+ y: evt.mapgcs.y - center.y
421
+ };
422
+
423
+ if (delta.x || delta.y) {
424
+ var curPts = m_this._coordinates();
425
+
426
+ var pts = m_this._coordinatesMapFunc(curPts, function (elem) {
427
+ return {
428
+ x: elem.x + delta.x,
429
+ y: elem.y + delta.y
430
+ };
431
+ });
432
+
433
+ m_this._coordinates(pts);
434
+
435
+ m_this._cursorCenter = evt.mapgcs;
436
+ m_this.modified();
437
+ m_this.draw();
438
+ return true;
439
+ }
440
+
441
+ return false;
442
+ };
402
443
  /**
403
444
  * Get or set the state of this annotation.
404
445
  *
@@ -423,6 +464,21 @@ var annotation = function annotation(type, args) {
423
464
  annotation: m_this
424
465
  });
425
466
  }
467
+
468
+ if (m_this.layer()) {
469
+ m_this.layer().geoOff(geo_event.mousemove, m_this._cursorHandleMousemove);
470
+ }
471
+
472
+ switch (m_state) {
473
+ case annotationState.cursor:
474
+ m_this._cursorCenter = util.centerFromPerimeter(m_this._coordinates());
475
+
476
+ if (m_this.layer()) {
477
+ m_this.layer().geoOn(geo_event.mousemove, m_this._cursorHandleMousemove);
478
+ }
479
+
480
+ break;
481
+ }
426
482
  }
427
483
 
428
484
  return m_this;
@@ -455,6 +511,19 @@ var annotation = function annotation(type, args) {
455
511
  input: 'pan'
456
512
  }];
457
513
 
514
+ case annotationState.cursor:
515
+ return [{
516
+ action: geo_action.annotation_cursor,
517
+ name: 'annotation cursor',
518
+ owner: annotationActionOwner,
519
+ input: 'pan'
520
+ }, {
521
+ action: geo_action.annotation_cursor,
522
+ name: 'annotation cursor',
523
+ owner: annotationActionOwner,
524
+ input: 'left'
525
+ }];
526
+
458
527
  default:
459
528
  return [];
460
529
  }
@@ -598,7 +667,7 @@ var annotation = function annotation(type, args) {
598
667
  /* For style objects, re-extend them without recursion. This allows
599
668
  * setting colors without an opacity field, for instance. */
600
669
 
601
- ['style', 'createStyle', 'editStyle', 'editHandleStyle', 'labelStyle', 'highlightStyle'].forEach(function (key) {
670
+ ['style', 'createStyle', 'editStyle', 'editHandleStyle', 'labelStyle', 'highlightStyle', 'cursorStyle'].forEach(function (key) {
602
671
  if (arg1[key] !== undefined) {
603
672
  $.extend(m_options[key], arg1[key]);
604
673
  }
@@ -653,8 +722,8 @@ var annotation = function annotation(type, args) {
653
722
  * current style with the values in the specified object.
654
723
  * @param {*} [arg2] If `arg1` is a string, the new value for that style.
655
724
  * @param {string} [styleType='style'] The name of the style type, such as
656
- * `createStyle`, `editStyle`, `editHandleStyle`, `labelStyle`, or
657
- * `highlightStyle`.
725
+ * `createStyle`, `editStyle`, `editHandleStyle`, `labelStyle`,
726
+ * `highlightStyle`, or `cursorStyle`.
658
727
  * @returns {object|this} Either the entire style object, the value of a
659
728
  * specific style, or the current class instance.
660
729
  */
@@ -713,14 +782,21 @@ var annotation = function annotation(type, args) {
713
782
  */
714
783
 
715
784
  /**
716
- * Calls {@link geo.annotation#style} with `styleType='highlightHandleStyle'`.
717
- * @function highlightHandleStyle
785
+ * Calls {@link geo.annotation#style} with `styleType='highlightStyle'`.
786
+ * @function highlightStyle
787
+ * @memberof geo.annotation
788
+ * @instance
789
+ */
790
+
791
+ /**
792
+ * Calls {@link geo.annotation#style} with `styleType='cursorStyle'`.
793
+ * @function cursorStyle
718
794
  * @memberof geo.annotation
719
795
  * @instance
720
796
  */
721
797
 
722
798
 
723
- ['createStyle', 'editStyle', 'editHandleStyle', 'labelStyle', 'highlightStyle'].forEach(function (styleType) {
799
+ ['createStyle', 'editStyle', 'editHandleStyle', 'labelStyle', 'highlightStyle', 'cursorStyle'].forEach(function (styleType) {
724
800
  m_this[styleType] = function (arg1, arg2) {
725
801
  return m_this.style(arg1, arg2, styleType);
726
802
  };
@@ -746,6 +822,10 @@ var annotation = function annotation(type, args) {
746
822
  return $.extend({}, m_options.style, m_options.editStyle, m_options[state + 'Style']);
747
823
  }
748
824
 
825
+ if (state === annotationState.cursor) {
826
+ return $.extend({}, m_options.style, m_options.editStyle, m_options.createStyle, m_options[state + 'Style']);
827
+ }
828
+
749
829
  return m_options[state + 'Style'] || m_options.style || {};
750
830
  };
751
831
  /**
@@ -2654,6 +2734,8 @@ var lineFeature = __webpack_require__(4708);
2654
2734
 
2655
2735
  var polygonFeature = __webpack_require__(4343);
2656
2736
 
2737
+ var util = __webpack_require__(4634);
2738
+
2657
2739
  var annotation = (__webpack_require__(5784).annotation);
2658
2740
 
2659
2741
  var annotationState = (__webpack_require__(5784).state);
@@ -2722,6 +2804,9 @@ var polygonAnnotation = function polygonAnnotation(args) {
2722
2804
 
2723
2805
  return m_this.options('vertices')[i];
2724
2806
  }
2807
+ },
2808
+ cursorStyle: {
2809
+ position: util.identityFunction
2725
2810
  }
2726
2811
  }, args);
2727
2812
  args.vertices = args.vertices || args.coordinates || [];
@@ -3061,6 +3146,21 @@ polygonAnnotation.defaults = $.extend({}, annotation.defaults, {
3061
3146
  b: 1
3062
3147
  }
3063
3148
  },
3149
+ cursorStyle: {
3150
+ closed: true,
3151
+ fillColor: {
3152
+ r: 0.3,
3153
+ g: 0.3,
3154
+ b: 0.3
3155
+ },
3156
+ fillOpacity: 0.25,
3157
+ stroke: true,
3158
+ strokeColor: {
3159
+ r: 0,
3160
+ g: 0,
3161
+ b: 1
3162
+ }
3163
+ },
3064
3164
  allowBooleanOperations: true
3065
3165
  });
3066
3166
  var polygonRequiredFeatures = {};
@@ -3903,6 +4003,17 @@ var annotationLayer = function annotationLayer(arg) {
3903
4003
 
3904
4004
  break;
3905
4005
 
4006
+ case m_this.modes.cursor:
4007
+ m_this.currentAnnotation._cursorHandleMousemove(evt.mouse);
4008
+
4009
+ update = m_this.currentAnnotation.processAction(evt);
4010
+ m_this.geoTrigger(geo_event.annotation.cursor_action, {
4011
+ annotation: m_this.currentAnnotation,
4012
+ operation: m_this.currentBooleanOperation(),
4013
+ evt: evt
4014
+ });
4015
+ break;
4016
+
3906
4017
  default:
3907
4018
  update = m_this.currentAnnotation.processAction(evt);
3908
4019
  break;
@@ -3998,7 +4109,7 @@ var annotationLayer = function annotationLayer(arg) {
3998
4109
 
3999
4110
 
4000
4111
  this._handleMouseMoveModifiers = function (evt) {
4001
- if (m_this.mode() !== m_this.modes.edit && m_this.currentAnnotation.options('allowBooleanOperations') && m_this.currentAnnotation._coordinates().length < 2) {
4112
+ if (m_this.mode() !== m_this.modes.edit && m_this.currentAnnotation.options('allowBooleanOperations') && (m_this.currentAnnotation._coordinates().length < 2 || m_this.mode() === m_this.modes.cursor)) {
4002
4113
  if (evt.modifiers) {
4003
4114
  var mod = (evt.modifiers.shift ? 's' : '') + (evt.modifiers.ctrl ? 'c' : '') + (evt.modifiers.meta || evt.modifiers.alt ? 'a' : '');
4004
4115
 
@@ -4155,6 +4266,14 @@ var annotationLayer = function annotationLayer(arg) {
4155
4266
  m_this._updateFromEvent(update);
4156
4267
 
4157
4268
  retrigger = !m_this.mode();
4269
+
4270
+ if (m_this.mode() === m_this.modes.cursor) {
4271
+ m_this.geoTrigger(geo_event.annotation.cursor_click, {
4272
+ annotation: m_this.currentAnnotation,
4273
+ operation: m_this.currentBooleanOperation(),
4274
+ evt: evt
4275
+ });
4276
+ }
4158
4277
  } else if (!m_this.mode() && !m_this.currentAnnotation && m_this.options('clickToEdit')) {
4159
4278
  var highlighted = m_this.annotations().filter(function (ann) {
4160
4279
  return ann.state() === geo_annotation.state.highlight;
@@ -4254,6 +4373,10 @@ var annotationLayer = function annotationLayer(arg) {
4254
4373
  var pos = $.inArray(annotation, m_annotations);
4255
4374
 
4256
4375
  if (pos < 0) {
4376
+ while (m_this.annotationById(annotation.id())) {
4377
+ annotation.newId();
4378
+ }
4379
+
4257
4380
  m_this.geoTrigger(geo_event.annotation.add_before, {
4258
4381
  annotation: annotation
4259
4382
  });
@@ -4385,7 +4508,8 @@ var annotationLayer = function annotationLayer(arg) {
4385
4508
 
4386
4509
 
4387
4510
  this.modes = {
4388
- edit: 'edit'
4511
+ edit: 'edit',
4512
+ cursor: 'cursor'
4389
4513
  };
4390
4514
  /* Keys are short-hand for preferred event modifiers. Values are classes to
4391
4515
  * apply to the map node. */
@@ -4401,11 +4525,13 @@ var annotationLayer = function annotationLayer(arg) {
4401
4525
  *
4402
4526
  * @param {string|null} [arg] `undefined` to get the current mode, `null` to
4403
4527
  * stop creating/editing, `this.modes.edit` (`'edit'`) plus an annotation
4404
- * to switch to edit mode, or the name of the type of annotation to
4405
- * create. Available annotations can listed via
4528
+ * to switch to edit mode, `this.modes.cursor` plus an annotation to
4529
+ * switch to using the annotation as a cursor, or the name of the type of
4530
+ * annotation to create. Available annotations can listed via
4406
4531
  * {@link geo.listAnnotations}.
4407
- * @param {geo.annotation} [editAnnotation] If `arg === this.modes.edit`,
4408
- * this is the annotation that should be edited.
4532
+ * @param {geo.annotation} [editAnnotation] If `arg === this.modes.edit` or
4533
+ * `arg === this.modes.cursor`, this is the annotation that should be
4534
+ * edited or used.
4409
4535
  * @param {object} [options] Additional options to pass when creating an
4410
4536
  * annotation.
4411
4537
  * @returns {string|null|this} The current mode or the layer.
@@ -4417,13 +4543,13 @@ var annotationLayer = function annotationLayer(arg) {
4417
4543
  return m_mode;
4418
4544
  }
4419
4545
 
4420
- if (arg !== m_mode || arg === m_this.modes.edit && editAnnotation !== m_this.editAnnotation || arg !== m_this.modes.edit && arg && !m_this.currentAnnotation) {
4546
+ if (arg !== m_mode || (arg === m_this.modes.edit || arg === m_this.modes.cursor) && editAnnotation !== m_this.editAnnotation || arg !== m_this.modes.edit && arg !== m_this.modes.cursor && arg && !m_this.currentAnnotation) {
4421
4547
  var createAnnotation,
4422
4548
  actions,
4423
4549
  mapNode = m_this.map().node(),
4424
4550
  oldMode = m_mode;
4425
4551
  m_mode = arg;
4426
- mapNode.toggleClass('annotation-input', !!(m_mode && m_mode !== m_this.modes.edit));
4552
+ mapNode.toggleClass('annotation-input', !!(m_mode && m_mode !== m_this.modes.edit && m_mode !== m_this.modes.cursor));
4427
4553
 
4428
4554
  if (!m_mode || m_mode === m_this.modes.edit) {
4429
4555
  Object.values(m_this._booleanClasses).forEach(function (c) {
@@ -4455,6 +4581,13 @@ var annotationLayer = function annotationLayer(arg) {
4455
4581
  m_this.modified();
4456
4582
  m_this.draw();
4457
4583
  break;
4584
+
4585
+ case geo_annotation.state.cursor:
4586
+ m_this.currentAnnotation.state(geo_annotation.state.done);
4587
+ m_this.modified();
4588
+ m_this.draw();
4589
+ m_this.map().node().toggleClass('annotation-cursor', false);
4590
+ break;
4458
4591
  }
4459
4592
 
4460
4593
  m_this.currentAnnotation = null;
@@ -4464,6 +4597,12 @@ var annotationLayer = function annotationLayer(arg) {
4464
4597
  m_this.currentAnnotation = editAnnotation;
4465
4598
  m_this.currentAnnotation.state(geo_annotation.state.edit);
4466
4599
  m_this.modified();
4600
+ } else if (m_mode === m_this.modes.cursor) {
4601
+ m_this.currentAnnotation = editAnnotation;
4602
+ m_this.currentAnnotation.state(geo_annotation.state.cursor);
4603
+ m_this.modified();
4604
+ m_this.map().node().toggleClass('annotation-cursor', true);
4605
+ actions = m_this.currentAnnotation.actions(geo_annotation.state.cursor);
4467
4606
  } else if (registry.registries.annotations[m_mode]) {
4468
4607
  createAnnotation = registry.registries.annotations[m_mode].func;
4469
4608
  }
@@ -4478,6 +4617,9 @@ var annotationLayer = function annotationLayer(arg) {
4478
4617
  m_this.currentAnnotation = createAnnotation(options);
4479
4618
  m_this.addAnnotation(m_this.currentAnnotation, null);
4480
4619
  actions = m_this.currentAnnotation.actions(geo_annotation.state.create);
4620
+ }
4621
+
4622
+ if (actions) {
4481
4623
  $.each(actions, function (idx, action) {
4482
4624
  m_this.map().interactor().addAction(action);
4483
4625
  });
@@ -4488,7 +4630,7 @@ var annotationLayer = function annotationLayer(arg) {
4488
4630
  oldMode: oldMode
4489
4631
  });
4490
4632
 
4491
- if (oldMode === m_this.modes.edit) {
4633
+ if (oldMode === m_this.modes.edit || oldMode === m_this.modes.cursor) {
4492
4634
  m_this.modified();
4493
4635
  }
4494
4636
  }
@@ -5188,13 +5330,19 @@ var annotationLayer = function annotationLayer(arg) {
5188
5330
  this.toPolygonList = function (opts) {
5189
5331
  var poly = [];
5190
5332
  opts = opts || {};
5191
- opts.annotationIndices = [];
5333
+ var indices = [];
5334
+
5335
+ if (!opts.annotationIndices) {
5336
+ opts.annotationIndices = {};
5337
+ }
5338
+
5339
+ opts.annotationIndices[m_this.id()] = indices;
5192
5340
  m_annotations.forEach(function (annotation, idx) {
5193
5341
  if (annotation.toPolygonList) {
5194
5342
  annotation.toPolygonList(opts).forEach(function (p) {
5195
5343
  return poly.push(p);
5196
5344
  });
5197
- opts.annotationIndices.push(idx);
5345
+ indices.push(idx);
5198
5346
  }
5199
5347
  });
5200
5348
  return poly;
@@ -5220,16 +5368,17 @@ var annotationLayer = function annotationLayer(arg) {
5220
5368
  var keepIds = {};
5221
5369
  var reusedIds = {};
5222
5370
  var correspond, exact, annot;
5371
+ var indices = (opts.annotationIndices || {})[m_this.id()];
5223
5372
 
5224
- if (opts.annotationIndices && opts.correspond && opts.correspond.poly1 && opts.annotationIndices.length === opts.correspond.poly1.length) {
5373
+ if (indices && opts.correspond && opts.correspond.poly1 && indices.length === opts.correspond.poly1.length) {
5225
5374
  correspond = opts.correspond.poly1;
5226
5375
  exact = opts.correspond.exact1;
5227
5376
  annot = m_this.annotations();
5228
5377
  }
5229
5378
 
5230
- if (keep !== 'all' && keep !== 'none') {
5379
+ if (keep !== 'all' && keep !== 'none' && annot) {
5231
5380
  annot.forEach(function (oldAnnot, idx) {
5232
- if (opts.annotationIndices.indexOf(idx) < 0) {
5381
+ if (indices.indexOf(idx) < 0) {
5233
5382
  keepIds[oldAnnot.id()] = true;
5234
5383
  }
5235
5384
  });
@@ -5256,7 +5405,7 @@ var annotationLayer = function annotationLayer(arg) {
5256
5405
  for (var i = 0; i < correspond.length; i += 1) {
5257
5406
  if (correspond[i] && correspond[i].indexOf(idx) >= 0) {
5258
5407
  var _ret = function () {
5259
- var orig = annot[opts.annotationIndices[i]];
5408
+ var orig = annot[indices[i]];
5260
5409
 
5261
5410
  if (keep !== 'all' && keep !== 'none' && exact && exact[i] && exact[i].indexOf(idx) >= 0) {
5262
5411
  keepIds[orig.id()] = true;
@@ -5308,7 +5457,7 @@ var annotationLayer = function annotationLayer(arg) {
5308
5457
 
5309
5458
 
5310
5459
  polyAnnot.forEach(function (p) {
5311
- m_this.addAnnotation(registry.createAnnotation('polygon', p), m_this.gcs(), false);
5460
+ m_this.addAnnotation(registry.createAnnotation('polygon', p), m_this.map().gcs(), false);
5312
5461
  update = true;
5313
5462
  });
5314
5463
 
@@ -9864,6 +10013,34 @@ geo_event.annotation.mode = 'geo_annotation_mode';
9864
10013
  */
9865
10014
 
9866
10015
  geo_event.annotation.boolean = 'geo_annotation_boolean';
10016
+ /**
10017
+ * Triggered when an annotation is in cursor mode and the mouse is clicked.
10018
+ *
10019
+ * @event geo.event.annotation.cursor_click
10020
+ * @type {geo.event.base}
10021
+ * @property {geo.annotation} annotation The annotation that is being operated
10022
+ * on.
10023
+ * @property {string} operation The operation being performed.
10024
+ * @property {boolean} [cancel] If the handle sets this to false, don't apply
10025
+ * the operation to the annotation layer.
10026
+ * @property {object} event The triggering event.
10027
+ */
10028
+
10029
+ geo_event.annotation.cursor_click = 'geo_annotation_cursor_click';
10030
+ /**
10031
+ * Triggered when an annotation is in cursor mode and an action occurs.
10032
+ *
10033
+ * @event geo.event.annotation.cursor_action
10034
+ * @type {geo.event.base}
10035
+ * @property {geo.annotation} annotation The annotation that is being operated
10036
+ * on.
10037
+ * @property {string} operation The operation being performed.
10038
+ * @property {boolean} [cancel] If the handle sets this to false, don't apply
10039
+ * the operation to the annotation layer.
10040
+ * @property {object} event The triggering event.
10041
+ */
10042
+
10043
+ geo_event.annotation.cursor_action = 'geo_annotation_cursor_action';
9867
10044
  module.exports = geo_event;
9868
10045
 
9869
10046
  /***/ }),
@@ -16702,13 +16879,15 @@ var map = function map(arg) {
16702
16879
  * center.
16703
16880
  * @param {boolean} [ignoreDiscreteZoom] If `true`, ignore the discreteZoom
16704
16881
  * option when determining the new view.
16882
+ * @param {boolean} [ignoreClampBounds] If `true`, ignore the clampBounds
16883
+ * option when determining the new view.
16705
16884
  * @returns {number|this}
16706
16885
  * @fires geo.event.zoom
16707
16886
  * @fires geo.event.pan
16708
16887
  */
16709
16888
 
16710
16889
 
16711
- this.zoom = function (val, origin, ignoreDiscreteZoom) {
16890
+ this.zoom = function (val, origin, ignoreDiscreteZoom, ignoreClampBounds) {
16712
16891
  if (val === undefined) {
16713
16892
  return m_zoom;
16714
16893
  }
@@ -16717,10 +16896,14 @@ var map = function map(arg) {
16717
16896
  /* If we are zooming around a point, ignore the clamp bounds */
16718
16897
 
16719
16898
  var aroundPoint = origin && (origin.mapgcs || origin.geo) && origin.map;
16720
- var ignoreClampBounds = aroundPoint;
16899
+
16900
+ if (aroundPoint) {
16901
+ ignoreClampBounds = true;
16902
+ }
16721
16903
  /* The ignoreDiscreteZoom flag is intended to allow non-integer zoom values
16722
16904
  * during animation. */
16723
16905
 
16906
+
16724
16907
  val = m_this._fix_zoom(val, ignoreDiscreteZoom);
16725
16908
 
16726
16909
  if (val === m_zoom) {
@@ -16747,7 +16930,7 @@ var map = function map(arg) {
16747
16930
  m_this.pan({
16748
16931
  x: 0,
16749
16932
  y: 0
16750
- }, ignoreDiscreteZoom);
16933
+ }, ignoreDiscreteZoom, ignoreClampBounds);
16751
16934
  }
16752
16935
 
16753
16936
  return m_this;
@@ -17493,6 +17676,8 @@ var map = function map(arg) {
17493
17676
  * a value based on what canceled a transition, `transition`: the current
17494
17677
  * transition that just completed, `next`: a boolean if another transition
17495
17678
  * follows immediately.
17679
+ * @param {boolean} [opts.endClamp=true] If `false`, the last center change
17680
+ * will not clamp to the bounds and zoom values.
17496
17681
  * @param {string|geo.transform|null} [gcs] Input gcs. `undefined` to use
17497
17682
  * the interface gcs, `null` to use the map gcs, or any other transform.
17498
17683
  * Applies only to `opts.center` and to converting zoom values to height,
@@ -17602,7 +17787,8 @@ var map = function map(arg) {
17602
17787
  zCoord: opts.zCoord,
17603
17788
  done: opts.done,
17604
17789
  duration: opts.duration,
17605
- zoomOrigin: opts.zoomOrigin
17790
+ zoomOrigin: opts.zoomOrigin,
17791
+ endClamp: opts.endClamp
17606
17792
  };
17607
17793
  m_transition.interp = opts.interp([m_transition.start.center.x, m_transition.start.center.y, opts.zCoord ? zoom2z(m_transition.start.zoom) : m_transition.start.zoom, m_transition.start.rotation], [m_transition.end.center ? m_transition.end.center.x : m_transition.start.center.x, m_transition.end.center ? m_transition.end.center.y : m_transition.start.center.y, opts.zCoord ? zoom2z(m_transition.end.zoom) : m_transition.end.zoom, m_transition.end.rotation]);
17608
17794
  /**
@@ -17654,10 +17840,11 @@ var map = function map(arg) {
17654
17840
  if (m_transition.end.center) {
17655
17841
  var needZoom = m_zoom !== m_this._fix_zoom(m_transition.end.zoom);
17656
17842
 
17657
- m_this.center(m_transition.end.center, null, needZoom, needZoom);
17843
+ var noEndClamp = needZoom || opts.endClamp === false;
17844
+ m_this.center(m_transition.end.center, null, noEndClamp, noEndClamp);
17658
17845
  }
17659
17846
 
17660
- m_this.zoom(m_transition.end.zoom, m_transition.zoomOrigin);
17847
+ m_this.zoom(m_transition.end.zoom, m_transition.zoomOrigin, opts.endClamp === false, opts.endClamp === false);
17661
17848
  m_this.rotation(fix_rotation(m_transition.end.rotation));
17662
17849
  }
17663
17850
 
@@ -17697,7 +17884,7 @@ var map = function map(arg) {
17697
17884
  x: p[0],
17698
17885
  y: p[1]
17699
17886
  }, null);
17700
- m_this.zoom(p[2], m_transition.zoomOrigin, true);
17887
+ m_this.zoom(p[2], m_transition.zoomOrigin, true, true);
17701
17888
  }
17702
17889
 
17703
17890
  m_this.rotation(p[3], undefined, true);
@@ -19028,8 +19215,8 @@ var Mousetrap = __webpack_require__(3345);
19028
19215
  * event must occur within this time in milliseconds of the mouse down
19029
19216
  * event for it to be considered a click.
19030
19217
  * @property {boolean|number} [click.cancelOnMove=true] If true, don't generate
19031
- * click events if the mouse moved at all. If a positive number, the distance
19032
- * at which to cancel click events when the mouse moves.
19218
+ * click events if the mouse moved at all. If a positive number, the
19219
+ * distance at which to cancel click events when the mouse moves.
19033
19220
  * @property {object} [keyboard] An object describing which keyboard events are
19034
19221
  * handled.
19035
19222
  * @property {object} [keyboard.actions] An object with different actions that
@@ -19042,6 +19229,9 @@ var Mousetrap = __webpack_require__(3345);
19042
19229
  * an object with keys of the meta keys that are required to be down or
19043
19230
  * up for that scale action to trigger. If the value of the meta key is
19044
19231
  * truthy, it must be down. If `false`, it must be up.
19232
+ * @property {string[]} [keyboard.metakeyMouseEvents] A list of meta keys
19233
+ * * that, when typed singly, trigger a repeat of the last mousemove or
19234
+ * actionmove event so that listeners can update metakey information.
19045
19235
  * @property {boolean} [keyboard.focusHighlight=true] If truthy, when the map
19046
19236
  * gains focus, a highlight style is shown around it. This gives an
19047
19237
  * indicator that keyboard events will affect the map, but may not be
@@ -19144,6 +19334,7 @@ var mapInteractor = function mapInteractor(args) {
19144
19334
  m_boundKeys,
19145
19335
  m_touchHandler,
19146
19336
  m_state,
19337
+ m_nextStateId = 0,
19147
19338
  m_queue,
19148
19339
  $node,
19149
19340
  m_selectionLayer = null,
@@ -19341,6 +19532,11 @@ var mapInteractor = function mapInteractor(args) {
19341
19532
  }
19342
19533
  },
19343
19534
 
19535
+ /* This is a list of meta keys that when typed singly trigger a repeat
19536
+ * of the last mousemove or actionmove event so that listeners can
19537
+ * update metakey information. */
19538
+ metakeyMouseEvents: ['shift', 'ctrl', 'shift+ctrl', 'shift+alt', 'shift+meta'],
19539
+
19344
19540
  /* if focusHighlight is truthy, then a class is added to the map such
19345
19541
  * that when the map gets focus, it is indicated inside the border of
19346
19542
  * the map -- browsers usually show focus on the outside, which isn't
@@ -19768,6 +19964,43 @@ var mapInteractor = function mapInteractor(args) {
19768
19964
  m_touchHandler.lastEventType = evtType[2];
19769
19965
  }
19770
19966
  };
19967
+ /**
19968
+ * Repeat a mousemove or actionmove event with new metakey information.
19969
+ *
19970
+ * @param {event} [evt] A Mousetrap event with the key change.
19971
+ * @fires geo.event.mousemove
19972
+ * @fires geo.event.actionmove
19973
+ */
19974
+
19975
+
19976
+ this._repeatMouseMoveEvent = function (evt) {
19977
+ if (!m_mouse || !m_mouse.modifiers) {
19978
+ return;
19979
+ }
19980
+
19981
+ var old = {
19982
+ alt: m_mouse.modifiers.alt,
19983
+ ctrl: m_mouse.modifiers.ctrl,
19984
+ meta: m_mouse.modifiers.meta,
19985
+ shift: m_mouse.modifiers.shift
19986
+ };
19987
+
19988
+ m_this._getMouseModifiers(evt);
19989
+
19990
+ if (m_mouse.modifiers.alt === old.alt && m_mouse.modifiers.ctrl === old.ctrl && m_mouse.modifiers.meta === old.meta && m_mouse.modifiers.shift === old.shift) {
19991
+ return;
19992
+ }
19993
+
19994
+ if (m_state.boundDocumentHandlers) {
19995
+ m_this.map().geoTrigger(geo_event.actionmove, {
19996
+ state: m_this.state(),
19997
+ mouse: m_this.mouse(),
19998
+ event: evt
19999
+ });
20000
+ } else {
20001
+ m_this.map().geoTrigger(geo_event.mousemove, m_this.mouse());
20002
+ }
20003
+ };
19771
20004
  /**
19772
20005
  * Retrigger a mouse movement with the current mouse state.
19773
20006
  * @fires geo.event.mousemove
@@ -19836,6 +20069,14 @@ var mapInteractor = function mapInteractor(args) {
19836
20069
  }
19837
20070
  }
19838
20071
 
20072
+ if (m_options.keyboard.metakeyMouseEvents) {
20073
+ m_options.keyboard.metakeyMouseEvents.forEach(function (meta) {
20074
+ m_keyHandler.bind(meta, m_this._repeatMouseMoveEvent, 'keydown');
20075
+ m_keyHandler.bind(meta, m_this._repeatMouseMoveEvent, 'keyup');
20076
+ bound.push(meta);
20077
+ });
20078
+ }
20079
+
19839
20080
  m_boundKeys = bound;
19840
20081
  }
19841
20082
 
@@ -20250,6 +20491,7 @@ var mapInteractor = function mapInteractor(args) {
20250
20491
  kind: 'move'
20251
20492
  }; // store the state object
20252
20493
 
20494
+ m_nextStateId += 1;
20253
20495
  m_state = {
20254
20496
  action: action,
20255
20497
  actionRecord: actionRecord,
@@ -20257,6 +20499,7 @@ var mapInteractor = function mapInteractor(args) {
20257
20499
  initialZoom: map.zoom(),
20258
20500
  initialRotation: map.rotation(),
20259
20501
  initialEventRotation: evt.rotation,
20502
+ stateId: m_nextStateId,
20260
20503
  delta: {
20261
20504
  x: 0,
20262
20505
  y: 0
@@ -21384,7 +21627,7 @@ var mapInteractor = function mapInteractor(args) {
21384
21627
  preventDefault: function preventDefault() {},
21385
21628
  simulated: true
21386
21629
  };
21387
- m_keyHandler.trigger(keys);
21630
+ m_keyHandler.trigger(keys, options.event);
21388
21631
  return;
21389
21632
  }
21390
21633
 
@@ -26603,6 +26846,8 @@ module.exports = quadFeature;
26603
26846
 
26604
26847
  var $ = __webpack_require__(5638);
26605
26848
 
26849
+ var geo_action = __webpack_require__(7839);
26850
+
26606
26851
  var widgets = {
26607
26852
  dom: {}
26608
26853
  };
@@ -27061,6 +27306,7 @@ util.registerAnnotation = function (name, func, features) {
27061
27306
  func: func,
27062
27307
  features: features || {}
27063
27308
  };
27309
+ geo_action['annotation_' + name] = 'geo_annotation_' + name;
27064
27310
  return old;
27065
27311
  };
27066
27312
  /**
@@ -27577,7 +27823,7 @@ module.exports = sceneObject;
27577
27823
  * @constant
27578
27824
  * @type {string}
27579
27825
  */
27580
- module.exports = "965d40f46507df035bc01450d2bd15c3ed06368d";
27826
+ module.exports = "b37bd8311e8146b64ad199fccd0b4a5404d78157";
27581
27827
 
27582
27828
  /***/ }),
27583
27829
 
@@ -40171,6 +40417,7 @@ function generateCorrespondence(poly1, poly2, newpoly, results) {
40171
40417
  results[ekey] = Array(poly.length);
40172
40418
  poly.forEach(function (p, idx) {
40173
40419
  var found = {};
40420
+ var missed = 0;
40174
40421
  p.forEach(function (h) {
40175
40422
  return h.forEach(function (pt) {
40176
40423
  var key = '_' + pt[0] + '_' + pt[1];
@@ -40179,11 +40426,13 @@ function generateCorrespondence(poly1, poly2, newpoly, results) {
40179
40426
  pts[key].forEach(function (val) {
40180
40427
  found[val] = (found[val] || 0) + 1;
40181
40428
  });
40429
+ } else {
40430
+ missed += 1;
40182
40431
  }
40183
40432
  });
40184
40433
  });
40185
40434
  Object.keys(found).forEach(function (nidx) {
40186
- if (found[nidx] === counts[+nidx]) {
40435
+ if (found[nidx] === counts[+nidx] && !missed && p.length === newpoly[+nidx].length) {
40187
40436
  if (!results[ekey][idx]) {
40188
40437
  results[ekey][idx] = [];
40189
40438
  }
@@ -40699,7 +40948,7 @@ module.exports = vectorFeature;
40699
40948
  * @constant
40700
40949
  * @type {string}
40701
40950
  */
40702
- module.exports = "1.9.3";
40951
+ module.exports = "1.10.1";
40703
40952
 
40704
40953
  /***/ }),
40705
40954
 
@@ -46466,7 +46715,7 @@ var ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_g
46466
46715
  var ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);
46467
46716
  var ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_3___);
46468
46717
  // Module
46469
- ___CSS_LOADER_EXPORT___.push([module.id, ".geojs-map{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.geojs-map .geo-attribution{position:absolute;right:0;bottom:0;padding-right:5px;cursor:auto;font:11px/1.5 \"Helvetica Neue\",Arial,Helvetica,sans-serif;z-index:1001;background:rgba(255,255,255,0.7);clear:both;display:block;pointer-events:auto}.geojs-map .geo-attribution .geo-attribution-layer{padding-left:5px}.geojs-map .canvas-canvas{display:block;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-o-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.geojs-map .webgl-canvas{display:block}.geojs-map .geojs-layer{position:absolute;width:100%;height:100%;left:0;top:0;pointer-events:none}.geojs-map .geojs-layer.active:not(.hidden) > *{pointer-events:auto}.geojs-map .geojs-layer.hidden{display:none}.geojs-map .geojs-layer.hidden[renderer=\"webgl\"]{display:inherit}.geojs-map .geo-tile-layer{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-o-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;line-height:0;font-size:0}.geojs-map.annotation-input{cursor:crosshair}.geojs-map.annotation-input.annotation-intersect{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") 12 12,crosshair}.geojs-map.annotation-input.annotation-difference{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ") 12 12,crosshair}.geojs-map.annotation-input.annotation-union{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ") 12 12,crosshair}.geojs-map.annotation-input.annotation-xor{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_3___ + ") 12 12,crosshair}.geojs-map.highlight-focus:after{content:\"\";display:block;position:absolute;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;left:0;top:0;right:0;bottom:0;border:3px solid Highlight;opacity:1;-ms-filter:none;filter:none;-webkit-transition:opacity 0s;-moz-transition:opacity 0s;-o-transition:opacity 0s;-ms-transition:opacity 0s;transition:opacity 0s;visibility:hidden}.geojs-map.highlight-focus:focus:after{visibility:visible;-webkit-transition:opacity 2.5s ease-in;-moz-transition:opacity 2.5s ease-in;-o-transition:opacity 2.5s ease-in;-ms-transition:opacity 2.5s ease-in;transition:opacity 2.5s ease-in;opacity:0;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";filter:alpha(opacity=0)}.geo-tile-container{position:absolute}.geo-tile-container.crop{overflow:hidden}", "",{"version":3,"sources":["webpack://./main.styl","webpack://./../node_modules/nib/lib/nib/vendor.styl","webpack://./../node_modules/nib/lib/nib/overflow.styl","webpack://./../node_modules/nib/lib/nib/flex.styl","webpack://./../node_modules/nib/lib/nib/border.styl"],"names":[],"mappings":"AAEA,WACE,iBAAS,CCwCO,wBAAG,CAAH,qBAAG,CAAH,oBAAG,CARN,gBAAG,CChBd,eAAU,CFZZ,4BACE,iBAAS,CACT,OAAM,CACN,QAAO,CACP,iBAAc,CC4ed,WAAO,CD1eP,yDAA8B,CAC9B,YAAQ,CC6dR,gCAAW,CD3dX,UAAM,CGMN,aAAS,CHJT,mBAAe,CAEf,mDACE,gBAAa,CAEjB,0BGDE,aAAS,CFqBK,4BAAG,CAAH,yBAAG,CAAH,uBAAG,CAAH,wBAAG,CARN,oBAAG,CDThB,yBGJE,aAAS,CHOX,wBACE,iBAAS,CACT,UAAM,CACN,WAAO,CACP,MAAK,CACL,KAAI,CACJ,mBAAe,CAEb,gDACE,mBAAe,CACnB,+BGjBA,YAAS,CHmBT,iDGnBA,eAAS,CHsBX,2BCDgB,4BAAG,CAAH,yBAAG,CAAH,uBAAG,CAAH,wBAAG,CARN,oBAAG,CDWd,aAAY,CACZ,WAAU,CAEZ,4BCscE,gBAAO,CDpcP,iDCocA,8DAAO,CDlcP,kDCkcA,8DAAO,CDhcP,6CCgcA,8DAAO,CD9bP,2CC8bA,8DAAO,CD1bP,iCACE,UAAQ,CGxCV,aAAS,CH0CP,iBAAS,CCrBG,6BAAG,CAAH,0BAAG,CARN,qBAAG,CD+BZ,MAAK,CACL,KAAI,CACJ,OAAM,CACN,QAAO,CI5DT,0BAAQ,CH4PV,SAAS,CAQH,eAAY,CACZ,WAAQ,CArOE,6BAAG,CAAH,0BAAG,CAAH,wBAAG,CAAH,yBAAG,CARN,qBAAG,CD0CZ,iBAAW,CACb,uCACE,kBAAW,CCpCC,uCAAG,CAAH,oCAAG,CAAH,kCAAG,CAAH,mCAAG,CARN,+BAAG,CAoOhB,SAAS,CAWH,+DAAyE,CACzE,uBAAiC,CDhMzC,oBACE,iBAAS,CACT,yBEhEE,eAAU","sourcesContent":["@import '~nib/index.styl'\n\n.geojs-map\n position relative\n user-select none\n overflow hidden\n\n .geo-attribution\n position absolute\n right 0\n bottom 0\n padding-right 5px\n cursor auto\n font 11px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif\n z-index 1001\n background rgba(255,255,255,0.7)\n clear both\n display block\n pointer-events auto\n\n .geo-attribution-layer\n padding-left 5px\n\n .canvas-canvas\n display block\n transform-origin 0px 0px\n .webgl-canvas\n display block\n\n .geojs-layer\n position absolute\n width 100%\n height 100%\n left 0\n top 0\n pointer-events none\n &.active:not(.hidden)\n > *\n pointer-events auto\n &.hidden\n display none\n &.hidden[renderer=\"webgl\"]\n display inherit\n\n .geo-tile-layer\n transform-origin 0px 0px\n line-height 0\n font-size 0\n\n &.annotation-input\n cursor crosshair\n &.annotation-intersect\n cursor embedurl(\"./css/cursor-crosshair-intersect.svg\") 12 12,crosshair\n &.annotation-difference\n cursor embedurl(\"./css/cursor-crosshair-difference.svg\") 12 12,crosshair\n &.annotation-union\n cursor embedurl(\"./css/cursor-crosshair-union.svg\") 12 12,crosshair\n &.annotation-xor\n cursor embedurl(\"./css/cursor-crosshair-xor.svg\") 12 12,crosshair\n\n &.highlight-focus\n &:after\n content \"\"\n display block\n position absolute\n box-sizing border-box\n left 0px\n top 0px\n right 0px\n bottom 0px\n // Highlight is technically a css2 color. We may need to specify it\n // explicitly. #3B66A6 seems close\n border 3px solid Highlight\n opacity 1\n transition opacity 0s\n visibility hidden\n &:focus:after\n visibility visible\n transition opacity 2.5s ease-in\n opacity 0\n\n.geo-tile-container\n position absolute\n &.crop\n overflow hidden\n","use('../nodes/vendor-helpers.js')\n@import 'config'\n\n/*\n * Alias \"nowrap\" as \"no-wrap\".\n */\n\nno-wrap = unquote('nowrap')\n\n/*\n * Helper to find out if a given value is a width\n */\n\nis-width(val)\n if auto == val\n return true\n else if val && 'unit' == type(val)\n // Stylus does not short circuit so we need to perform this as a distinct\n // operation to prevent errors\n return '' != unit(val)\n return false\n\n/*\n * Vendor support for the given prop / arguments, optionally specifying the\n * only prefixes to utilize, or those which should be ignored.\n */\n\nvendor(prop, args, only = null, ignore = null, vendor-property = true)\n need_normalize = !vendor-property or prop in ('transition' 'transition-property' 'border-image' 'border-image-slice')\n for prefix in vendor-prefixes\n unless (only and !(prefix in only)) or (ignore and prefix in ignore)\n if official == prefix\n if need_normalize\n {prop}: normalize(prop,('%s' % args))\n else\n {prop}: args\n else\n newprop = prop\n newprop = '-' + prefix + '-' + prop if vendor-property\n\n if need_normalize\n {newprop}: normalize(prop,('%s' % args),prefix)\n else\n {newprop}: args\n/*\n * Vendorize the given value.\n */\n\nvendor-value(arg, only = null, ignore = null)\n prop = current-property[0]\n for prefix in vendor-prefixes\n unless (only and !(prefix in only)) or (ignore and prefix in ignore) or official == prefix\n add-property(prop, '-%s-%s' % (prefix arg))\n arg\n\n/*\n * Vendor \"box-shadow\" support.\n */\n\nbox-shadow()\n vendor('box-shadow', arguments, only: webkit official)\n\n/*\n * Vendor \"user-select\" support.\n */\n\nuser-select()\n vendor('user-select', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"column-count\" support.\n */\n\ncolumn-count()\n vendor('column-count', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-gap\" support.\n */\n\ncolumn-gap()\n vendor('column-gap', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule\" support.\n */\n\ncolumn-rule()\n vendor('column-rule', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-color\" support.\n */\n\ncolumn-rule-color()\n vendor('column-rule-color', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-width\" support.\n */\n\ncolumn-rule-width()\n vendor('column-rule-width', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-style\" support.\n */\n\ncolumn-rule-style()\n vendor('column-rule-style', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-width\" support.\n */\n\ncolumn-width()\n vendor('column-width', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-span\" support.\n */\n\ncolumn-span()\n vendor('column-span', arguments, only: webkit official)\n\n/*\n * Vendor \"column-fill\" support.\n */\n\ncolumn-fill()\n vendor('column-fill', arguments, only: moz official)\n\n/*\n * Legacy syntax support for background-clip and background-origin\n */\n\nlegacy-bg-values(property, args)\n legacy_args = ()\n importance = unquote('')\n for subargs in args\n for arg in subargs\n if arg in (border-box padding-box content-box)\n arg = unquote('border') if arg == border-box\n arg = unquote('padding') if arg == padding-box\n arg = unquote('content') if arg == content-box\n if arg != '!important'\n push(legacy_args,arg)\n else\n importance = !important\n vendor(property, unquote(join(', ',legacy_args)) importance, only: moz webkit)\n\n/*\n * Vendor \"background-clip\" support.\n */\n\nbackground-clip()\n if arguments[0] == text\n vendor('background-clip', arguments, only: webkit)\n else\n legacy-bg-values('background-clip', arguments)\n background-clip: arguments\n\n/*\n * Vendor \"background-origin\" support.\n */\n\nbackground-origin()\n legacy-bg-values('background-origin', arguments)\n background-origin: arguments\n\n/*\n * Vendor \"transform\" support.\n */\n\ntransform()\n vendor('transform', arguments)\n\n/*\n * Vendor \"transform-origin\" support.\n */\ntransform-origin()\n vendor('transform-origin', arguments)\n\n/*\n * Vendor \"transform-style\" support.\n */\n\ntransform-style()\n vendor('transform-style', arguments)\n\n/*\n * Vendor \"border-image\" support.\n */\n\nborder-image()\n vendor('border-image', arguments, only: webkit moz o official)\n\n/*\n * Vendor \"transition\" support.\n */\n\ntransition()\n vendor('transition', arguments)\n\n/*\n * Vendor \"transition-property\" support.\n */\n\ntransition-property()\n vendor('transition-property', arguments)\n\n/*\n * Vendor \"transition-duration\" support.\n */\n\ntransition-duration()\n vendor('transition-duration', arguments)\n\n/*\n * Vendor \"transition-timing-function\" support.\n */\n\ntransition-timing-function()\n vendor('transition-timing-function', arguments)\n\n/*\n * Vendor \"transition-delay\" support.\n */\n\ntransition-delay()\n vendor('transition-delay', arguments)\n\n/*\n * Vendor \"backface-visibility\" support.\n */\n\nbackface-visibility()\n vendor('backface-visibility', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"perspective\" support.\n */\n\nperspective()\n if mixin\n vendor('perspective', arguments, only: webkit moz ms official)\n else\n 'perspective(%s)' % arguments\n\n/*\n * Vendor \"perspective-origin\" support.\n */\n\nperspective-origin()\n vendor('perspective-origin', arguments, only: webkit moz ms official)\n\n/*\n * Opacity with conditional IE support.\n */\n\nopacity(n, args...)\n opacity: n args\n if support-for-ie\n if n == inherit or n == initial\n -ms-filter: n args\n filter: n args\n else\n val = round(n * 100)\n if val == 100\n -ms-filter: none args\n filter: none args\n else\n -ms-filter: '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=%s)\"' % val args\n filter: 'alpha(opacity=%s)' % val args\n\n/*\n * Vendor \"text-size-adjust\"\n */\n\ntext-size-adjust()\n vendor('text-size-adjust', arguments)\n\n/*\n * Alias the \"white-space\" property.\n */\n\nwhitespace()\n white-space: arguments\n\n/*\n * Vendor \"box-sizing\" support.\n */\n\nbox-sizing()\n vendor('box-sizing', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-orient\" support.\n */\n\nbox-orient()\n vendor('box-orient', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-flex-group\" support.\n */\n\nbox-flex-group()\n vendor('box-flex-group', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-ordinal-group\" support.\n */\n\nbox-ordinal-group()\n vendor('box-ordinal-group', arguments, only: webkit moz ms official)\n\n\n/*\n * Vendor \"box-align\" support.\n */\n\nbox-align()\n vendor('box-align', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"box-pack\" support.\n */\n\nbox-pack()\n vendor('box-pack', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"box-direction\" support.\n */\n\nbox-direction()\n vendor('box-direction', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"animation\" support.\n */\n\nanimation()\n vendor('animation', arguments)\n\n\n/*\n * Vendor \"animation-name\" support.\n */\n\nanimation-name()\n vendor('animation-name', arguments)\n\n/*\n * Vendor \"animation-duration\" support.\n */\n\nanimation-duration()\n vendor('animation-duration', arguments)\n\n/*\n * Vendor \"animation-delay\" support.\n */\n\nanimation-delay()\n vendor('animation-delay', arguments)\n\n/*\n * Vendor \"animation-direction\" support.\n */\n\nanimation-direction()\n vendor('animation-direction', arguments)\n\n/*\n * Vendor \"animation-iteration-count\" support.\n */\n\nanimation-iteration-count()\n vendor('animation-iteration-count', arguments)\n\n/*\n * Vendor \"animation-timing-function\" support.\n */\n\nanimation-timing-function()\n vendor('animation-timing-function', arguments)\n\n/*\n * Vendor \"animation-play-state\" support.\n */\n\nanimation-play-state()\n vendor('animation-play-state', arguments)\n\n/*\n * Vendor \"animation-fill-mode\" support.\n */\n\nanimation-fill-mode()\n vendor('animation-fill-mode', arguments)\n\n/*\n * Vendor \"hyphens\" support.\n */\n\nhyphens()\n vendor('hyphens', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"appearance\" support.\n */\n\nappearance()\n vendor('appearance', arguments, only: webkit moz official)\n\n/*\n * Vendor \"tab-size\" support.\n */\n\ntab-size()\n vendor('tab-size', arguments, only: moz o official)\n\n/*\n * Vendor \"overflow-scrolling\" support.\n */\n\noverflow-scrolling()\n vendor('overflow-scrolling', arguments, only: webkit official)\n\n/*\n * Vendor \"text-overflow\" support, , -o- for opera 9.* - 10.*\n */\n\ntext-overflow()\n vendor('text-overflow', arguments, only: official o)\n\n/*\n * Vendor \"text-size-adjust\" support.\n */\ntext-size-adjust()\n vendor('text-size-adjust', arguments, only: official webkit ms)\n\n/*\n * Vendor \"font-smoothing\" support, webkit only.\n */\nfont-smoothing()\n vendor('font-smoothing', arguments, only: webkit)\n\n\n/**\n * Vendor input-placeholder/placeholder support.\n *\n * Examples:\n * // Default syntax\n * body\n * placeholder(color #333, font-weight normal)\n *\n * // The comma is important\n * .placeholder-red\n * placeholder(color red,)\n *\n * // We can pass a function\n * green-placeholder()\n * color green\n * .placeholder-green\n * placeholder(green-placeholder)\n *\n * // We can pass a hash\n * textarea\n * placeholder((font-style italic) (font-weight bold) (padding '4px 10px'))\n */\nplaceholder()\n for v in ':-webkit-input' '-moz' ':-moz' '-ms-input'\n &:{v}-placeholder\n for pair in arguments\n if typeof(pair) == 'function'\n pair()\n else if pair is not null && pair[0] is not null\n {pair[0]}: type(pair[1]) == 'string' ? s(pair[1]) : pair[1]\ninput-placeholder = placeholder\n\n/*\n * Vendor background support (gradients).\n */\n\nbackground()\n if match('-gradient\\(', ''+arguments)\n vendor('background', arguments, vendor-property: false)\n else\n background arguments\n\nbackground-image()\n if match('-gradient\\(', ''+arguments)\n vendor('background-image', arguments, vendor-property: false)\n else\n background-image arguments\n\ncursor()\n if match('-gradient\\(', ''+arguments)\n vendor('cursor', arguments, vendor-property: false)\n else\n cursor arguments\n\nlist-style()\n if match('-gradient\\(', ''+arguments)\n vendor('list-style', arguments, vendor-property: false)\n else\n list-style arguments\n\nlist-style-image()\n if match('-gradient\\(', ''+arguments)\n vendor('list-style-image', arguments, vendor-property: false)\n else\n list-style-image arguments\n","/*\n * Overflow utility. Maps to regular overflow, and adds an ellipsis value.\n *\n * Synopsis:\n *\n * overflow: <type>\n *\n * Examples:\n *\n * overflow: auto\n * overflow: hidden\n * overflow: ellipsis\n *\n */\n\noverflow()\n if arguments[0] == ellipsis\n ellipsis()\n else\n overflow: arguments\n","/*\n * Vendor \"display: flex\" support with fallback to obsolete versions.\n */\n\nflex-version ?= box flex\n\n//\n// 1. Display values\n// - http://www.w3.org/TR/css3-flexbox/#flex-containers\n//\ndisplay(type, args...)\n if flex == type || inline-flex == type\n if box in flex-version\n if flex == type\n display: -ms-flexbox args\n display: vendor-value(box args, only: moz webkit)\n else\n display: -ms-inline-flexbox args\n display: vendor-value(inline-box args, only: moz webkit)\n if flex in flex-version\n display: vendor-value(arguments, only: webkit official) // overwrites old webkit\n else\n display: arguments\n\n/*\n * New syntax for browsers like Google Chrome.\n * Plus a translation to the old syntax, if possible.\n */\n\n\n//\n// 5. Ordering and Orientation\n// - http://www.w3.org/TR/css3-flexbox/#ordering-and-orientation\n//\n-flex-obsolete-direction(direction)\n if box in flex-version\n if row-reverse == direction || column-reverse == direction\n vendor('box-direction', reverse, ignore: ms official)\n\n if row == direction || row-reverse == direction\n vendor('box-orient', horizontal, ignore: ms official)\n else if column == direction || column-reverse == direction\n vendor('box-orient', vertical, ignore: ms official)\n\n-flex-obsolete-wrap(value)\n if box in flex-version\n // WARN: wrap-reverse does not have a box equivalent. This will render in different manners\n // on box vs. flex values.\n if 'wrap' == value || wrap-reverse == value\n vendor('box-lines', multiple, ignore: ms official)\n else if nowrap == value\n vendor('box-lines', single, ignore: ms official)\n\nflex-direction(direction)\n // obsolete\n -flex-obsolete-direction(direction)\n\n // new\n if flex in flex-version\n vendor('flex-direction', arguments, only: webkit ms official)\n\nflex-wrap(value)\n // obsolete\n -flex-obsolete-wrap(value)\n\n if flex in flex-version\n vendor('flex-wrap', arguments, only: webkit ms official)\n\nflex-flow()\n // obsolete\n -flex-obsolete-direction(arguments[0])\n -flex-obsolete-direction(arguments[1])\n -flex-obsolete-wrap(arguments[0])\n -flex-obsolete-wrap(arguments[1])\n\n // new\n if flex in flex-version\n vendor('flex-flow', arguments, only: webkit ms official)\n\n\norder()\n // obsolete\n if box in flex-version\n vendor('box-ordinal-group', arguments, ignore: ms official)\n\n // new\n if flex in flex-version\n vendor('flex-order', arguments, only: ms)\n vendor('order', arguments, only: webkit official)\n\n\n//\n// 7. Flexibility\n// - http://www.w3.org/TR/css3-flexbox/#flexibility\n//\nflex-grow(growth)\n // obsolete\n if box in flex-version\n vendor('box-flex', growth)\n\n // new\n if flex in flex-version\n vendor('flex-grow', arguments, only: webkit official)\n\nflex-basis()\n if flex in flex-version\n vendor('flex-basis', arguments, only: webkit official)\n\nflex-shrink()\n if flex in flex-version\n vendor('flex-shrink', arguments, only: webkit official)\n\nflex(growth)\n\n // obsolete\n if box in flex-version\n shrink = 1\n\n if none == growth || initial == growth\n // Well known values\n shrink = 0 if none == growth\n growth = 0\n else if is-width(growth) == true\n // Basis is defined as the first parameter\n growth = arguments[1] || 0\n shrink = arguments[2] if 3 <= length(arguments)\n else if arguments[1] && is-width(arguments[1]) == false\n // Growth is first and shrink is second\n shrink = arguments[1]\n\n // Since we can't make the distinction between growing and shrinking in the box model, take\n // the one that provides the most flexibility.\n vendor('box-flex', max(growth, shrink), ignore: ms)\n\n // new\n if flex in flex-version\n vendor('flex', arguments, only: webkit ms official)\n\n\n// converts the justification alignment\n-convert-justify(align)\n if flex-start == align\n return start\n else if flex-end == align\n return end\n else if space-around == align\n return distribute\n else if space-between == align\n return justify\n else\n return align\n\n//\n// 8. Alignment\n// - http://www.w3.org/TR/css3-flexbox/#alignment\n//\njustify-content(align)\n // obsolete\n if box in flex-version\n vendor('box-pack', -convert-justify(align), ignore: ms official)\n\n // new\n if flex in flex-version\n vendor('flex-pack', -convert-justify(align), only: ms)\n vendor('justify-content', align, only: webkit official)\n\nalign-content(align)\n // WARN: Obsolete spec does not allow for adjustment here\n if flex in flex-version\n vendor('flex-line-pack', -convert-justify(align), only: ms)\n vendor('align-content', align, only: webkit official)\n\n// converts alignment from 'flex' to normal value\n-convert-alignment(align)\n if flex-start == align\n return start\n else if flex-end == align\n return end\n else\n return align\n\nalign-items(align)\n // obsolete\n if box in flex-version\n vendor('box-align', -convert-alignment(align), ignore: ms official)\n\n // new\n if flex in flex-version\n vendor('flex-align', -convert-alignment(align), only: ms)\n vendor('align-items', arguments, only: webkit official)\n\nalign-self(align)\n // WARN: Obsolete spec does not allow for overriding alignment on individual items.\n if flex in flex-version\n vendor('align-self', align, only: webkit official)\n vendor('flex-item-align', -convert-alignment(align), only: ms)\n","/*\n * border: <color>\n * border: ...\n */\n\nborder(color, args...)\n if color is a 'color'\n border: 1px solid color args\n else\n border: arguments\n"],"sourceRoot":""}]);
46718
+ ___CSS_LOADER_EXPORT___.push([module.id, ".geojs-map{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.geojs-map .geo-attribution{position:absolute;right:0;bottom:0;padding-right:5px;cursor:auto;font:11px/1.5 \"Helvetica Neue\",Arial,Helvetica,sans-serif;z-index:1001;background:rgba(255,255,255,0.7);clear:both;display:block;pointer-events:auto}.geojs-map .geo-attribution .geo-attribution-layer{padding-left:5px}.geojs-map .canvas-canvas{display:block;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-o-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.geojs-map .webgl-canvas{display:block}.geojs-map .geojs-layer{position:absolute;width:100%;height:100%;left:0;top:0;pointer-events:none}.geojs-map .geojs-layer.active:not(.hidden) > *{pointer-events:auto}.geojs-map .geojs-layer.hidden{display:none}.geojs-map .geojs-layer.hidden[renderer=\"webgl\"]{display:inherit}.geojs-map .geo-tile-layer{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-o-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;line-height:0;font-size:0}.geojs-map.annotation-input{cursor:crosshair}.geojs-map.annotation-input.annotation-intersect{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") 12 12,crosshair}.geojs-map.annotation-input.annotation-difference{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ") 12 12,crosshair}.geojs-map.annotation-input.annotation-union{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ") 12 12,crosshair}.geojs-map.annotation-input.annotation-xor{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_3___ + ") 12 12,crosshair}.geojs-map.annotation-cursor{cursor:crosshair}.geojs-map.annotation-cursor.annotation-intersect{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") 12 12,crosshair}.geojs-map.annotation-cursor.annotation-difference{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ") 12 12,crosshair}.geojs-map.annotation-cursor.annotation-union{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ") 12 12,crosshair}.geojs-map.annotation-cursor.annotation-xor{cursor:url(" + ___CSS_LOADER_URL_REPLACEMENT_3___ + ") 12 12,crosshair}.geojs-map.highlight-focus:after{content:\"\";display:block;position:absolute;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;left:0;top:0;right:0;bottom:0;border:3px solid Highlight;opacity:1;-ms-filter:none;filter:none;-webkit-transition:opacity 0s;-moz-transition:opacity 0s;-o-transition:opacity 0s;-ms-transition:opacity 0s;transition:opacity 0s;visibility:hidden}.geojs-map.highlight-focus:focus:after{visibility:visible;-webkit-transition:opacity 2.5s ease-in;-moz-transition:opacity 2.5s ease-in;-o-transition:opacity 2.5s ease-in;-ms-transition:opacity 2.5s ease-in;transition:opacity 2.5s ease-in;opacity:0;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";filter:alpha(opacity=0)}.geo-tile-container{position:absolute}.geo-tile-container.crop{overflow:hidden}", "",{"version":3,"sources":["webpack://./main.styl","webpack://./../node_modules/nib/lib/nib/vendor.styl","webpack://./../node_modules/nib/lib/nib/overflow.styl","webpack://./../node_modules/nib/lib/nib/flex.styl","webpack://./../node_modules/nib/lib/nib/border.styl"],"names":[],"mappings":"AAEA,WACE,iBAAS,CCwCO,wBAAG,CAAH,qBAAG,CAAH,oBAAG,CARN,gBAAG,CChBd,eAAU,CFZZ,4BACE,iBAAS,CACT,OAAM,CACN,QAAO,CACP,iBAAc,CC4ed,WAAO,CD1eP,yDAA8B,CAC9B,YAAQ,CC6dR,gCAAW,CD3dX,UAAM,CGMN,aAAS,CHJT,mBAAe,CAEf,mDACE,gBAAa,CAEjB,0BGDE,aAAS,CFqBK,4BAAG,CAAH,yBAAG,CAAH,uBAAG,CAAH,wBAAG,CARN,oBAAG,CDThB,yBGJE,aAAS,CHOX,wBACE,iBAAS,CACT,UAAM,CACN,WAAO,CACP,MAAK,CACL,KAAI,CACJ,mBAAe,CAEb,gDACE,mBAAe,CACnB,+BGjBA,YAAS,CHmBT,iDGnBA,eAAS,CHsBX,2BCDgB,4BAAG,CAAH,yBAAG,CAAH,uBAAG,CAAH,wBAAG,CARN,oBAAG,CDWd,aAAY,CACZ,WAAU,CAEZ,4BCscE,gBAAO,CDpcP,iDCocA,8DAAO,CDlcP,kDCkcA,8DAAO,CDhcP,6CCgcA,8DAAO,CD9bP,2CC8bA,8DAAO,CD3bT,6BC2bE,gBAAO,CDzbP,kDCybA,8DAAO,CDvbP,mDCubA,8DAAO,CDrbP,8CCqbA,8DAAO,CDnbP,4CCmbA,8DAAO,CD/aP,iCACE,UAAQ,CGnDV,aAAS,CHqDP,iBAAS,CChCG,6BAAG,CAAH,0BAAG,CARN,qBAAG,CD0CZ,MAAK,CACL,KAAI,CACJ,OAAM,CACN,QAAO,CIvET,0BAAQ,CH4PV,SAAS,CAQH,eAAY,CACZ,WAAQ,CArOE,6BAAG,CAAH,0BAAG,CAAH,wBAAG,CAAH,yBAAG,CARN,qBAAG,CDqDZ,iBAAW,CACb,uCACE,kBAAW,CC/CC,uCAAG,CAAH,oCAAG,CAAH,kCAAG,CAAH,mCAAG,CARN,+BAAG,CAoOhB,SAAS,CAWH,+DAAyE,CACzE,uBAAiC,CDrLzC,oBACE,iBAAS,CACT,yBE3EE,eAAU","sourcesContent":["@import '~nib/index.styl'\n\n.geojs-map\n position relative\n user-select none\n overflow hidden\n\n .geo-attribution\n position absolute\n right 0\n bottom 0\n padding-right 5px\n cursor auto\n font 11px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif\n z-index 1001\n background rgba(255,255,255,0.7)\n clear both\n display block\n pointer-events auto\n\n .geo-attribution-layer\n padding-left 5px\n\n .canvas-canvas\n display block\n transform-origin 0px 0px\n .webgl-canvas\n display block\n\n .geojs-layer\n position absolute\n width 100%\n height 100%\n left 0\n top 0\n pointer-events none\n &.active:not(.hidden)\n > *\n pointer-events auto\n &.hidden\n display none\n &.hidden[renderer=\"webgl\"]\n display inherit\n\n .geo-tile-layer\n transform-origin 0px 0px\n line-height 0\n font-size 0\n\n &.annotation-input\n cursor crosshair\n &.annotation-intersect\n cursor embedurl(\"./css/cursor-crosshair-intersect.svg\") 12 12,crosshair\n &.annotation-difference\n cursor embedurl(\"./css/cursor-crosshair-difference.svg\") 12 12,crosshair\n &.annotation-union\n cursor embedurl(\"./css/cursor-crosshair-union.svg\") 12 12,crosshair\n &.annotation-xor\n cursor embedurl(\"./css/cursor-crosshair-xor.svg\") 12 12,crosshair\n\n &.annotation-cursor\n cursor crosshair\n &.annotation-intersect\n cursor embedurl(\"./css/cursor-crosshair-intersect.svg\") 12 12,crosshair\n &.annotation-difference\n cursor embedurl(\"./css/cursor-crosshair-difference.svg\") 12 12,crosshair\n &.annotation-union\n cursor embedurl(\"./css/cursor-crosshair-union.svg\") 12 12,crosshair\n &.annotation-xor\n cursor embedurl(\"./css/cursor-crosshair-xor.svg\") 12 12,crosshair\n\n &.highlight-focus\n &:after\n content \"\"\n display block\n position absolute\n box-sizing border-box\n left 0px\n top 0px\n right 0px\n bottom 0px\n // Highlight is technically a css2 color. We may need to specify it\n // explicitly. #3B66A6 seems close\n border 3px solid Highlight\n opacity 1\n transition opacity 0s\n visibility hidden\n &:focus:after\n visibility visible\n transition opacity 2.5s ease-in\n opacity 0\n\n.geo-tile-container\n position absolute\n &.crop\n overflow hidden\n","use('../nodes/vendor-helpers.js')\n@import 'config'\n\n/*\n * Alias \"nowrap\" as \"no-wrap\".\n */\n\nno-wrap = unquote('nowrap')\n\n/*\n * Helper to find out if a given value is a width\n */\n\nis-width(val)\n if auto == val\n return true\n else if val && 'unit' == type(val)\n // Stylus does not short circuit so we need to perform this as a distinct\n // operation to prevent errors\n return '' != unit(val)\n return false\n\n/*\n * Vendor support for the given prop / arguments, optionally specifying the\n * only prefixes to utilize, or those which should be ignored.\n */\n\nvendor(prop, args, only = null, ignore = null, vendor-property = true)\n need_normalize = !vendor-property or prop in ('transition' 'transition-property' 'border-image' 'border-image-slice')\n for prefix in vendor-prefixes\n unless (only and !(prefix in only)) or (ignore and prefix in ignore)\n if official == prefix\n if need_normalize\n {prop}: normalize(prop,('%s' % args))\n else\n {prop}: args\n else\n newprop = prop\n newprop = '-' + prefix + '-' + prop if vendor-property\n\n if need_normalize\n {newprop}: normalize(prop,('%s' % args),prefix)\n else\n {newprop}: args\n/*\n * Vendorize the given value.\n */\n\nvendor-value(arg, only = null, ignore = null)\n prop = current-property[0]\n for prefix in vendor-prefixes\n unless (only and !(prefix in only)) or (ignore and prefix in ignore) or official == prefix\n add-property(prop, '-%s-%s' % (prefix arg))\n arg\n\n/*\n * Vendor \"box-shadow\" support.\n */\n\nbox-shadow()\n vendor('box-shadow', arguments, only: webkit official)\n\n/*\n * Vendor \"user-select\" support.\n */\n\nuser-select()\n vendor('user-select', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"column-count\" support.\n */\n\ncolumn-count()\n vendor('column-count', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-gap\" support.\n */\n\ncolumn-gap()\n vendor('column-gap', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule\" support.\n */\n\ncolumn-rule()\n vendor('column-rule', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-color\" support.\n */\n\ncolumn-rule-color()\n vendor('column-rule-color', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-width\" support.\n */\n\ncolumn-rule-width()\n vendor('column-rule-width', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-style\" support.\n */\n\ncolumn-rule-style()\n vendor('column-rule-style', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-width\" support.\n */\n\ncolumn-width()\n vendor('column-width', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-span\" support.\n */\n\ncolumn-span()\n vendor('column-span', arguments, only: webkit official)\n\n/*\n * Vendor \"column-fill\" support.\n */\n\ncolumn-fill()\n vendor('column-fill', arguments, only: moz official)\n\n/*\n * Legacy syntax support for background-clip and background-origin\n */\n\nlegacy-bg-values(property, args)\n legacy_args = ()\n importance = unquote('')\n for subargs in args\n for arg in subargs\n if arg in (border-box padding-box content-box)\n arg = unquote('border') if arg == border-box\n arg = unquote('padding') if arg == padding-box\n arg = unquote('content') if arg == content-box\n if arg != '!important'\n push(legacy_args,arg)\n else\n importance = !important\n vendor(property, unquote(join(', ',legacy_args)) importance, only: moz webkit)\n\n/*\n * Vendor \"background-clip\" support.\n */\n\nbackground-clip()\n if arguments[0] == text\n vendor('background-clip', arguments, only: webkit)\n else\n legacy-bg-values('background-clip', arguments)\n background-clip: arguments\n\n/*\n * Vendor \"background-origin\" support.\n */\n\nbackground-origin()\n legacy-bg-values('background-origin', arguments)\n background-origin: arguments\n\n/*\n * Vendor \"transform\" support.\n */\n\ntransform()\n vendor('transform', arguments)\n\n/*\n * Vendor \"transform-origin\" support.\n */\ntransform-origin()\n vendor('transform-origin', arguments)\n\n/*\n * Vendor \"transform-style\" support.\n */\n\ntransform-style()\n vendor('transform-style', arguments)\n\n/*\n * Vendor \"border-image\" support.\n */\n\nborder-image()\n vendor('border-image', arguments, only: webkit moz o official)\n\n/*\n * Vendor \"transition\" support.\n */\n\ntransition()\n vendor('transition', arguments)\n\n/*\n * Vendor \"transition-property\" support.\n */\n\ntransition-property()\n vendor('transition-property', arguments)\n\n/*\n * Vendor \"transition-duration\" support.\n */\n\ntransition-duration()\n vendor('transition-duration', arguments)\n\n/*\n * Vendor \"transition-timing-function\" support.\n */\n\ntransition-timing-function()\n vendor('transition-timing-function', arguments)\n\n/*\n * Vendor \"transition-delay\" support.\n */\n\ntransition-delay()\n vendor('transition-delay', arguments)\n\n/*\n * Vendor \"backface-visibility\" support.\n */\n\nbackface-visibility()\n vendor('backface-visibility', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"perspective\" support.\n */\n\nperspective()\n if mixin\n vendor('perspective', arguments, only: webkit moz ms official)\n else\n 'perspective(%s)' % arguments\n\n/*\n * Vendor \"perspective-origin\" support.\n */\n\nperspective-origin()\n vendor('perspective-origin', arguments, only: webkit moz ms official)\n\n/*\n * Opacity with conditional IE support.\n */\n\nopacity(n, args...)\n opacity: n args\n if support-for-ie\n if n == inherit or n == initial\n -ms-filter: n args\n filter: n args\n else\n val = round(n * 100)\n if val == 100\n -ms-filter: none args\n filter: none args\n else\n -ms-filter: '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=%s)\"' % val args\n filter: 'alpha(opacity=%s)' % val args\n\n/*\n * Vendor \"text-size-adjust\"\n */\n\ntext-size-adjust()\n vendor('text-size-adjust', arguments)\n\n/*\n * Alias the \"white-space\" property.\n */\n\nwhitespace()\n white-space: arguments\n\n/*\n * Vendor \"box-sizing\" support.\n */\n\nbox-sizing()\n vendor('box-sizing', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-orient\" support.\n */\n\nbox-orient()\n vendor('box-orient', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-flex-group\" support.\n */\n\nbox-flex-group()\n vendor('box-flex-group', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-ordinal-group\" support.\n */\n\nbox-ordinal-group()\n vendor('box-ordinal-group', arguments, only: webkit moz ms official)\n\n\n/*\n * Vendor \"box-align\" support.\n */\n\nbox-align()\n vendor('box-align', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"box-pack\" support.\n */\n\nbox-pack()\n vendor('box-pack', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"box-direction\" support.\n */\n\nbox-direction()\n vendor('box-direction', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"animation\" support.\n */\n\nanimation()\n vendor('animation', arguments)\n\n\n/*\n * Vendor \"animation-name\" support.\n */\n\nanimation-name()\n vendor('animation-name', arguments)\n\n/*\n * Vendor \"animation-duration\" support.\n */\n\nanimation-duration()\n vendor('animation-duration', arguments)\n\n/*\n * Vendor \"animation-delay\" support.\n */\n\nanimation-delay()\n vendor('animation-delay', arguments)\n\n/*\n * Vendor \"animation-direction\" support.\n */\n\nanimation-direction()\n vendor('animation-direction', arguments)\n\n/*\n * Vendor \"animation-iteration-count\" support.\n */\n\nanimation-iteration-count()\n vendor('animation-iteration-count', arguments)\n\n/*\n * Vendor \"animation-timing-function\" support.\n */\n\nanimation-timing-function()\n vendor('animation-timing-function', arguments)\n\n/*\n * Vendor \"animation-play-state\" support.\n */\n\nanimation-play-state()\n vendor('animation-play-state', arguments)\n\n/*\n * Vendor \"animation-fill-mode\" support.\n */\n\nanimation-fill-mode()\n vendor('animation-fill-mode', arguments)\n\n/*\n * Vendor \"hyphens\" support.\n */\n\nhyphens()\n vendor('hyphens', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"appearance\" support.\n */\n\nappearance()\n vendor('appearance', arguments, only: webkit moz official)\n\n/*\n * Vendor \"tab-size\" support.\n */\n\ntab-size()\n vendor('tab-size', arguments, only: moz o official)\n\n/*\n * Vendor \"overflow-scrolling\" support.\n */\n\noverflow-scrolling()\n vendor('overflow-scrolling', arguments, only: webkit official)\n\n/*\n * Vendor \"text-overflow\" support, , -o- for opera 9.* - 10.*\n */\n\ntext-overflow()\n vendor('text-overflow', arguments, only: official o)\n\n/*\n * Vendor \"text-size-adjust\" support.\n */\ntext-size-adjust()\n vendor('text-size-adjust', arguments, only: official webkit ms)\n\n/*\n * Vendor \"font-smoothing\" support, webkit only.\n */\nfont-smoothing()\n vendor('font-smoothing', arguments, only: webkit)\n\n\n/**\n * Vendor input-placeholder/placeholder support.\n *\n * Examples:\n * // Default syntax\n * body\n * placeholder(color #333, font-weight normal)\n *\n * // The comma is important\n * .placeholder-red\n * placeholder(color red,)\n *\n * // We can pass a function\n * green-placeholder()\n * color green\n * .placeholder-green\n * placeholder(green-placeholder)\n *\n * // We can pass a hash\n * textarea\n * placeholder((font-style italic) (font-weight bold) (padding '4px 10px'))\n */\nplaceholder()\n for v in ':-webkit-input' '-moz' ':-moz' '-ms-input'\n &:{v}-placeholder\n for pair in arguments\n if typeof(pair) == 'function'\n pair()\n else if pair is not null && pair[0] is not null\n {pair[0]}: type(pair[1]) == 'string' ? s(pair[1]) : pair[1]\ninput-placeholder = placeholder\n\n/*\n * Vendor background support (gradients).\n */\n\nbackground()\n if match('-gradient\\(', ''+arguments)\n vendor('background', arguments, vendor-property: false)\n else\n background arguments\n\nbackground-image()\n if match('-gradient\\(', ''+arguments)\n vendor('background-image', arguments, vendor-property: false)\n else\n background-image arguments\n\ncursor()\n if match('-gradient\\(', ''+arguments)\n vendor('cursor', arguments, vendor-property: false)\n else\n cursor arguments\n\nlist-style()\n if match('-gradient\\(', ''+arguments)\n vendor('list-style', arguments, vendor-property: false)\n else\n list-style arguments\n\nlist-style-image()\n if match('-gradient\\(', ''+arguments)\n vendor('list-style-image', arguments, vendor-property: false)\n else\n list-style-image arguments\n","/*\n * Overflow utility. Maps to regular overflow, and adds an ellipsis value.\n *\n * Synopsis:\n *\n * overflow: <type>\n *\n * Examples:\n *\n * overflow: auto\n * overflow: hidden\n * overflow: ellipsis\n *\n */\n\noverflow()\n if arguments[0] == ellipsis\n ellipsis()\n else\n overflow: arguments\n","/*\n * Vendor \"display: flex\" support with fallback to obsolete versions.\n */\n\nflex-version ?= box flex\n\n//\n// 1. Display values\n// - http://www.w3.org/TR/css3-flexbox/#flex-containers\n//\ndisplay(type, args...)\n if flex == type || inline-flex == type\n if box in flex-version\n if flex == type\n display: -ms-flexbox args\n display: vendor-value(box args, only: moz webkit)\n else\n display: -ms-inline-flexbox args\n display: vendor-value(inline-box args, only: moz webkit)\n if flex in flex-version\n display: vendor-value(arguments, only: webkit official) // overwrites old webkit\n else\n display: arguments\n\n/*\n * New syntax for browsers like Google Chrome.\n * Plus a translation to the old syntax, if possible.\n */\n\n\n//\n// 5. Ordering and Orientation\n// - http://www.w3.org/TR/css3-flexbox/#ordering-and-orientation\n//\n-flex-obsolete-direction(direction)\n if box in flex-version\n if row-reverse == direction || column-reverse == direction\n vendor('box-direction', reverse, ignore: ms official)\n\n if row == direction || row-reverse == direction\n vendor('box-orient', horizontal, ignore: ms official)\n else if column == direction || column-reverse == direction\n vendor('box-orient', vertical, ignore: ms official)\n\n-flex-obsolete-wrap(value)\n if box in flex-version\n // WARN: wrap-reverse does not have a box equivalent. This will render in different manners\n // on box vs. flex values.\n if 'wrap' == value || wrap-reverse == value\n vendor('box-lines', multiple, ignore: ms official)\n else if nowrap == value\n vendor('box-lines', single, ignore: ms official)\n\nflex-direction(direction)\n // obsolete\n -flex-obsolete-direction(direction)\n\n // new\n if flex in flex-version\n vendor('flex-direction', arguments, only: webkit ms official)\n\nflex-wrap(value)\n // obsolete\n -flex-obsolete-wrap(value)\n\n if flex in flex-version\n vendor('flex-wrap', arguments, only: webkit ms official)\n\nflex-flow()\n // obsolete\n -flex-obsolete-direction(arguments[0])\n -flex-obsolete-direction(arguments[1])\n -flex-obsolete-wrap(arguments[0])\n -flex-obsolete-wrap(arguments[1])\n\n // new\n if flex in flex-version\n vendor('flex-flow', arguments, only: webkit ms official)\n\n\norder()\n // obsolete\n if box in flex-version\n vendor('box-ordinal-group', arguments, ignore: ms official)\n\n // new\n if flex in flex-version\n vendor('flex-order', arguments, only: ms)\n vendor('order', arguments, only: webkit official)\n\n\n//\n// 7. Flexibility\n// - http://www.w3.org/TR/css3-flexbox/#flexibility\n//\nflex-grow(growth)\n // obsolete\n if box in flex-version\n vendor('box-flex', growth)\n\n // new\n if flex in flex-version\n vendor('flex-grow', arguments, only: webkit official)\n\nflex-basis()\n if flex in flex-version\n vendor('flex-basis', arguments, only: webkit official)\n\nflex-shrink()\n if flex in flex-version\n vendor('flex-shrink', arguments, only: webkit official)\n\nflex(growth)\n\n // obsolete\n if box in flex-version\n shrink = 1\n\n if none == growth || initial == growth\n // Well known values\n shrink = 0 if none == growth\n growth = 0\n else if is-width(growth) == true\n // Basis is defined as the first parameter\n growth = arguments[1] || 0\n shrink = arguments[2] if 3 <= length(arguments)\n else if arguments[1] && is-width(arguments[1]) == false\n // Growth is first and shrink is second\n shrink = arguments[1]\n\n // Since we can't make the distinction between growing and shrinking in the box model, take\n // the one that provides the most flexibility.\n vendor('box-flex', max(growth, shrink), ignore: ms)\n\n // new\n if flex in flex-version\n vendor('flex', arguments, only: webkit ms official)\n\n\n// converts the justification alignment\n-convert-justify(align)\n if flex-start == align\n return start\n else if flex-end == align\n return end\n else if space-around == align\n return distribute\n else if space-between == align\n return justify\n else\n return align\n\n//\n// 8. Alignment\n// - http://www.w3.org/TR/css3-flexbox/#alignment\n//\njustify-content(align)\n // obsolete\n if box in flex-version\n vendor('box-pack', -convert-justify(align), ignore: ms official)\n\n // new\n if flex in flex-version\n vendor('flex-pack', -convert-justify(align), only: ms)\n vendor('justify-content', align, only: webkit official)\n\nalign-content(align)\n // WARN: Obsolete spec does not allow for adjustment here\n if flex in flex-version\n vendor('flex-line-pack', -convert-justify(align), only: ms)\n vendor('align-content', align, only: webkit official)\n\n// converts alignment from 'flex' to normal value\n-convert-alignment(align)\n if flex-start == align\n return start\n else if flex-end == align\n return end\n else\n return align\n\nalign-items(align)\n // obsolete\n if box in flex-version\n vendor('box-align', -convert-alignment(align), ignore: ms official)\n\n // new\n if flex in flex-version\n vendor('flex-align', -convert-alignment(align), only: ms)\n vendor('align-items', arguments, only: webkit official)\n\nalign-self(align)\n // WARN: Obsolete spec does not allow for overriding alignment on individual items.\n if flex in flex-version\n vendor('align-self', align, only: webkit official)\n vendor('flex-item-align', -convert-alignment(align), only: ms)\n","/*\n * border: <color>\n * border: ...\n */\n\nborder(color, args...)\n if color is a 'color'\n border: 1px solid color args\n else\n border: arguments\n"],"sourceRoot":""}]);
46470
46719
  // Exports
46471
46720
  /* harmony default export */ __webpack_exports__["Z"] = (___CSS_LOADER_EXPORT___);
46472
46721