@edv4h/usketch-plugin-map 0.2.0

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.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/dist/autotile.d.ts +42 -0
  4. package/dist/autotile.d.ts.map +1 -0
  5. package/dist/autotile.js +96 -0
  6. package/dist/autotile.js.map +1 -0
  7. package/dist/gen-state.d.ts +20 -0
  8. package/dist/gen-state.d.ts.map +1 -0
  9. package/dist/gen-state.js +16 -0
  10. package/dist/gen-state.js.map +1 -0
  11. package/dist/generate.d.ts +28 -0
  12. package/dist/generate.d.ts.map +1 -0
  13. package/dist/generate.js +93 -0
  14. package/dist/generate.js.map +1 -0
  15. package/dist/generators/index.d.ts +34 -0
  16. package/dist/generators/index.d.ts.map +1 -0
  17. package/dist/generators/index.js +138 -0
  18. package/dist/generators/index.js.map +1 -0
  19. package/dist/generators/noise.d.ts +6 -0
  20. package/dist/generators/noise.d.ts.map +1 -0
  21. package/dist/generators/noise.js +39 -0
  22. package/dist/generators/noise.js.map +1 -0
  23. package/dist/generators/rng.d.ts +7 -0
  24. package/dist/generators/rng.d.ts.map +1 -0
  25. package/dist/generators/rng.js +31 -0
  26. package/dist/generators/rng.js.map +1 -0
  27. package/dist/icons.d.ts +17 -0
  28. package/dist/icons.d.ts.map +1 -0
  29. package/dist/icons.js +949 -0
  30. package/dist/icons.js.map +1 -0
  31. package/dist/index.d.ts +11 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +10 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/lod.d.ts +27 -0
  36. package/dist/lod.d.ts.map +1 -0
  37. package/dist/lod.js +73 -0
  38. package/dist/lod.js.map +1 -0
  39. package/dist/map-icon-shape.d.ts +14 -0
  40. package/dist/map-icon-shape.d.ts.map +1 -0
  41. package/dist/map-icon-shape.js +106 -0
  42. package/dist/map-icon-shape.js.map +1 -0
  43. package/dist/map-layer.d.ts +24 -0
  44. package/dist/map-layer.d.ts.map +1 -0
  45. package/dist/map-layer.js +167 -0
  46. package/dist/map-layer.js.map +1 -0
  47. package/dist/map-tool-id.d.ts +3 -0
  48. package/dist/map-tool-id.d.ts.map +1 -0
  49. package/dist/map-tool-id.js +3 -0
  50. package/dist/map-tool-id.js.map +1 -0
  51. package/dist/map-tool.d.ts +3 -0
  52. package/dist/map-tool.d.ts.map +1 -0
  53. package/dist/map-tool.js +308 -0
  54. package/dist/map-tool.js.map +1 -0
  55. package/dist/palette.d.ts +8 -0
  56. package/dist/palette.d.ts.map +1 -0
  57. package/dist/palette.js +92 -0
  58. package/dist/palette.js.map +1 -0
  59. package/dist/plugin.d.ts +18 -0
  60. package/dist/plugin.d.ts.map +1 -0
  61. package/dist/plugin.js +137 -0
  62. package/dist/plugin.js.map +1 -0
  63. package/dist/range-erase-state.d.ts +9 -0
  64. package/dist/range-erase-state.d.ts.map +1 -0
  65. package/dist/range-erase-state.js +12 -0
  66. package/dist/range-erase-state.js.map +1 -0
  67. package/dist/range-erase-tool.d.ts +4 -0
  68. package/dist/range-erase-tool.d.ts.map +1 -0
  69. package/dist/range-erase-tool.js +58 -0
  70. package/dist/range-erase-tool.js.map +1 -0
  71. package/dist/range-erase.d.ts +14 -0
  72. package/dist/range-erase.d.ts.map +1 -0
  73. package/dist/range-erase.js +74 -0
  74. package/dist/range-erase.js.map +1 -0
  75. package/dist/reactive-store.d.ts +7 -0
  76. package/dist/reactive-store.d.ts.map +1 -0
  77. package/dist/reactive-store.js +33 -0
  78. package/dist/reactive-store.js.map +1 -0
  79. package/dist/render-config.d.ts +19 -0
  80. package/dist/render-config.d.ts.map +1 -0
  81. package/dist/render-config.js +16 -0
  82. package/dist/render-config.js.map +1 -0
  83. package/dist/svg-nodes.d.ts +12 -0
  84. package/dist/svg-nodes.d.ts.map +1 -0
  85. package/dist/svg-nodes.js +34 -0
  86. package/dist/svg-nodes.js.map +1 -0
  87. package/dist/team/enter-banner.d.ts +6 -0
  88. package/dist/team/enter-banner.d.ts.map +1 -0
  89. package/dist/team/enter-banner.js +111 -0
  90. package/dist/team/enter-banner.js.map +1 -0
  91. package/dist/team/team-layer.d.ts +6 -0
  92. package/dist/team/team-layer.d.ts.map +1 -0
  93. package/dist/team/team-layer.js +121 -0
  94. package/dist/team/team-layer.js.map +1 -0
  95. package/dist/team/team-map-shape.d.ts +20 -0
  96. package/dist/team/team-map-shape.d.ts.map +1 -0
  97. package/dist/team/team-map-shape.js +74 -0
  98. package/dist/team/team-map-shape.js.map +1 -0
  99. package/dist/team/team-ops.d.ts +50 -0
  100. package/dist/team/team-ops.d.ts.map +1 -0
  101. package/dist/team/team-ops.js +176 -0
  102. package/dist/team/team-ops.js.map +1 -0
  103. package/dist/team/team-state.d.ts +9 -0
  104. package/dist/team/team-state.d.ts.map +1 -0
  105. package/dist/team/team-state.js +13 -0
  106. package/dist/team/team-state.js.map +1 -0
  107. package/dist/terrain.d.ts +15 -0
  108. package/dist/terrain.d.ts.map +1 -0
  109. package/dist/terrain.js +309 -0
  110. package/dist/terrain.js.map +1 -0
  111. package/dist/tilemap-shape.d.ts +16 -0
  112. package/dist/tilemap-shape.d.ts.map +1 -0
  113. package/dist/tilemap-shape.js +77 -0
  114. package/dist/tilemap-shape.js.map +1 -0
  115. package/dist/tool-state.d.ts +12 -0
  116. package/dist/tool-state.d.ts.map +1 -0
  117. package/dist/tool-state.js +14 -0
  118. package/dist/tool-state.js.map +1 -0
  119. package/dist/ui/palette.d.ts +7 -0
  120. package/dist/ui/palette.d.ts.map +1 -0
  121. package/dist/ui/palette.js +178 -0
  122. package/dist/ui/palette.js.map +1 -0
  123. package/dist/ui/range-erase-palette.d.ts +5 -0
  124. package/dist/ui/range-erase-palette.d.ts.map +1 -0
  125. package/dist/ui/range-erase-palette.js +42 -0
  126. package/dist/ui/range-erase-palette.js.map +1 -0
  127. package/package.json +49 -0
