1 export default function (map) {
3 content = $("#sidebar_content");
5 content.on("turbo:before-frame-render", "turbo-frame", function () {
6 $(this).find(".numbered_pagination").trigger("numbered_pagination:disable");
9 content.on("turbo:frame-render", "turbo-frame", function () {
10 $(this).find(".numbered_pagination").trigger("numbered_pagination:enable");
13 page.load = function (path) {
14 OSM.loadSidebarContent(path)
18 page.init = function () {
19 const changesetData = content.find("[data-changeset]").data("changeset");
20 changesetData.type = "changeset";
22 const hashParams = OSM.parseHash();
24 map.addObject(changesetData, function (bounds) {
25 if (!hashParams.center && bounds.isValid()) {
26 OSM.router.withoutMoveListener(function () {
27 map.fitBounds(bounds);
31 $(".numbered_pagination").trigger("numbered_pagination:enable");
34 function updateChangeset(method, url, include_data) {
35 const data = new URLSearchParams();
37 content.find("#comment-error").prop("hidden", true);
38 content.find("button[data-method][data-url]").prop("disabled", true);
41 data.set("text", content.find("textarea").val());
46 headers: { ...OSM.oauth },
50 if (response.ok) return response;
51 return response.text().then(text => {
52 throw new Error(text);
55 .then(() => OSM.loadSidebarContent(location.pathname))
58 content.find("button[data-method][data-url]").prop("disabled", false);
59 content.find("#comment-error")
61 .prop("hidden", false)
62 .get(0).scrollIntoView({ block: "nearest" });
66 function initialize() {
67 content.find("button[data-method][data-url]").on("click", function (e) {
69 const data = $(e.target).data();
70 const include_data = e.target.name === "comment";
71 updateChangeset(data.method, data.url, include_data);
74 content.find("textarea").on("input", function (e) {
75 const form = e.target.form,
76 disabled = $(e.target).val() === "";
77 form.comment.disabled = disabled;
80 content.find("textarea").val("").trigger("input");
83 page.unload = function () {
85 $(".numbered_pagination").trigger("numbered_pagination:disable");