diff --git a/modules/presets/category.js b/modules/presets/category.js index 846e2486a..3a538aae0 100644 --- a/modules/presets/category.js +++ b/modules/presets/category.js @@ -1,10 +1,10 @@ -import _ from 'lodash'; +import _clone from 'lodash-es/clone'; import { t } from '../util/locale'; import { presetCollection } from './collection'; export function presetCategory(id, category, all) { - category = _.clone(category); + category = _clone(category); category.id = id; diff --git a/modules/presets/collection.js b/modules/presets/collection.js index e4b48939f..d9e6c5631 100644 --- a/modules/presets/collection.js +++ b/modules/presets/collection.js @@ -1,4 +1,10 @@ -import _ from 'lodash'; +import _filter from 'lodash-es/filter'; +import _find from 'lodash-es/find'; +import _some from 'lodash-es/some'; +import _uniq from 'lodash-es/uniq'; +import _values from 'lodash-es/values'; +import _without from 'lodash-es/without'; + import { utilEditDistance } from '../util/index'; @@ -12,7 +18,7 @@ export function presetCollection(collection) { item: function(id) { - return _.find(this.collection, function(d) { + return _find(this.collection, function(d) { return d.id === id; }); }, @@ -44,16 +50,16 @@ export function presetCollection(collection) { value = value.toLowerCase(); - var searchable = _.filter(this.collection, function(a) { + var searchable = _filter(this.collection, function(a) { return a.searchable !== false && a.suggestion !== true; }), - suggestions = _.filter(this.collection, function(a) { + suggestions = _filter(this.collection, function(a) { return a.suggestion === true; }); // matches value to preset.name - var leading_name = _.filter(searchable, function(a) { + var leading_name = _filter(searchable, function(a) { return leading(a.name().toLowerCase()); }).sort(function(a, b) { var aCompare = a.name().toLowerCase(), @@ -77,13 +83,13 @@ export function presetCollection(collection) { }); // matches value to preset.terms values - var leading_terms = _.filter(searchable, function(a) { - return _.some(a.terms() || [], leading); + var leading_terms = _filter(searchable, function(a) { + return _some(a.terms() || [], leading); }); // matches value to preset.tags values - var leading_tag_values = _.filter(searchable, function(a) { - return _.some(_.without(_.values(a.tags || {}), '*'), leading); + var leading_tag_values = _filter(searchable, function(a) { + return _some(_without(_values(a.tags || {}), '*'), leading); }); @@ -102,13 +108,13 @@ export function presetCollection(collection) { }); // finds close matches to value in preset.terms - var similar_terms = _.filter(searchable, function(a) { - return _.some(a.terms() || [], function(b) { + var similar_terms = _filter(searchable, function(a) { + return _some(a.terms() || [], function(b) { return utilEditDistance(value, b) + Math.min(value.length - b.length, 0) < 3; }); }); - var leading_suggestions = _.filter(suggestions, function(a) { + var leading_suggestions = _filter(suggestions, function(a) { return leading(suggestionName(a.name())); }).sort(function(a, b) { a = suggestionName(a.name()); @@ -142,7 +148,7 @@ export function presetCollection(collection) { similar_suggestions.slice(0, maxSuggestionResults) ).slice(0, maxSearchResults - 1); - return presetCollection(_.uniq(results.concat(other))); + return presetCollection(_uniq(results.concat(other))); } }; diff --git a/modules/presets/field.js b/modules/presets/field.js index 3a37e4cd6..3fcc41613 100644 --- a/modules/presets/field.js +++ b/modules/presets/field.js @@ -1,9 +1,9 @@ -import _ from 'lodash'; +import _clone from 'lodash-es/clone'; import { t } from '../util/locale'; export function presetField(id, field) { - field = _.clone(field); + field = _clone(field); field.id = id; diff --git a/modules/presets/index.js b/modules/presets/index.js index c9ed73abf..12f8e3a0e 100644 --- a/modules/presets/index.js +++ b/modules/presets/index.js @@ -1,4 +1,8 @@ -import _ from 'lodash'; +import _bind from 'lodash-es/bind'; +import _forEach from 'lodash-es/forEach'; +import _reject from 'lodash-es/reject'; +import _uniq from 'lodash-es/uniq'; + import { data } from '../../data/index'; import { presetCategory } from './category'; import { presetCollection } from './collection'; @@ -84,7 +88,7 @@ export function presetIndex() { all.areaKeys = function() { var areaKeys = {}, ignore = ['barrier', 'highway', 'footway', 'railway', 'type'], // probably a line.. - presets = _.reject(all.collection, 'suggestion'); + presets = _reject(all.collection, 'suggestion'); // whitelist presets.forEach(function(d) { @@ -125,26 +129,26 @@ export function presetIndex() { index = { point: {}, vertex: {}, line: {}, area: {}, relation: {} }; if (d.fields) { - _.forEach(d.fields, function(d, id) { + _forEach(d.fields, function(d, id) { fields[id] = presetField(id, d); if (d.universal) universal.push(fields[id]); }); } if (d.presets) { - _.forEach(d.presets, function(d, id) { + _forEach(d.presets, function(d, id) { all.collection.push(presetPreset(id, d, fields)); }); } if (d.categories) { - _.forEach(d.categories, function(d, id) { + _forEach(d.categories, function(d, id) { all.collection.push(presetCategory(id, d, all)); }); } if (d.defaults) { - var getItem = _.bind(all.item, all); + var getItem = _bind(all.item, all); defaults = { area: presetCollection(d.defaults.area.map(getItem)), line: presetCollection(d.defaults.line.map(getItem)), @@ -179,13 +183,13 @@ export function presetIndex() { all.defaults = function(geometry, n) { var rec = recent.matchGeometry(geometry).collection.slice(0, 4), - def = _.uniq(rec.concat(defaults[geometry].collection)).slice(0, n - 1); - return presetCollection(_.uniq(rec.concat(def).concat(all.item(geometry)))); + def = _uniq(rec.concat(defaults[geometry].collection)).slice(0, n - 1); + return presetCollection(_uniq(rec.concat(def).concat(all.item(geometry)))); }; all.choose = function(preset) { if (!preset.isFallback()) { - recent = presetCollection(_.uniq([preset].concat(recent.collection))); + recent = presetCollection(_uniq([preset].concat(recent.collection))); } return all; }; diff --git a/modules/presets/preset.js b/modules/presets/preset.js index e9c2c6943..f65e22e75 100644 --- a/modules/presets/preset.js +++ b/modules/presets/preset.js @@ -1,10 +1,13 @@ -import _ from 'lodash'; +import _clone from 'lodash-es/clone'; +import _keys from 'lodash-es/keys'; +import _omit from 'lodash-es/omit'; + import { t } from '../util/locale'; import { areaKeys } from '../core/context'; export function presetPreset(id, preset, fields) { - preset = _.clone(preset); + preset = _clone(preset); preset.id = id; preset.fields = (preset.fields || []).map(getFields); @@ -71,7 +74,7 @@ export function presetPreset(id, preset, fields) { var reference = preset.reference || {}; preset.reference = function(geometry) { - var key = reference.key || Object.keys(_.omit(preset.tags, 'name'))[0], + var key = reference.key || Object.keys(_omit(preset.tags, 'name'))[0], value = reference.value || preset.tags[key]; if (geometry === 'relation' && key === 'type') { @@ -93,7 +96,7 @@ export function presetPreset(id, preset, fields) { var removeTags = preset.removeTags || preset.tags; preset.removeTags = function(tags, geometry) { - tags = _.omit(tags, _.keys(removeTags)); + tags = _omit(tags, _keys(removeTags)); for (var f in preset.fields) { var field = preset.fields[f]; @@ -111,7 +114,7 @@ export function presetPreset(id, preset, fields) { preset.applyTags = function(tags, geometry) { var k; - tags = _.clone(tags); + tags = _clone(tags); for (k in applyTags) { if (applyTags[k] === '*') {