@@ -0,0 +1,309 @@
1
+ export const TERRAINS = [
2
+ {
3
+ key: "grass",
4
+ name: "草原",
5
+ en: "Grass",
6
+ patternWidth: 24,
7
+ patternHeight: 24,
8
+ nodes: [
9
+ { t: "rect", a: { width: "24", height: "24", fill: "var(--t-grass)" } },
10
+ {
11
+ t: "g",
12
+ a: {
13
+ stroke: "var(--t-grass-d)",
14
+ "stroke-width": "1.6",
15
+ "stroke-linecap": "round",
16
+ fill: "none",
17
+ },
18
+ c: [
19
+ { t: "path", a: { d: "M5 18 V13 M3 16 L5 13 L7 16" } },
20
+ { t: "path", a: { d: "M16 22 V17 M14 20 L16 17 L18 20" } },
21
+ { t: "path", a: { d: "M13 9 V5 M11 7 L13 5 L15 7" } },
22
+ ],
23
+ },
24
+ ],
25
+ },
26
+ {
27
+ key: "forest",
28
+ name: "森",
29
+ en: "Forest",
30
+ patternWidth: 26,
31
+ patternHeight: 26,
32
+ nodes: [
33
+ { t: "rect", a: { width: "26", height: "26", fill: "var(--t-forest)" } },
34
+ {
35
+ t: "g",
36
+ a: {
37
+ stroke: "var(--t-forest-d)",
38
+ "stroke-width": "1.6",
39
+ "stroke-linecap": "round",
40
+ fill: "none",
41
+ },
42
+ c: [
43
+ { t: "path", a: { d: "M4 15 a4 4 0 1 1 8 0" } },
44
+ { t: "path", a: { d: "M8 15 V19" } },
45
+ { t: "path", a: { d: "M17 25 a4 4 0 1 1 8 0" } },
46
+ { t: "path", a: { d: "M17 6 a3.4 3.4 0 1 1 6.8 0" } },
47
+ ],
48
+ },
49
+ ],
50
+ },
51
+ {
52
+ key: "water",
53
+ name: "水辺",
54
+ en: "Water",
55
+ patternWidth: 24,
56
+ patternHeight: 24,
57
+ nodes: [
58
+ { t: "rect", a: { width: "24", height: "24", fill: "var(--t-water)" } },
59
+ {
60
+ t: "g",
61
+ a: {
62
+ stroke: "var(--t-water-d)",
63
+ "stroke-width": "1.6",
64
+ "stroke-linecap": "round",
65
+ fill: "none",
66
+ },
67
+ c: [
68
+ { t: "path", a: { d: "M0 6 Q6 2 12 6 T24 6" } },
69
+ { t: "path", a: { d: "M0 14 Q6 10 12 14 T24 14" } },
70
+ { t: "path", a: { d: "M0 22 Q6 18 12 22 T24 22" } },
71
+ ],
72
+ },
73
+ ],
74
+ },
75
+ {
76
+ key: "sand",
77
+ name: "砂漠",
78
+ en: "Sand",
79
+ patternWidth: 22,
80
+ patternHeight: 22,
81
+ nodes: [
82
+ { t: "rect", a: { width: "22", height: "22", fill: "var(--t-sand)" } },
83
+ {
84
+ t: "g",
85
+ a: {
86
+ stroke: "var(--t-sand-d)",
87
+ "stroke-width": "1.5",
88
+ "stroke-linecap": "round",
89
+ fill: "none",
90
+ },
91
+ c: [
92
+ { t: "path", a: { d: "M2 8 Q8 4 14 8" } },
93
+ { t: "path", a: { d: "M9 16 Q15 12 21 16" } },
94
+ ],
95
+ },
96
+ {
97
+ t: "g",
98
+ a: { fill: "var(--t-sand-d)" },
99
+ c: [
100
+ { t: "circle", a: { cx: "6", cy: "17", r: "1" } },
101
+ { t: "circle", a: { cx: "18", cy: "5", r: "1" } },
102
+ ],
103
+ },
104
+ ],
105
+ },
106
+ {
107
+ key: "mtn",
108
+ name: "山",
109
+ en: "Mountain",
110
+ patternWidth: 24,
111
+ patternHeight: 24,
112
+ nodes: [
113
+ { t: "rect", a: { width: "24", height: "24", fill: "var(--t-mtn)" } },
114
+ {
115
+ t: "g",
116
+ a: {
117
+ stroke: "var(--t-mtn-d)",
118
+ "stroke-width": "1.6",
119
+ "stroke-linecap": "round",
120
+ "stroke-linejoin": "round",
121
+ fill: "none",
122
+ },
123
+ c: [
124
+ { t: "path", a: { d: "M3 15 l4 -5 l4 5" } },
125
+ { t: "path", a: { d: "M14 22 l4 -5 l4 5" } },
126
+ { t: "path", a: { d: "M13 8 l3 -4 l3 4" } },
127
+ ],
128
+ },
129
+ ],
130
+ },
131
+ {
132
+ key: "path",
133
+ name: "道",
134
+ en: "Road",
135
+ patternWidth: 20,
136
+ patternHeight: 20,
137
+ nodes: [
138
+ { t: "rect", a: { width: "20", height: "20", fill: "var(--t-path)" } },
139
+ {
140
+ t: "g",
141
+ a: { fill: "var(--t-path-d)" },
142
+ c: [
143
+ { t: "circle", a: { cx: "5", cy: "6", r: "2" } },
144
+ { t: "circle", a: { cx: "14", cy: "12", r: "2.2" } },
145
+ { t: "circle", a: { cx: "9", cy: "16", r: "1.6" } },
146
+ ],
147
+ },
148
+ ],
149
+ },
150
+ {
151
+ key: "snow",
152
+ name: "雪原",
153
+ en: "Snow",
154
+ patternWidth: 24,
155
+ patternHeight: 24,
156
+ nodes: [
157
+ { t: "rect", a: { width: "24", height: "24", fill: "var(--t-snow)" } },
158
+ {
159
+ t: "g",
160
+ a: {
161
+ stroke: "var(--t-snow-d)",
162
+ "stroke-width": "1.5",
163
+ "stroke-linecap": "round",
164
+ fill: "none",
165
+ },
166
+ c: [
167
+ { t: "path", a: { d: "M6 4 V10 M3.4 5.6 L8.6 8.6 M8.6 5.6 L3.4 8.6" } },
168
+ { t: "path", a: { d: "M17 15 V20 M14.8 16.2 L19.2 18.8 M19.2 16.2 L14.8 18.8" } },
169
+ { t: "path", a: { d: "M0 13 Q5 11 10 13" } },
170
+ ],
171
+ },
172
+ ],
173
+ },
174
+ {
175
+ key: "swamp",
176
+ name: "沼地",
177
+ en: "Swamp",
178
+ patternWidth: 26,
179
+ patternHeight: 26,
180
+ nodes: [
181
+ { t: "rect", a: { width: "26", height: "26", fill: "var(--t-swamp)" } },
182
+ {
183
+ t: "g",
184
+ a: {
185
+ stroke: "var(--t-swamp-d)",
186
+ "stroke-width": "1.6",
187
+ "stroke-linecap": "round",
188
+ fill: "none",
189
+ },
190
+ c: [
191
+ { t: "path", a: { d: "M5 22 V14 M8 22 V16 M2 22 V17" } },
192
+ { t: "path", a: { d: "M17 10 a3.6 3.6 0 1 0 7.2 0 a3.6 3.6 0 1 0 -7.2 0" } },
193
+ { t: "path", a: { d: "M13 24 Q17 21 21 24" } },
194
+ ],
195
+ },
196
+ ],
197
+ },
198
+ {
199
+ key: "lava",
200
+ name: "溶岩",
201
+ en: "Lava",
202
+ patternWidth: 24,
203
+ patternHeight: 24,
204
+ nodes: [
205
+ { t: "rect", a: { width: "24", height: "24", fill: "var(--t-lava)" } },
206
+ {
207
+ t: "g",
208
+ a: {
209
+ stroke: "var(--t-lava-d)",
210
+ "stroke-width": "1.7",
211
+ "stroke-linecap": "round",
212
+ "stroke-linejoin": "round",
213
+ fill: "none",
214
+ },
215
+ c: [
216
+ { t: "path", a: { d: "M1 5 L7 9 L4 15 L9 20" } },
217
+ { t: "path", a: { d: "M14 2 L17 8 L23 10" } },
218
+ { t: "path", a: { d: "M13 22 L18 17 L24 19" } },
219
+ ],
220
+ },
221
+ ],
222
+ },
223
+ {
224
+ key: "stone",
225
+ name: "石床",
226
+ en: "Stone Floor",
227
+ patternWidth: 26,
228
+ patternHeight: 20,
229
+ nodes: [
230
+ { t: "rect", a: { width: "26", height: "20", fill: "var(--t-stone)" } },
231
+ {
232
+ t: "g",
233
+ a: {
234
+ stroke: "var(--t-stone-d)",
235
+ "stroke-width": "1.6",
236
+ "stroke-linecap": "round",
237
+ fill: "none",
238
+ },
239
+ c: [
240
+ { t: "path", a: { d: "M0 10 H26 M0 20 H26" } },
241
+ { t: "path", a: { d: "M8 0 V10 M20 10 V20" } },
242
+ ],
243
+ },
244
+ ],
245
+ },
246
+ {
247
+ key: "farm",
248
+ name: "畑",
249
+ en: "Farmland",
250
+ patternWidth: 22,
251
+ patternHeight: 22,
252
+ nodes: [
253
+ { t: "rect", a: { width: "22", height: "22", fill: "var(--t-farm)" } },
254
+ {
255
+ t: "g",
256
+ a: {
257
+ stroke: "var(--t-farm-d)",
258
+ "stroke-width": "1.7",
259
+ "stroke-linecap": "round",
260
+ fill: "none",
261
+ },
262
+ c: [
263
+ { t: "path", a: { d: "M0 5 Q11 2.5 22 5" } },
264
+ { t: "path", a: { d: "M0 12 Q11 9.5 22 12" } },
265
+ { t: "path", a: { d: "M0 19 Q11 16.5 22 19" } },
266
+ ],
267
+ },
268
+ ],
269
+ },
270
+ {
271
+ key: "flower",
272
+ name: "花畑",
273
+ en: "Flower Field",
274
+ patternWidth: 24,
275
+ patternHeight: 24,
276
+ nodes: [
277
+ { t: "rect", a: { width: "24", height: "24", fill: "var(--t-flower)" } },
278
+ {
279
+ t: "g",
280
+ a: {
281
+ stroke: "var(--t-flower-d)",
282
+ "stroke-width": "1.5",
283
+ "stroke-linecap": "round",
284
+ fill: "none",
285
+ },
286
+ c: [
287
+ { t: "path", a: { d: "M4 20 V15 M15 11 V6" } },
288
+ {
289
+ t: "path",
290
+ a: {
291
+ d: "M4 12 a2.4 2.4 0 1 0 4.8 0 a2.4 2.4 0 1 0 -4.8 0",
292
+ transform: "translate(-2 1)",
293
+ },
294
+ },
295
+ { t: "path", a: { d: "M13 3 a2.4 2.4 0 1 0 4.8 0 a2.4 2.4 0 1 0 -4.8 0" } },
296
+ { t: "path", a: { d: "M17 20 a2 2 0 1 0 4 0 a2 2 0 1 0 -4 0" } },
297
+ ],
298
+ },
299
+ ],
300
+ },
301
+ ];
302
+ export const TERRAIN_KEYS = TERRAINS.map((t) => t.key);
303
+ export function terrainPatternId(key) {
304
+ return `uskmap-pat-${key}`;
305
+ }
306
+ export function terrainDarkVar(key) {
307
+ return `var(--t-${key}-d)`;
308
+ }
309
+ //# sourceMappingURL=terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain.js","sourceRoot":"","sources":["../src/terrain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BoundingBox, ShapeData, ShapeDefinition } from "@edv4h/usketch-shared";
2
+ import { type Cells } from "./autotile.js";
3
+ export declare const TILEMAP_TYPE = "tilemap";
4
+ export declare const DEFAULT_TILE = 40;
5
+ export interface TileMapShapeData extends ShapeData {
6
+ type: "tilemap";
7
+ tile: number;
8
+ cells: Cells;
9
+ }
10
+ export declare function isTileMap(shape: ShapeData): shape is TileMapShapeData;
11
+ /** Create a new empty tilemap (locked substrate). */
12
+ export declare function makeTileMap(tile: number): TileMapShapeData;
13
+ /** Bounds patch to keep x/y/width/height in sync with the painted cells. */
14
+ export declare function boundsPatch(cells: Cells, tile: number): BoundingBox;
15
+ export declare function createTileMapShapeDefinition(tile?: number): ShapeDefinition;
16
+ //# sourceMappingURL=tilemap-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilemap-shape.d.ts","sourceRoot":"","sources":["../src/tilemap-shape.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,KAAK,KAAK,EAAsC,MAAM,eAAe,CAAC;AAG/E,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACb;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAc1D;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAEnE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,MAAqB,GAAG,eAAe,CA8CzF"}
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { generateId } from "@edv4h/usketch-shared";
3
+ import { cellKey, cellsBounds, parseCellKey } from "./autotile.js";
4
+ export const TILEMAP_TYPE = "tilemap";
5
+ export const DEFAULT_TILE = 40;
6
+ export function isTileMap(shape) {
7
+ return shape.type === TILEMAP_TYPE;
8
+ }
9
+ /** Create a new empty tilemap (locked substrate). */
10
+ export function makeTileMap(tile) {
11
+ const bounds = { x: 0, y: 0, width: 0, height: 0 };
12
+ return {
13
+ id: generateId(),
14
+ type: "tilemap",
15
+ x: bounds.x,
16
+ y: bounds.y,
17
+ width: bounds.width,
18
+ height: bounds.height,
19
+ style: { fill: "transparent", stroke: "transparent", strokeWidth: 0, opacity: 1 },
20
+ tile,
21
+ cells: {},
22
+ locked: true,
23
+ };
24
+ }
25
+ /** Bounds patch to keep x/y/width/height in sync with the painted cells. */
26
+ export function boundsPatch(cells, tile) {
27
+ return cellsBounds(cells, tile);
28
+ }
29
+ export function createTileMapShapeDefinition(tile = DEFAULT_TILE) {
30
+ return {
31
+ // Drawing is done by the MapLayer; the shape itself renders nothing.
32
+ render: () => _jsx("g", {}),
33
+ renderTarget: "svg",
34
+ getBounds: (data) => {
35
+ const d = data;
36
+ return cellsBounds(d.cells ?? {}, d.tile ?? tile);
37
+ },
38
+ // Never selectable via pointer — it is a substrate, not an object.
39
+ hitTest: () => false,
40
+ resizable: false,
41
+ resize: (data) => data,
42
+ createDefault: (params) => ({
43
+ ...makeTileMap(tile),
44
+ id: params.id,
45
+ }),
46
+ // Locked, so user-move is not expected; support it anyway by shifting cells
47
+ // on whole-tile deltas (keeps the grid aligned).
48
+ move: (data, dx, dy) => {
49
+ const d = data;
50
+ const t = d.tile ?? tile;
51
+ const dc = Math.round(dx / t);
52
+ const dr = Math.round(dy / t);
53
+ if (dc === 0 && dr === 0)
54
+ return {};
55
+ const next = {};
56
+ for (const [key, terrain] of Object.entries(d.cells)) {
57
+ const [c, r] = parseCellKey(key);
58
+ next[cellKey(c + dc, r + dr)] = terrain;
59
+ }
60
+ return { cells: next, ...cellsBounds(next, t) };
61
+ },
62
+ serializeForAi: (data) => {
63
+ const d = data;
64
+ const used = new Set(Object.values(d.cells ?? {}));
65
+ return {
66
+ kind: "tilemap",
67
+ tileCount: Object.keys(d.cells ?? {}).length,
68
+ terrains: [...used],
69
+ };
70
+ },
71
+ debugFields: (data) => {
72
+ const d = data;
73
+ return { tile: d.tile, cellCount: Object.keys(d.cells ?? {}).length };
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=tilemap-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilemap-shape.js","sourceRoot":"","sources":["../src/tilemap-shape.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { TerrainKey } from "./terrain.js";
2
+ export type MapMode = "brush" | "eraser" | "fill" | "stamp" | "generate" | "team";
3
+ export interface MapToolState {
4
+ mode: MapMode;
5
+ terrain: TerrainKey;
6
+ /** Icon key (from ICONS) used by the "stamp" mode. */
7
+ iconKey: string;
8
+ }
9
+ export declare const toolStateStore: import("./reactive-store.js").ReactiveStore<MapToolState>;
10
+ /** Subscribe a component to the current map-tool state. */
11
+ export declare function useMapToolState(): MapToolState;
12
+ //# sourceMappingURL=tool-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-state.d.ts","sourceRoot":"","sources":["../src/tool-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAElF,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;IACpB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc,2DAIzB,CAAC;AAEH,2DAA2D;AAC3D,wBAAgB,eAAe,IAAI,YAAY,CAE9C"}
@@ -0,0 +1,14 @@
1
+ // Active map-tool interaction state, shared between the palette UI and the tool.
2
+ // Module-scoped, app-local (not synced).
3
+ import { useSyncExternalStore } from "react";
4
+ import { createReactiveStore } from "./reactive-store.js";
5
+ export const toolStateStore = createReactiveStore({
6
+ mode: "brush",
7
+ terrain: "grass",
8
+ iconKey: "town",
9
+ });
10
+ /** Subscribe a component to the current map-tool state. */
11
+ export function useMapToolState() {
12
+ return useSyncExternalStore(toolStateStore.subscribe, toolStateStore.get, toolStateStore.get);
13
+ }
14
+ //# sourceMappingURL=tool-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-state.js","sourceRoot":"","sources":["../src/tool-state.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,yCAAyC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAY1D,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAe;IAC/D,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,MAAM;CACf,CAAC,CAAC;AAEH,2DAA2D;AAC3D,MAAM,UAAU,eAAe;IAC9B,OAAO,oBAAoB,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { BoardStore, CommandRegistry } from "@edv4h/usketch-shared";
2
+ export declare function MapPalette({ store, commands, tile, }: {
3
+ store: BoardStore;
4
+ commands: CommandRegistry;
5
+ tile: number;
6
+ }): import("react").JSX.Element | null;
7
+ //# sourceMappingURL=palette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/ui/palette.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiEzE,wBAAgB,UAAU,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,IAAI,GACJ,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb,sCA+YA"}