@tileflow/vue 0.1.0-alpha.23 → 0.1.0-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -162
- package/dist/index.js +8 -31
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,8 +1,65 @@
|
|
|
1
1
|
# @tileflow/vue
|
|
2
2
|
|
|
3
|
-
Vue
|
|
3
|
+
Vue components for interactive Tileflow maps, annotations, and existing-image display.
|
|
4
|
+
The component reads prepared manifests and styles; it does not compile `tileflow.config.ts` in the
|
|
5
|
+
browser.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
> Related packages and guides: [documentation index](https://raw.githubusercontent.com/tileflow/tileflow-sdk/main/llms.txt).
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
Use an existing Vue 3 application. Supported peers are Vue `>=3.3 <4` and MapLibre GL JS
|
|
12
|
+
`>=6.4.1 <7`. The local build workflow below requires Node.js 22 or newer.
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
npm install @tileflow/vue@alpha @tileflow/core@alpha @tileflow/maps@alpha "maplibre-gl@^6.4.1"
|
|
16
|
+
npm install --save-dev --save-exact tileflow@alpha
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Prepare a map
|
|
20
|
+
|
|
21
|
+
Create `tileflow.config.ts` at the application root:
|
|
22
|
+
|
|
23
|
+
<!-- docs:check -->
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import {defineMap} from '@tileflow/core';
|
|
27
|
+
import {streets} from '@tileflow/maps';
|
|
28
|
+
|
|
29
|
+
export default defineMap({
|
|
30
|
+
id: 'madrid',
|
|
31
|
+
version: 1,
|
|
32
|
+
extends: streets,
|
|
33
|
+
view: {center: [-3.7038, 40.4168], zoom: 12},
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
npx tileflow build --out public/tileflow
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Serve `public/` at the application's URL root. Rebuild after map or asset changes, or use the
|
|
42
|
+
[Vite integration](https://github.com/tileflow/tileflow-sdk/blob/main/packages/vite/README.md)
|
|
43
|
+
for watched development and production output. Local build and validation need no API key;
|
|
44
|
+
rendering may still request configured remote tiles and fonts.
|
|
45
|
+
|
|
46
|
+
## Configure the worker
|
|
47
|
+
|
|
48
|
+
For Vite, add the following to the existing client entry before `createApp(...).mount(...)`:
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
|
|
52
|
+
import {configureTileflowMapLibre} from '@tileflow/vue';
|
|
53
|
+
|
|
54
|
+
configureTileflowMapLibre({workerUrl});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Configure this once before mounting an interactive map. The worker must come from the same installed
|
|
58
|
+
MapLibre package as the main module. The `?worker&url` import is Vite-specific; use the
|
|
59
|
+
[Webpack recipe](https://github.com/tileflow/tileflow-sdk/blob/main/packages/webpack/README.md)
|
|
60
|
+
for Webpack. Keep MapLibre's CSS in the client application as well.
|
|
61
|
+
|
|
62
|
+
## Render a map
|
|
6
63
|
|
|
7
64
|
```vue
|
|
8
65
|
<script setup lang="ts">
|
|
@@ -12,146 +69,71 @@ import {TileflowMap} from '@tileflow/vue';
|
|
|
12
69
|
|
|
13
70
|
<template>
|
|
14
71
|
<TileflowMap
|
|
15
|
-
:source="{
|
|
72
|
+
:source="{map: 'madrid'}"
|
|
16
73
|
theme="system"
|
|
17
74
|
:center="[-3.7038, 40.4168]"
|
|
18
75
|
:zoom="12"
|
|
19
|
-
:
|
|
20
|
-
|
|
21
|
-
maxZoom: 18,
|
|
22
|
-
}"
|
|
76
|
+
:height="420"
|
|
77
|
+
:map-options="{cooperativeGestures: true, maxZoom: 18}"
|
|
23
78
|
/>
|
|
24
79
|
</template>
|
|
25
80
|
```
|
|
26
81
|
|
|
27
|
-
|
|
82
|
+
Coordinates are `[longitude, latitude]`. `source` is one object, `{map, manifestUrl?}`.
|
|
83
|
+
`source.map` is the config's portable ID, not a hosted `map_...` identifier. The default manifest
|
|
84
|
+
URL is exactly `/tileflow/manifest.json`; provide `source.manifestUrl` explicitly for a subpath,
|
|
85
|
+
reverse proxy, or external host. The component does not infer build-tool configuration.
|
|
28
86
|
|
|
29
|
-
|
|
30
|
-
|
|
87
|
+
Omitting `theme` uses `defaultTheme`. `system` needs the map's explicit light/dark mapping, which
|
|
88
|
+
Streets supplies. Switching themes preserves the map, camera, and interactions, with rollback on
|
|
89
|
+
failure. Listen to `themeChange` for transitions.
|
|
31
90
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
91
|
+
`mapOptions` accepts native MapLibre options except `container` and `style`. Direct props take
|
|
92
|
+
priority over those options, then the published view, then shared defaults. `TileflowMap` always
|
|
93
|
+
selects a Tileflow map through its manifest; it has no renderer discriminator or direct-style mode.
|
|
94
|
+
The obsolete source fields `kind` and `style` are rejected. For a completely unmanaged map, use
|
|
95
|
+
`maplibre-gl` directly rather than a Tileflow component.
|
|
36
96
|
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
This is the Vite setup. Run it before `createApp(...).mount(...)`; `mode="image"` remains
|
|
41
|
-
MapLibre-free. MapLibre GL JS 6.4.1-6.x is supported. Use the `@tileflow/next` or
|
|
42
|
-
`@tileflow/webpack` README for their worker-delivery recipes.
|
|
43
|
-
|
|
44
|
-
`mapOptions` accepts native MapLibre options except `container` and `style`, which
|
|
45
|
-
Tileflow resolves from `source`. Direct
|
|
46
|
-
Tileflow props such as `center`, `zoom`, and `interactive` take priority when
|
|
47
|
-
provided. Camera resolution is the same in interactive and image modes: direct props, then
|
|
48
|
-
`mapOptions`, then the published manifest view, then Tileflow's shared runtime defaults.
|
|
49
|
-
|
|
50
|
-
Every map has exactly one discriminated `source`. Use `kind: 'tileflow'` with `map` and an optional
|
|
51
|
-
`manifestUrl` for published delivery. `kind: 'maplibre'` is an unmanaged escape hatch for one direct
|
|
52
|
-
style object or URL; it has no Tileflow theme identity, `system` selection, switching, or manifest
|
|
53
|
-
traceability. Browser components do not compile `tileflow.config.ts`.
|
|
97
|
+
## Add annotations and native popup UI
|
|
54
98
|
|
|
55
|
-
|
|
56
|
-
path, reverse proxy, or Tileflow plugin publishes it elsewhere, set the final public URL explicitly;
|
|
57
|
-
the component does not guess it. Manifest 404s, unknown map IDs, unresolved styles, and unresolved
|
|
58
|
-
image URLs enter `data-tileflow-state="error"`.
|
|
99
|
+
Install the contracts when importing them directly:
|
|
59
100
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
interaction state, with rollback on failure. Listen to `themeChange` for transition state.
|
|
63
|
-
|
|
64
|
-
```vue
|
|
65
|
-
<TileflowMap
|
|
66
|
-
:source="{
|
|
67
|
-
kind: 'tileflow',
|
|
68
|
-
map: 'madrid',
|
|
69
|
-
manifestUrl: 'https://cdn.example.com/tileflow/manifest.json',
|
|
70
|
-
}"
|
|
71
|
-
/>
|
|
72
|
-
|
|
73
|
-
<TileflowMap
|
|
74
|
-
:source="{
|
|
75
|
-
kind: 'maplibre',
|
|
76
|
-
style: 'https://cdn.example.com/tileflow/styles/madrid/dark.json',
|
|
77
|
-
}"
|
|
78
|
-
/>
|
|
101
|
+
```sh
|
|
102
|
+
npm install @tileflow/interactions@alpha
|
|
79
103
|
```
|
|
80
104
|
|
|
81
|
-
|
|
82
|
-
or evaluating MapLibre. All environments follow the same published manifest contract.
|
|
83
|
-
|
|
84
|
-
## Annotations, semantic POIs, and native Vue views
|
|
85
|
-
|
|
86
|
-
Use `annotations` for small, application-owned DOM markers. The portable annotation data and
|
|
87
|
-
interaction state remain JSON-safe. Use `interactions` to bind tooltip or popup behavior to
|
|
88
|
-
manifest-declared semantic POIs already rendered by the map style; this avoids creating one DOM
|
|
89
|
-
marker per feature. Scoped slots render native Vue UI into hosts owned by the shared interaction
|
|
90
|
-
runtime.
|
|
105
|
+
This component uses the worker and CSS setup above:
|
|
91
106
|
|
|
92
107
|
```vue
|
|
93
108
|
<script setup lang="ts">
|
|
94
109
|
import {ref} from 'vue';
|
|
95
|
-
import type {
|
|
96
|
-
TileflowAnnotation,
|
|
97
|
-
TileflowInteractionBinding,
|
|
98
|
-
TileflowInteractionState,
|
|
99
|
-
} from '@tileflow/interactions';
|
|
110
|
+
import type {TileflowAnnotation, TileflowInteractionState} from '@tileflow/interactions';
|
|
100
111
|
import {TileflowMap} from '@tileflow/vue';
|
|
101
112
|
|
|
102
|
-
type Property = {address: string; price: number};
|
|
103
|
-
|
|
104
113
|
const annotations = [
|
|
105
114
|
{
|
|
106
|
-
kind: 'marker',
|
|
107
115
|
id: 'property-42',
|
|
108
|
-
|
|
116
|
+
kind: 'marker',
|
|
117
|
+
coordinate: [-3.7038, 40.4168],
|
|
109
118
|
ariaLabel: 'Apartment in Madrid',
|
|
110
|
-
|
|
111
|
-
tooltip: {content: {kind: 'field', field: 'address'}},
|
|
119
|
+
tooltip: {content: {kind: 'text', text: 'View apartment'}},
|
|
112
120
|
popup: {content: {kind: 'view', name: 'property-card'}},
|
|
113
121
|
},
|
|
114
|
-
] satisfies readonly TileflowAnnotation
|
|
115
|
-
|
|
116
|
-
const interactions = [
|
|
117
|
-
{
|
|
118
|
-
id: 'restaurant-details',
|
|
119
|
-
target: {kind: 'semantic-feature', domain: 'poi', categories: ['food-drink']},
|
|
120
|
-
tooltip: {content: {kind: 'field', field: 'name', fallback: 'Restaurant'}},
|
|
121
|
-
popup: {content: {kind: 'view', name: 'poi-card'}},
|
|
122
|
-
},
|
|
123
|
-
] satisfies readonly TileflowInteractionBinding[];
|
|
122
|
+
] satisfies readonly TileflowAnnotation[];
|
|
124
123
|
|
|
125
|
-
const
|
|
124
|
+
const state = ref<TileflowInteractionState>({popup: null});
|
|
126
125
|
</script>
|
|
127
126
|
|
|
128
127
|
<template>
|
|
129
128
|
<TileflowMap
|
|
130
|
-
v-model:interaction-state="
|
|
131
|
-
:source="{
|
|
129
|
+
v-model:interaction-state="state"
|
|
130
|
+
:source="{map: 'madrid'}"
|
|
132
131
|
:annotations="annotations"
|
|
133
|
-
|
|
134
|
-
@interaction-event="(event) => console.log(event.type, event.target)"
|
|
135
|
-
@interaction-diagnostic="(diagnostic) => console.warn(diagnostic.code)"
|
|
132
|
+
@interaction-diagnostic="(diagnostic) => console.error(diagnostic.code)"
|
|
136
133
|
>
|
|
137
|
-
<template #marker="{annotation}">
|
|
138
|
-
<span class="price-marker">{{ annotation.data.price.toLocaleString() }}</span>
|
|
139
|
-
</template>
|
|
140
|
-
|
|
141
|
-
<template #tooltip="{target}">
|
|
142
|
-
<span v-if="target.kind === 'annotation'">{{ target.annotation.data.address }}</span>
|
|
143
|
-
<span v-else-if="target.kind === 'semantic-feature'">
|
|
144
|
-
{{ target.feature.properties.name }}
|
|
145
|
-
</span>
|
|
146
|
-
</template>
|
|
147
|
-
|
|
148
134
|
<template #popup="{target, close}">
|
|
149
135
|
<article v-if="target.kind === 'annotation'">
|
|
150
|
-
<
|
|
151
|
-
<button type="button" @click="close">Close</button>
|
|
152
|
-
</article>
|
|
153
|
-
<article v-else-if="target.kind === 'semantic-feature'">
|
|
154
|
-
<strong>{{ target.feature.properties.name }}</strong>
|
|
136
|
+
<h2>{{ target.annotation.ariaLabel }}</h2>
|
|
155
137
|
<button type="button" @click="close">Close</button>
|
|
156
138
|
</article>
|
|
157
139
|
</template>
|
|
@@ -159,58 +141,51 @@ const interactionState = ref<TileflowInteractionState>({popup: null});
|
|
|
159
141
|
</template>
|
|
160
142
|
```
|
|
161
143
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
The supported peer window is Vue 3.3-3.x and MapLibre GL JS 6.4.1-6.x. Compatibility smoke tests
|
|
212
|
-
install Vue 3.3.0 with the exact lower bound and selected current release from packed Tileflow
|
|
213
|
-
tarballs, typecheck a consumer, and render the image/SSR path while rejecting any MapLibre import.
|
|
214
|
-
Vue 4 stays outside the peer range until that matrix passes.
|
|
215
|
-
|
|
216
|
-
Docs: https://tileflow.dev/docs
|
|
144
|
+
Annotations require a stable `id`, singular `coordinate`, and non-empty `ariaLabel`; optional data
|
|
145
|
+
must be JSON-safe. `marker` receives annotation-only context. `tooltip` and `popup` receive the
|
|
146
|
+
shared interaction context; narrow `target.kind` before reading annotation or semantic feature data.
|
|
147
|
+
|
|
148
|
+
Use `interactions` with `target: {kind: 'semantic-feature', domain: 'poi'}` for POIs already rendered
|
|
149
|
+
by the style. Categories use Tileflow's taxonomy, such as `food-drink` or `retail`, not raw source
|
|
150
|
+
classes. Semantic bindings require compatible metadata in the active style and avoid creating one
|
|
151
|
+
DOM marker per feature.
|
|
152
|
+
|
|
153
|
+
Omit controlled state and use `default-interaction-state` for uncontrolled ownership. Do not supply
|
|
154
|
+
both or change ownership during a component's lifetime. Annotations, bindings, slots, and callbacks
|
|
155
|
+
reconcile without recreating MapLibre. Text/field descriptors render as text; `view` dispatches to
|
|
156
|
+
an application slot and never evaluates HTML. Tooltips must remain non-interactive; use a popup for
|
|
157
|
+
links, buttons, or forms.
|
|
158
|
+
|
|
159
|
+
## Display an existing image
|
|
160
|
+
|
|
161
|
+
`mode="image"` renders an explicit `imageUrl` or derives an image URL from the selected manifest
|
|
162
|
+
map's `mapId`, `apiUrl`, concrete theme and view, without loading MapLibre. It still requires a valid
|
|
163
|
+
Tileflow source. A local style build does not generate an image. This mode does not create or poll
|
|
164
|
+
a static render; use the server-side
|
|
165
|
+
[Static Maps client](https://github.com/tileflow/tileflow-sdk/blob/main/packages/static/README.md)
|
|
166
|
+
for that operation and keep privileged keys on the server.
|
|
167
|
+
|
|
168
|
+
Do not pass annotations, semantic bindings, state, or interaction slots to image mode. Unsupported
|
|
169
|
+
interaction input reports `UNSUPPORTED_MODE` and capture readiness `error`; it does not silently
|
|
170
|
+
pretend the image contains live overlays.
|
|
171
|
+
|
|
172
|
+
## Capture, authorization, and troubleshooting
|
|
173
|
+
|
|
174
|
+
Pass `capture-id` when multiple components show the same map. The root exposes `data-tileflow-map`,
|
|
175
|
+
resolved `data-tileflow-theme`, optional `data-tileflow-capture-id`, and
|
|
176
|
+
`data-tileflow-state="loading|idle|error"`. Readiness includes MapLibre or image loading plus committed
|
|
177
|
+
Vue interaction views. Application capture needs exactly one ready target and the application's
|
|
178
|
+
normal loopback server.
|
|
179
|
+
|
|
180
|
+
For a blank/error map, check that the manifest URL returns JSON, the map and theme exist, MapLibre
|
|
181
|
+
CSS is imported, and the matching worker/shared assets are served. Manifest 404s and unresolved
|
|
182
|
+
styles/images are errors; the component does not guess another URL.
|
|
183
|
+
|
|
184
|
+
Hosted maps preflight a short-lived session grant. `:analytics="{enabled: false}"` disables only the
|
|
185
|
+
optional beacon, not authorization. Use a stable product `surfaceId` rather than a user ID or URL.
|
|
186
|
+
Direct World maps can show owner-action notices when managed delivery is required. Imports and the
|
|
187
|
+
image path remain SSR-safe; interactive rendering needs a browser with WebGL.
|
|
188
|
+
|
|
189
|
+
See the [interaction guide](https://github.com/tileflow/tileflow-sdk/blob/main/packages/interactions/README.md)
|
|
190
|
+
and [browser runtime contract](https://github.com/tileflow/tileflow-sdk/blob/main/docs/contracts/framework-browser-runtime.md).
|
|
191
|
+
Use the installed package's declarations and README for a release; `main` can include newer changes.
|
package/dist/index.js
CHANGED
|
@@ -40,8 +40,7 @@ import {
|
|
|
40
40
|
resolveTileflowRuntimeStyle,
|
|
41
41
|
resolveTileflowRuntimeTheme,
|
|
42
42
|
resolveTileflowRuntimeView,
|
|
43
|
-
resolveTileflowStaticImageUrl
|
|
44
|
-
shouldLoadTileflowManifest
|
|
43
|
+
resolveTileflowStaticImageUrl
|
|
45
44
|
} from "@tileflow/core/runtime";
|
|
46
45
|
import {
|
|
47
46
|
initialTileflowInteractionState
|
|
@@ -167,9 +166,6 @@ function validateTileflowMapStyleInputs(input) {
|
|
|
167
166
|
if (input.theme !== void 0 && !validateTileflowThemeSelection(input.theme)) {
|
|
168
167
|
return { error: 'theme must be a concrete portable theme name or "system"', ok: false };
|
|
169
168
|
}
|
|
170
|
-
if (input.theme !== void 0 && input.source.kind !== "tileflow") {
|
|
171
|
-
return { error: "theme is only valid with a tileflow source", ok: false };
|
|
172
|
-
}
|
|
173
169
|
return { ok: true };
|
|
174
170
|
}
|
|
175
171
|
function assertTileflowMapStyleInputs(input) {
|
|
@@ -330,31 +326,20 @@ var TileflowMap = defineComponent({
|
|
|
330
326
|
},
|
|
331
327
|
...controlledInteractionOwnership ? { interactionState: initialInteractionState } : { defaultInteractionState: initialInteractionState }
|
|
332
328
|
});
|
|
333
|
-
const mapName = computed(
|
|
334
|
-
|
|
335
|
-
);
|
|
336
|
-
const manifestUrl = computed(
|
|
337
|
-
() => props.source.kind === "tileflow" ? props.source.manifestUrl ?? defaultTileflowManifestUrl : defaultTileflowManifestUrl
|
|
338
|
-
);
|
|
339
|
-
const shouldLoadManifest = computed(
|
|
340
|
-
() => shouldLoadTileflowManifest({
|
|
341
|
-
source: props.source
|
|
342
|
-
})
|
|
343
|
-
);
|
|
344
|
-
const manifestRequestKey = computed(
|
|
345
|
-
() => shouldLoadManifest.value ? JSON.stringify([manifestUrl.value, mapName.value]) : "not-needed"
|
|
346
|
-
);
|
|
329
|
+
const mapName = computed(() => props.source.map);
|
|
330
|
+
const manifestUrl = computed(() => props.source.manifestUrl ?? defaultTileflowManifestUrl);
|
|
331
|
+
const manifestRequestKey = computed(() => JSON.stringify([manifestUrl.value, mapName.value]));
|
|
347
332
|
const currentManifestResolutionState = computed(
|
|
348
|
-
() => manifestResolutionKey.value === manifestRequestKey.value ? manifestResolutionState.value :
|
|
333
|
+
() => manifestResolutionKey.value === manifestRequestKey.value ? manifestResolutionState.value : "loading"
|
|
349
334
|
);
|
|
350
335
|
const manifestMap = computed(
|
|
351
336
|
() => manifestResolutionKey.value === manifestRequestKey.value && manifestResolutionState.value === "ready" ? loadedManifestMap.value : null
|
|
352
337
|
);
|
|
353
338
|
const themeResolution = computed(() => {
|
|
354
|
-
if (!manifestMap.value
|
|
339
|
+
if (!manifestMap.value) {
|
|
355
340
|
return {
|
|
356
341
|
error: false,
|
|
357
|
-
name: props.
|
|
342
|
+
name: props.theme && props.theme !== "system" ? props.theme : void 0
|
|
358
343
|
};
|
|
359
344
|
}
|
|
360
345
|
try {
|
|
@@ -415,7 +400,7 @@ var TileflowMap = defineComponent({
|
|
|
415
400
|
}) : void 0)
|
|
416
401
|
);
|
|
417
402
|
const runtimeResolutionState = computed(() => {
|
|
418
|
-
if (
|
|
403
|
+
if (currentManifestResolutionState.value !== "ready") {
|
|
419
404
|
return currentManifestResolutionState.value === "error" ? "error" : "loading";
|
|
420
405
|
}
|
|
421
406
|
if (themeResolution.value.error) return "error";
|
|
@@ -538,15 +523,7 @@ var TileflowMap = defineComponent({
|
|
|
538
523
|
settleInteractionReadiness();
|
|
539
524
|
});
|
|
540
525
|
const refreshManifest = async () => {
|
|
541
|
-
const shouldLoad = shouldLoadManifest.value;
|
|
542
526
|
const requestKey = manifestRequestKey.value;
|
|
543
|
-
if (!shouldLoad) {
|
|
544
|
-
manifestLoadId += 1;
|
|
545
|
-
loadedManifestMap.value = null;
|
|
546
|
-
manifestResolutionKey.value = requestKey;
|
|
547
|
-
manifestResolutionState.value = "not-needed";
|
|
548
|
-
return;
|
|
549
|
-
}
|
|
550
527
|
const loadId = ++manifestLoadId;
|
|
551
528
|
loadedManifestMap.value = null;
|
|
552
529
|
manifestResolutionKey.value = requestKey;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tileflow/vue",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.25",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Vue component for rendering Tileflow maps with MapLibre.",
|
|
6
6
|
"type": "module",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@tileflow/core": ">=0.1.0-alpha.
|
|
42
|
-
"@tileflow/interactions": ">=0.1.0-alpha.
|
|
41
|
+
"@tileflow/core": ">=0.1.0-alpha.27 <0.1.0-beta.0",
|
|
42
|
+
"@tileflow/interactions": ">=0.1.0-alpha.4 <0.1.0-beta.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"maplibre-gl": ">=6.4.1 <7",
|