├── .gitattributes ├── modules ├── id.js ├── ui │ └── intro │ │ └── index.js ├── actions │ ├── noop.js │ ├── add_entity.js │ ├── change_tags.js │ ├── change_member.js │ └── add_vertex.js ├── lib │ └── index.js ├── core │ └── index.js ├── util │ ├── trigger_event.js │ └── bind_once.js ├── svg │ ├── point_transform.js │ └── osm.js ├── renderer │ └── index.js ├── behavior │ └── edit.js └── validations │ └── index.js ├── test ├── spec │ ├── ui │ │ └── inspector.js │ └── actions │ │ ├── noop.js │ │ ├── add_entity.js │ │ ├── move_node.js │ │ └── change_tags.js └── .eslintrc ├── dist ├── img │ ├── logo.png │ ├── arrow-icon.png │ ├── bing_maps.png │ ├── loader_bg.gif │ ├── cursor-draw.png │ ├── cursor-grab.png │ ├── loader-black.gif │ ├── loader-white.gif │ ├── mini-loader.gif │ ├── pattern │ │ ├── dots.png │ │ ├── orchard.png │ │ ├── wetland.png │ │ ├── cemetery.png │ │ ├── farmland.png │ │ ├── vineyard.png │ │ └── construction.png │ ├── cursor-draw2x.png │ ├── cursor-grab2x.png │ ├── cursor-grabbing.png │ ├── cursor-pointer.png │ ├── cursor-pointing.png │ ├── cursor-grabbing2x.png │ ├── cursor-pointer2x.png │ ├── cursor-pointing2x.png │ ├── cursor-select-add.png │ ├── background-pattern-1.png │ ├── cursor-select-acting.png │ ├── cursor-select-add2x.png │ ├── cursor-select-area.png │ ├── cursor-select-area2x.png │ ├── cursor-select-line.png │ ├── cursor-select-line2x.png │ ├── cursor-select-point.png │ ├── cursor-select-remove.png │ ├── cursor-select-split.png │ ├── cursor-select-vertex.png │ ├── cursor-select-acting2x.png │ ├── cursor-select-point2x.png │ ├── cursor-select-remove2x.png │ ├── cursor-select-split2x.png │ ├── cursor-select-vertex2x.png │ ├── cursor-draw-connect-line.png │ ├── cursor-select-mapillary.png │ ├── cursor-select-mapillary2x.png │ ├── background-pattern-opacity.png │ ├── cursor-draw-connect-line2x.png │ ├── cursor-draw-connect-vertex.png │ └── cursor-draw-connect-vertex2x.png ├── traffico │ ├── fonts │ │ ├── traffico_d596ae6150aa5c55ac14b1e060efc523.eot │ │ ├── traffico_d596ae6150aa5c55ac14b1e060efc523.ttf │ │ └── traffico_d596ae6150aa5c55ac14b1e060efc523.woff │ ├── README.md │ ├── string-maps │ │ ├── ee-map.json │ │ ├── lv-map.json │ │ └── si-map.json │ ├── signs │ │ ├── ee.json │ │ ├── lv.json │ │ └── si.json │ └── bower.json └── land.html ├── docs └── img │ ├── modes.png │ ├── geocoder.png │ └── operations.png ├── svg └── iD-sprite.src.idraw ├── .travis.yml ├── data └── presets │ ├── fields │ ├── atm.json │ ├── fee.json │ ├── lit.json │ ├── bench.json │ ├── crop.json │ ├── date.json │ ├── dock.json │ ├── fuel.json │ ├── iata.json │ ├── icao.json │ ├── layer.json │ ├── ref.json │ ├── relation.json │ ├── route.json │ ├── shop.json │ ├── site.json │ ├── sport.json │ ├── toll.json │ ├── wall.json │ ├── water.json │ ├── aeroway.json │ ├── amenity.json │ ├── barrier.json │ ├── bin.json │ ├── boundary.json │ ├── brand.json │ ├── covered.json │ ├── crossing.json │ ├── except.json │ ├── gauge.json │ ├── highway.json │ ├── incline.json │ ├── indoor.json │ ├── kerb.json │ ├── landuse.json │ ├── leisure.json │ ├── network.json │ ├── office.json │ ├── place.json │ ├── plant.json │ ├── power.json │ ├── railway.json │ ├── rooms.json │ ├── shelter.json │ ├── stars.json │ ├── studio.json │ ├── surface.json │ ├── tourism.json │ ├── trees.json │ ├── wetland.json │ ├── aerialway.json │ ├── artist.json │ ├── beauty.json │ ├── content.json │ ├── country.json │ ├── craft.json │ ├── cuisine.json │ ├── emergency.json │ ├── entrance.json │ ├── historic.json │ ├── lamp_type.json │ ├── man_made.json │ ├── natural.json │ ├── operator.json │ ├── product.json │ ├── restriction.json │ ├── support.json │ ├── tunnel.json │ ├── waterway.json │ ├── backrest.json │ ├── building.json │ ├── bunker_type.json │ ├── castle_type.json │ ├── construction.json │ ├── delivery.json │ ├── denotation.json │ ├── fence_type.json │ ├── generator │ │ ├── type.json │ │ ├── method.json │ │ └── source.json │ ├── handrail.json │ ├── information.json │ ├── location.json │ ├── map_type.json │ ├── opening_hours.json │ ├── religion.json │ ├── route_master.json │ ├── seasonal.json │ ├── substation.json │ ├── tower │ │ ├── type.json │ │ └── construction.json │ ├── vending.json │ ├── width.json │ ├── admin_level.json │ ├── area │ │ └── highway.json │ ├── artwork_type.json │ ├── bath │ │ ├── open_air.json │ │ ├── sand_bath.json │ │ └── type.json │ ├── bicycle_parking.json │ ├── board_type.json │ ├── denomination.json │ ├── fuel_multi.json │ ├── height.json │ ├── length.json │ ├── map_size.json │ ├── network_road.json │ ├── park_ride.json │ ├── population.json │ ├── shelter_type.json │ ├── supervised.json │ ├── aerialway │ │ ├── bubble.json │ │ ├── heating.json │ │ ├── occupancy.json │ │ ├── duration.json │ │ ├── capacity.json │ │ ├── access.json │ │ └── summer │ │ │ └── access.json │ ├── camera │ │ ├── mount.json │ │ ├── direction.json │ │ └── type.json │ ├── cycle_network.json │ ├── power_supply.json │ ├── social_facility.json │ ├── step_count.json │ ├── tactile_paving.json │ ├── water_point.json │ ├── collection_times.json │ ├── currency_multi.json │ ├── drive_through.json │ ├── level.json │ ├── par.json │ ├── payment_multi.json │ ├── recycling_accepts.json │ ├── surveillance.json │ ├── traffic_calming.json │ ├── fixme.json │ ├── outdoor_seating.json │ ├── service │ │ └── bicycle.json │ ├── handicap.json │ ├── lanes.json │ ├── social_facility_for.json │ ├── surveillance │ │ ├── zone.json │ │ └── type.json │ ├── hoops.json │ ├── internet_access │ │ ├── fee.json │ │ └── ssid.json │ ├── sanitary_dump_station.json │ ├── capacity.json │ ├── golf_hole.json │ ├── levels.json │ ├── note.json │ ├── description.json │ ├── name.json │ ├── source.json │ ├── traffic_signals.json │ ├── maxspeed.json │ ├── elevation.json │ ├── fax.json │ ├── building_area.json │ ├── access_toilets.json │ ├── display.json │ ├── email.json │ ├── access_simple.json │ ├── diaper.json │ ├── phone.json │ ├── contact │ │ └── webcam.json │ ├── maxheight.json │ ├── website.json │ ├── wikipedia.json │ ├── restrictions.json │ ├── incline_steps.json │ ├── stop.json │ ├── sport_ice.json │ ├── parallel_direction.json │ ├── service.json │ ├── wheelchair.json │ ├── clock_direction.json │ ├── oneway.json │ ├── oneway_yes.json │ ├── sport_racing.json │ ├── recycling_type.json │ ├── second_hand.json │ ├── visibility.json │ ├── leaf_type_singular.json │ ├── service_rail.json │ ├── takeaway.json │ ├── fire_hydrant │ │ ├── type.json │ │ └── position.json │ ├── leaf_type.json │ ├── toilets │ │ └── disposal.json │ ├── blood_components.json │ └── internet_access.json │ ├── presets │ ├── line.json │ ├── point.json │ ├── vertex.json │ ├── area.json │ ├── power │ │ ├── pole.json │ │ ├── tower.json │ │ ├── line.json │ │ ├── minor_line.json │ │ ├── transformer.json │ │ ├── substation.json │ │ └── _sub_station.json │ ├── ford.json │ ├── man_made │ │ ├── bridge.json │ │ ├── cutline.json │ │ ├── groyne.json │ │ ├── chimney.json │ │ ├── breakwater.json │ │ ├── flagpole.json │ │ ├── _embankment.json │ │ ├── pumping_station.json │ │ ├── pier.json │ │ ├── gasometer.json │ │ ├── water_tower.json │ │ ├── water_well.json │ │ ├── pipeline.json │ │ ├── survey_point.json │ │ ├── lighthouse.json │ │ ├── tower.json │ │ ├── water_works.json │ │ └── observation.json │ ├── relation.json │ ├── junction.json │ ├── natural │ │ ├── fell.json │ │ ├── heath.json │ │ ├── glacier.json │ │ ├── bay.json │ │ ├── sand.json │ │ ├── spring.json │ │ ├── ridge.json │ │ ├── scree.json │ │ ├── bare_rock.json │ │ ├── coastline.json │ │ ├── scrub.json │ │ ├── water │ │ │ ├── reservoir.json │ │ │ └── lake.json │ │ ├── water.json │ │ ├── grassland.json │ │ ├── beach.json │ │ ├── wetland.json │ │ ├── cliff.json │ │ ├── tree_row.json │ │ ├── wood.json │ │ └── volcano.json │ ├── place │ │ ├── square.json │ │ ├── farm.json │ │ ├── isolated_dwelling.json │ │ ├── locality.json │ │ ├── city.json │ │ ├── town.json │ │ ├── village.json │ │ ├── hamlet.json │ │ └── suburb.json │ ├── building │ │ ├── hut.json │ │ ├── _entrance.json │ │ ├── roof.json │ │ ├── garage.json │ │ ├── garages.json │ │ ├── barn.json │ │ ├── shed.json │ │ ├── cabin.json │ │ ├── stable.json │ │ ├── _bunker.json │ │ ├── warehouse.json │ │ ├── apartments.json │ │ ├── greenhouse.json │ │ ├── hospital.json │ │ ├── chapel.json │ │ ├── church.json │ │ ├── industrial.json │ │ ├── residential.json │ │ ├── cathedral.json │ │ ├── hotel.json │ │ ├── static_caravan.json │ │ ├── construction.json │ │ ├── dormitory.json │ │ ├── public.json │ │ ├── retail.json │ │ └── commercial.json │ ├── landuse │ │ ├── grass.json │ │ ├── meadow.json │ │ ├── quarry.json │ │ ├── garages.json │ │ ├── retail.json │ │ ├── basin.json │ │ ├── landfill.json │ │ ├── military.json │ │ ├── commercial.json │ │ ├── residential.json │ │ ├── allotments.json │ │ ├── industrial.json │ │ ├── churchyard.json │ │ ├── recreation_ground.json │ │ ├── construction.json │ │ ├── vineyard.json │ │ ├── cemetery.json │ │ ├── forest.json │ │ ├── orchard.json │ │ └── _farm.json │ ├── amenity │ │ ├── fountain.json │ │ ├── compressed_air.json │ │ ├── boat_rental.json │ │ ├── water_point.json │ │ ├── telephone.json │ │ ├── car_rental.json │ │ ├── _swimming_pool.json │ │ ├── car_sharing.json │ │ ├── drinking_water.json │ │ ├── grave_yard.json │ │ ├── parking_space.json │ │ ├── bench.json │ │ ├── clock.json │ │ ├── embassy.json │ │ ├── parking_entrance.json │ │ ├── car_wash.json │ │ ├── grit_bin.json │ │ ├── bbq.json │ │ ├── courthouse.json │ │ └── marketplace.json │ ├── embankment.json │ ├── tourism │ │ ├── viewpoint.json │ │ ├── attraction.json │ │ └── theme_park.json │ ├── route │ │ └── ferry.json │ ├── waterway │ │ ├── riverbank.json │ │ ├── weir.json │ │ ├── dam.json │ │ ├── canal.json │ │ ├── ditch.json │ │ ├── drain.json │ │ ├── water_point.json │ │ ├── boatyard.json │ │ └── waterfall.json │ ├── historic │ │ ├── ruins.json │ │ ├── boundary_stone.json │ │ ├── memorial.json │ │ ├── monument.json │ │ ├── archaeological_site.json │ │ ├── wayside_shrine.json │ │ ├── wayside_cross.json │ │ └── castle.json │ ├── barrier │ │ ├── retaining_wall.json │ │ ├── cattle_grid.json │ │ ├── _entrance.json │ │ ├── ditch.json │ │ ├── hedge.json │ │ ├── kissing_gate.json │ │ ├── block.json │ │ ├── cycle_barrier.json │ │ ├── stile.json │ │ ├── city_wall.json │ │ ├── lift_gate.json │ │ ├── gate.json │ │ ├── bollard.json │ │ ├── fence.json │ │ ├── wall.json │ │ ├── toll_booth.json │ │ └── border_control.json │ ├── golf │ │ ├── rough.json │ │ ├── water_hazard_line.json │ │ ├── fairway.json │ │ ├── lateral_water_hazard_line.json │ │ ├── water_hazard_area.json │ │ ├── lateral_water_hazard_area.json │ │ ├── tee.json │ │ ├── hole.json │ │ ├── green.json │ │ └── bunker.json │ ├── _roundabout.json │ ├── aeroway │ │ ├── hangar.json │ │ ├── gate.json │ │ ├── taxiway.json │ │ └── apron.json │ ├── area │ │ └── highway.json │ ├── landuse.json │ ├── leisure │ │ ├── common.json │ │ ├── dog_park.json │ │ ├── firepit.json │ │ ├── picnic_table.json │ │ ├── slipway.json │ │ ├── garden.json │ │ ├── resort.json │ │ ├── stadium.json │ │ ├── nature_reserve.json │ │ ├── playground.json │ │ ├── bird_hide.json │ │ └── pitch │ │ │ ├── baseball.json │ │ │ ├── bowls.json │ │ │ └── soccer.json │ ├── type │ │ ├── site.json │ │ ├── boundary.json │ │ ├── restriction.json │ │ ├── route │ │ │ ├── detour.json │ │ │ ├── power.json │ │ │ ├── road.json │ │ │ ├── pipeline.json │ │ │ ├── bus.json │ │ │ ├── ferry.json │ │ │ ├── foot.json │ │ │ ├── tram.json │ │ │ ├── train.json │ │ │ ├── hiking.json │ │ │ ├── horse.json │ │ │ └── bicycle.json │ │ ├── route.json │ │ ├── _multipolygon.json │ │ ├── boundary │ │ │ └── administrative.json │ │ ├── restriction │ │ │ ├── no_u_turn.json │ │ │ ├── no_left_turn.json │ │ │ ├── no_right_turn.json │ │ │ ├── no_straight_on.json │ │ │ ├── only_left_turn.json │ │ │ ├── only_right_turn.json │ │ │ └── only_straight_on.json │ │ └── route_master.json │ ├── railway │ │ ├── subway_entrance.json │ │ ├── platform.json │ │ ├── disused.json │ │ ├── abandoned.json │ │ └── monorail.json │ ├── aerialway │ │ ├── pylon.json │ │ ├── t-bar.json │ │ ├── goods.json │ │ ├── drag_lift.json │ │ └── magic_carpet.json │ ├── tourism.json │ ├── boundary │ │ └── administrative.json │ ├── historic.json │ ├── leisure.json │ ├── natural.json │ ├── highway │ │ ├── motorway_junction.json │ │ ├── rest_area.json │ │ ├── turning_loop.json │ │ ├── turning_circle.json │ │ ├── mini_roundabout.json │ │ ├── crossing.json │ │ ├── services.json │ │ ├── give_way.json │ │ └── stop.json │ ├── _place.json │ ├── _amenity.json │ ├── man_made.json │ ├── address.json │ ├── emergency │ │ ├── _no.json │ │ ├── _yes.json │ │ ├── phone.json │ │ ├── _official.json │ │ ├── _private.json │ │ ├── _designated.json │ │ └── _destination.json │ ├── _power.json │ ├── _highway.json │ ├── _railway.json │ ├── _waterway.json │ ├── advertising │ │ └── billboard.json │ ├── entrance.json │ ├── traffic_calming │ │ ├── island.json │ │ └── choker.json │ ├── public_transport │ │ └── stop_position.json │ ├── shop │ │ ├── _vacant.json │ │ ├── tea.json │ │ ├── toys.json │ │ ├── bakery.json │ │ ├── boutique.json │ │ ├── cheese.json │ │ ├── coffee.json │ │ ├── kiosk.json │ │ ├── laundry.json │ │ ├── paint.json │ │ ├── shoes.json │ │ ├── tyres.json │ │ ├── antiques.json │ │ ├── candles.json │ │ ├── copyshop.json │ │ ├── fashion.json │ │ ├── herbalist.json │ │ ├── leather.json │ │ ├── lottery.json │ │ ├── massage.json │ │ ├── pawnbroker.json │ │ ├── tattoo.json │ │ ├── ticket.json │ │ ├── tobacco.json │ │ └── wine.json │ ├── _aeroway.json │ ├── barrier.json │ ├── craft │ │ ├── clockmaker.json │ │ ├── watchmaker.json │ │ ├── beekeeper.json │ │ ├── tiler.json │ │ ├── winery.json │ │ ├── blacksmith.json │ │ └── painter.json │ ├── camp_site │ │ └── camp_pitch.json │ └── building.json │ └── categories │ ├── natural-line.json │ ├── natural-point.json │ ├── water-area.json │ ├── barrier.json │ ├── water-line.json │ ├── rail.json │ ├── building.json │ └── golf.json ├── .npmignore └── .gitignore /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.bat eol=crlf 3 | -------------------------------------------------------------------------------- /modules/id.js: -------------------------------------------------------------------------------- 1 | import * as iD from './index'; 2 | window.iD = iD; 3 | -------------------------------------------------------------------------------- /modules/ui/intro/index.js: -------------------------------------------------------------------------------- 1 | export { uiIntro } from './intro'; 2 | -------------------------------------------------------------------------------- /test/spec/ui/inspector.js: -------------------------------------------------------------------------------- 1 | describe('iD.uiInspector', function () { 2 | }); 3 | -------------------------------------------------------------------------------- /dist/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/logo.png -------------------------------------------------------------------------------- /docs/img/modes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/docs/img/modes.png -------------------------------------------------------------------------------- /dist/img/arrow-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/arrow-icon.png -------------------------------------------------------------------------------- /dist/img/bing_maps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/bing_maps.png -------------------------------------------------------------------------------- /dist/img/loader_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/loader_bg.gif -------------------------------------------------------------------------------- /docs/img/geocoder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/docs/img/geocoder.png -------------------------------------------------------------------------------- /docs/img/operations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/docs/img/operations.png -------------------------------------------------------------------------------- /svg/iD-sprite.src.idraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/svg/iD-sprite.src.idraw -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "4" 4 | - "6" 5 | - "7" 6 | sudo: false 7 | -------------------------------------------------------------------------------- /dist/img/cursor-draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-draw.png -------------------------------------------------------------------------------- /dist/img/cursor-grab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-grab.png -------------------------------------------------------------------------------- /dist/img/loader-black.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/loader-black.gif -------------------------------------------------------------------------------- /dist/img/loader-white.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/loader-white.gif -------------------------------------------------------------------------------- /dist/img/mini-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/mini-loader.gif -------------------------------------------------------------------------------- /dist/img/pattern/dots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/dots.png -------------------------------------------------------------------------------- /dist/img/cursor-draw2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-draw2x.png -------------------------------------------------------------------------------- /dist/img/cursor-grab2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-grab2x.png -------------------------------------------------------------------------------- /dist/img/cursor-grabbing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-grabbing.png -------------------------------------------------------------------------------- /dist/img/cursor-pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-pointer.png -------------------------------------------------------------------------------- /dist/img/cursor-pointing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-pointing.png -------------------------------------------------------------------------------- /dist/img/pattern/orchard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/orchard.png -------------------------------------------------------------------------------- /dist/img/pattern/wetland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/wetland.png -------------------------------------------------------------------------------- /data/presets/fields/atm.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "atm", 3 | "type": "check", 4 | "label": "ATM" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/fee.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fee", 3 | "type": "check", 4 | "label": "Fee" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/lit.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "lit", 3 | "type": "check", 4 | "label": "Lit" 5 | } -------------------------------------------------------------------------------- /dist/img/cursor-grabbing2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-grabbing2x.png -------------------------------------------------------------------------------- /dist/img/cursor-pointer2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-pointer2x.png -------------------------------------------------------------------------------- /dist/img/cursor-pointing2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-pointing2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-add.png -------------------------------------------------------------------------------- /dist/img/pattern/cemetery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/cemetery.png -------------------------------------------------------------------------------- /dist/img/pattern/farmland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/farmland.png -------------------------------------------------------------------------------- /dist/img/pattern/vineyard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/vineyard.png -------------------------------------------------------------------------------- /data/presets/fields/bench.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bench", 3 | "type": "check", 4 | "label": "Bench" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/crop.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "crop", 3 | "type": "combo", 4 | "label": "Crop" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/date.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "date", 3 | "type": "check", 4 | "label": "Date" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/dock.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "dock", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/fuel.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fuel", 3 | "type": "combo", 4 | "label": "Fuel" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/iata.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "iata", 3 | "type": "text", 4 | "label": "IATA" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/icao.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "icao", 3 | "type": "text", 4 | "label": "ICAO" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/layer.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "layer", 3 | "type": "combo", 4 | "label": "Layer" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/ref.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "ref", 3 | "type": "text", 4 | "label": "Reference" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/relation.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "type", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/route.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "route", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/shop.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "shop", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/site.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "site", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/sport.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "sport", 3 | "type": "combo", 4 | "label": "Sport" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/toll.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "toll", 3 | "type": "check", 4 | "label": "Toll" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/wall.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "wall", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/water.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "water", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /dist/img/background-pattern-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/background-pattern-1.png -------------------------------------------------------------------------------- /dist/img/cursor-select-acting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-acting.png -------------------------------------------------------------------------------- /dist/img/cursor-select-add2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-add2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-area.png -------------------------------------------------------------------------------- /dist/img/cursor-select-area2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-area2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-line.png -------------------------------------------------------------------------------- /dist/img/cursor-select-line2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-line2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-point.png -------------------------------------------------------------------------------- /dist/img/cursor-select-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-remove.png -------------------------------------------------------------------------------- /dist/img/cursor-select-split.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-split.png -------------------------------------------------------------------------------- /dist/img/cursor-select-vertex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-vertex.png -------------------------------------------------------------------------------- /dist/img/pattern/construction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/pattern/construction.png -------------------------------------------------------------------------------- /data/presets/fields/aeroway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aeroway", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/amenity.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "amenity", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/barrier.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "barrier", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/bin.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bin", 3 | "type": "check", 4 | "label": "Waste Bin" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/boundary.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "boundary", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/brand.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "brand", 3 | "type": "text", 4 | "label": "Brand" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/covered.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "covered", 3 | "type": "check", 4 | "label": "Covered" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/crossing.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "crossing", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/except.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "except", 3 | "type": "combo", 4 | "label": "Exceptions" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/gauge.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "gauge", 3 | "type": "combo", 4 | "label": "Gauge" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/highway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "highway", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/incline.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "incline", 3 | "type": "combo", 4 | "label": "Incline" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/indoor.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "indoor", 3 | "type": "check", 4 | "label": "Indoor" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/kerb.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "kerb", 3 | "type": "combo", 4 | "label": "Curb Ramp" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/landuse.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "landuse", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/leisure.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "leisure", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/network.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "network", 3 | "type": "text", 4 | "label": "Network" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/office.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "office", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/place.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "place", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/plant.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "plant", 3 | "type": "combo", 4 | "label": "Plant" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/power.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "power", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/railway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "railway", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/rooms.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "rooms", 3 | "type": "number", 4 | "label": "Rooms" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/shelter.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "shelter", 3 | "type": "check", 4 | "label": "Shelter" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/stars.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "stars", 3 | "type": "number", 4 | "label": "Stars" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/studio.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "studio", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/surface.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "surface", 3 | "type": "combo", 4 | "label": "Surface" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/tourism.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "tourism", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/trees.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "trees", 3 | "type": "combo", 4 | "label": "Trees" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/wetland.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "wetland", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /dist/img/cursor-select-acting2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-acting2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-point2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-point2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-remove2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-remove2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-split2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-split2x.png -------------------------------------------------------------------------------- /dist/img/cursor-select-vertex2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-vertex2x.png -------------------------------------------------------------------------------- /data/presets/fields/aerialway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/artist.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "artist_name", 3 | "type": "text", 4 | "label": "Artist" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/beauty.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "beauty", 3 | "type": "combo", 4 | "label": "Shop Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/content.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "content", 3 | "type": "combo", 4 | "label": "Contents" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/country.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "country", 3 | "type": "combo", 4 | "label": "Country" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/craft.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "craft", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/cuisine.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "cuisine", 3 | "type": "combo", 4 | "label": "Cuisine" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/emergency.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "emergency", 3 | "type": "check", 4 | "label": "Emergency" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/entrance.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "entrance", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/historic.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "historic", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/lamp_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "lamp_type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/man_made.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "man_made", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/natural.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "natural", 3 | "type": "typeCombo", 4 | "label": "Natural" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/operator.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "operator", 3 | "type": "text", 4 | "label": "Operator" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "product", 3 | "type": "combo", 4 | "label": "Product" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/restriction.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "restriction", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/support.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "support", 3 | "type": "combo", 4 | "label": "Support" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/tunnel.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "tunnel", 3 | "type": "combo", 4 | "label": "Tunnel" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/waterway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "waterway", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /dist/img/cursor-draw-connect-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-draw-connect-line.png -------------------------------------------------------------------------------- /dist/img/cursor-select-mapillary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-mapillary.png -------------------------------------------------------------------------------- /dist/img/cursor-select-mapillary2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-select-mapillary2x.png -------------------------------------------------------------------------------- /data/presets/fields/backrest.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "backrest", 3 | "type": "check", 4 | "label": "Backrest" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/building.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "building", 3 | "type": "combo", 4 | "label": "Building" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/bunker_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bunker_type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/castle_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "castle_type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/construction.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "construction", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/delivery.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "delivery", 3 | "type": "check", 4 | "label": "Delivery" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/denotation.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "denotation", 3 | "type": "combo", 4 | "label": "Denotation" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/fence_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fence_type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/generator/type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "generator:type", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/handrail.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "handrail", 3 | "type": "check", 4 | "label": "Handrail" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/information.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "information", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/location.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "location", 3 | "type": "combo", 4 | "label": "Location" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/map_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "map_type", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/opening_hours.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "opening_hours", 3 | "type": "text", 4 | "label": "Hours" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/religion.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "religion", 3 | "type": "combo", 4 | "label": "Religion" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/route_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "route_master", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/seasonal.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "seasonal", 3 | "type": "check", 4 | "label": "Seasonal" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/substation.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "substation", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/tower/type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "tower:type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/vending.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "vending", 3 | "type": "combo", 4 | "label": "Type of Goods" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/width.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "width", 3 | "type": "number", 4 | "label": "Width (Meters)" 5 | } 6 | -------------------------------------------------------------------------------- /dist/img/background-pattern-opacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/background-pattern-opacity.png -------------------------------------------------------------------------------- /dist/img/cursor-draw-connect-line2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-draw-connect-line2x.png -------------------------------------------------------------------------------- /dist/img/cursor-draw-connect-vertex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-draw-connect-vertex.png -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .travis.yml 3 | data/data.js 4 | docs/ 5 | node_modules/ 6 | test/ 7 | npm-debug.log 8 | transifex.auth 9 | -------------------------------------------------------------------------------- /data/presets/fields/admin_level.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "admin_level", 3 | "type": "number", 4 | "label": "Admin Level" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/area/highway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "area:highway", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/artwork_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "artwork_type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/bath/open_air.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bath:open_air", 3 | "label": "Open Air", 4 | "type": "check" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/bath/sand_bath.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bath:sand_bath", 3 | "label": "Sand Bath", 4 | "type": "check" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/bicycle_parking.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bicycle_parking", 3 | "type": "combo", 4 | "label": "Type" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/board_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "board_type", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/denomination.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "denomination", 3 | "type": "combo", 4 | "label": "Denomination" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/fuel_multi.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fuel:", 3 | "type": "multiCombo", 4 | "label": "Fuel Types" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/height.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "height", 3 | "type": "number", 4 | "label": "Height (Meters)" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/length.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "length", 3 | "type": "number", 4 | "label": "Length (Meters)" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/map_size.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "map_size", 3 | "type": "typeCombo", 4 | "label": "Coverage" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/network_road.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "network", 3 | "type": "networkCombo", 4 | "label": "Network" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/park_ride.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "park_ride", 3 | "type": "check", 4 | "label": "Park and Ride" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/population.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "population", 3 | "type": "text", 4 | "label": "Population" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/shelter_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "shelter_type", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/supervised.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "supervised", 3 | "type": "check", 4 | "label": "Supervised" 5 | } 6 | -------------------------------------------------------------------------------- /dist/img/cursor-draw-connect-vertex2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/img/cursor-draw-connect-vertex2x.png -------------------------------------------------------------------------------- /data/presets/fields/aerialway/bubble.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:bubble", 3 | "type": "check", 4 | "label": "Bubble" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/aerialway/heating.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:heating", 3 | "type": "check", 4 | "label": "Heated" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/camera/mount.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "camera:mount", 3 | "type": "combo", 4 | "label": "Camera Mount" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/cycle_network.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "cycle_network", 3 | "type": "networkCombo", 4 | "label": "Network" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/generator/method.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "generator:method", 3 | "type": "combo", 4 | "label": "Method" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/generator/source.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "generator:source", 3 | "type": "combo", 4 | "label": "Source" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/power_supply.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "power_supply", 3 | "type": "check", 4 | "label": "Power Supply" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/social_facility.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "social_facility", 3 | "type": "combo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/step_count.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "step_count", 3 | "type": "number", 4 | "label": "Number of Steps" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/tactile_paving.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "tactile_paving", 3 | "type": "check", 4 | "label": "Tactile Paving" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/water_point.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "water_point", 3 | "type": "check", 4 | "label": "Water Point" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/presets/line.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Line", 3 | "tags": {}, 4 | "geometry": ["line"], 5 | "matchScore": 0.1 6 | } -------------------------------------------------------------------------------- /modules/actions/noop.js: -------------------------------------------------------------------------------- 1 | export function actionNoop() { 2 | return function(graph) { 3 | return graph; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/collection_times.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "collection_times", 3 | "type": "text", 4 | "label": "Collection Times" 5 | } -------------------------------------------------------------------------------- /data/presets/fields/currency_multi.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "currency:", 3 | "type": "multiCombo", 4 | "label": "Currency Types" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/drive_through.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "drive_through", 3 | "type": "check", 4 | "label": "Drive-Through" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/level.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "level", 3 | "type": "combo", 4 | "label": "Level", 5 | "universal": true 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/par.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "par", 3 | "type": "number", 4 | "label": "Par", 5 | "placeholder": "3, 4, 5..." 6 | } -------------------------------------------------------------------------------- /data/presets/fields/payment_multi.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "payment:", 3 | "type": "multiCombo", 4 | "label": "Payment Types" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/recycling_accepts.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "recycling:", 3 | "type": "multiCombo", 4 | "label": "Accepts" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/surveillance.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "surveillance", 3 | "type": "combo", 4 | "label": "Surveillance Kind" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/traffic_calming.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "traffic_calming", 3 | "type": "typeCombo", 4 | "label": "Type" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/presets/point.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Point", 3 | "tags": {}, 4 | "geometry": ["point"], 5 | "matchScore": 0.1 6 | } -------------------------------------------------------------------------------- /data/presets/presets/vertex.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Other", 3 | "tags": {}, 4 | "geometry": ["vertex"], 5 | "matchScore": 0.1 6 | } -------------------------------------------------------------------------------- /data/presets/fields/fixme.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fixme", 3 | "type": "textarea", 4 | "label": "Fix Me", 5 | "universal": true 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/outdoor_seating.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "outdoor_seating", 3 | "type": "check", 4 | "label": "Outdoor Seating" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/service/bicycle.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "service:bicycle:", 3 | "type": "multiCombo", 4 | "label": "Services" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/handicap.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "handicap", 3 | "type": "number", 4 | "label": "Handicap", 5 | "placeholder": "1-18" 6 | } -------------------------------------------------------------------------------- /data/presets/fields/lanes.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "lanes", 3 | "type": "number", 4 | "label": "Lanes", 5 | "placeholder":"1, 2, 3..." 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/social_facility_for.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "social_facility:for", 3 | "type": "combo", 4 | "label": "People Served" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/surveillance/zone.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "surveillance:zone", 3 | "type": "combo", 4 | "label": "Surveillance Zone" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/hoops.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "hoops", 3 | "type": "number", 4 | "label": "Hoops", 5 | "placeholder": "1, 2, 4..." 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/internet_access/fee.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "internet_access:fee", 3 | "type": "check", 4 | "label": "Internet Access Fee" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/sanitary_dump_station.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "sanitary_dump_station", 3 | "type": "check", 4 | "label": "Toilet Disposal" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/capacity.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "capacity", 3 | "type": "number", 4 | "label": "Capacity", 5 | "placeholder": "50, 100, 200..." 6 | } -------------------------------------------------------------------------------- /data/presets/fields/golf_hole.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "ref", 3 | "type": "text", 4 | "label": "Reference", 5 | "placeholder": "Hole number (1-18)" 6 | } -------------------------------------------------------------------------------- /data/presets/fields/internet_access/ssid.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "internet_access:ssid", 3 | "type": "text", 4 | "label": "SSID (Network Name)" 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/levels.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "building:levels", 3 | "type": "number", 4 | "label": "Levels", 5 | "placeholder": "2, 4, 6..." 6 | } -------------------------------------------------------------------------------- /data/presets/fields/note.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "note", 3 | "type": "textarea", 4 | "universal": true, 5 | "icon": "note", 6 | "label": "Note" 7 | } -------------------------------------------------------------------------------- /modules/actions/add_entity.js: -------------------------------------------------------------------------------- 1 | export function actionAddEntity(way) { 2 | return function(graph) { 3 | return graph.replace(way); 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/fields/description.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "description", 3 | "type": "textarea", 4 | "label": "Description", 5 | "universal": true 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/name.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "name", 3 | "type": "localized", 4 | "label": "Name", 5 | "placeholder": "Common name (if any)" 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/source.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "source", 3 | "type": "text", 4 | "icon": "source", 5 | "universal": true, 6 | "label": "Source" 7 | } -------------------------------------------------------------------------------- /data/presets/fields/traffic_signals.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "traffic_signals", 3 | "type": "combo", 4 | "label": "Type", 5 | "default": "signal" 6 | } 7 | -------------------------------------------------------------------------------- /modules/lib/index.js: -------------------------------------------------------------------------------- 1 | export { d3combobox } from './d3.combobox'; 2 | export { d3geoTile } from './d3.geo.tile'; 3 | export { d3keybinding } from './d3.keybinding'; 4 | -------------------------------------------------------------------------------- /data/presets/fields/maxspeed.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "maxspeed", 3 | "type": "maxspeed", 4 | "label": "Speed Limit", 5 | "placeholder": "40, 50, 60..." 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/presets/area.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Area", 3 | "tags": { 4 | "area": "yes" 5 | }, 6 | "geometry": ["area"], 7 | "matchScore": 0.1 8 | } -------------------------------------------------------------------------------- /data/presets/fields/elevation.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "ele", 3 | "type": "number", 4 | "icon": "elevation", 5 | "universal": true, 6 | "label": "Elevation" 7 | } -------------------------------------------------------------------------------- /data/presets/fields/fax.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fax", 3 | "type": "tel", 4 | "label": "Fax", 5 | "universal": true, 6 | "placeholder":"+31 42 123 4567" 7 | } 8 | -------------------------------------------------------------------------------- /dist/traffico/fonts/traffico_d596ae6150aa5c55ac14b1e060efc523.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/traffico/fonts/traffico_d596ae6150aa5c55ac14b1e060efc523.eot -------------------------------------------------------------------------------- /dist/traffico/fonts/traffico_d596ae6150aa5c55ac14b1e060efc523.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/traffico/fonts/traffico_d596ae6150aa5c55ac14b1e060efc523.ttf -------------------------------------------------------------------------------- /data/presets/fields/aerialway/occupancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:occupancy", 3 | "type": "number", 4 | "label": "Occupancy", 5 | "placeholder": "2, 4, 8..." 6 | } -------------------------------------------------------------------------------- /data/presets/presets/power/pole.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "vertex" 4 | ], 5 | "tags": { 6 | "power": "pole" 7 | }, 8 | "name": "Power Pole" 9 | } -------------------------------------------------------------------------------- /dist/traffico/fonts/traffico_d596ae6150aa5c55ac14b1e060efc523.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zverik/iD/master/dist/traffico/fonts/traffico_d596ae6150aa5c55ac14b1e060efc523.woff -------------------------------------------------------------------------------- /data/presets/fields/aerialway/duration.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:duration", 3 | "type": "number", 4 | "label": "Duration (minutes)", 5 | "placeholder": "1, 2, 3..." 6 | } -------------------------------------------------------------------------------- /data/presets/fields/building_area.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "building", 3 | "type": "combo", 4 | "default": "yes", 5 | "geometry": "area", 6 | "label": "Building" 7 | } 8 | -------------------------------------------------------------------------------- /data/presets/presets/ford.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "vertex" 4 | ], 5 | "tags": { 6 | "ford": "yes" 7 | }, 8 | "name": "Ford" 9 | } 10 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/bridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "man_made": "bridge" 7 | }, 8 | "name": "Bridge" 9 | } 10 | -------------------------------------------------------------------------------- /data/presets/fields/access_toilets.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "access", 3 | "type": "combo", 4 | "label": "Access", 5 | "options": ["yes", "permissive", "private", "customers"] 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/display.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "display", 3 | "type": "combo", 4 | "label": "Display", 5 | "options": ["analog", "digital", "sundial", "unorthodox"] 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/email.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "email", 3 | "type": "email", 4 | "placeholder": "example@example.com", 5 | "universal": true, 6 | "label": "Email" 7 | } 8 | -------------------------------------------------------------------------------- /data/presets/presets/power/tower.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "vertex" 4 | ], 5 | "tags": { 6 | "power": "tower" 7 | }, 8 | "name": "High-Voltage Tower" 9 | } -------------------------------------------------------------------------------- /data/presets/fields/aerialway/capacity.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:capacity", 3 | "type": "number", 4 | "label": "Capacity (per hour)", 5 | "placeholder": "500, 2500, 5000..." 6 | } -------------------------------------------------------------------------------- /data/presets/fields/access_simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "access", 3 | "type": "combo", 4 | "label": "Allowed Access", 5 | "options": ["permissive", "private", "customers", "no"] 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/camera/direction.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "camera:direction", 3 | "type": "number", 4 | "label": "Direction (Degrees Clockwise)", 5 | "placeholder": "45, 90, 180, 270" 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/diaper.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "diaper", 3 | "type": "combo", 4 | "label": "Diaper Changing Available", 5 | "options": ["yes", "no", "room", "1", "2", "3", "4", "5"] 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "phone", 3 | "type": "tel", 4 | "icon": "telephone", 5 | "universal": true, 6 | "label": "Phone", 7 | "placeholder": "+31 42 123 4567" 8 | } -------------------------------------------------------------------------------- /data/presets/fields/tower/construction.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "tower:construction", 3 | "type": "combo", 4 | "label": "Construction", 5 | "placeholder": "Guyed, Lattice, Concealed, ..." 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/cutline.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "tags": { 6 | "man_made": "cutline" 7 | }, 8 | "name": "Cut line" 9 | } 10 | -------------------------------------------------------------------------------- /data/presets/presets/relation.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Relation", 3 | "icon": "relation", 4 | "tags": {}, 5 | "geometry": ["relation"], 6 | "fields": [ 7 | "relation" 8 | ] 9 | } -------------------------------------------------------------------------------- /data/presets/fields/contact/webcam.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "contact:webcam", 3 | "type": "url", 4 | "icon": "website", 5 | "label": "Webcam URL", 6 | "placeholder": "http://example.com/" 7 | } 8 | -------------------------------------------------------------------------------- /data/presets/fields/maxheight.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "maxheight", 3 | "type": "combo", 4 | "label": "Max Height", 5 | "placeholder": "4, 4.5, 5, 14'0\", 14'6\", 15'0\"", 6 | "snake_case": false 7 | } 8 | -------------------------------------------------------------------------------- /data/presets/presets/junction.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "vertex", 4 | "area" 5 | ], 6 | "tags": { 7 | "junction": "yes" 8 | }, 9 | "name": "Junction" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/natural/fell.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "fell" 7 | }, 8 | "terms": [], 9 | "name": "Fell" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/place/square.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "place": "square" 8 | }, 9 | "name": "Square" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/fields/website.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "website", 3 | "type": "url", 4 | "icon": "website", 5 | "placeholder": "http://example.com/", 6 | "universal": true, 7 | "label": "Website" 8 | } 9 | -------------------------------------------------------------------------------- /data/presets/presets/building/hut.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "building": "hut" 7 | }, 8 | "matchScore": 0.5, 9 | "name": "Hut" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/grass.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "grass" 7 | }, 8 | "terms": [], 9 | "name": "Grass" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/meadow.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "meadow" 7 | }, 8 | "terms": [], 9 | "name": "Meadow" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/quarry.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "quarry" 7 | }, 8 | "terms": [], 9 | "name": "Quarry" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/groyne.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line", 4 | "area" 5 | ], 6 | "tags": { 7 | "man_made": "groyne" 8 | }, 9 | "name": "Groyne" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/natural/heath.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "heath" 7 | }, 8 | "terms": [], 9 | "name": "Heath" 10 | } 11 | -------------------------------------------------------------------------------- /dist/traffico/README.md: -------------------------------------------------------------------------------- 1 | # traffico-release 2 | Release repository for Traffico, an Open Source Traffic Sign Font. 3 | 4 | Source code: [mapillary/traffico](https://github.com/mapillary/traffico) 5 | 6 | License: MIT 7 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/fountain.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "amenity": "fountain" 8 | }, 9 | "name": "Fountain" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/embankment.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "tags": { 6 | "embankment": "yes" 7 | }, 8 | "name": "Embankment", 9 | "matchScore": 0.2 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/garages.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "garages" 7 | }, 8 | "terms": [], 9 | "name": "Garages" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/chimney.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "man_made": "chimney" 8 | }, 9 | "name": "Chimney" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/natural/glacier.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "glacier" 7 | }, 8 | "terms": [], 9 | "name": "Glacier" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/power/line.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "power-line", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "power": "line" 8 | }, 9 | "name": "Power Line" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/tourism/viewpoint.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex" 5 | ], 6 | "tags": { 7 | "tourism": "viewpoint" 8 | }, 9 | "name": "Viewpoint" 10 | } -------------------------------------------------------------------------------- /data/presets/fields/wikipedia.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "wikipedia", 3 | "keys": ["wikipedia", "wikidata"], 4 | "type": "wikipedia", 5 | "icon": "wikipedia", 6 | "universal": true, 7 | "label": "Wikipedia" 8 | } 9 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/retail.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "landuse": "retail" 8 | }, 9 | "name": "Retail Area" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/route/ferry.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "ferry-line", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "route": "ferry" 8 | }, 9 | "name": "Ferry Route" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/riverbank.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "waterway": "riverbank" 8 | }, 9 | "name": "Riverbank" 10 | } -------------------------------------------------------------------------------- /data/presets/presets/historic/ruins.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex", 5 | "area" 6 | ], 7 | "tags": { 8 | "historic": "ruins" 9 | }, 10 | "name": "Ruins" 11 | } -------------------------------------------------------------------------------- /data/presets/presets/man_made/breakwater.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line", 4 | "area" 5 | ], 6 | "tags": { 7 | "man_made": "breakwater" 8 | }, 9 | "name": "Breakwater" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/flagpole.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "embassy", 3 | "geometry": [ 4 | "point" 5 | ], 6 | "tags": { 7 | "man_made": "flagpole" 8 | }, 9 | "name": "Flagpole" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/natural/bay.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "natural": "bay" 8 | }, 9 | "terms": [], 10 | "name": "Bay" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/place/farm.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "farm", 3 | "geometry": [ 4 | "point", 5 | "area" 6 | ], 7 | "tags": { 8 | "place": "farm" 9 | }, 10 | "name": "Farm" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/weir.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "dam", 3 | "geometry": [ 4 | "vertex", 5 | "line" 6 | ], 7 | "tags": { 8 | "waterway": "weir" 9 | }, 10 | "name": "Weir" 11 | } -------------------------------------------------------------------------------- /dist/traffico/string-maps/ee-map.json: -------------------------------------------------------------------------------- 1 | {"information--information_border_ee--ee":"EESTI"} -------------------------------------------------------------------------------- /data/presets/presets/barrier/retaining_wall.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line", 4 | "area" 5 | ], 6 | "tags": { 7 | "barrier": "retaining_wall" 8 | }, 9 | "name": "Retaining Wall" 10 | } -------------------------------------------------------------------------------- /data/presets/presets/golf/rough.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "rough", 8 | "landuse": "grass" 9 | }, 10 | "name": "Rough" 11 | } -------------------------------------------------------------------------------- /data/presets/presets/golf/water_hazard_line.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "golf": "water_hazard" 8 | }, 9 | "name": "Water Hazard" 10 | } 11 | -------------------------------------------------------------------------------- /dist/traffico/string-maps/lv-map.json: -------------------------------------------------------------------------------- 1 | {"information--information_border_lv--lv":"LATVIJA"} -------------------------------------------------------------------------------- /modules/core/index.js: -------------------------------------------------------------------------------- 1 | export { coreContext } from './context'; 2 | export { coreDifference } from './difference'; 3 | export { coreGraph } from './graph'; 4 | export { coreHistory } from './history'; 5 | export { coreTree } from './tree'; 6 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/cattle_grid.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "barrier", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "barrier": "cattle_grid" 8 | }, 9 | "name": "Cattle Grid" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/historic/boundary_stone.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex" 5 | ], 6 | "tags": { 7 | "historic": "boundary_stone" 8 | }, 9 | "name": "Boundary Stone" 10 | } -------------------------------------------------------------------------------- /data/presets/presets/landuse/basin.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "landuse": "basin" 8 | }, 9 | "terms": [], 10 | "name": "Basin" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/_embankment.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "tags": { 6 | "man_made": "embankment" 7 | }, 8 | "name": "Embankment", 9 | "searchable": false 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/natural/sand.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "sand" 7 | }, 8 | "terms": [ 9 | "desert" 10 | ], 11 | "name": "Sand" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/natural/spring.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex" 5 | ], 6 | "tags": { 7 | "natural": "spring" 8 | }, 9 | "terms": [], 10 | "name": "Spring" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/place/isolated_dwelling.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "place": "isolated_dwelling" 8 | }, 9 | "name": "Isolated Dwelling" 10 | } -------------------------------------------------------------------------------- /data/presets/presets/power/minor_line.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "power-line", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "power": "minor_line" 8 | }, 9 | "name": "Minor Power Line" 10 | } 11 | -------------------------------------------------------------------------------- /dist/land.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /modules/actions/change_tags.js: -------------------------------------------------------------------------------- 1 | export function actionChangeTags(entityId, tags) { 2 | return function(graph) { 3 | var entity = graph.entity(entityId); 4 | return graph.replace(entity.update({tags: tags})); 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/categories/natural-line.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "line", 3 | "name": "Natural Features", 4 | "icon": "natural", 5 | "members": [ 6 | "natural/coastline", 7 | "natural/tree_row" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /data/presets/presets/golf/fairway.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "fairway", 8 | "landuse": "grass" 9 | }, 10 | "name": "Fairway" 11 | } -------------------------------------------------------------------------------- /data/presets/presets/man_made/pumping_station.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "man_made": "pumping_station" 8 | }, 9 | "name": "Pumping Station" 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/presets/natural/ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "tags": { 6 | "natural": "ridge" 7 | }, 8 | "terms": [ 9 | "crest" 10 | ], 11 | "name": "Ridge" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/place/locality.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "marker", 3 | "geometry": [ 4 | "point", 5 | "area" 6 | ], 7 | "tags": { 8 | "place": "locality" 9 | }, 10 | "name": "Locality" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/power/transformer.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex", 5 | "area" 6 | ], 7 | "tags": { 8 | "power": "transformer" 9 | }, 10 | "name": "Transformer" 11 | } -------------------------------------------------------------------------------- /modules/actions/change_member.js: -------------------------------------------------------------------------------- 1 | export function actionChangeMember(relationId, member, memberIndex) { 2 | return function(graph) { 3 | return graph.replace(graph.entity(relationId).updateMember(member, memberIndex)); 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/landfill.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "landfill" 7 | }, 8 | "terms": [ 9 | "dump" 10 | ], 11 | "name": "Landfill" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/natural/scree.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "scree" 7 | }, 8 | "terms": [ 9 | "loose rocks" 10 | ], 11 | "name": "Scree" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/restrictions.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "restrictions", 3 | "geometry": "vertex", 4 | "icon": "restrictions", 5 | "reference": { 6 | "rtype": "restriction" 7 | }, 8 | "label": "Turn Restrictions" 9 | } 10 | -------------------------------------------------------------------------------- /data/presets/presets/_roundabout.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "vertex", 4 | "line" 5 | ], 6 | "tags": { 7 | "junction": "roundabout" 8 | }, 9 | "name": "Roundabout", 10 | "searchable": false 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/aeroway/hangar.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "fields": [ 6 | "building_area" 7 | ], 8 | "tags": { 9 | "aeroway": "hangar" 10 | }, 11 | "name": "Hangar" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/military.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "military" 7 | }, 8 | "terms": [], 9 | "matchScore": 0.9, 10 | "name": "Military Area" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/natural/bare_rock.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "bare_rock" 7 | }, 8 | "terms": [ 9 | "rock" 10 | ], 11 | "name": "Bare Rock" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/natural/coastline.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "tags": { 6 | "natural": "coastline" 7 | }, 8 | "terms": [ 9 | "shore" 10 | ], 11 | "name": "Coastline" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/area/highway.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "area/highway" 4 | ], 5 | "geometry": [ 6 | "area" 7 | ], 8 | "tags": { 9 | "area:highway": "*" 10 | }, 11 | "name": "Road Surface" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/golf/lateral_water_hazard_line.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "golf": "lateral_water_hazard" 8 | }, 9 | "name": "Lateral Water Hazard" 10 | } 11 | -------------------------------------------------------------------------------- /test/spec/actions/noop.js: -------------------------------------------------------------------------------- 1 | describe('iD.actionNoop', function () { 2 | it('does nothing', function () { 3 | var graph = iD.Graph(), 4 | action = iD.actionNoop(graph); 5 | expect(action(graph)).to.equal(graph); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /data/presets/fields/incline_steps.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "incline", 3 | "type": "combo", 4 | "label": "Incline", 5 | "strings": { 6 | "options": { 7 | "up": "Up", 8 | "down": "Down" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/fields/stop.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "stop", 3 | "type": "combo", 4 | "label": "Stop Type", 5 | "strings": { 6 | "options": { 7 | "all": "All Ways", 8 | "minor": "Minor Road" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/compressed_air.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "car", 3 | "geometry": [ 4 | "point", 5 | "area" 6 | ], 7 | "tags": { 8 | "amenity": "compressed_air" 9 | }, 10 | "name": "Compressed Air" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/_entrance.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "entrance-alt1", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "barrier": "entrance" 8 | }, 9 | "name": "Entrance", 10 | "searchable": false 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/commercial.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "commercial", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "landuse": "commercial" 8 | }, 9 | "terms": [], 10 | "name": "Commercial Area" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/residential.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "landuse": "residential" 8 | }, 9 | "terms": [], 10 | "name": "Residential Area" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/pier.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line", 4 | "area" 5 | ], 6 | "terms": [ 7 | "dock" 8 | ], 9 | "tags": { 10 | "man_made": "pier" 11 | }, 12 | "name": "Pier" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/natural/scrub.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "scrub" 7 | }, 8 | "terms": [ 9 | "bush", 10 | "shrubs" 11 | ], 12 | "name": "Scrub" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/natural/water/reservoir.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "natural": "water", 8 | "water": "reservoir" 9 | }, 10 | "name": "Reservoir" 11 | } 12 | -------------------------------------------------------------------------------- /modules/util/trigger_event.js: -------------------------------------------------------------------------------- 1 | export function utilTriggerEvent(target, type) { 2 | target.each(function() { 3 | var evt = document.createEvent('HTMLEvents'); 4 | evt.initEvent(type, true, true); 5 | this.dispatchEvent(evt); 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /data/presets/fields/sport_ice.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "sport", 3 | "type": "combo", 4 | "label": "Sport", 5 | "options": [ 6 | "skating", 7 | "hockey", 8 | "multi", 9 | "curling", 10 | "ice_stock" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/ditch.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "geometry": [ 4 | "line", 5 | "area" 6 | ], 7 | "tags": { 8 | "barrier": "ditch" 9 | }, 10 | "name": "Trench", 11 | "matchScore": 0.25 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/golf/water_hazard_area.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "water_hazard", 8 | "natural": "water" 9 | }, 10 | "name": "Water Hazard" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/historic/memorial.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "monument", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "area" 7 | ], 8 | "tags": { 9 | "historic": "memorial" 10 | }, 11 | "name": "Memorial" 12 | } -------------------------------------------------------------------------------- /data/presets/presets/historic/monument.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "monument", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "area" 7 | ], 8 | "tags": { 9 | "historic": "monument" 10 | }, 11 | "name": "Monument" 12 | } -------------------------------------------------------------------------------- /data/presets/presets/landuse.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "landuse" 4 | ], 5 | "geometry": [ 6 | "area" 7 | ], 8 | "tags": { 9 | "landuse": "*" 10 | }, 11 | "matchScore": 0.9, 12 | "name": "Land Use" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "terms": [ 7 | "open space" 8 | ], 9 | "tags": { 10 | "leisure": "common" 11 | }, 12 | "name": "Common" 13 | } -------------------------------------------------------------------------------- /data/presets/presets/natural/water.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "fields": [ 4 | "water" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "natural": "water" 11 | }, 12 | "name": "Water" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/type/site.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "site" 7 | }, 8 | "name": "Site", 9 | "icon": "relation", 10 | "fields": [ 11 | "site" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/dam.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "dam", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "line", 7 | "area" 8 | ], 9 | "tags": { 10 | "waterway": "dam" 11 | }, 12 | "name": "Dam" 13 | } -------------------------------------------------------------------------------- /dist/traffico/signs/ee.json: -------------------------------------------------------------------------------- 1 | {"information_border_ee":{"category":"information","name":"European border crossing into Estonia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"EESTI"}]}} -------------------------------------------------------------------------------- /dist/traffico/signs/lv.json: -------------------------------------------------------------------------------- 1 | {"information_border_lv":{"category":"information","name":"European border crossing into Latvia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"LATVIJA"}]}} -------------------------------------------------------------------------------- /data/presets/presets/aeroway/gate.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "airport", 3 | "geometry": [ 4 | "point" 5 | ], 6 | "fields": [ 7 | "ref" 8 | ], 9 | "tags": { 10 | "aeroway": "gate" 11 | }, 12 | "name": "Airport Gate" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/aeroway/taxiway.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "fields": [ 6 | "ref", 7 | "surface" 8 | ], 9 | "tags": { 10 | "aeroway": "taxiway" 11 | }, 12 | "name": "Taxiway" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/building/_entrance.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "entrance-alt1", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "building": "entrance" 8 | }, 9 | "name": "Entrance/Exit", 10 | "searchable": false 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/historic/archaeological_site.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex", 5 | "area" 6 | ], 7 | "tags": { 8 | "historic": "archaeological_site" 9 | }, 10 | "name": "Archaeological Site" 11 | } -------------------------------------------------------------------------------- /data/presets/presets/railway/subway_entrance.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "entrance", 3 | "geometry": [ 4 | "point" 5 | ], 6 | "tags": { 7 | "railway": "subway_entrance" 8 | }, 9 | "terms": [], 10 | "name": "Subway Entrance" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/aerialway/pylon.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex" 5 | ], 6 | "fields": [ 7 | "ref" 8 | ], 9 | "tags": { 10 | "aerialway": "pylon" 11 | }, 12 | "name": "Aerialway Pylon" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/natural/grassland.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "natural": "grassland" 7 | }, 8 | "terms": [ 9 | "prairie", 10 | "savanna" 11 | ], 12 | "name": "Grassland" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/tourism.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "tourism" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "tags": { 11 | "tourism": "*" 12 | }, 13 | "name": "Tourism" 14 | } -------------------------------------------------------------------------------- /data/presets/presets/type/boundary.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "boundary" 7 | }, 8 | "name": "Boundary", 9 | "icon": "boundary", 10 | "fields": [ 11 | "boundary" 12 | ] 13 | } -------------------------------------------------------------------------------- /data/presets/presets/waterway/canal.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "waterway-canal", 3 | "fields": [ 4 | "width" 5 | ], 6 | "geometry": [ 7 | "line" 8 | ], 9 | "tags": { 10 | "waterway": "canal" 11 | }, 12 | "name": "Canal" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/fields/parallel_direction.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "direction", 3 | "type": "combo", 4 | "label": "Direction", 5 | "strings": { 6 | "options": { 7 | "forward": "Forward", 8 | "backward": "Backward" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/boundary/administrative.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Administrative Boundary", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "boundary": "administrative" 8 | }, 9 | "fields": [ 10 | "admin_level" 11 | ] 12 | } -------------------------------------------------------------------------------- /data/presets/presets/historic.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "historic" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "tags": { 11 | "historic": "*" 12 | }, 13 | "name": "Historic Site" 14 | } -------------------------------------------------------------------------------- /data/presets/presets/leisure.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "leisure" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "tags": { 11 | "leisure": "*" 12 | }, 13 | "name": "Leisure" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/dog_park.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "dog-park", 3 | "geometry": [ 4 | "point", 5 | "area" 6 | ], 7 | "terms": [ 8 | ], 9 | "tags": { 10 | "leisure": "dog_park" 11 | }, 12 | "name": "Dog Park" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/gasometer.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "terms": [ 7 | "gas holder" 8 | ], 9 | "tags": { 10 | "man_made": "gasometer" 11 | }, 12 | "name": "Gasometer" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/natural.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "natural" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "tags": { 11 | "natural": "*" 12 | }, 13 | "name": "Natural" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/ditch.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "waterway-ditch", 3 | "fields": [ 4 | "tunnel" 5 | ], 6 | "geometry": [ 7 | "line" 8 | ], 9 | "tags": { 10 | "waterway": "ditch" 11 | }, 12 | "name": "Ditch" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/drain.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "waterway-stream", 3 | "fields": [ 4 | "tunnel" 5 | ], 6 | "geometry": [ 7 | "line" 8 | ], 9 | "tags": { 10 | "waterway": "drain" 11 | }, 12 | "name": "Drain" 13 | } 14 | -------------------------------------------------------------------------------- /modules/svg/point_transform.js: -------------------------------------------------------------------------------- 1 | export function svgPointTransform(projection) { 2 | return function(entity) { 3 | // http://jsperf.com/short-array-join 4 | var pt = projection(entity.loc); 5 | return 'translate(' + pt[0] + ',' + pt[1] + ')'; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | data/data.js 3 | dist/*.js 4 | dist/*.css 5 | dist/*.map 6 | dist/img/*.svg 7 | dist/mapillary-js/ 8 | node_modules/ 9 | npm-debug.log 10 | transifex.auth 11 | 12 | # autogenerated symlinks 13 | land.html 14 | img 15 | css/img 16 | test/css 17 | test/img 18 | -------------------------------------------------------------------------------- /data/presets/fields/service.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "service", 3 | "type": "combo", 4 | "label": "Type", 5 | "options": [ 6 | "parking_aisle", 7 | "driveway", 8 | "alley", 9 | "emergency_access", 10 | "drive-through" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/boat_rental.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "operator" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "area" 8 | ], 9 | "tags": { 10 | "amenity": "boat_rental" 11 | }, 12 | "name": "Boat Rental" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/highway/motorway_junction.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "vertex" 4 | ], 5 | "tags": { 6 | "highway": "motorway_junction" 7 | }, 8 | "fields": [ 9 | "ref" 10 | ], 11 | "name": "Motorway Junction / Exit" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/allotments.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area" 4 | ], 5 | "tags": { 6 | "landuse": "allotments" 7 | }, 8 | "terms": [ 9 | "allotment", 10 | "garden" 11 | ], 12 | "name": "Community Garden" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/industrial.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "industry", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "landuse": "industrial" 8 | }, 9 | "terms": [], 10 | "matchScore": 0.9, 11 | "name": "Industrial Area" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/place/city.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "city", 3 | "fields": [ 4 | "population" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "place": "city" 12 | }, 13 | "name": "City" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/place/town.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "town", 3 | "fields": [ 4 | "population" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "place": "town" 12 | }, 13 | "name": "Town" 14 | } 15 | -------------------------------------------------------------------------------- /modules/renderer/index.js: -------------------------------------------------------------------------------- 1 | export { rendererBackgroundSource } from './background_source'; 2 | export { rendererBackground } from './background'; 3 | export { rendererFeatures } from './features'; 4 | export { rendererMap } from './map'; 5 | export { rendererTileLayer } from './tile_layer'; 6 | -------------------------------------------------------------------------------- /data/presets/fields/wheelchair.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "wheelchair", 3 | "type": "radio", 4 | "options": [ 5 | "yes", 6 | "limited", 7 | "no" 8 | ], 9 | "icon": "wheelchair", 10 | "universal": true, 11 | "label": "Wheelchair Access" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/water_point.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "drinking-water", 3 | "geometry": [ 4 | "area", 5 | "vertex", 6 | "point" 7 | ], 8 | "tags": { 9 | "amenity": "water_point" 10 | }, 11 | "name": "RV Drinking Water" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/hedge.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "height" 4 | ], 5 | "geometry": [ 6 | "line", 7 | "area" 8 | ], 9 | "tags": { 10 | "barrier": "hedge" 11 | }, 12 | "name": "Hedge", 13 | "matchScore": 0.25 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/kissing_gate.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "barrier", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "vertex" 8 | ], 9 | "tags": { 10 | "barrier": "kissing_gate" 11 | }, 12 | "name": "Kissing Gate" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/golf/lateral_water_hazard_area.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "lateral_water_hazard", 8 | "natural": "water" 9 | }, 10 | "name": "Lateral Water Hazard" 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/presets/golf/tee.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "tee", 8 | "landuse": "grass" 9 | }, 10 | "terms": [ 11 | "teeing ground" 12 | ], 13 | "name": "Tee Box" 14 | } -------------------------------------------------------------------------------- /data/presets/presets/historic/wayside_shrine.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "landmark", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "area" 7 | ], 8 | "tags": { 9 | "historic": "wayside_shrine" 10 | }, 11 | "name": "Wayside Shrine" 12 | } 13 | -------------------------------------------------------------------------------- /dist/traffico/bower.json: -------------------------------------------------------------------------------- 1 | {"name":"Traffico","version":"0.1.26","homepage":"https://github.com/mapillary/traffico","authors":["Kamil Nikel "],"description":"An Open Source Traffic Sign Font","main":"stylesheets/traffico.css","keywords":["traffic","signs","road","font"],"license":"MIT"} -------------------------------------------------------------------------------- /data/presets/fields/bath/type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "bath:type", 3 | "type": "combo", 4 | "label": "Specialty", 5 | "strings": { 6 | "options": { 7 | "onsen": "Japanese Onsen", 8 | "foot_bath": "Foot Bath", 9 | "hot_spring": "Hot Spring" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/aerialway/t-bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "fields": [ 6 | "aerialway/capacity", 7 | "aerialway/duration" 8 | ], 9 | "tags": { 10 | "aerialway": "t-bar" 11 | }, 12 | "name": "T-bar Lift" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/block.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex" 9 | ], 10 | "tags": { 11 | "barrier": "block" 12 | }, 13 | "name": "Block" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/cycle_barrier.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "vertex" 8 | ], 9 | "tags": { 10 | "barrier": "cycle_barrier" 11 | }, 12 | "name": "Cycle Barrier" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/stile.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex" 9 | ], 10 | "tags": { 11 | "barrier": "stile" 12 | }, 13 | "name": "Stile" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/historic/wayside_cross.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "religious-christian", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "area" 7 | ], 8 | "tags": { 9 | "historic": "wayside_cross" 10 | }, 11 | "name": "Wayside Cross" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/firepit.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "tags": { 7 | "leisure": "firepit" 8 | }, 9 | "terms": [ 10 | "fireplace", 11 | "campfire" 12 | ], 13 | "name": "Firepit" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/picnic_table.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "picnic-site", 3 | "geometry": [ 4 | "point" 5 | ], 6 | "tags": { 7 | "leisure": "picnic_table" 8 | }, 9 | "terms": [ 10 | "bench" 11 | ], 12 | "name": "Picnic Table" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/place/village.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "village", 3 | "fields": [ 4 | "population" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "place": "village" 12 | }, 13 | "name": "Village" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/railway/platform.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "rail", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "line", 7 | "area" 8 | ], 9 | "tags": { 10 | "railway": "platform" 11 | }, 12 | "name": "Railway Platform" 13 | } 14 | -------------------------------------------------------------------------------- /dist/traffico/signs/si.json: -------------------------------------------------------------------------------- 1 | {"information_border_si":{"category":"information","name":"European border crossing into Slovenia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENIA","transform":"scale(.85)"}]}} -------------------------------------------------------------------------------- /data/presets/categories/natural-point.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "point", 3 | "name": "Natural Features", 4 | "icon": "natural", 5 | "members": [ 6 | "natural/peak", 7 | "natural/cliff", 8 | "natural/beach", 9 | "natural/cave_entrance" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/fields/clock_direction.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "direction", 3 | "type": "combo", 4 | "label": "Direction", 5 | "strings": { 6 | "options": { 7 | "clockwise": "Clockwise", 8 | "anticlockwise": "Counterclockwise" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/fields/oneway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "oneway", 3 | "type": "check", 4 | "label": "One Way", 5 | "strings": { 6 | "options": { 7 | "undefined": "Assumed to be No", 8 | "yes": "Yes", 9 | "no": "No" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/_place.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "place" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "tags": { 11 | "place": "*" 12 | }, 13 | "searchable": false, 14 | "name": "Place" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/aerialway/goods.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "fields": [ 6 | "aerialway/capacity", 7 | "aerialway/duration" 8 | ], 9 | "tags": { 10 | "aerialway": "goods" 11 | }, 12 | "name": "Goods Aerialway" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/telephone.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "telephone", 3 | "geometry": [ 4 | "point", 5 | "vertex" 6 | ], 7 | "tags": { 8 | "amenity": "telephone" 9 | }, 10 | "terms": [ 11 | "phone" 12 | ], 13 | "name": "Telephone" 14 | } -------------------------------------------------------------------------------- /data/presets/presets/barrier/city_wall.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "barrier", 3 | "fields": [ 4 | "height" 5 | ], 6 | "geometry": [ 7 | "line", 8 | "area" 9 | ], 10 | "tags": { 11 | "barrier": "city_wall" 12 | }, 13 | "name": "City Wall" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/building/roof.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "building": "roof" 11 | }, 12 | "matchScore": 0.5, 13 | "name": "Roof" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/highway/rest_area.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex", 5 | "area" 6 | ], 7 | "tags": { 8 | "highway": "rest_area" 9 | }, 10 | "terms": [ 11 | "rest stop" 12 | ], 13 | "name": "Rest Area" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/slipway.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "line" 5 | ], 6 | "terms": [ 7 | "boat launch", 8 | "boat ramp" 9 | ], 10 | "tags": { 11 | "leisure": "slipway" 12 | }, 13 | "name": "Slipway" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/water_point.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "drinking-water", 3 | "geometry": [ 4 | "area", 5 | "vertex", 6 | "point" 7 | ], 8 | "tags": { 9 | "waterway": "water_point" 10 | }, 11 | "name": "Marine Drinking Water" 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/categories/water-area.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "area", 3 | "name": "Water Features", 4 | "icon": "water", 5 | "members": [ 6 | "natural/water/lake", 7 | "natural/water/pond", 8 | "natural/water/reservoir", 9 | "natural/water" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /data/presets/fields/oneway_yes.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "oneway", 3 | "type": "check", 4 | "label": "One Way", 5 | "strings": { 6 | "options": { 7 | "undefined": "Assumed to be Yes", 8 | "yes": "Yes", 9 | "no": "No" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/_amenity.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "amenity" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "tags": { 11 | "amenity": "*" 12 | }, 13 | "searchable": false, 14 | "name": "Amenity" 15 | } -------------------------------------------------------------------------------- /data/presets/presets/aerialway/drag_lift.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "fields": [ 6 | "aerialway/capacity", 7 | "aerialway/duration" 8 | ], 9 | "tags": { 10 | "aerialway": "drag_lift" 11 | }, 12 | "name": "Drag Lift" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/car_rental.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "car", 3 | "fields": [ 4 | "operator" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "amenity": "car_rental" 12 | }, 13 | "name": "Car Rental" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/lift_gate.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex" 9 | ], 10 | "tags": { 11 | "barrier": "lift_gate" 12 | }, 13 | "name": "Lift Gate" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/building/garage.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "warehouse", 3 | "fields": [ 4 | "capacity" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "building": "garage" 11 | }, 12 | "matchScore": 0.5, 13 | "name": "Garage" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/golf/hole.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "fields": [ 4 | "golf_hole", 5 | "par", 6 | "handicap" 7 | ], 8 | "geometry": [ 9 | "line" 10 | ], 11 | "tags": { 12 | "golf": "hole" 13 | }, 14 | "name": "Golf Hole" 15 | } -------------------------------------------------------------------------------- /data/presets/presets/highway/turning_loop.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "circle", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "highway": "turning_loop" 8 | }, 9 | "terms": [ 10 | "cul-de-sac" 11 | ], 12 | "name": "Turning Loop (Island)" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/churchyard.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "religion", 4 | "denomination" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "landuse": "churchyard" 11 | }, 12 | "terms": [], 13 | "name": "Churchyard" 14 | } -------------------------------------------------------------------------------- /data/presets/presets/man_made.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "man_made" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "line", 9 | "area" 10 | ], 11 | "tags": { 12 | "man_made": "*" 13 | }, 14 | "name": "Man Made" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/place/hamlet.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "triangle-stroked", 3 | "fields": [ 4 | "population" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "place": "hamlet" 12 | }, 13 | "name": "Hamlet" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/categories/barrier.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "line", 3 | "name": "Barrier Features", 4 | "icon": "roadblock", 5 | "members": [ 6 | "barrier/fence", 7 | "barrier/wall", 8 | "barrier/ditch", 9 | "barrier/gate", 10 | "barrier" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/aerialway/access.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:access", 3 | "type": "combo", 4 | "label": "Access", 5 | "strings": { 6 | "options": { 7 | "entry": "Entry", 8 | "exit": "Exit", 9 | "both": "Both" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/camera/type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "camera:type", 3 | "type": "combo", 4 | "label": "Camera Type", 5 | "strings": { 6 | "options": { 7 | "fixed": "Fixed", 8 | "panning": "Panning", 9 | "dome": "Dome" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/gate.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "barrier", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex", 9 | "line" 10 | ], 11 | "tags": { 12 | "barrier": "gate" 13 | }, 14 | "name": "Gate" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/garages.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "warehouse", 3 | "fields": [ 4 | "capacity" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "building": "garages" 11 | }, 12 | "matchScore": 0.5, 13 | "name": "Garages" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/golf/green.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "green", 8 | "landuse": "grass", 9 | "leisure": "pitch", 10 | "sport": "golf" 11 | }, 12 | "name": "Putting Green" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/highway/turning_circle.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "circle-stroked", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "highway": "turning_circle" 8 | }, 9 | "terms": [ 10 | "cul-de-sac" 11 | ], 12 | "name": "Turning Circle" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/recreation_ground.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "pitch", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "landuse": "recreation_ground" 8 | }, 9 | "terms": [ 10 | "playing fields" 11 | ], 12 | "name": "Recreation Ground" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/water_tower.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "fields": [ 4 | "operator" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "man_made": "water_tower" 12 | }, 13 | "name": "Water Tower" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/water_well.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "fields": [ 4 | "operator" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "man_made": "water_well" 12 | }, 13 | "name": "Water Well" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/type/restriction.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "restriction" 7 | }, 8 | "name": "Restriction", 9 | "icon": "restriction", 10 | "fields": [ 11 | "restriction", 12 | "except" 13 | ] 14 | } -------------------------------------------------------------------------------- /data/presets/presets/type/route/detour.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "detour" 8 | }, 9 | "name": "Detour Route", 10 | "icon": "route-detour", 11 | "fields": [ 12 | "ref" 13 | ] 14 | } -------------------------------------------------------------------------------- /test/spec/actions/add_entity.js: -------------------------------------------------------------------------------- 1 | describe('iD.actionAddEntity', function () { 2 | it('adds an entity to the graph', function () { 3 | var entity = iD.Entity(), 4 | graph = iD.actionAddEntity(entity)(iD.Graph()); 5 | expect(graph.entity(entity.id)).to.equal(entity); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /data/presets/presets/address.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "address" 4 | ], 5 | "geometry": [ 6 | "point" 7 | ], 8 | "tags": { 9 | "addr:housenumber": "*" 10 | }, 11 | "addTags": {}, 12 | "removeTags": {}, 13 | "matchScore": 0.2, 14 | "name": "Address" 15 | } -------------------------------------------------------------------------------- /data/presets/presets/amenity/_swimming_pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "swimming", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "area" 7 | ], 8 | "tags": { 9 | "amenity": "swimming_pool" 10 | }, 11 | "name": "Swimming Pool", 12 | "searchable": false 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/_no.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | ], 4 | "geometry": [ 5 | "line" 6 | ], 7 | "tags": { 8 | "emergency": "no" 9 | }, 10 | "terms": [], 11 | "name": "Emergency Access No", 12 | "searchable": false, 13 | "matchScore": 0.01 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/_yes.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | ], 4 | "geometry": [ 5 | "line" 6 | ], 7 | "tags": { 8 | "emergency": "yes" 9 | }, 10 | "terms": [], 11 | "name": "Emergency Access Yes", 12 | "searchable": false, 13 | "matchScore": 0.01 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "emergency-phone", 3 | "fields": [ 4 | "operator" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex" 9 | ], 10 | "tags": { 11 | "emergency": "phone" 12 | }, 13 | "name": "Emergency Phone" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/golf/bunker.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "golf", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "golf": "bunker", 8 | "natural": "sand" 9 | }, 10 | "terms": [ 11 | "hazard", 12 | "bunker" 13 | ], 14 | "name": "Sand Trap" 15 | } -------------------------------------------------------------------------------- /data/presets/presets/highway/mini_roundabout.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "circle-stroked", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "highway": "mini_roundabout" 8 | }, 9 | "fields": [ 10 | "clock_direction" 11 | ], 12 | "name": "Mini-Roundabout" 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/construction.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "construction", 4 | "operator" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "landuse": "construction" 11 | }, 12 | "terms": [], 13 | "name": "Construction" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/garden.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "garden", 3 | "fields": [ 4 | "access_simple" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex", 9 | "area" 10 | ], 11 | "tags": { 12 | "leisure": "garden" 13 | }, 14 | "name": "Garden" 15 | } -------------------------------------------------------------------------------- /data/presets/presets/man_made/pipeline.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "pipeline-line", 3 | "fields": [ 4 | "location", 5 | "operator" 6 | ], 7 | "geometry": [ 8 | "line" 9 | ], 10 | "tags": { 11 | "man_made": "pipeline" 12 | }, 13 | "name": "Pipeline" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/survey_point.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "monument", 3 | "fields": [ 4 | "ref" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex" 9 | ], 10 | "tags": { 11 | "man_made": "survey_point" 12 | }, 13 | "name": "Survey Point" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/natural/beach.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "surface" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "area" 8 | ], 9 | "tags": { 10 | "natural": "beach" 11 | }, 12 | "terms": [ 13 | "shore" 14 | ], 15 | "name": "Beach" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/natural/wetland.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "wetland", 3 | "fields": [ 4 | "wetland" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "natural": "wetland" 12 | }, 13 | "terms": [], 14 | "name": "Wetland" 15 | } -------------------------------------------------------------------------------- /dist/traffico/string-maps/si-map.json: -------------------------------------------------------------------------------- 1 | {"information--information_border_si--si":"SLOVENIA"} -------------------------------------------------------------------------------- /data/presets/presets/barrier/bollard.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex", 9 | "line" 10 | ], 11 | "tags": { 12 | "barrier": "bollard" 13 | }, 14 | "name": "Bollard" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/barn.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "barn" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Barn" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/shed.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "shed" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Shed" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/resort.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "operator", 4 | "address", 5 | "opening_hours" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "leisure": "resort" 13 | }, 14 | "name": "Resort" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/stadium.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "pitch", 3 | "fields": [ 4 | "sport", 5 | "address" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "leisure": "stadium" 13 | }, 14 | "name": "Stadium" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/lighthouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "lighthouse", 3 | "fields": [ 4 | "building_area" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "man_made": "lighthouse" 12 | }, 13 | "name": "Lighthouse" 14 | } 15 | -------------------------------------------------------------------------------- /modules/util/bind_once.js: -------------------------------------------------------------------------------- 1 | export function utilBindOnce(target, type, listener, capture) { 2 | var typeOnce = type + '.once'; 3 | function one() { 4 | target.on(typeOnce, null); 5 | listener.apply(this, arguments); 6 | } 7 | target.on(typeOnce, one, capture); 8 | return this; 9 | } 10 | -------------------------------------------------------------------------------- /data/presets/fields/sport_racing.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "sport", 3 | "type": "combo", 4 | "label": "Sport", 5 | "options": [ 6 | "cycling", 7 | "dog_racing", 8 | "horse_racing", 9 | "karting", 10 | "motor", 11 | "motocross", 12 | "running" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/_power.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex", 5 | "line", 6 | "area" 7 | ], 8 | "tags": { 9 | "power": "*" 10 | }, 11 | "fields": [ 12 | "power" 13 | ], 14 | "searchable": false, 15 | "name": "Power" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/fence.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "fence", 3 | "fields": [ 4 | "fence_type", 5 | "height" 6 | ], 7 | "geometry": [ 8 | "line" 9 | ], 10 | "tags": { 11 | "barrier": "fence" 12 | }, 13 | "name": "Fence", 14 | "matchScore": 0.25 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/cabin.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "cabin" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Cabin" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/stable.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "stable" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Stable" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/vineyard.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "operator" 4 | ], 5 | "geometry": [ 6 | "area" 7 | ], 8 | "tags": { 9 | "landuse": "vineyard" 10 | }, 11 | "terms": [ 12 | "grape", 13 | "wine" 14 | ], 15 | "name": "Vineyard" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/tower.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "tower/type", 4 | "tower/construction", 5 | "height" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "man_made": "tower" 13 | }, 14 | "name": "Tower" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/boatyard.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "harbor", 3 | "fields":[ 4 | "operator" 5 | ], 6 | "geometry": [ 7 | "area", 8 | "vertex", 9 | "point" 10 | ], 11 | "tags": { 12 | "waterway": "boatyard" 13 | }, 14 | "name": "Boatyard" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/categories/water-line.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "line", 3 | "name": "Water Features", 4 | "icon": "category-water", 5 | "members": [ 6 | "waterway/river", 7 | "waterway/stream", 8 | "waterway/canal", 9 | "waterway/ditch", 10 | "waterway/drain" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/aerialway/summer/access.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "aerialway:summer:access", 3 | "type": "combo", 4 | "label": "Access (summer)", 5 | "strings": { 6 | "options": { 7 | "entry": "Entry", 8 | "exit": "Exit", 9 | "both": "Both" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/_highway.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "highway" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "line", 9 | "area" 10 | ], 11 | "tags": { 12 | "highway": "*" 13 | }, 14 | "searchable": false, 15 | "name": "Highway" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/_railway.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "railway" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "line", 9 | "area" 10 | ], 11 | "tags": { 12 | "railway": "*" 13 | }, 14 | "searchable": false, 15 | "name": "Railway" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/car_sharing.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "car", 3 | "fields": [ 4 | "operator", 5 | "capacity" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "amenity": "car_sharing" 13 | }, 14 | "name": "Car Sharing" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/drinking_water.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "drinking-water", 3 | "geometry": [ 4 | "point" 5 | ], 6 | "tags": { 7 | "amenity": "drinking_water" 8 | }, 9 | "terms": [ 10 | "fountain", 11 | "potable" 12 | ], 13 | "name": "Drinking Water" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/building/_bunker.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "address", 4 | "levels" 5 | ], 6 | "geometry": [ 7 | "area" 8 | ], 9 | "tags": { 10 | "building": "bunker" 11 | }, 12 | "matchScore": 0.5, 13 | "name": "Bunker", 14 | "searchable": false 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/_official.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | ], 4 | "geometry": [ 5 | "line" 6 | ], 7 | "tags": { 8 | "emergency": "official" 9 | }, 10 | "terms": [], 11 | "name": "Emergency Access Official", 12 | "searchable": false, 13 | "matchScore": 0.01 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/_private.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | ], 4 | "geometry": [ 5 | "line" 6 | ], 7 | "tags": { 8 | "emergency": "private" 9 | }, 10 | "terms": [], 11 | "name": "Emergency Access Private", 12 | "searchable": false, 13 | "matchScore": 0.01 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/historic/castle.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "castle", 3 | "fields": [ 4 | "castle_type", 5 | "building_area" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "historic": "castle" 13 | }, 14 | "name": "Castle" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/cemetery.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "cemetery", 3 | "fields": [ 4 | "religion", 5 | "denomination" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "landuse": "cemetery" 12 | }, 13 | "terms": [], 14 | "name": "Cemetery" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/power/substation.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "substation", 4 | "operator", 5 | "building" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "power": "substation" 13 | }, 14 | "name": "Substation" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/power.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "power" 8 | }, 9 | "name": "Power Route", 10 | "icon": "route-power", 11 | "fields": [ 12 | "ref", 13 | "operator" 14 | ] 15 | } -------------------------------------------------------------------------------- /data/presets/presets/type/route/road.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "road" 8 | }, 9 | "name": "Road Route", 10 | "icon": "route-road", 11 | "fields": [ 12 | "ref", 13 | "network_road" 14 | ] 15 | } -------------------------------------------------------------------------------- /modules/actions/add_vertex.js: -------------------------------------------------------------------------------- 1 | // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/AddNodeToWayAction.as 2 | export function actionAddVertex(wayId, nodeId, index) { 3 | return function(graph) { 4 | return graph.replace(graph.entity(wayId).addNode(nodeId, index)); 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /data/presets/fields/recycling_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "recycling_type", 3 | "default": "container", 4 | "type": "combo", 5 | "label": "Recycling Type", 6 | "strings": { 7 | "options": { 8 | "container": "Container", 9 | "centre": "Recycling Center" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/second_hand.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "second_hand", 3 | "type": "combo", 4 | "label": "Sells Used", 5 | "placeholder": "Yes, No, Only", 6 | "strings": { 7 | "options": { 8 | "yes": "Yes", 9 | "no": "No", 10 | "only": "Only" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/_waterway.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "waterway" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "line", 9 | "area" 10 | ], 11 | "tags": { 12 | "waterway": "*" 13 | }, 14 | "searchable": false, 15 | "name": "Waterway" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/advertising/billboard.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "parallel_direction", 4 | "lit" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex", 9 | "line" 10 | ], 11 | "tags": { 12 | "advertising": "billboard" 13 | }, 14 | "name": "Billboard" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/grave_yard.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "cemetery", 3 | "fields": [ 4 | "religion", 5 | "denomination" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "amenity": "grave_yard" 13 | }, 14 | "name": "Graveyard" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/parking_space.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "capacity" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "area" 9 | ], 10 | "terms": [], 11 | "tags": { 12 | "amenity": "parking_space" 13 | }, 14 | "name": "Parking Space" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/wall.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "barrier", 3 | "fields": [ 4 | "wall", 5 | "height" 6 | ], 7 | "geometry": [ 8 | "line", 9 | "area" 10 | ], 11 | "tags": { 12 | "barrier": "wall" 13 | }, 14 | "name": "Wall", 15 | "matchScore": 0.25 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/building/warehouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "warehouse", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "warehouse" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Warehouse" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/_designated.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | ], 4 | "geometry": [ 5 | "line" 6 | ], 7 | "tags": { 8 | "emergency": "designated" 9 | }, 10 | "terms": [], 11 | "name": "Emergency Access Designated", 12 | "searchable": false, 13 | "matchScore": 0.01 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/entrance.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "entrance-alt1", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "tags": { 7 | "entrance": "*" 8 | }, 9 | "fields": [ 10 | "entrance", 11 | "access_simple", 12 | "address" 13 | ], 14 | "name": "Entrance/Exit" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/highway/crossing.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "crossing", 4 | "kerb", 5 | "tactile_paving" 6 | ], 7 | "geometry": [ 8 | "vertex" 9 | ], 10 | "tags": { 11 | "highway": "crossing" 12 | }, 13 | "terms": [], 14 | "name": "Street Crossing" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/water_works.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "fields": [ 4 | "operator", 5 | "address" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "man_made": "water_works" 13 | }, 14 | "name": "Water Works" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/type/route.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route" 7 | }, 8 | "name": "Route", 9 | "icon": "route", 10 | "fields": [ 11 | "route", 12 | "ref", 13 | "operator", 14 | "network" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/fields/visibility.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "visibility", 3 | "type": "combo", 4 | "label": "Visibility", 5 | "strings": { 6 | "options": { 7 | "house": "Up to 5m (16ft)", 8 | "street": "5 to 20m (16 to 65ft)", 9 | "area": "Over 20m (65ft)" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/presets/aeroway/apron.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "airport", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "terms": [ 7 | "ramp" 8 | ], 9 | "fields": [ 10 | "ref", 11 | "surface" 12 | ], 13 | "tags": { 14 | "aeroway": "apron" 15 | }, 16 | "name": "Apron" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/bench.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "backrest" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex", 8 | "line" 9 | ], 10 | "terms": [ 11 | "seat" 12 | ], 13 | "tags": { 14 | "amenity": "bench" 15 | }, 16 | "name": "Bench" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/clock.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "support", 4 | "display", 5 | "visibility", 6 | "date" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "vertex" 11 | ], 12 | "tags": { 13 | "amenity": "clock" 14 | }, 15 | "name": "Clock" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/toll_booth.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access", 5 | "building_area" 6 | ], 7 | "geometry": [ 8 | "vertex", 9 | "area" 10 | ], 11 | "tags": { 12 | "barrier": "toll_booth" 13 | }, 14 | "name": "Toll Booth" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/apartments.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "commercial", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "apartments" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Apartments" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/greenhouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "greenhouse" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Greenhouse" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/hospital.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "hospital" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Hospital Building" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/emergency/_destination.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | ], 4 | "geometry": [ 5 | "line" 6 | ], 7 | "tags": { 8 | "emergency": "destination" 9 | }, 10 | "terms": [], 11 | "name": "Emergency Access Destination", 12 | "searchable": false, 13 | "matchScore": 0.01 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/nature_reserve.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "park", 3 | "geometry": [ 4 | "point", 5 | "area" 6 | ], 7 | "tags": { 8 | "leisure": "nature_reserve" 9 | }, 10 | "terms": [ 11 | "protected", 12 | "wildlife" 13 | ], 14 | "name": "Nature Reserve" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/playground.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "playground", 3 | "geometry": [ 4 | "point", 5 | "area" 6 | ], 7 | "terms": [ 8 | "jungle gym", 9 | "play area" 10 | ], 11 | "tags": { 12 | "leisure": "playground" 13 | }, 14 | "name": "Playground" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/natural/cliff.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "triangle", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "line", 7 | "area" 8 | ], 9 | "tags": { 10 | "natural": "cliff" 11 | }, 12 | "terms": [ 13 | "escarpment" 14 | ], 15 | "name": "Cliff" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/type/_multipolygon.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "area", 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "multipolygon" 8 | }, 9 | "removeTags": {}, 10 | "name": "Multipolygon", 11 | "icon": "multipolygon", 12 | "searchable": false, 13 | "matchScore": 0.1 14 | } -------------------------------------------------------------------------------- /data/presets/presets/type/route/pipeline.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "pipeline" 8 | }, 9 | "name": "Pipeline Route", 10 | "icon": "route-pipeline", 11 | "fields": [ 12 | "ref", 13 | "operator" 14 | ] 15 | } -------------------------------------------------------------------------------- /modules/behavior/edit.js: -------------------------------------------------------------------------------- 1 | export function behaviorEdit(context) { 2 | 3 | function edit() { 4 | context.map() 5 | .minzoom(context.minEditableZoom()); 6 | } 7 | 8 | 9 | edit.off = function() { 10 | context.map() 11 | .minzoom(0); 12 | }; 13 | 14 | 15 | return edit; 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/fields/leaf_type_singular.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "leaf_type", 3 | "type": "combo", 4 | "label": "Leaf Type", 5 | "strings": { 6 | "options": { 7 | "broadleaved": "Broadleaved", 8 | "needleleaved": "Needleleaved", 9 | "leafless": "Leafless" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/service_rail.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "service", 3 | "type": "combo", 4 | "label": "Service Type", 5 | "strings": { 6 | "options": { 7 | "spur": "Spur", 8 | "yard": "Yard", 9 | "siding": "Siding", 10 | "crossover": "Crossover" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/building/chapel.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "place-of-worship", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "chapel" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Chapel Building" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/church.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "place-of-worship", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "church" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Church Building" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/natural/water/lake.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "geometry": [ 4 | "area" 5 | ], 6 | "tags": { 7 | "natural": "water", 8 | "water": "lake" 9 | }, 10 | "terms": [ 11 | "lakelet", 12 | "loch", 13 | "mere" 14 | ], 15 | "name": "Lake" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/railway/disused.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "railway-disused", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "railway": "disused" 8 | }, 9 | "fields": [ 10 | "structure", 11 | "service_rail" 12 | ], 13 | "terms": [], 14 | "name": "Disused Railway" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/traffic_calming/island.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "circle", 3 | "geometry": [ 4 | "vertex" 5 | ], 6 | "terms": [ 7 | "circle", 8 | "roundabout", 9 | "slow" 10 | ], 11 | "tags": { 12 | "traffic_calming": "island" 13 | }, 14 | "name": "Traffic Island" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/bus.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "bus" 8 | }, 9 | "name": "Bus Route", 10 | "icon": "route-bus", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network" 15 | ] 16 | } -------------------------------------------------------------------------------- /test/spec/actions/move_node.js: -------------------------------------------------------------------------------- 1 | describe('iD.actionMoveNode', function () { 2 | it('changes a node\'s location', function () { 3 | var node = iD.Node(), 4 | loc = [2, 3], 5 | graph = iD.actionMoveNode(node.id, loc)(iD.Graph([node])); 6 | expect(graph.entity(node.id).loc).to.eql(loc); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /data/presets/fields/surveillance/type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "surveillance:type", 3 | "type": "combo", 4 | "label": "Surveillance Type", 5 | "strings": { 6 | "options": { 7 | "camera": "Camera", 8 | "guard": "Guard", 9 | "ALPR": "Automatic License Plate Reader" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /data/presets/fields/takeaway.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "takeaway", 3 | "type": "combo", 4 | "label": "Takeaway", 5 | "placeholder": "Yes, No, Takeaway Only...", 6 | "strings": { 7 | "options": { 8 | "yes": "Yes", 9 | "no": "No", 10 | "only": "Takeaway Only" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/aerialway/magic_carpet.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "line" 4 | ], 5 | "fields": [ 6 | "aerialway/capacity", 7 | "aerialway/duration", 8 | "aerialway/heating" 9 | ], 10 | "tags": { 11 | "aerialway": "magic_carpet" 12 | }, 13 | "name": "Magic Carpet Lift" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/embassy.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "embassy", 3 | "fields": [ 4 | "country", 5 | "address", 6 | "building_area" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "amenity": "embassy" 14 | }, 15 | "name": "Embassy" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/parking_entrance.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "entrance-alt1", 3 | "fields": [ 4 | "access_simple", 5 | "ref" 6 | ], 7 | "geometry": [ 8 | "vertex" 9 | ], 10 | "tags": { 11 | "amenity": "parking_entrance" 12 | }, 13 | "name": "Parking Garage Entrance/Exit" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/barrier/border_control.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "fields": [ 4 | "access", 5 | "building_area" 6 | ], 7 | "geometry": [ 8 | "vertex", 9 | "area" 10 | ], 11 | "tags": { 12 | "barrier": "border_control" 13 | }, 14 | "name": "Border Control" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/industrial.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "industry", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "industrial" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Industrial Building" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/residential.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "residential" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Residential Building" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/public_transport/stop_position.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "bus", 3 | "fields": [ 4 | "ref", 5 | "network", 6 | "operator" 7 | ], 8 | "geometry": [ 9 | "vertex" 10 | ], 11 | "tags": { 12 | "public_transport": "stop_position" 13 | }, 14 | "name": "Stop Position" 15 | } -------------------------------------------------------------------------------- /data/presets/presets/shop/_vacant.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "address", 5 | "building_area" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "shop": "vacant" 13 | }, 14 | "name": "Vacant Shop", 15 | "searchable": false 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/type/boundary/administrative.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Administrative Boundary", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "boundary", 8 | "boundary": "administrative" 9 | }, 10 | "fields": [ 11 | "admin_level" 12 | ], 13 | "icon": "boundary" 14 | } -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/no_u_turn.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "No U-turn", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "no_u_turn" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-no-u-turn" 14 | } 15 | -------------------------------------------------------------------------------- /modules/validations/index.js: -------------------------------------------------------------------------------- 1 | export { validationDeprecatedTag } from './deprecated_tag'; 2 | export { validationDisconnectedHighway } from './disconnected_highway'; 3 | export { validationManyDeletions } from './many_deletions'; 4 | export { validationMissingTag } from './missing_tag'; 5 | export { validationTagSuggestsArea } from './tag_suggests_area'; 6 | -------------------------------------------------------------------------------- /test/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "mocha": true 5 | }, 6 | "globals": { 7 | "_": false, 8 | "expect": true, 9 | "happen": false, 10 | "iD": false, 11 | "sinon": false 12 | }, 13 | "rules": { 14 | "no-unused-expressions": "off" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/categories/rail.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "line", 3 | "name": "Rail Features", 4 | "icon": "category-rail", 5 | "members": [ 6 | "railway/rail", 7 | "railway/subway", 8 | "railway/tram", 9 | "railway/monorail", 10 | "railway/disused", 11 | "railway/abandoned" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/car_wash.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "car", 3 | "fields": [ 4 | "address", 5 | "building_area", 6 | "opening_hours" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "amenity": "car_wash" 14 | }, 15 | "name": "Car Wash" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/grit_bin.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "access_simple" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "vertex" 8 | ], 9 | "tags": { 10 | "amenity": "grit_bin" 11 | }, 12 | "terms": [ 13 | "salt", 14 | "sand" 15 | ], 16 | "name": "Grit Bin" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/building/cathedral.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "place-of-worship", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "cathedral" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Cathedral Building" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/hotel.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels", 6 | "smoking" 7 | ], 8 | "geometry": [ 9 | "area" 10 | ], 11 | "tags": { 12 | "building": "hotel" 13 | }, 14 | "matchScore": 0.5, 15 | "name": "Hotel Building" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/building/static_caravan.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "static_caravan" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Static Mobile Home" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/highway/services.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "vertex", 5 | "area" 6 | ], 7 | "tags": { 8 | "highway": "services" 9 | }, 10 | "terms": [ 11 | "services", 12 | "travel plaza", 13 | "service station" 14 | ], 15 | "name": "Service Area" 16 | } -------------------------------------------------------------------------------- /data/presets/presets/landuse/forest.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "park-alt1", 3 | "fields": [ 4 | "leaf_type", 5 | "leaf_cycle" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "landuse": "forest" 12 | }, 13 | "terms": [ 14 | "tree" 15 | ], 16 | "name": "Forest" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/orchard.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "park-alt1", 3 | "fields": [ 4 | "operator", 5 | "trees" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "landuse": "orchard" 12 | }, 13 | "terms": [ 14 | "fruit" 15 | ], 16 | "name": "Orchard" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/natural/tree_row.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "park", 3 | "fields": [ 4 | "leaf_type", 5 | "leaf_cycle", 6 | "denotation" 7 | ], 8 | "geometry": [ 9 | "line" 10 | ], 11 | "tags": { 12 | "natural": "tree_row" 13 | }, 14 | "terms": [], 15 | "name": "Tree row" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/railway/abandoned.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "railway-abandoned", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "railway": "abandoned" 8 | }, 9 | "fields": [ 10 | "structure", 11 | "service_rail" 12 | ], 13 | "terms": [], 14 | "name": "Abandoned Railway" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/ferry.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "ferry" 8 | }, 9 | "name": "Ferry Route", 10 | "icon": "route-ferry", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network" 15 | ] 16 | } -------------------------------------------------------------------------------- /data/presets/presets/type/route/foot.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "foot" 8 | }, 9 | "name": "Foot Route", 10 | "icon": "route-foot", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network_foot" 15 | ] 16 | } -------------------------------------------------------------------------------- /data/presets/presets/type/route/tram.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "tram" 8 | }, 9 | "name": "Tram Route", 10 | "icon": "route-tram", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/waterway/waterfall.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "fields": [ 4 | "height", 5 | "width" 6 | ], 7 | "geometry": [ 8 | "vertex" 9 | ], 10 | "terms": [ 11 | "fall" 12 | ], 13 | "tags": { 14 | "waterway": "waterfall" 15 | }, 16 | "name": "Waterfall" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/_aeroway.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "airport", 3 | "fields": [ 4 | "aeroway" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex", 9 | "line", 10 | "area" 11 | ], 12 | "tags": { 13 | "aeroway": "*" 14 | }, 15 | "searchable": false, 16 | "name": "Aeroway" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/barrier.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "roadblock", 3 | "geometry": [ 4 | "point", 5 | "vertex", 6 | "line", 7 | "area" 8 | ], 9 | "tags": { 10 | "barrier": "*" 11 | }, 12 | "fields": [ 13 | "barrier" 14 | ], 15 | "name": "Barrier", 16 | "matchScore": 0.4 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/building/construction.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels" 6 | ], 7 | "geometry": [ 8 | "area" 9 | ], 10 | "tags": { 11 | "building": "construction" 12 | }, 13 | "matchScore": 0.5, 14 | "name": "Building Under Construction" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/building/dormitory.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels", 6 | "smoking" 7 | ], 8 | "geometry": [ 9 | "area" 10 | ], 11 | "tags": { 12 | "building": "dormitory" 13 | }, 14 | "matchScore": 0.5, 15 | "name": "Dormitory" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/building/public.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels", 6 | "smoking" 7 | ], 8 | "geometry": [ 9 | "area" 10 | ], 11 | "tags": { 12 | "building": "public" 13 | }, 14 | "matchScore": 0.5, 15 | "name": "Public Building" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/building/retail.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "address", 5 | "levels", 6 | "smoking" 7 | ], 8 | "geometry": [ 9 | "area" 10 | ], 11 | "tags": { 12 | "building": "retail" 13 | }, 14 | "matchScore": 0.5, 15 | "name": "Retail Building" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/craft/clockmaker.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "operator", 4 | "address", 5 | "building_area", 6 | "opening_hours" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "craft": "clockmaker" 14 | }, 15 | "name": "Clockmaker" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/craft/watchmaker.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "operator", 4 | "address", 5 | "building_area", 6 | "opening_hours" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "craft": "watchmaker" 14 | }, 15 | "name": "Watchmaker" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/man_made/observation.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "point", 4 | "area" 5 | ], 6 | "terms": [ 7 | "lookout tower", 8 | "fire tower" 9 | ], 10 | "tags": { 11 | "man_made": "tower", 12 | "tower:type": "observation" 13 | }, 14 | "name": "Observation Tower" 15 | } 16 | -------------------------------------------------------------------------------- /data/presets/presets/power/_sub_station.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "substation", 4 | "operator", 5 | "building" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "power": "sub_station" 13 | }, 14 | "name": "Substation", 15 | "searchable": false 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/tourism/attraction.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "monument", 3 | "fields": [ 4 | "operator", 5 | "address" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "vertex", 10 | "area" 11 | ], 12 | "tags": { 13 | "tourism": "attraction" 14 | }, 15 | "name": "Tourist Attraction" 16 | } -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/no_left_turn.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "No Left Turn", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "no_left_turn" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-no-left-turn" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/train.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "train" 8 | }, 9 | "name": "Train Route", 10 | "icon": "route-train", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/type/route_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route_master" 7 | }, 8 | "name": "Route Master", 9 | "icon": "route-master", 10 | "fields": [ 11 | "route_master", 12 | "ref", 13 | "operator", 14 | "network" 15 | ] 16 | } -------------------------------------------------------------------------------- /data/presets/presets/amenity/bbq.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "bbq", 3 | "fields": [ 4 | "covered", 5 | "fuel" 6 | ], 7 | "geometry": [ 8 | "point" 9 | ], 10 | "terms": [ 11 | "bbq", 12 | "grill" 13 | ], 14 | "tags": { 15 | "amenity": "bbq" 16 | }, 17 | "name": "Barbecue/Grill" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/courthouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "town-hall", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "amenity": "courthouse" 14 | }, 15 | "name": "Courthouse" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/amenity/marketplace.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "operator", 4 | "address", 5 | "building_area", 6 | "opening_hours" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "amenity": "marketplace" 14 | }, 15 | "name": "Marketplace" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/highway/give_way.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "parallel_direction" 4 | ], 5 | "geometry": [ 6 | "vertex" 7 | ], 8 | "tags": { 9 | "highway": "give_way" 10 | }, 11 | "terms": [ 12 | "give way", 13 | "yield", 14 | "sign" 15 | ], 16 | "name": "Yield Sign" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/landuse/_farm.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "farm", 3 | "fields": [ 4 | "operator", 5 | "crop" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "landuse": "farm" 13 | }, 14 | "terms": [], 15 | "name": "Farmland", 16 | "searchable": false 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/bird_hide.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "building_area" 4 | ], 5 | "geometry": [ 6 | "point", 7 | "area" 8 | ], 9 | "tags": { 10 | "leisure": "bird_hide" 11 | }, 12 | "terms": [ 13 | "machan", 14 | "ornithology" 15 | ], 16 | "name": "Bird Hide" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/pitch/baseball.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "baseball", 3 | "fields": [ 4 | "lit" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "leisure": "pitch", 12 | "sport": "baseball" 13 | }, 14 | "terms": [], 15 | "name": "Baseball Diamond" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/no_right_turn.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "No Right Turn", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "no_right_turn" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-no-right-turn" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/hiking.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "hiking" 8 | }, 9 | "name": "Hiking Route", 10 | "icon": "route-foot", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network_foot" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/horse.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "horse" 8 | }, 9 | "name": "Riding Route", 10 | "icon": "route-horse", 11 | "fields": [ 12 | "ref", 13 | "operator", 14 | "network_horse" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/categories/building.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "area", 3 | "name": "Building Features", 4 | "icon": "building", 5 | "members": [ 6 | "building", 7 | "building/house", 8 | "building/apartments", 9 | "building/commercial", 10 | "building/industrial", 11 | "building/residential" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/fields/fire_hydrant/type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fire_hydrant:type", 3 | "type": "combo", 4 | "label": "Type", 5 | "strings": { 6 | "options": { 7 | "pillar": "Pillar/Aboveground", 8 | "underground": "Underground", 9 | "wall": "Wall", 10 | "pond": "Pond" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/fields/leaf_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "leaf_type", 3 | "type": "combo", 4 | "label": "Leaf Type", 5 | "strings": { 6 | "options": { 7 | "broadleaved": "Broadleaved", 8 | "needleleaved": "Needleleaved", 9 | "mixed": "Mixed", 10 | "leafless": "Leafless" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/fields/toilets/disposal.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "toilets:disposal", 3 | "type": "combo", 4 | "label": "Disposal", 5 | "strings": { 6 | "options": { 7 | "flush": "Flush", 8 | "pitlatrine": "Pit/Latrine", 9 | "chemical": "Chemical", 10 | "bucket": "Bucket" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/highway/stop.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "stop", 4 | "parallel_direction" 5 | ], 6 | "geometry": [ 7 | "vertex" 8 | ], 9 | "tags": { 10 | "highway": "stop" 11 | }, 12 | "terms": [ 13 | "stop", 14 | "halt", 15 | "sign" 16 | ], 17 | "name": "Stop Sign" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/natural/wood.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "park-alt1", 3 | "fields": [ 4 | "leaf_type", 5 | "leaf_cycle" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "natural": "wood" 13 | }, 14 | "terms": [ 15 | "tree" 16 | ], 17 | "name": "Wood" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/railway/monorail.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "railway-monorail", 3 | "geometry": [ 4 | "line" 5 | ], 6 | "tags": { 7 | "railway": "monorail" 8 | }, 9 | "fields": [ 10 | "structure", 11 | "electrified", 12 | "service_rail" 13 | ], 14 | "terms": [], 15 | "name": "Monorail" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/shop/tea.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "teahouse", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "tea" 15 | }, 16 | "name": "Tea Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/toys.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "toys" 15 | }, 16 | "name": "Toy Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/tourism/theme_park.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "amusement-park", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "opening_hours" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "tourism": "theme_park" 14 | }, 15 | "name": "Theme Park" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/no_straight_on.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "No Straight On", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "no_straight_on" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-no-straight-on" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/only_left_turn.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Left Turn Only", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "only_left_turn" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-only-left-turn" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/only_right_turn.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Right Turn Only", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "only_right_turn" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-only-right-turn" 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/type/restriction/only_straight_on.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "No Turns", 3 | "geometry": [ 4 | "relation" 5 | ], 6 | "tags": { 7 | "type": "restriction", 8 | "restriction": "only_straight_on" 9 | }, 10 | "fields": [ 11 | "except" 12 | ], 13 | "icon": "restriction-only-straight-on" 14 | } 15 | -------------------------------------------------------------------------------- /test/spec/actions/change_tags.js: -------------------------------------------------------------------------------- 1 | describe('iD.actionChangeTags', function () { 2 | it('changes an entity\'s tags', function () { 3 | var entity = iD.Entity(), 4 | tags = {foo: 'bar'}, 5 | graph = iD.actionChangeTags(entity.id, tags)(iD.Graph([entity])); 6 | expect(graph.entity(entity.id).tags).to.eql(tags); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /data/presets/fields/fire_hydrant/position.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "fire_hydrant:position", 3 | "type": "combo", 4 | "label": "Position", 5 | "strings": { 6 | "options": { 7 | "lane": "Lane", 8 | "parking_lot": "Parking Lot", 9 | "sidewalk": "Sidewalk", 10 | "green": "Green" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/presets/building/commercial.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "commercial", 3 | "fields": [ 4 | "address", 5 | "levels", 6 | "smoking" 7 | ], 8 | "geometry": [ 9 | "area" 10 | ], 11 | "tags": { 12 | "building": "commercial" 13 | }, 14 | "matchScore": 0.5, 15 | "name": "Commercial Building" 16 | } 17 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/pitch/bowls.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "pitch", 3 | "fields": [ 4 | "surface", 5 | "lit" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "leisure": "pitch", 13 | "sport": "bowls" 14 | }, 15 | "terms": [], 16 | "name": "Bowling Green" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/bakery.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "bakery", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "bakery" 15 | }, 16 | "name": "Bakery" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/boutique.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "boutique" 15 | }, 16 | "name": "Boutique" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/cheese.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "cheese" 15 | }, 16 | "name": "Cheese Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/coffee.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "coffee" 15 | }, 16 | "name": "Coffee Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/kiosk.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "kiosk" 15 | }, 16 | "name": "News Kiosk" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/laundry.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "laundry", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "laundry" 15 | }, 16 | "name": "Laundry" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/paint.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "water", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "paint" 15 | }, 16 | "name": "Paint Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/shoes.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "shoes" 15 | }, 16 | "name": "Shoe Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/tyres.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "tyres" 15 | }, 16 | "name": "Tire Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/traffic_calming/choker.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": [ 3 | "parallel_direction" 4 | ], 5 | "geometry": [ 6 | "vertex", 7 | "line" 8 | ], 9 | "terms": [ 10 | "speed", 11 | "slow" 12 | ], 13 | "tags": { 14 | "traffic_calming": "choker" 15 | }, 16 | "name": "Traffic Choker" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/type/route/bicycle.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": [ 3 | "relation" 4 | ], 5 | "tags": { 6 | "type": "route", 7 | "route": "bicycle" 8 | }, 9 | "name": "Cycle Route", 10 | "icon": "route-bicycle", 11 | "fields": [ 12 | "ref", 13 | "network_bicycle", 14 | "cycle_network" 15 | ] 16 | } -------------------------------------------------------------------------------- /data/presets/categories/golf.json: -------------------------------------------------------------------------------- 1 | { 2 | "geometry": "area", 3 | "name": "Golf Features", 4 | "icon": "golf", 5 | "members": [ 6 | "golf/fairway", 7 | "golf/green", 8 | "golf/lateral_water_hazard_area", 9 | "golf/rough", 10 | "golf/bunker", 11 | "golf/tee", 12 | "golf/water_hazard_area" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/camp_site/camp_pitch.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "campsite", 3 | "fields": [ 4 | "ref" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "terms": [ 11 | "tent", 12 | "rv" 13 | ], 14 | "tags": { 15 | "camp_site": "camp_pitch" 16 | }, 17 | "name": "Camp Pitch" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/craft/beekeeper.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "farm", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "craft": "beekeeper" 15 | }, 16 | "name": "Beekeeper" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/craft/tiler.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "marker-stroked", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "craft": "tiler" 15 | }, 16 | "name": "Tiler" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/craft/winery.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "alcohol-shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "craft": "winery" 15 | }, 16 | "name": "Winery" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/leisure/pitch/soccer.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "soccer", 3 | "fields": [ 4 | "surface", 5 | "lit" 6 | ], 7 | "geometry": [ 8 | "point", 9 | "area" 10 | ], 11 | "tags": { 12 | "leisure": "pitch", 13 | "sport": "soccer" 14 | }, 15 | "terms": [], 16 | "name": "Soccer Field" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/natural/volcano.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "volcano", 3 | "fields": [ 4 | "elevation" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "vertex" 9 | ], 10 | "tags": { 11 | "natural": "volcano" 12 | }, 13 | "terms": [ 14 | "mountain", 15 | "crater" 16 | ], 17 | "name": "Volcano" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/place/suburb.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "triangle-stroked", 3 | "fields": [ 4 | "population" 5 | ], 6 | "geometry": [ 7 | "point", 8 | "area" 9 | ], 10 | "tags": { 11 | "place": "suburb" 12 | }, 13 | "terms": [ 14 | "Boro", 15 | "Quarter" 16 | ], 17 | "name": "Borough" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/shop/antiques.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "antiques" 15 | }, 16 | "name": "Antiques Shop" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/candles.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "candles" 15 | }, 16 | "name": "Candle Shop" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/copyshop.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "copyshop" 15 | }, 16 | "name": "Copy Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/fashion.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "fashion" 15 | }, 16 | "name": "Fashion Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/herbalist.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "herbalist" 15 | }, 16 | "name": "Herbalist" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/leather.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "leather" 15 | }, 16 | "name": "Leather Store" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/lottery.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "lottery" 15 | }, 16 | "name": "Lottery Shop" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/massage.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "massage" 15 | }, 16 | "name": "Massage Shop" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/pawnbroker.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "pawnbroker" 15 | }, 16 | "name": "Pawn Shop" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/tattoo.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "tattoo" 15 | }, 16 | "name": "Tattoo Parlor" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/ticket.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "ticket" 15 | }, 16 | "name": "Ticket Seller" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/tobacco.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "tobacco" 15 | }, 16 | "name": "Tobacco Shop" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/shop/wine.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "alcohol-shop", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "shop": "wine" 15 | }, 16 | "name": "Wine Shop" 17 | } 18 | -------------------------------------------------------------------------------- /modules/svg/osm.js: -------------------------------------------------------------------------------- 1 | export function svgOsm() { 2 | return function drawOsm(selection) { 3 | var layers = selection.selectAll('.layer-osm') 4 | .data(['areas', 'lines', 'hit', 'halo', 'label']); 5 | 6 | layers.enter() 7 | .append('g') 8 | .attr('class', function(d) { return 'layer-osm layer-' + d; }); 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /data/presets/fields/blood_components.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "blood:", 3 | "type": "multiCombo", 4 | "label": "Blood Components", 5 | "strings": { 6 | "options": { 7 | "whole": "whole blood", 8 | "plasma": "plasma", 9 | "platelets": "platelets", 10 | "stemcells": "stem cell samples" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /data/presets/fields/internet_access.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "internet_access", 3 | "type": "combo", 4 | "label": "Internet Access", 5 | "strings": { 6 | "options": { 7 | "yes": "Yes", 8 | "no": "No", 9 | "wlan": "Wifi", 10 | "wired": "Wired", 11 | "terminal": "Terminal" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /data/presets/presets/building.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "building", 3 | "fields": [ 4 | "building", 5 | "levels", 6 | "address" 7 | ], 8 | "geometry": [ 9 | "point", 10 | "area" 11 | ], 12 | "tags": { 13 | "building": "*" 14 | }, 15 | "matchScore": 0.6, 16 | "terms": [], 17 | "name": "Building" 18 | } 19 | -------------------------------------------------------------------------------- /data/presets/presets/craft/blacksmith.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "farm", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "craft": "blacksmith" 15 | }, 16 | "name": "Blacksmith" 17 | } 18 | -------------------------------------------------------------------------------- /data/presets/presets/craft/painter.json: -------------------------------------------------------------------------------- 1 | { 2 | "icon": "art-gallery", 3 | "fields": [ 4 | "operator", 5 | "address", 6 | "building_area", 7 | "opening_hours" 8 | ], 9 | "geometry": [ 10 | "point", 11 | "area" 12 | ], 13 | "tags": { 14 | "craft": "painter" 15 | }, 16 | "name": "Painter" 17 | } 18 | --------------------------------------------------------------------------------