1 export default function (map) {
2 const content = $("#sidebar_content");
4 content.on("turbo:before-frame-render", "turbo-frame", function () {
5 $(this).find(".numbered_pagination").trigger("numbered_pagination:disable");
8 content.on("turbo:frame-render", "turbo-frame", function () {
9 $(this).find(".numbered_pagination").trigger("numbered_pagination:enable");
14 OSM.loadSidebarContent(path)
19 const changesetData = content.find("[data-changeset]").data("changeset");
20 changesetData.type = "changeset";
22 const hashParams = OSM.parseHash();
23 content.find("button[data-method][data-url]").on("click", function (e) {
25 const { method, url } = $(e.target).data();
26 const data = new URLSearchParams();
28 content.find("#comment-error").prop("hidden", true);
29 content.find("button[data-method][data-url]").prop("disabled", true);
31 if (e.target.name === "comment") {
32 data.set("text", content.find("textarea").val());
37 headers: { ...OSM.oauth },
41 if (response.ok) return response;
42 return response.text().then(text => {
43 throw new Error(text);
46 .then(() => OSM.loadSidebarContent(location.pathname))
49 content.find("button[data-method][data-url]").prop("disabled", false);
50 content.find("#comment-error")
52 .prop("hidden", false)
53 .get(0).scrollIntoView({ block: "nearest" });
57 content.find("textarea").on("input", function (e) {
58 const form = e.target.form,
59 disabled = $(e.target).val() === "";
60 form.comment.disabled = disabled;
63 content.find("textarea").val("").trigger("input");
64 map.addObject(changesetData, function (bounds) {
65 if (!hashParams.center && bounds.isValid()) {
66 OSM.router.withoutMoveListener(function () {
67 map.fitBounds(bounds);
71 $(".numbered_pagination").trigger("numbered_pagination:enable");
76 $(".numbered_pagination").trigger("numbered_pagination:disable");