diff --git a/modules/index.js b/modules/index.js
index da0e95a1e..ce345f16c 100644
--- a/modules/index.js
+++ b/modules/index.js
@@ -18,7 +18,6 @@ export * from './ui/panels/index';
export * from './ui/settings/index';
export * from './ui/index';
export * from './util/index';
-export * from './lib/index';
export * from './validations/index';
/* export some legacy symbols: */
@@ -48,6 +47,4 @@ export { uiPresetEditor as uiPreset } from './ui/preset_editor';
export var debug = false;
-import * as lib from './lib/index';
-
-export { lib, d3 };
+export { d3 };
diff --git a/modules/lib/index.js b/modules/lib/index.js
deleted file mode 100644
index 1cb15f749..000000000
--- a/modules/lib/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { d3combobox } from './d3.combobox';
diff --git a/modules/ui/changeset_editor.js b/modules/ui/changeset_editor.js
index fd40ae7ce..21846d243 100644
--- a/modules/ui/changeset_editor.js
+++ b/modules/ui/changeset_editor.js
@@ -1,12 +1,10 @@
import _uniqBy from 'lodash-es/uniqBy';
import { dispatch as d3_dispatch } from 'd3-dispatch';
-import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
import { svgIcon } from '../svg';
-import { uiField } from './field';
-import { uiFormFields } from './form_fields';
+import { uiCombobox, uiField, uiFormFields } from './index';
import { utilRebind, utilTriggerEvent } from '../util';
@@ -80,7 +78,7 @@ export function uiChangesetEditor(context) {
});
commentField
- .call(d3_combobox()
+ .call(uiCombobox()
.container(context.container())
.caseSensitive(true)
.data(_uniqBy(comments, 'title'))
diff --git a/modules/lib/d3.combobox.js b/modules/ui/combobox.js
similarity index 98%
rename from modules/lib/d3.combobox.js
rename to modules/ui/combobox.js
index 79eb3e452..d7b0adaf6 100644
--- a/modules/lib/d3.combobox.js
+++ b/modules/ui/combobox.js
@@ -7,10 +7,7 @@ import {
select as d3_select
} from 'd3-selection';
-import {
- utilRebind,
- utilTriggerEvent
-} from '../../modules/util';
+import { utilRebind, utilTriggerEvent } from '../util';
// This code assumes that the combobox values will not have duplicate entries.
@@ -21,7 +18,7 @@ import {
// value: 'display text'
// }, ...]
-export function d3combobox() {
+export function uiCombobox() {
var dispatch = d3_dispatch('accept');
var _container = d3_select(document.body);
var _suggestions = [];
@@ -350,7 +347,7 @@ export function d3combobox() {
}
-d3combobox.off = function(input) {
+uiCombobox.off = function(input) {
input
.on('focus.typeahead', null)
.on('blur.typeahead', null)
diff --git a/modules/ui/fields/access.js b/modules/ui/fields/access.js
index cfe1c1843..ef0fa6522 100644
--- a/modules/ui/fields/access.js
+++ b/modules/ui/fields/access.js
@@ -1,12 +1,8 @@
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { uiCombobox } from '../index';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldAccess(field, context) {
@@ -55,7 +51,7 @@ export function uiFieldAccess(field, context) {
.call(utilNoAuto)
.each(function(d) {
d3_select(this)
- .call(d3_combobox()
+ .call(uiCombobox()
.container(context.container())
.data(access.options(d))
);
diff --git a/modules/ui/fields/address.js b/modules/ui/fields/address.js
index 8d1eb6db6..6e03803a0 100644
--- a/modules/ui/fields/address.js
+++ b/modules/ui/fields/address.js
@@ -5,22 +5,12 @@ import _uniqBy from 'lodash-es/uniqBy';
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { dataAddressFormats } from '../../../data';
-
-import {
- geoExtent,
- geoChooseEdge,
- geoSphericalDistance
-} from '../../geo';
-
+import { geoExtent, geoChooseEdge, geoSphericalDistance } from '../../geo';
import { services } from '../../services';
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { uiCombobox } from '../index';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldAddress(field, context) {
@@ -183,7 +173,7 @@ export function uiFieldAddress(field, context) {
: getNearValues;
wrap.selectAll('input.addr-' + tag)
- .call(d3_combobox()
+ .call(uiCombobox()
.container(context.container())
.minItems(1)
.fetcher(function(value, callback) {
diff --git a/modules/ui/fields/combo.js b/modules/ui/fields/combo.js
index 991f81f06..9a6a7e4cf 100644
--- a/modules/ui/fields/combo.js
+++ b/modules/ui/fields/combo.js
@@ -14,16 +14,10 @@ import {
select as d3_select
} from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
-
import { t } from '../../util/locale';
import { services } from '../../services';
-
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { uiCombobox } from '../index';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export {
uiFieldCombo as uiFieldMultiCombo,
@@ -44,7 +38,7 @@ export function uiFieldCombo(field, context) {
var optarray = field.options;
var snake_case = (field.snake_case || (field.snake_case === undefined));
var caseSensitive = field.caseSensitive;
- var combobox = d3_combobox()
+ var combobox = uiCombobox()
.container(context.container())
.caseSensitive(caseSensitive)
.minItems(isMulti || isSemi ? 1 : 2);
diff --git a/modules/ui/fields/cycleway.js b/modules/ui/fields/cycleway.js
index 9671cc8ab..44710cbb8 100644
--- a/modules/ui/fields/cycleway.js
+++ b/modules/ui/fields/cycleway.js
@@ -1,12 +1,8 @@
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { uiCombobox } from '../index';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldCycleway(field, context) {
@@ -61,7 +57,7 @@ export function uiFieldCycleway(field, context) {
.call(utilNoAuto)
.each(function(d) {
d3_select(this)
- .call(d3_combobox()
+ .call(uiCombobox()
.container(context.container())
.data(cycleway.options(d))
);
diff --git a/modules/ui/fields/localized.js b/modules/ui/fields/localized.js
index a5df83b10..453d32495 100644
--- a/modules/ui/fields/localized.js
+++ b/modules/ui/fields/localized.js
@@ -7,20 +7,15 @@ import {
event as d3_event
} from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { t } from '../../util/locale';
import { dataWikipedia } from '../../../data';
import { services } from '../../services';
import { svgIcon } from '../../svg';
import { tooltip } from '../../util/tooltip';
+import { uiCombobox } from '../index';
import { utilDetect } from '../../util/detect';
-import {
- utilEditDistance,
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { utilEditDistance, utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldLocalized(field, context) {
@@ -34,12 +29,12 @@ export function uiFieldLocalized(field, context) {
});
// reuse these combos
- var langcombo = d3_combobox()
+ var langcombo = uiCombobox()
.container(context.container())
.fetcher(fetchLanguages)
.minItems(0);
- var brandcombo = d3_combobox()
+ var brandcombo = uiCombobox()
.container(context.container())
.canAutocomplete(false)
.minItems(1);
diff --git a/modules/ui/fields/maxspeed.js b/modules/ui/fields/maxspeed.js
index 250e96952..b0dc8e21e 100644
--- a/modules/ui/fields/maxspeed.js
+++ b/modules/ui/fields/maxspeed.js
@@ -2,15 +2,11 @@ import _some from 'lodash-es/some';
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { select as d3_select } from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
import { dataImperial } from '../../../data';
import { geoPointInPolygon } from '../../geo';
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { uiCombobox } from '../index';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldMaxspeed(field, context) {
@@ -26,10 +22,10 @@ export function uiFieldMaxspeed(field, context) {
function maxspeed(selection) {
- combobox = d3_combobox()
+ combobox = uiCombobox()
.container(context.container());
- var unitCombobox = d3_combobox()
+ var unitCombobox = uiCombobox()
.container(context.container())
.data(['km/h', 'mph'].map(comboValues));
diff --git a/modules/ui/fields/wikipedia.js b/modules/ui/fields/wikipedia.js
index 589776e81..422edb429 100644
--- a/modules/ui/fields/wikipedia.js
+++ b/modules/ui/fields/wikipedia.js
@@ -8,19 +8,14 @@ import {
event as d3_event
} from 'd3-selection';
-import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js';
-
import { t } from '../../util/locale';
import { actionChangeTags } from '../../actions/index';
import { dataWikipedia } from '../../../data/index';
import { services } from '../../services/index';
import { svgIcon } from '../../svg/index';
+import { uiCombobox } from '../index';
import { utilDetect } from '../../util/detect';
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../../util';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
export function uiFieldWikipedia(field, context) {
@@ -34,7 +29,7 @@ export function uiFieldWikipedia(field, context) {
function wiki(selection) {
- var langcombo = d3_combobox()
+ var langcombo = uiCombobox()
.container(context.container())
.fetcher(function(value, cb) {
var v = value.toLowerCase();
@@ -48,7 +43,7 @@ export function uiFieldWikipedia(field, context) {
}));
});
- var titlecombo = d3_combobox()
+ var titlecombo = uiCombobox()
.container(context.container())
.fetcher(function(value, cb) {
if (!value) {
diff --git a/modules/ui/form_fields.js b/modules/ui/form_fields.js
index 0bf150b22..5838f7113 100644
--- a/modules/ui/form_fields.js
+++ b/modules/ui/form_fields.js
@@ -1,7 +1,7 @@
import { select as d3_select } from 'd3-selection';
-import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
import { t } from '../util/locale';
+import { uiCombobox } from './index';
import { utilGetSetValue, utilNoAuto } from '../util';
@@ -95,7 +95,7 @@ export function uiFormFields(context) {
}
return placeholder.slice(0,3).join(', ') + ((placeholder.length > 3) ? '…' : '');
})
- .call(d3_combobox()
+ .call(uiCombobox()
.container(context.container())
.data(notShown)
.minItems(1)
diff --git a/modules/ui/index.js b/modules/ui/index.js
index 3c2641519..3f65819cc 100644
--- a/modules/ui/index.js
+++ b/modules/ui/index.js
@@ -6,6 +6,7 @@ export { uiBackgroundDisplayOptions } from './background_display_options';
export { uiBackgroundOffset } from './background_offset';
export { uiChangesetEditor } from './changeset_editor';
export { uiCmd } from './cmd';
+export { uiCombobox } from './combobox';
export { uiCommit } from './commit';
export { uiCommitChanges } from './commit_changes';
export { uiCommitWarnings } from './commit_warnings';
diff --git a/modules/ui/raw_member_editor.js b/modules/ui/raw_member_editor.js
index 98f5c4111..e6a736225 100644
--- a/modules/ui/raw_member_editor.js
+++ b/modules/ui/raw_member_editor.js
@@ -3,15 +3,13 @@ import {
select as d3_select
} from 'd3-selection';
-import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
-
import { t } from '../util/locale';
import { actionChangeMember, actionDeleteMember } from '../actions';
import { modeBrowse, modeSelect } from '../modes';
import { osmEntity } from '../osm';
import { svgIcon } from '../svg';
import { services } from '../services';
-import { uiDisclosure } from './disclosure';
+import { uiCombobox, uiDisclosure } from './index';
import {
utilDisplayName,
utilDisplayType,
@@ -251,7 +249,7 @@ export function uiRawMemberEditor(context) {
return sameletter.concat(other);
}
- role.call(d3_combobox()
+ role.call(uiCombobox()
.container(context.container())
.fetcher(function(role, callback) {
var rtype = entity.tags.type;
@@ -271,7 +269,7 @@ export function uiRawMemberEditor(context) {
var row = d3_select(this);
row.selectAll('input.member-role')
- .call(d3_combobox.off);
+ .call(uiCombobox.off);
}
}
}
diff --git a/modules/ui/raw_membership_editor.js b/modules/ui/raw_membership_editor.js
index be2b8b3a2..99dd89d7b 100644
--- a/modules/ui/raw_membership_editor.js
+++ b/modules/ui/raw_membership_editor.js
@@ -7,8 +7,6 @@ import {
select as d3_select
} from 'd3-selection';
-import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
-
import { t } from '../util/locale';
import {
@@ -22,7 +20,7 @@ import { modeSelect } from '../modes';
import { osmEntity, osmRelation } from '../osm';
import { services } from '../services';
import { svgIcon } from '../svg';
-import { uiDisclosure } from './disclosure';
+import { uiCombobox, uiDisclosure } from './index';
import { utilDisplayName, utilNoAuto, utilHighlightEntity } from '../util';
@@ -268,7 +266,7 @@ export function uiRawMembershipEditor(context) {
.merge(enter);
newrow.selectAll('.member-entity-input')
- .call(d3_combobox()
+ .call(uiCombobox()
.container(context.container())
.minItems(1)
.fetcher(function(value, callback) { callback(relations(value)); })
@@ -316,7 +314,7 @@ export function uiRawMembershipEditor(context) {
return sameletter.concat(other);
}
- role.call(d3_combobox()
+ role.call(uiCombobox()
.container(context.container())
.fetcher(function(role, callback) {
var rtype = d.relation.tags.type;
@@ -336,7 +334,7 @@ export function uiRawMembershipEditor(context) {
var row = d3_select(this);
row.selectAll('input.member-role')
- .call(d3_combobox.off);
+ .call(uiCombobox.off);
}
}
}
diff --git a/modules/ui/raw_tag_editor.js b/modules/ui/raw_tag_editor.js
index 3fedd01c6..bce73c1eb 100644
--- a/modules/ui/raw_tag_editor.js
+++ b/modules/ui/raw_tag_editor.js
@@ -9,18 +9,11 @@ import {
select as d3_select
} from 'd3-selection';
-import { d3combobox as d3_combobox } from '../lib/d3.combobox.js';
-
import { t } from '../util/locale';
import { services } from '../services';
import { svgIcon } from '../svg';
-import { uiDisclosure } from './disclosure';
-import { uiTagReference } from './tag_reference';
-import {
- utilGetSetValue,
- utilNoAuto,
- utilRebind
-} from '../util';
+import { uiCombobox, uiDisclosure, uiTagReference } from './index';
+import { utilGetSetValue, utilNoAuto, utilRebind } from '../util';
export function uiRawTagEditor(context) {
@@ -216,7 +209,7 @@ export function uiRawTagEditor(context) {
var geometry = context.geometry(_entityID);
- key.call(d3_combobox()
+ key.call(uiCombobox()
.container(context.container())
.fetcher(function(value, callback) {
taginfo.keys({
@@ -228,7 +221,7 @@ export function uiRawTagEditor(context) {
});
}));
- value.call(d3_combobox()
+ value.call(uiCombobox()
.container(context.container())
.fetcher(function(value, callback) {
taginfo.values({
@@ -261,10 +254,10 @@ export function uiRawTagEditor(context) {
var row = d3_select(this);
row.selectAll('input.key')
- .call(d3_combobox.off);
+ .call(uiCombobox.off);
row.selectAll('input.value')
- .call(d3_combobox.off);
+ .call(uiCombobox.off);
}
diff --git a/test/index.html b/test/index.html
index e8fc05f68..630d93531 100644
--- a/test/index.html
+++ b/test/index.html
@@ -80,7 +80,6 @@
-
@@ -126,6 +125,7 @@
+
diff --git a/test/spec/lib/d3.combobox.js b/test/spec/ui/combobox.js
similarity index 99%
rename from test/spec/lib/d3.combobox.js
rename to test/spec/ui/combobox.js
index efca555a9..833083385 100644
--- a/test/spec/lib/d3.combobox.js
+++ b/test/spec/ui/combobox.js
@@ -1,4 +1,4 @@
-describe('d3.combobox', function() {
+describe('uiCombobox', function() {
var body, container, content, input, combobox;
var data = [
@@ -67,7 +67,7 @@ describe('d3.combobox', function() {
container = body.append('div').attr('class', 'id-container');
content = container.append('div');
input = content.append('input');
- combobox = iD.lib.d3combobox();
+ combobox = iD.uiCombobox();
});
afterEach(function() {