#1351 made `styleStore` initialization asynchronous in
`componentDidMount`. `setStyle` currently treats `toolbar:link`
appearing as the signal that loading is complete, but if the style
network request (`empty-style.json` from jsdelivr) takes over ~1s, the
`toolbar:link` can appear while `styleStore` is still null (because the
request has not finished). Subsequent `saveStyle` calls in tests then
silently do nothing, causing test failures (3 in #2157, and often 20+ on
my machine).
Changes are:
1. Mock the default empty style to avoid slow network E2E failures.
2. Also cap Playwright workers at 4 to avoid overloading Chromium on
high-core machines.
Fixes#2158.
## Launch Checklist
<!-- Thanks for the PR! Feel free to add or remove items from the
checklist. -->
- [x] Briefly describe the changes in this PR.
- [x] Link to related issues.
- [ ] ~~Include before/after visuals or gifs if this PR includes visual
changes.~~
- [ ] ~~Write tests for all new functionality.~~
- [ ] ~~Add an entry to `CHANGELOG.md` under the `## main` section.~~
(only minor test infra fix)
Co-authored-by: liuly <me@liuly.moe>
Co-authored-by: Harel M <harel.mazor@gmail.com>
Bumps [i18next-cli](https://github.com/i18next/i18next-cli) from 1.73.1
to 1.73.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md">i18next-cli's
changelog</a>.</em></p>
<blockquote>
<h2>1.73.2</h2>
<ul>
<li>fix(deps): <code>react</code> is no longer a runtime dependency; it
only lives in <code>devDependencies</code> for the
type import. The CLI only needs <code>react-i18next</code> at runtime,
which resolves React from the
consuming project. Previously the <code>^19.2.8</code> floor could not
dedupe against a project pinning an
older React patch (Expo SDK 57 pins <code>react@19.2.3</code>) and
nested a second copy under
<code>node_modules/i18next-cli</code>, which Expo Doctor flagged as a
duplicate. Now a single React copy is
used. Fixes <a
href="https://redirect.github.com/i18next/i18next-cli/issues/292">#292</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next-cli/commit/c2115949bbb887bfbb6cf7191e4de2abf910ef8b"><code>c211594</code></a>
1.73.2</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/d2daa22212ce77afdc3834603208ed20cdc05db7"><code>d2daa22</code></a>
fix(deps): move react to devDependencies so it no longer nests a second
copy ...</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next-cli/compare/v1.73.1...v1.73.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Launch Checklist
- [x] Briefly describe the changes in this PR.
- [x] Link to related issues.
- [ ] Include before/after visuals or gifs if this PR includes visual
changes. — not applicable, nothing visual changes.
- [x] Write tests for all new functionality.
- [x] Add an entry to `CHANGELOG.md` under the `## main` section.
### What changed
Keyboard shortcuts went dead as soon as the map had focus.
The global `keyup` handler in `App.tsx` gated shortcuts on
`document.activeElement === document.body`. That reads like "the user is
not
typing", but it actually asks "is nothing focused at all". Clicking the
map makes
`.maplibregl-canvas` the active element, so every shortcut stopped
working until the
map was blurred.
The `m` shortcut demonstrates the problem nicely: its entire job is to
focus that
canvas, so pressing `m` silently disabled all shortcuts until `Esc`.
That path is
covered by an existing test (`'m' should focus map`), which is why the
regression
was easy to miss.
### How
`isTextEntryElement()` now answers the question the guard was reaching
for, so
shortcuts are suppressed only for text entry targets:
`input`, `textarea`, `select`, and `contenteditable` — the last one
covering the
CodeMirror editor, which is a `contenteditable` `.cm-content`.
The check stays independent of either renderer's DOM. MapLibre's
`.maplibregl-canvas` and the OpenLayers viewport live in different
structures, so an
allow-list of canvas class names would have fixed one renderer and left
the other
broken.
### Behaviour change
Single-letter shortcuts now also fire while focus is on a button or a
panel, where
previously they did not. That is inherent to making the map case work —
the old
predicate simply excluded everything that was not `document.body`. Per
@HarelM, this
can be reverted if anyone complains.
### Tests
`e2e/keyboard.spec.ts` gains a `while the map has focus` block. Its
`beforeEach`
focuses the canvas through the `m` shortcut and asserts the canvas
really is focused,
then two independent tests check that `!` and `s` still open their
modals.
Verified the new tests fail without the fix:
```
Error: expect(locator).toBeVisible() failed
Locator: locator('[data-wd-key="modal:debug"]').first()
Expected: visible
Error: element(s) not found
```
and pass with it.
Local results:
| Check | Result |
|---|---|
| `npm run lint` | clean |
| `npx vitest run` | 9 files, 50 tests passed |
| `npx vite build --mode=production` | clean |
| `npx playwright test` | 170 passed, 3 failed |
The 3 failures — `modals › open › upload via drag and drop`,
`modals › global state › remove variable` and `modals › global state ›
edit variable key`
— also fail on unmodified `main`, so they are pre-existing and unrelated
to this
change.
Fixes#940
## Launch Checklist
<!-- Thanks for the PR! Feel free to add or remove items from the
checklist. -->
When a fixed paint value is converted to a zoom function, Maputnik
creates exactly two stops.
<img width="362" height="226" alt="image"
src="https://github.com/user-attachments/assets/209aebbf-7bb3-4422-b0c7-1019e20a9ddb"
/>
Deleting either one of those two stops leaves a single remaining value.
During the transition back to the ordinary field editor, `ZoomProperty`
can render with `stops` undefined. It previously called `.map`
unconditionally, causing the editor to crash.
<img width="2551" height="1248" alt="image"
src="https://github.com/user-attachments/assets/f5c2af59-dcae-4ffe-8245-f175eea9c843"
/>
This PR guards the stop list with optional chaining. The change only
protects the render path and does not alter zoom-function conversion or
value persistence.
Now, the remaining stop's value will be restored after deleting the
other stop:
<img width="367" height="168" alt="image"
src="https://github.com/user-attachments/assets/8d13236b-6140-451b-8613-0bc5f11893de"
/>
The regression test covers `circle-opacity`:
1. Convert a fixed value to a zoom function.
2. Change the second stop's value.
3. Delete the first of the two stops.
4. Verify that the ordinary field editor reappears.
5. Verify that the remaining stop's value is restored.
6. Edit the restored field and verify that the style updates
successfully.
- [x] Briefly describe the changes in this PR.
- [ ] Link to related issues.
- [x] Include before/after visuals or gifs if this PR includes visual
changes.
- [x] Write tests for all new functionality.
- [x] Add an entry to `CHANGELOG.md` under the `## main` section.
Deleting a layer changes the starting indices of later groups, so their
stored expansion state no longer matches. Preserve that state through
surviving layer IDs when rebuilding the group keys.
This keeps expanded groups open after deleting an earlier layer or the
first layer of a group. Separate groups with the same prefix retain
their own states; if deletion joins two groups, the merged group stays
expanded when either was expanded.
- Fixes#1781.
Adds five deletion regression tests, a small style fixture, and a
changelog entry.
Validation:
- All 33 layer-list E2E tests and 50 unit tests pass.
- Lint and the production build, including TypeScript checking, pass.
- Manually checked OSM Liberty: all 15 groups remain expanded after
deleting the background layer.
- The full E2E suite reports 160 passing tests and one failure in
`modals > open > upload` (`Could not get styleItem from localStorage`).
The same failure reproduces with the original production code restored.
---------
Co-authored-by: Harel M <harel.mazor@gmail.com>
Bumps [@codemirror/state](https://github.com/codemirror/state) from
6.7.3 to 6.7.4.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/codemirror/state/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [i18next-cli](https://github.com/i18next/i18next-cli) from 1.73.0
to 1.73.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md">i18next-cli's
changelog</a>.</em></p>
<blockquote>
<h2>1.73.1</h2>
<ul>
<li>fix(extract): the <code><Trans></code> child error added for
<a
href="https://redirect.github.com/i18next/i18next-cli/issues/246">#246</a>
now also fires for <code>{table.name}</code>,
<code>{fn()}</code>, <code>{`a ${b}`}</code> and any other child
expression the extractor cannot serialise, not
only for bare identifiers like <code>{name}</code>. react-i18next
inlines the value at runtime, while
extraction silently produced an empty <code><1></1></code>
placeholder, so the key never matched. The
message suggests the <code>{{name: table.name}}</code> object form. It
also no longer asks for a <code>values</code>
prop: react-i18next reads the value from the <code>{{name}}</code>
object child itself, so
<code><Trans>See table {{name}}</Trans></code> works on its
own. Extraction output is unchanged.
Fixes <a
href="https://redirect.github.com/i18next/i18next-cli/issues/290">#290</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next-cli/commit/938cfa0b39b72c144ba6300f7533f9ff41b7d37b"><code>938cfa0</code></a>
1.73.1</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/bc99139723bdb47d2e01c527f108db237e3665d7"><code>bc99139</code></a>
fix(extract): error on <Trans> children like {table.name} that
won't match at...</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/83988c9ff0aa2cb5446f0b1f29db1a040003c073"><code>83988c9</code></a>
fix github actions</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next-cli/compare/v1.73.0...v1.73.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [i18next-cli](https://github.com/i18next/i18next-cli) from 1.72.1
to 1.73.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md">i18next-cli's
changelog</a>.</em></p>
<blockquote>
<h2>1.73.0</h2>
<ul>
<li>feat: <code>init</code> runs without the wizard. <code>--yes</code>
takes the detected defaults for every question
not answered by <code>--locales</code>, <code>--input</code>,
<code>--output</code>, <code>--backend <local|locize|other></code>
or
<code>--file-type <ts|js></code>; <code>--project-id
<id></code> (or <code>LOCIZE_PROJECTID</code>) supplies the Locize
project id
and skips the signup page and the credential prompts. Made for scripts
and AI coding agents,
which cannot drive the prompts.</li>
<li>feat: <code>init --agent-note</code> (also the last wizard question,
default No) appends a short
<code>## Internationalization</code> section to <code>AGENTS.md</code>
(and <code>CLAUDE.md</code> when present; when neither
exists, <code>AGENTS.md</code> is created, plus a <code>CLAUDE.md</code>
importing it if the project has a <code>.claude/</code>
folder) so the next agent session knows where the locale files are and
how translations are
managed. The exact text is in the README; <code>--no-agent-note</code>
skips the question. Nothing is
written unless you say yes.</li>
<li>change: the <code>localize</code> agent prompt
(<code>--print-agent-prompt</code>) and the
<code>i18next-localization</code>
skill no longer presume Locize. The agent asks the developer once,
before creating the config,
whether to manage the translations with Locize or keep the files in the
repository, and never
creates a project or asks for an API key unless they chose Locize. The
prompt now creates the
config with <code>init --yes ...</code> instead of the interactive
wizard.</li>
</ul>
<h2>1.72.4</h2>
<ul>
<li>docs: the README shows the skills.sh install badge for the
<code>i18next-localization</code> Agent Skill, and
<code>i18next-cli --help</code> now ends with a one-line hint on
installing it
(<code>npx skills add i18next/i18next-cli</code>). No other command
prints anything new.</li>
</ul>
<h2>1.72.3</h2>
<ul>
<li>feat(funnel): the Locize hint after <code>status</code>,
<code>extract</code> and <code>sync</code> is now a single line that
names the untranslated-key gap and the one command that fills it
(<code>npx i18next-cli localize</code>),
each with its own <code>?from=</code> tagged register link. It only
appears when secondary locales
actually have untranslated keys; the 24h cooldown and the CI/non-TTY
suppression are unchanged.</li>
</ul>
<h2>1.72.2</h2>
<ul>
<li>fix: extract dynamic keys built from <code>for...of</code> loop
variables. <code>for (const unit of UNITS)</code> over
an <code>as const</code> string array now binds <code>unit</code> while
the loop body is walked, just like <code>.map()</code> /
<code>.forEach()</code> callback parameters already did.</li>
<li>fix: capture <code>as const</code> arrays of object literals (e.g.
<code>[{ unit: 'day' }, { unit: 'hour' }]</code>),
so both <code>for (const { unit } of UNITS)</code> and
<code>UNITS.forEach(({ unit }) => ...)</code> resolve the
destructured properties.</li>
<li>fix: resolve object destructuring of a known <code>as const</code>
object, e.g. <code>const { unit } = rate;</code>
followed by <code>t(`msg ${unit}`)</code>
(<a
href="https://redirect.github.com/i18next/i18next-cli/issues/289">#289</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next-cli/commit/bf7f167b61e8578bf78022578088b18a28f6381a"><code>bf7f167</code></a>
1.73.0</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/8a38aa0606e318556bf12c6e0101d0dd0d8244de"><code>8a38aa0</code></a>
feat(init): non-interactive options, --project-id and an opt-in agent
note; t...</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/7fb1095445516f7aa745ce5fe1682a2fe6e3ad3f"><code>7fb1095</code></a>
docs(skill): single-line description in the SKILL.md frontmatter</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/9224c6eff8b98e32c7fffcb136ffd0be916e8c6c"><code>9224c6e</code></a>
1.72.4</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/dcd02988c4da0bc746be0902e71f58f45db9f13e"><code>dcd0298</code></a>
docs: skills.sh badge and a --help hint for the i18next-localization
skill</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/285716dc3e6f4328866f7ae568ee8ace76dc8e11"><code>285716d</code></a>
1.72.3</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/ce1c77dc350d605540304e34fed5361de7bcab04"><code>ce1c77d</code></a>
feat(funnel): one-line Locize hint after status, extract and sync</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/87103c7ea6f3fecd01376b28fe6127ee341de7bd"><code>87103c7</code></a>
1.72.2</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/bb1c07e2589900c44c0ee7a7f598afefc57a2b77"><code>bb1c07e</code></a>
fix: extract dynamic keys from for-of loops and destructured as-const
objects</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next-cli/compare/v1.72.1...v1.73.0">compare
view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [i18next](https://github.com/i18next/i18next) from 26.4.1 to
26.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next/releases">i18next's
releases</a>.</em></p>
<blockquote>
<h2>v26.4.2</h2>
<ul>
<li>fix: <code>$&</code>, <code>$`</code>, <code>$'</code> and
<code>$$</code> inside a nested value (<code>$t(key)</code>) now stay
literal. <code>nest()</code> handed the resolved value straight to
<code>String.replace</code> as the replacement argument, so those
sequences were read as replacement patterns: <code>$&</code>
re-inserted the <code>$t(...)</code> match, <code>$`</code> /
<code>$'</code> inserted the text before / after it, and <code>$$</code>
collapsed to <code>$</code>. Through <code>t()</code> the
<code>$&</code> case was worse than a wrong string: the nested
lookup resets the shared nesting regexp, so the re-inserted
<code>$t(...)</code> was matched again on every pass and
<code>t()</code> never returned — also under the default
<code>escapeValue: true</code> when the value arrives via a variable
forwarded through nesting options (<code>$t(key, { "name":
"{{name}}" })</code> with a name containing
<code>$&</code>). The value is now <code>$</code>-escaped at the
<code>String.replace</code> call, the same guard
<code>interpolate()</code> already has, and a non-string value returned
by a formatter in the nesting chain (<code>$t(key, myFormat)</code>) is
stringified before that. Nested values are still not HTML-escaped (<a
href="https://redirect.github.com/i18next/i18next/issues/854">#854</a>).
Thanks <a href="https://github.com/mahirhir"><code>@mahirhir</code></a>
(<a
href="https://redirect.github.com/i18next/i18next/pull/2447">#2447</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next/blob/master/CHANGELOG.md">i18next's
changelog</a>.</em></p>
<blockquote>
<h2>26.4.2</h2>
<ul>
<li>fix: <code>$&</code>, <code>$`</code>, <code>$'</code> and
<code>$$</code> inside a nested value (<code>$t(key)</code>) now stay
literal. <code>nest()</code> handed the resolved value straight to
<code>String.replace</code> as the replacement argument, so those
sequences were read as replacement patterns: <code>$&</code>
re-inserted the <code>$t(...)</code> match, <code>$`</code> /
<code>$'</code> inserted the text before / after it, and <code>$$</code>
collapsed to <code>$</code>. Through <code>t()</code> the
<code>$&</code> case was worse than a wrong string: the nested
lookup resets the shared nesting regexp, so the re-inserted
<code>$t(...)</code> was matched again on every pass and
<code>t()</code> never returned — also under the default
<code>escapeValue: true</code> when the value arrives via a variable
forwarded through nesting options (<code>$t(key, { "name":
"{{name}}" })</code> with a name containing
<code>$&</code>). The value is now <code>$</code>-escaped at the
<code>String.replace</code> call, the same guard
<code>interpolate()</code> already has, and a non-string value returned
by a formatter in the nesting chain (<code>$t(key, myFormat)</code>) is
stringified before that. Nested values are still not HTML-escaped (<a
href="https://redirect.github.com/i18next/i18next/issues/854">#854</a>).
Thanks <a href="https://github.com/mahirhir"><code>@mahirhir</code></a>
(<a
href="https://redirect.github.com/i18next/i18next/pull/2447">#2447</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next/commit/4dba50f20669c3678db0812255716eb7693ad2da"><code>4dba50f</code></a>
26.4.2</li>
<li><a
href="https://github.com/i18next/i18next/commit/e436b625a648e1a48ea27ecf5f2fba8020d67009"><code>e436b62</code></a>
build</li>
<li><a
href="https://github.com/i18next/i18next/commit/d955fb086e9f4ded1200f51ecbb21034dbad1d92"><code>d955fb0</code></a>
fix: stringify formatter results in nested values, changelog
v26.4.2</li>
<li><a
href="https://github.com/i18next/i18next/commit/dfafa3ca725e1415ef20e7fb5b1b3e4468f3c425"><code>dfafa3c</code></a>
fix: keep replacement patterns literal in nested values (<a
href="https://redirect.github.com/i18next/i18next/issues/2447">#2447</a>)</li>
<li><a
href="https://github.com/i18next/i18next/commit/3c9981e22dd471b6bca224aa1f60e04ba3f6153a"><code>3c9981e</code></a>
chore: keep dev-only and local files out of the npm package</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next/compare/v26.4.1...v26.4.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
[//]: # (dependabot-start)
⚠️ **Dependabot is rebasing this PR** ⚠️
Rebasing might not happen immediately, so don't worry if this takes some
time.
Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps [@codemirror/view](https://github.com/codemirror/view) from
6.43.10 to 6.43.11.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/codemirror/view/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the react group with 2 updates:
[@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom)
and
[eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh).
Updates `@types/react-dom` from 19.2.5 to 19.2.7
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom">compare
view</a></li>
</ul>
</details>
<br />
Updates `eslint-plugin-react-refresh` from 0.5.5 to 0.5.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases">eslint-plugin-react-refresh's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.6</h2>
<ul>
<li>Support re-exporting namespace components (fixes <a
href="https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/116">#116</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md">eslint-plugin-react-refresh's
changelog</a>.</em></p>
<blockquote>
<h2>0.5.6</h2>
<ul>
<li>Support re-exporting namespace components (fixes <a
href="https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/116">#116</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ArnaudBarre/eslint-plugin-react-refresh/commit/620568ae42267444dfeedba1e325f6d57952df05"><code>620568a</code></a>
Support re-exporting namespace components (fixes <a
href="https://redirect.github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/116">#116</a>)
[publish]</li>
<li>See full diff in <a
href="https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.5...v0.5.6">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@codemirror/state](https://github.com/codemirror/state) from
6.7.2 to 6.7.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/codemirror/state/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- Fixes#1675
## Problem
In the layer list, the show/hide button's `title` tooltip named the
layer's
current visibility instead of what a click does. A visible layer's
button read
`show` while clicking it hides the layer, and a hidden layer's button
read
`hide` while clicking it shows the layer — exactly reversed.
`LayerListItem.tsx` derived a single value from the layer state:
```ts
const visibilityAction = visibility === "visible" ? "show" : "hide";
```
and passed it to `IconAction` as `action`, which `IconAction` used for
three
different things: choosing the icon, building the `--show`/`--hide` CSS
modifier, and rendering `title={this.props.action}`. The first two are
correct
as a state indicator; only the tooltip needs the opposite verb.
## Change
- `IconAction` gets an optional `title` prop and falls back to `action`
when it
is not given, so the delete and duplicate buttons are unchanged.
- `LayerListItem` keeps `visibilityAction` (icon +
`maputnik-layer-list-icon-action__visibility--hide`
CSS modifier, which `_layer.scss` relies on to keep the button visible
for
hidden layers) and adds `visibilityTitle` for the inverted tooltip.
No icon, class name or click behaviour changes.
## Test
New regression test in `e2e/layers-list.spec.ts`: it asserts the button
is
titled `hide` while the layer is visible, clicks it, and asserts it is
titled
`show` once the layer is hidden. Against the unpatched component the
first
assertion fails with `Expected: "hide"` / `Received: "show"`,
reproducing the
reported behaviour.
`npm run lint`, `npx tsc --noEmit`, `npx vitest run` (50 tests) and
`npx playwright test e2e/layers-list.spec.ts` (28 tests) all pass.
## Note
The tooltips in this component (`delete`, `duplicate`, `show`, `hide`)
are
plain English literals and are not run through `t()` today, so this
change
keeps them as-is rather than introducing translation keys for one
button. Also
worth flagging separately: these buttons carry `aria-hidden="true"`, so
the
`title` never reaches assistive technology at all — out of scope here,
but it
means the label is a mouse-hover tooltip only.
## Launch Checklist
- [x] Adds Azerbaijani (`az`) as a supported UI language, following the
same pattern as the existing Turkish (`tr`) locale.
- [x] `src/locales/az/translation.json` — full translation, 202 keys
(matches `tr`/`de` key set exactly).
- [x] Registered `az` in `i18next.config.ts` (`locales` array) and
`src/i18n.ts` (`supportedLanguages`), alphabetically ordered.
- [x] Added `az` row to the `src/locales/README.md` contributors table.
- [ ] Link to related issues.
- [ ] Include before/after visuals or gifs if this PR includes visual
changes. (N/A — translation-only change, no UI layout changes.)
- [ ] Write tests for all new functionality. (N/A — no new
functionality, translation strings only.)
- [ ] Add an entry to `CHANGELOG.md` under the `## main` section. (Not
done — the prior Turkish locale PR (#1886) did not add a CHANGELOG entry
either, so following existing precedent.)
Terminology used consistently throughout: Layer → Qat, Style → Üslub,
Source → Mənbə, Zoom → Yaxınlaşma, Filter → Süzgəc.
CodeQL has been failing on main since #2105: `init` is on v4.37.9 while
`autobuild` and `analyze` are on v4.37.8, and the action rejects a
config written by a newer version ("Loaded a configuration file for
version '4.37.9', but running version '4.37.8'"). Dependabot bumps the
three steps in separate pull requests, so #2119 and #2120 each still
fail on their own and main has gone red at every partial bump (08-19,
08-28, today).
This moves the two steps to v4.37.9, the same commit dependabot picked
in #2119 and #2120, and groups `github/codeql-action*` in dependabot so
the three bump together from now on. Supersedes #2119 and #2120.
## Launch Checklist
- [x] Briefly describe the changes in this PR.
- [ ] Add an entry to `CHANGELOG.md` under the `## main` section (not
applicable, CI only).
## Launch Checklist
Small naming change from "Open Layers" to "OpenLayers". Because of the
unwanted space, the translations, while quite amusing, have been
incorrect and misleading.
<!-- Thanks for the PR! Feel free to add or remove items from the
checklist. -->
- [x] Briefly describe the changes in this PR.
- [ ] Link to related issues.
- [ ] Include before/after visuals or gifs if this PR includes visual
changes.
- [ ] Write tests for all new functionality.
- [ ] Add an entry to `CHANGELOG.md` under the `## main` section.
Co-authored-by: Harel M <harel.mazor@gmail.com>
Bumps [i18next-cli](https://github.com/i18next/i18next-cli) from 1.71.3
to 1.72.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md">i18next-cli's
changelog</a>.</em></p>
<blockquote>
<h2>1.72.1</h2>
<ul>
<li>fix: the interactive <code>instrument</code> prompt crashed because
it still used inquirer's <code>list</code> prompt
type, which was removed in inquirer 13; switched to <code>select</code>
(<a
href="https://redirect.github.com/i18next/i18next-cli/pull/288">#288</a>).</li>
</ul>
<h2>1.72.0</h2>
<ul>
<li>feat: <code>locize-sync --changed-only [--base <ref>]</code>
syncs and AI-auto-translates only the keys
that changed on the current git branch vs. the base branch — ideal for
translating just a pull
request's diff instead of the whole project. The source-language files
are diffed against the
merge-base with the base branch (auto-detected via
<code>origin/HEAD</code>, <code>main</code>, <code>master</code>, or set
with
<code>--base</code>); key creation, value updates and auto-translation
are restricted to those keys, and
deletions are skipped. Changed keys are scoped per namespace file, and
when any plural variant
of a key changed, all its plural forms are included (target languages
often need more CLDR
plural forms than the source). Also configurable via
<code>locize.changedOnly</code> /
<code>locize.changedOnlyBase</code>. Requires git and locize-cli >=
12.7.</li>
<li>feat: <code>sync --changed-only [--base <ref>]</code> applies
the same branch-diff scoping to the local
synchronizer: only primary-language keys added or modified on the branch
are propagated to the
secondary language files, and obsolete keys are left in place. Works
with JSON, JSON5 and YAML
translation files (JS/TS resource modules cannot be parsed from git
history and fail with a
clear message). Unusable git setups (git missing, not a repository,
unresolvable base ref) fail
the command with actionable errors that mention
<code>actions/checkout</code> <code>fetch-depth: 0</code> for shallow
CI clones.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next-cli/commit/83c5cd365ec87f0750e9347f1bb6d3fb47c3cd7c"><code>83c5cd3</code></a>
1.72.1</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/13a73a9a7ea374688fa2225f51a0d54fa3f1debd"><code>13a73a9</code></a>
docs: changelog for 1.72.1</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/c5811e55c4865bf7e89cdbf829d5ea5620743e21"><code>c5811e5</code></a>
fix: change prompt type from 'list' to 'select' in runInstrumenter
function (...</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/4d5853a1728c6a226cb298b591e32505787e4a6d"><code>4d5853a</code></a>
1.72.0</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/9d9ee5313a75727d889c17d2e93b8aa99e539381"><code>9d9ee53</code></a>
feat: --changed-only on sync and locize-sync scopes syncing to the git
branch...</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/d89dfd1462a255d833577a632eef9e6194b53e57"><code>d89dfd1</code></a>
Pre-approve npx i18next-cli in the skill's allowed-tools</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next-cli/compare/v1.71.3...v1.72.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
[//]: # (dependabot-start)
⚠️ **Dependabot is rebasing this PR** ⚠️
Rebasing might not happen immediately, so don't worry if this takes some
time.
Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps [i18next](https://github.com/i18next/i18next) from 26.4.0 to
26.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next/releases">i18next's
releases</a>.</em></p>
<blockquote>
<h2>v26.4.1</h2>
<ul>
<li>fix(types): the selector-form <code>keyPrefix</code> overload of
<code>getFixedT()</code> is now available under <code>enableSelector:
'strict'</code>. Its constraint was gated on <code>true |
'optimize'</code> only, so under <code>'strict'</code> it collapsed to
<code>never</code>, the overload dropped out, and the returned
<code>t</code> silently lost its <code>keyPrefix</code> scope
(<code>t(($) => $.deep)</code> failed with <code>Property 'deep' does
not exist on type '{}'</code>). The same call already typechecked under
<code>true</code> and <code>'optimize'</code>. Thanks <a
href="https://github.com/hovelopin"><code>@hovelopin</code></a> (<a
href="https://redirect.github.com/i18next/i18next/pull/2446">#2446</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next/blob/master/CHANGELOG.md">i18next's
changelog</a>.</em></p>
<blockquote>
<h2>26.4.1</h2>
<ul>
<li>fix(types): the selector-form <code>keyPrefix</code> overload of
<code>getFixedT()</code> is now available under <code>enableSelector:
'strict'</code>. Its constraint was gated on <code>true |
'optimize'</code> only, so under <code>'strict'</code> it collapsed to
<code>never</code>, the overload dropped out, and the returned
<code>t</code> silently lost its <code>keyPrefix</code> scope
(<code>t(($) => $.deep)</code> failed with <code>Property 'deep' does
not exist on type '{}'</code>). The same call already typechecked under
<code>true</code> and <code>'optimize'</code>. Thanks <a
href="https://github.com/hovelopin"><code>@hovelopin</code></a> (<a
href="https://redirect.github.com/i18next/i18next/pull/2446">#2446</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next/commit/c057ee048c55a61c095acc017365e997e4f723f8"><code>c057ee0</code></a>
26.4.1</li>
<li><a
href="https://github.com/i18next/i18next/commit/02e3e1659b7cc9fedaaf53797597483ef8003df2"><code>02e3e16</code></a>
changelog v26.4.1</li>
<li><a
href="https://github.com/i18next/i18next/commit/6f198f2508ba8986d1bbf25a8b922d01afcf0751"><code>6f198f2</code></a>
fix(types): allow selector keyPrefix in getFixedT under enableSelector
'stric...</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next/compare/v26.4.0...v26.4.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@codemirror/view](https://github.com/codemirror/view) from 6.43.9
to 6.43.10.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/codemirror/view/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@codemirror/state](https://github.com/codemirror/state) from
6.7.1 to 6.7.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/codemirror/state/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 15:33:00 +00:00
29 changed files with 922 additions and 643 deletions
"<0>Open in OSM</0>. Opens the current view on openstreetmap.org":"<0>OSM-də aç</0>. Cari görünüşü openstreetmap.org saytında açır",
"Achromatopsia filter":"Axromatopsiya süzgəci",
"Active Sources":"Aktiv Mənbələr",
"Add a new source to your style. You can only choose the source type and id at creation time!":"Üslubunuza yeni mənbə əlavə edin. Mənbə növünü və ID-ni yalnız yaradılma zamanı seçə bilərsiniz!",
"Add filter":"Süzgəc əlavə et",
"Add Layer":"Qat Əlavə Et",
"Add New Source":"Yeni Mənbə Əlavə Et",
"Add one of the publicly available sources to your style.":"Üslubunuza ictimai mənbələrdən birini əlavə edin.",
"Add Source":"Mənbə Əlavə Et",
"Add stop":"Dayanacaq əlavə et",
"Add value":"Dəyər əlavə et",
"Add Variable":"Dəyişən Əlavə Et",
"any filter matches":"istənilən süzgəc uyğun gəlirsə",
"API key for Stadia Maps.":"Stadia Maps üçün API açarı.",
"Base":"Baza",
"Bearing":"İstiqamət",
"Cancel":"Ləğv et",
"Center":"Mərkəz",
"Choose Public Source":"İctimai Mənbə Seç",
"Choose the default Maputnik renderer for this style.":"Bu üslub üçün defolt Maputnik renderer-ini seçin.",
"Click to close the editor":"Redaktoru bağlamaq üçün klikləyin",
"Close":"Bağla",
"Close modal":"Modalı bağla",
"Close popup":"Popapı bağla",
"Cluster":"Klaster",
"Code Editor":"Kod Redaktoru",
"Collapse":"Yığ",
"Color accessibility":"Rəng əlçatanlığı",
"Comment...":"Şərh...",
"Comments":"Şərhlər",
"Comments for the current layer. This is non-standard and not in the spec.":"Cari qat üçün şərhlər. Bu, standart deyil və spesifikasiyada yoxdur.",
"Convert property into a elevation function":"Xassəni hündürlük funksiyasına çevir",
"Convert property into a zoom function":"Xassəni yaxınlaşma funksiyasına çevir",
"Convert property to data function":"Xassəni məlumat funksiyasına çevir",
"Convert to expression":"İfadəyə çevir",
"Coord bottom left":"Koordinat aşağı sol",
"Coord bottom right":"Koordinat aşağı sağ",
"Coord top left":"Koordinat yuxarı sol",
"Coord top right":"Koordinat yuxarı sağ",
"CORS policy won't allow fetching resources served over http from https, use a <1>https://</1> domain":"CORS siyasəti https-dən http üzərindən verilən resursların alınmasına icazə vermir, <1>https://</1> domenindən istifadə edin",
"Create HTML":"HTML Yarat",
"Data Sources":"Məlumat Mənbələri",
"Data Sources modal":"Məlumat Mənbələri modalı",
"Data value":"Məlumat dəyəri",
"Debug":"Sazlama",
"Debug modal":"Sazlama modalı",
"Decrease the pitch by 10 degrees.":"Meyli 10 dərəcə azalt.",
"Decrease the rotation by 15 degrees.":"Fırlanmanı 15 dərəcə azalt.",
"Decrease the zoom level by 1.":"Yaxınlaşma səviyyəsini 1 azalt.",
"Decrease the zoom level by 2.":"Yaxınlaşma səviyyəsini 2 azalt.",
"Default":"Defolt",
"Delete":"Sil",
"Delete expression":"İfadəni sil",
"Delete filter block":"Süzgəc blokunu sil",
"Deuteranopia filter":"Deuteranopiya süzgəci",
"Drag and drop a style JSON file here or click to browse":"Üslub JSON faylını buraya sürükləyib buraxın və ya seçmək üçün klikləyin",
"Duplicate":"Dublikat et",
"Encoding":"Kodlaşdırma",
"Enter URL...":"URL daxil edin...",
"every filter matches":"bütün süzgəclər uyğun gəlirsə",
"If the Map is in focused you can use the following shortcuts":"Xəritə fokusdadırsa aşağıdakı qısayollardan istifadə edə bilərsiniz",
"Image":"Şəkil",
"Image URL":"Şəkil URL-i",
"Increase the pitch by 10 degrees.":"Meyli 10 dərəcə artır.",
"Increase the rotation by 15 degrees.":"Fırlanmanı 15 dərəcə artır.",
"Increase the zoom level by 1.":"Yaxınlaşma səviyyəsini 1 artır.",
"Increase the zoom level by 2.":"Yaxınlaşma səviyyəsini 2 artır.",
"Input a data property to base styles off of.":"Üslubların əsaslanacağı məlumat xassəsini daxil edin.",
"Input value":"Giriş dəyəri",
"Inspect":"Yoxla",
"JSON Editor":"JSON Redaktoru",
"Key":"Açar",
"Layer":"Qat",
"Layer editor":"Qat redaktoru",
"Layer ID already exists":"Qat ID artıq mövcuddur",
"Layers":"Qatlar",
"Layers list":"Qatlar siyahısı",
"Layout properties":"Düzülüş xassələri",
"Learn More":"Ətraflı Öyrən",
"Light anchor":"İşıq lövbəri",
"Light color":"İşıq rəngi",
"Light intensity":"İşıq intensivliyi",
"Light position":"İşıq mövqeyi",
"Links":"Keçidlər",
"Load from a URL. Note that the URL must have <1>CORS enabled</1>.":"URL-dən yüklə. Qeyd edin ki, URL-də <1>CORS aktiv olmalıdır</1>.",
"Load from URL":"URL-dən yüklə",
"Loading":"Yüklənir",
"Loading style":"Üslub yüklənir",
"LocationIQ Access Token":"LocationIQ Giriş Tokeni",
"Map":"Xəritə",
"Map view":"Xəritə görünüşü",
"MapTiler Access Token":"MapTiler Giriş Tokeni",
"Maputnik on GitHub":"GitHub-da Maputnik",
"Max Zoom":"Maks. Yaxınlaşma",
"Min Zoom":"Min. Yaxınlaşma",
"Move layer down":"Qatı aşağı köçür",
"Move layer up":"Qatı yuxarı köçür",
"Must provide protocol: <1>http://</1> or <3>https://</3>":"Protokol göstərilməlidir: <1>http://</1> və ya <3>https://</3>",
"Must provide protocol: <1>https://</1>":"Protokol göstərilməlidir: <1>https://</1>",
"Name":"Ad",
"Nested filters are not supported.":"İç-içə süzgəclər dəstəklənmir.",
"no filter matches":"heç bir süzgəc uyğun gəlmirsə",
"No global state variables defined. Add variables to create reusable values in your style.":"Heç bir qlobal vəziyyət dəyişəni təyin edilməyib. Üslubunuzda təkrar istifadə oluna bilən dəyərlər yaratmaq üçün dəyişən əlavə edin.",
"Open":"Aç",
"Open a local JSON style from your computer.":"Kompüterinizdən yerli JSON üslubunu açın.",
"Open one of the publicly available styles to start from.":"Başlamaq üçün ictimai üslublardan birini açın.",
"Open Style":"Üslubu Aç",
"Options":"Seçimlər",
"Output value":"Çıxış dəyəri",
"Owner":"Sahib",
"Owner ID of the style. Used by Mapbox or future style APIs.":"Üslubun sahib ID-si. Mapbox və ya gələcək üslub API-ləri tərəfindən istifadə olunur.",
"Paint properties":"Boyama xassələri",
"Pan down by 100 pixels.":"100 piksel aşağı sürüşdür.",
"Pan left by 100 pixels.":"100 piksel sola sürüşdür.",
"Pan right by 100 pixels.":"100 piksel sağa sürüşdür.",
"Pan up by 100 pixels.":"100 piksel yuxarı sürüşdür.",
"Pitch":"Meyl",
"PMTiles URL":"PMTiles URL",
"Press <1>ESC</1> to lose focus of any active elements, then press one of:":"İstənilən aktiv elementin fokusunu itirmək üçün <1>ESC</1> düyməsini basın, sonra bunlardan birini basın:",
"Projection":"Proyeksiya",
"Protanopia filter":"Protanopiya süzgəci",
"Public access token for LocationIQ services.":"LocationIQ xidmətləri üçün ictimai giriş tokeni.",
"Public access token for MapTiler Cloud.":"MapTiler Cloud üçün ictimai giriş tokeni.",
"Public access token for Thunderforest services.":"Thunderforest xidmətləri üçün ictimai giriş tokeni.",
"Raster (Tile URLs)":"Rastr (Kafel URL-ləri)",
"Raster (TileJSON URL)":"Rastr (TileJSON URL)",
"Raster DEM (TileJSON URL)":"Rastr DEM (TileJSON URL)",
"Raster DEM (XYZ URLs)":"Rastr DEM (XYZ URL-ləri)",
"Thunderforest Access Token":"Thunderforest Giriş Tokeni",
"Tile Size":"Kafel Ölçüsü",
"Tile URL":"Kafel URL-i",
"TileJSON URL":"TileJSON URL",
"Toggle inspect":"Yoxlamanı aç/bağla",
"Transition delay":"Keçid gecikməsi",
"Transition duration":"Keçid müddəti",
"Tritanopia filter":"Tritanopiya süzgəci",
"Type":"Növ",
"Unique ID that identifies the source and is used in the layer to reference the source.":"Mənbəni müəyyən edən və qatda mənbəyə istinad üçün istifadə olunan unikal ID.",
"Upgrade to expression":"İfadəyə yüksəlt",
"Value":"Dəyər",
"Vector (PMTiles)":"Vektor (PMTiles)",
"Vector (Tile URLs)":"Vektor (Kafel URL-ləri)",
"Vector (TileJSON URL)":"Vektor (TileJSON URL)",
"Video":"Video",
"Video URL":"Video URL-i",
"View":"Görünüş",
"You've entered an old style filter.":"Köhnə üslub süzgəci daxil etmisiniz.",
"No global state variables defined. Add variables to create reusable values in your style.":"Keine globalen Zustandsvariablen definiert. Füge Variablen hinzu, um wiederverwendbare Werte in deinem Stil zu erstellen.",
"Open":"Öffnen",
"Open a local JSON style from your computer.":"Öffne einen lokalen JSON Stil von deinem Computer.",
"No global state variables defined. Add variables to create reusable values in your style.":"Nessuna variabile di stato globale definita. Aggiungi variabili per creare valori riutilizzabili nel tuo stile.",
"Open":"Apri",
"Open a local JSON style from your computer.":"Apri uno stile JSON dal tuo computer.",
"No global state variables defined. Add variables to create reusable values in your style.":"未定义全局状态变量。添加变量以在样式中创建可重用的值。",
"Open":"打开",
"Open a local JSON style from your computer.":"从您的计算机打开本地JSON样式。",
"OpenLayers (experimental)":"开放图层(实验性)",
"OpenLayers (experimental)":"OpenLayers(实验性)",
"Open local Style":"打开本地样式",
"Open modal":"打开模态框",
"Open one of the publicly available styles to start from.":"打开一个公开可用的样式开始。",
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.