wgsl-edit 0.0.13 → 0.0.15
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/dist/{WgslEdit-BSUXQfGS.js → WgslEdit-Cnm70aie.js} +18 -4
- package/dist/WgslEdit.d.ts +2 -2
- package/dist/WgslEdit.js +1 -1
- package/dist/index.js +1 -1
- package/dist/wgsl-edit.js +38 -104
- package/package.json +3 -3
- package/src/WgslEdit.ts +16 -3
|
@@ -126,12 +126,17 @@ var WgslEdit = class extends HTMLElement {
|
|
|
126
126
|
this.updateLint();
|
|
127
127
|
this.dispatchChange();
|
|
128
128
|
}
|
|
129
|
-
/** Active file content (
|
|
129
|
+
/** Active file content (single-file API). */
|
|
130
130
|
get source() {
|
|
131
131
|
return this.editorView?.state.doc.toString() ?? this._pendingSource ?? "";
|
|
132
132
|
}
|
|
133
|
-
/** Set active file content (
|
|
133
|
+
/** Set active file content (single-file API). Auto-creates a default file entry. */
|
|
134
134
|
set source(value) {
|
|
135
|
+
if (!this._activeFile && this._files.size === 0) {
|
|
136
|
+
this._files.set("main.wesl", { doc: Text.of(value.split("\n")) });
|
|
137
|
+
this._activeFile = "main.wesl";
|
|
138
|
+
this.renderTabs();
|
|
139
|
+
}
|
|
135
140
|
if (this.editorView) {
|
|
136
141
|
const to = this.editorView.state.doc.length;
|
|
137
142
|
this.editorView.dispatch({ changes: {
|
|
@@ -139,7 +144,11 @@ var WgslEdit = class extends HTMLElement {
|
|
|
139
144
|
to,
|
|
140
145
|
insert: value
|
|
141
146
|
} });
|
|
142
|
-
} else
|
|
147
|
+
} else {
|
|
148
|
+
this._pendingSource = value;
|
|
149
|
+
const entry = this._files.get(this._activeFile);
|
|
150
|
+
if (entry) entry.doc = Text.of(value.split("\n"));
|
|
151
|
+
}
|
|
143
152
|
}
|
|
144
153
|
/** All file contents keyed by module path (e.g., "package::main"). */
|
|
145
154
|
get sources() {
|
|
@@ -347,6 +356,10 @@ var WgslEdit = class extends HTMLElement {
|
|
|
347
356
|
const initialDoc = this._pendingSource ?? (firstFile ? this._files.get(firstFile).doc.toString() : "");
|
|
348
357
|
this._pendingSource = null;
|
|
349
358
|
if (firstFile) this._activeFile = firstFile;
|
|
359
|
+
else if (initialDoc) {
|
|
360
|
+
this._files.set("main.wesl", { doc: Text.of(initialDoc.split("\n")) });
|
|
361
|
+
this._activeFile = "main.wesl";
|
|
362
|
+
}
|
|
350
363
|
this.editorView = new EditorView({
|
|
351
364
|
state: EditorState.create({
|
|
352
365
|
doc: initialDoc,
|
|
@@ -371,7 +384,8 @@ var WgslEdit = class extends HTMLElement {
|
|
|
371
384
|
buildExtensions() {
|
|
372
385
|
const baseTheme = EditorView.theme({
|
|
373
386
|
".cm-content": { padding: "0" },
|
|
374
|
-
".cm-line": { padding: "0" }
|
|
387
|
+
".cm-line": { padding: "0" },
|
|
388
|
+
".cm-panels": { position: "relative" }
|
|
375
389
|
});
|
|
376
390
|
return [
|
|
377
391
|
basicSetup,
|
package/dist/WgslEdit.d.ts
CHANGED
|
@@ -40,9 +40,9 @@ declare class WgslEdit extends HTMLElement {
|
|
|
40
40
|
/** Conditions for conditional compilation (@if/@elif/@else). */
|
|
41
41
|
get conditions(): Conditions;
|
|
42
42
|
set conditions(value: Conditions);
|
|
43
|
-
/** Active file content (
|
|
43
|
+
/** Active file content (single-file API). */
|
|
44
44
|
get source(): string;
|
|
45
|
-
/** Set active file content (
|
|
45
|
+
/** Set active file content (single-file API). Auto-creates a default file entry. */
|
|
46
46
|
set source(value: string);
|
|
47
47
|
/** All file contents keyed by module path (e.g., "package::main"). */
|
|
48
48
|
get sources(): Record<string, string>;
|
package/dist/WgslEdit.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { wesl, weslLanguage } from "./Language.js";
|
|
2
|
-
import { t as WgslEdit } from "./WgslEdit-
|
|
2
|
+
import { t as WgslEdit } from "./WgslEdit-Cnm70aie.js";
|
|
3
3
|
|
|
4
4
|
//#region src/index.ts
|
|
5
5
|
if (!customElements.get("wgsl-edit")) customElements.define("wgsl-edit", WgslEdit);
|
package/dist/wgsl-edit.js
CHANGED
|
@@ -1473,9 +1473,9 @@ var Parser = class {
|
|
|
1473
1473
|
Run a full parse, returning the resulting tree.
|
|
1474
1474
|
*/
|
|
1475
1475
|
parse(input, fragments, ranges) {
|
|
1476
|
-
let parse
|
|
1476
|
+
let parse = this.startParse(input, fragments, ranges);
|
|
1477
1477
|
for (;;) {
|
|
1478
|
-
let done = parse
|
|
1478
|
+
let done = parse.advance();
|
|
1479
1479
|
if (done) return done;
|
|
1480
1480
|
}
|
|
1481
1481
|
}
|
|
@@ -3101,8 +3101,8 @@ var StateField = class StateField {
|
|
|
3101
3101
|
return field;
|
|
3102
3102
|
}
|
|
3103
3103
|
create(state) {
|
|
3104
|
-
let init
|
|
3105
|
-
return ((init
|
|
3104
|
+
let init = state.facet(initField).find((i$2) => i$2.field == this);
|
|
3105
|
+
return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);
|
|
3106
3106
|
}
|
|
3107
3107
|
/**
|
|
3108
3108
|
@internal
|
|
@@ -3122,8 +3122,8 @@ var StateField = class StateField {
|
|
|
3122
3122
|
return 1;
|
|
3123
3123
|
},
|
|
3124
3124
|
reconfigure: (state, oldState) => {
|
|
3125
|
-
let init
|
|
3126
|
-
if ((reInit = init
|
|
3125
|
+
let init = state.facet(initField), oldInit = oldState.facet(initField), reInit;
|
|
3126
|
+
if ((reInit = init.find((i$2) => i$2.field == this)) && reInit != oldInit.find((i$2) => i$2.field == this)) {
|
|
3127
3127
|
state.values[idx] = reInit.create(state);
|
|
3128
3128
|
return 1;
|
|
3129
3129
|
}
|
|
@@ -4902,8 +4902,8 @@ function findColumn(string$1, col, tabSize, strict) {
|
|
|
4902
4902
|
|
|
4903
4903
|
//#endregion
|
|
4904
4904
|
//#region ../../node_modules/.pnpm/style-mod@4.1.2/node_modules/style-mod/src/style-mod.js
|
|
4905
|
-
const C
|
|
4906
|
-
const COUNT = typeof Symbol == "undefined" ? "__" + C
|
|
4905
|
+
const C = "ͼ";
|
|
4906
|
+
const COUNT = typeof Symbol == "undefined" ? "__" + C : Symbol.for(C);
|
|
4907
4907
|
const SET = typeof Symbol == "undefined" ? "__styleSet" + Math.floor(Math.random() * 1e8) : Symbol("styleSet");
|
|
4908
4908
|
const top = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : {};
|
|
4909
4909
|
var StyleModule = class {
|
|
@@ -4934,7 +4934,7 @@ var StyleModule = class {
|
|
|
4934
4934
|
static newName() {
|
|
4935
4935
|
let id = top[COUNT] || 1;
|
|
4936
4936
|
top[COUNT] = id + 1;
|
|
4937
|
-
return C
|
|
4937
|
+
return C + id.toString(36);
|
|
4938
4938
|
}
|
|
4939
4939
|
static mount(root, modules, options) {
|
|
4940
4940
|
let set = root[SET], nonce = options && options.nonce;
|
|
@@ -18725,9 +18725,9 @@ var LRParser = class LRParser extends Parser {
|
|
|
18725
18725
|
this.top = this.topRules[Object.keys(this.topRules)[0]];
|
|
18726
18726
|
}
|
|
18727
18727
|
createParse(input, fragments, ranges) {
|
|
18728
|
-
let parse
|
|
18729
|
-
for (let w of this.wrappers) parse
|
|
18730
|
-
return parse
|
|
18728
|
+
let parse = new Parse(this, input, fragments, ranges);
|
|
18729
|
+
for (let w of this.wrappers) parse = w(parse, input, fragments, ranges);
|
|
18730
|
+
return parse;
|
|
18731
18731
|
}
|
|
18732
18732
|
/**
|
|
18733
18733
|
Get a goto table entry @internal
|
|
@@ -19956,8 +19956,8 @@ function parseCommaList(ctx, parseItem) {
|
|
|
19956
19956
|
return items;
|
|
19957
19957
|
}
|
|
19958
19958
|
/** Yield parsed elements until parser returns null. */
|
|
19959
|
-
function* parseMany(ctx, parse
|
|
19960
|
-
for (let elem = parse
|
|
19959
|
+
function* parseMany(ctx, parse) {
|
|
19960
|
+
for (let elem = parse(ctx); elem; elem = parse(ctx)) yield elem;
|
|
19961
19961
|
}
|
|
19962
19962
|
/** Create a NameElem from a word token. */
|
|
19963
19963
|
function makeNameElem(token) {
|
|
@@ -27634,89 +27634,14 @@ const minimalSetup = [
|
|
|
27634
27634
|
keymap.of([...defaultKeymap, ...historyKeymap])
|
|
27635
27635
|
];
|
|
27636
27636
|
|
|
27637
|
-
//#endregion
|
|
27638
|
-
//#region ../../node_modules/.pnpm/es-module-lexer@1.7.0/node_modules/es-module-lexer/dist/lexer.js
|
|
27639
|
-
var ImportType;
|
|
27640
|
-
(function(A$1) {
|
|
27641
|
-
A$1[A$1.Static = 1] = "Static", A$1[A$1.Dynamic = 2] = "Dynamic", A$1[A$1.ImportMeta = 3] = "ImportMeta", A$1[A$1.StaticSourcePhase = 4] = "StaticSourcePhase", A$1[A$1.DynamicSourcePhase = 5] = "DynamicSourcePhase", A$1[A$1.StaticDeferPhase = 6] = "StaticDeferPhase", A$1[A$1.DynamicDeferPhase = 7] = "DynamicDeferPhase";
|
|
27642
|
-
})(ImportType || (ImportType = {}));
|
|
27643
|
-
const A = 1 === new Uint8Array(new Uint16Array([1]).buffer)[0];
|
|
27644
|
-
function parse(E$1, g = "@") {
|
|
27645
|
-
if (!C) return init.then((() => parse(E$1)));
|
|
27646
|
-
const I = E$1.length + 1, w = (C.__heap_base.value || C.__heap_base) + 4 * I - C.memory.buffer.byteLength;
|
|
27647
|
-
w > 0 && C.memory.grow(Math.ceil(w / 65536));
|
|
27648
|
-
const K = C.sa(I - 1);
|
|
27649
|
-
if ((A ? B : Q)(E$1, new Uint16Array(C.memory.buffer, K, I)), !C.parse()) throw Object.assign(/* @__PURE__ */ new Error(`Parse error ${g}:${E$1.slice(0, C.e()).split("\n").length}:${C.e() - E$1.lastIndexOf("\n", C.e() - 1)}`), { idx: C.e() });
|
|
27650
|
-
const o = [], D = [];
|
|
27651
|
-
for (; C.ri();) {
|
|
27652
|
-
const A$1 = C.is(), Q$1 = C.ie(), B$1 = C.it(), g$1 = C.ai(), I$1 = C.id(), w$1 = C.ss(), K$1 = C.se();
|
|
27653
|
-
let D$1;
|
|
27654
|
-
C.ip() && (D$1 = k(E$1.slice(-1 === I$1 ? A$1 - 1 : A$1, -1 === I$1 ? Q$1 + 1 : Q$1))), o.push({
|
|
27655
|
-
n: D$1,
|
|
27656
|
-
t: B$1,
|
|
27657
|
-
s: A$1,
|
|
27658
|
-
e: Q$1,
|
|
27659
|
-
ss: w$1,
|
|
27660
|
-
se: K$1,
|
|
27661
|
-
d: I$1,
|
|
27662
|
-
a: g$1
|
|
27663
|
-
});
|
|
27664
|
-
}
|
|
27665
|
-
for (; C.re();) {
|
|
27666
|
-
const A$1 = C.es(), Q$1 = C.ee(), B$1 = C.els(), g$1 = C.ele(), I$1 = E$1.slice(A$1, Q$1), w$1 = I$1[0], K$1 = B$1 < 0 ? void 0 : E$1.slice(B$1, g$1), o$1 = K$1 ? K$1[0] : "";
|
|
27667
|
-
D.push({
|
|
27668
|
-
s: A$1,
|
|
27669
|
-
e: Q$1,
|
|
27670
|
-
ls: B$1,
|
|
27671
|
-
le: g$1,
|
|
27672
|
-
n: "\"" === w$1 || "'" === w$1 ? k(I$1) : I$1,
|
|
27673
|
-
ln: "\"" === o$1 || "'" === o$1 ? k(K$1) : K$1
|
|
27674
|
-
});
|
|
27675
|
-
}
|
|
27676
|
-
function k(A$1) {
|
|
27677
|
-
try {
|
|
27678
|
-
return (0, eval)(A$1);
|
|
27679
|
-
} catch (A$2) {}
|
|
27680
|
-
}
|
|
27681
|
-
return [
|
|
27682
|
-
o,
|
|
27683
|
-
D,
|
|
27684
|
-
!!C.f(),
|
|
27685
|
-
!!C.ms()
|
|
27686
|
-
];
|
|
27687
|
-
}
|
|
27688
|
-
function Q(A$1, Q$1) {
|
|
27689
|
-
const B$1 = A$1.length;
|
|
27690
|
-
let C$2 = 0;
|
|
27691
|
-
for (; C$2 < B$1;) {
|
|
27692
|
-
const B$2 = A$1.charCodeAt(C$2);
|
|
27693
|
-
Q$1[C$2++] = (255 & B$2) << 8 | B$2 >>> 8;
|
|
27694
|
-
}
|
|
27695
|
-
}
|
|
27696
|
-
function B(A$1, Q$1) {
|
|
27697
|
-
const B$1 = A$1.length;
|
|
27698
|
-
let C$2 = 0;
|
|
27699
|
-
for (; C$2 < B$1;) Q$1[C$2] = A$1.charCodeAt(C$2++);
|
|
27700
|
-
}
|
|
27701
|
-
let C;
|
|
27702
|
-
const E = () => {
|
|
27703
|
-
return A$1 = "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GzYCHAtBAEEAKAKwCkECajYCsAoCQAJAAkACQEEAECkiAUHhAEYNACABQfcARg0BQQAoArAKIQEMAgtBACgCsAoiAUECakHACEEKEC8NAUEGIQIMAgtBACgCsAoiAS8BAkHpAEcNACABLwEEQfQARw0AQQQhAiABLwEGQegARg0BC0EAIAFBfmo2ArAKDwtBACABIAJBAXRqNgKwCgJAQQEQKUH7AEYNAEEAIAE2ArAKDwtBACgCsAoiACECA0BBACACQQJqNgKwCgJAAkACQEEBECkiAkEiRg0AIAJBJ0cNAUEnEBpBAEEAKAKwCkECajYCsApBARApIQIMAgtBIhAaQQBBACgCsApBAmo2ArAKQQEQKSECDAELIAIQLCECCwJAIAJBOkYNAEEAIAE2ArAKDwtBAEEAKAKwCkECajYCsAoCQEEBECkiAkEiRg0AIAJBJ0YNAEEAIAE2ArAKDwsgAhAaQQBBACgCsApBAmo2ArAKAkACQEEBECkiAkEsRg0AIAJB/QBGDQFBACABNgKwCg8LQQBBACgCsApBAmo2ArAKQQEQKUH9AEYNAEEAKAKwCiECDAELC0EAKALwCSIBIAA2AhAgAUEAKAKwCkECajYCDAttAQJ/AkACQANAAkAgAEH//wNxIgFBd2oiAkEXSw0AQQEgAnRBn4CABHENAgsgAUGgAUYNASAAIQIgARAoDQJBACECQQBBACgCsAoiAEECajYCsAogAC8BAiIADQAMAgsLIAAhAgsgAkH//wNxC6sBAQR/AkACQEEAKAKwCiICLwEAIgNB4QBGDQAgASEEIAAhBQwBC0EAIAJBBGo2ArAKQQEQKSECQQAoArAKIQUCQAJAIAJBIkYNACACQSdGDQAgAhAsGkEAKAKwCiEEDAELIAIQGkEAQQAoArAKQQJqIgQ2ArAKC0EBECkhA0EAKAKwCiECCwJAIAIgBUYNACAFIARBACAAIAAgAUYiAhtBACABIAIbEAILIAMLcgEEf0EAKAKwCiEAQQAoArQKIQECQAJAA0AgAEECaiECIAAgAU8NAQJAAkAgAi8BACIDQaR/ag4CAQQACyACIQAgA0F2ag4EAgEBAgELIABBBGohAAwACwtBACACNgKwChAlQQAPC0EAIAI2ArAKQd0AC0kBA39BACEDAkAgAkUNAAJAA0AgAC0AACIEIAEtAAAiBUcNASABQQFqIQEgAEEBaiEAIAJBf2oiAg0ADAILCyAEIAVrIQMLIAMLC+wBAgBBgAgLzgEAAHgAcABvAHIAdABtAHAAbwByAHQAZgBvAHIAZQB0AGEAbwB1AHIAYwBlAHIAbwBtAHUAbgBjAHQAaQBvAG4AcwBzAGUAcgB0AHYAbwB5AGkAZQBkAGUAbABlAGMAbwBuAHQAaQBuAGkAbgBzAHQAYQBuAHQAeQBiAHIAZQBhAHIAZQB0AHUAcgBkAGUAYgB1AGcAZwBlAGEAdwBhAGkAdABoAHIAdwBoAGkAbABlAGkAZgBjAGEAdABjAGYAaQBuAGEAbABsAGUAbABzAABB0AkLEAEAAAACAAAAAAQAAEA5AAA=", "undefined" != typeof Buffer ? Buffer.from(A$1, "base64") : Uint8Array.from(atob(A$1), ((A$2) => A$2.charCodeAt(0)));
|
|
27704
|
-
var A$1;
|
|
27705
|
-
};
|
|
27706
|
-
const init = WebAssembly.compile(E()).then(WebAssembly.instantiate).then((({ exports: A$1 }) => {
|
|
27707
|
-
C = A$1;
|
|
27708
|
-
}));
|
|
27709
|
-
|
|
27710
27637
|
//#endregion
|
|
27711
27638
|
//#region ../wesl-fetch/src/BundleHydrator.ts
|
|
27712
|
-
const
|
|
27639
|
+
const importPattern = /import\s+(?:\*\s+as\s+)?(\w+)\s+from\s+["']([^"']+)["']/g;
|
|
27713
27640
|
const nestedBundlePattern = /package\/dist\/(.+)\/weslBundle\.js$/;
|
|
27714
27641
|
const rootBundlePattern = /package\/dist\/weslBundle\.js$/;
|
|
27715
27642
|
const weslBundleExportPattern = /export\s+const\s+weslBundle\s*=\s*({[\s\S]+});?\s*$/m;
|
|
27716
|
-
const importVarPattern = /import\s+(\w+)\s+from/;
|
|
27717
27643
|
/** Parse bundle files into a registry without hydrating. */
|
|
27718
27644
|
async function bundleRegistry(bundleFiles, registry = /* @__PURE__ */ new Map()) {
|
|
27719
|
-
await initPromise;
|
|
27720
27645
|
for (const file of bundleFiles) {
|
|
27721
27646
|
const { content: content$1, packagePath, packageName } = file;
|
|
27722
27647
|
const bundleInfo = parseBundleImports(content$1);
|
|
@@ -27732,19 +27657,14 @@ async function hydrateBundleRegistry(registry, fetcher) {
|
|
|
27732
27657
|
for (const path of registry.keys()) bundles.push(await hydrateBundle(path, registry, hydrated, fetcher));
|
|
27733
27658
|
return bundles;
|
|
27734
27659
|
}
|
|
27735
|
-
/** Parse ES module imports from bundle code
|
|
27660
|
+
/** Parse ES module imports from bundle code. */
|
|
27736
27661
|
function parseBundleImports(code$1) {
|
|
27737
27662
|
const exportMatch = code$1.match(weslBundleExportPattern);
|
|
27738
27663
|
if (!exportMatch) throw new Error("Could not find weslBundle export in bundle");
|
|
27739
|
-
const
|
|
27740
|
-
const
|
|
27741
|
-
|
|
27742
|
-
|
|
27743
|
-
if (!match) throw new Error(`Could not parse import variable name from: ${statement}`);
|
|
27744
|
-
return {
|
|
27745
|
-
varName: match[1],
|
|
27746
|
-
path: imp.n.replace(/\//g, "::")
|
|
27747
|
-
};
|
|
27664
|
+
const parsedImports = [];
|
|
27665
|
+
for (const match of code$1.matchAll(importPattern)) parsedImports.push({
|
|
27666
|
+
varName: match[1],
|
|
27667
|
+
path: match[2].replace(/\//g, "::")
|
|
27748
27668
|
});
|
|
27749
27669
|
return {
|
|
27750
27670
|
bundleLiteral: exportMatch[1],
|
|
@@ -28400,12 +28320,17 @@ var WgslEdit = class extends HTMLElement {
|
|
|
28400
28320
|
this.updateLint();
|
|
28401
28321
|
this.dispatchChange();
|
|
28402
28322
|
}
|
|
28403
|
-
/** Active file content (
|
|
28323
|
+
/** Active file content (single-file API). */
|
|
28404
28324
|
get source() {
|
|
28405
28325
|
return this.editorView?.state.doc.toString() ?? this._pendingSource ?? "";
|
|
28406
28326
|
}
|
|
28407
|
-
/** Set active file content (
|
|
28327
|
+
/** Set active file content (single-file API). Auto-creates a default file entry. */
|
|
28408
28328
|
set source(value) {
|
|
28329
|
+
if (!this._activeFile && this._files.size === 0) {
|
|
28330
|
+
this._files.set("main.wesl", { doc: Text.of(value.split("\n")) });
|
|
28331
|
+
this._activeFile = "main.wesl";
|
|
28332
|
+
this.renderTabs();
|
|
28333
|
+
}
|
|
28409
28334
|
if (this.editorView) {
|
|
28410
28335
|
const to = this.editorView.state.doc.length;
|
|
28411
28336
|
this.editorView.dispatch({ changes: {
|
|
@@ -28413,7 +28338,11 @@ var WgslEdit = class extends HTMLElement {
|
|
|
28413
28338
|
to,
|
|
28414
28339
|
insert: value
|
|
28415
28340
|
} });
|
|
28416
|
-
} else
|
|
28341
|
+
} else {
|
|
28342
|
+
this._pendingSource = value;
|
|
28343
|
+
const entry = this._files.get(this._activeFile);
|
|
28344
|
+
if (entry) entry.doc = Text.of(value.split("\n"));
|
|
28345
|
+
}
|
|
28417
28346
|
}
|
|
28418
28347
|
/** All file contents keyed by module path (e.g., "package::main"). */
|
|
28419
28348
|
get sources() {
|
|
@@ -28621,6 +28550,10 @@ var WgslEdit = class extends HTMLElement {
|
|
|
28621
28550
|
const initialDoc = this._pendingSource ?? (firstFile ? this._files.get(firstFile).doc.toString() : "");
|
|
28622
28551
|
this._pendingSource = null;
|
|
28623
28552
|
if (firstFile) this._activeFile = firstFile;
|
|
28553
|
+
else if (initialDoc) {
|
|
28554
|
+
this._files.set("main.wesl", { doc: Text.of(initialDoc.split("\n")) });
|
|
28555
|
+
this._activeFile = "main.wesl";
|
|
28556
|
+
}
|
|
28624
28557
|
this.editorView = new EditorView({
|
|
28625
28558
|
state: EditorState.create({
|
|
28626
28559
|
doc: initialDoc,
|
|
@@ -28645,7 +28578,8 @@ var WgslEdit = class extends HTMLElement {
|
|
|
28645
28578
|
buildExtensions() {
|
|
28646
28579
|
const baseTheme$6 = EditorView.theme({
|
|
28647
28580
|
".cm-content": { padding: "0" },
|
|
28648
|
-
".cm-line": { padding: "0" }
|
|
28581
|
+
".cm-line": { padding: "0" },
|
|
28582
|
+
".cm-panels": { position: "relative" }
|
|
28649
28583
|
});
|
|
28650
28584
|
return [
|
|
28651
28585
|
basicSetup,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wgsl-edit",
|
|
3
3
|
"description": "Web component for editing WGSL/WESL with CodeMirror",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.15",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@codemirror/view": "^6.0.0",
|
|
34
34
|
"@lezer/highlight": "^1.2.1",
|
|
35
35
|
"codemirror": "^6.0.0",
|
|
36
|
-
"lezer-wesl": "0.6.41",
|
|
37
36
|
"wesl": "0.7.20",
|
|
38
|
-
"wesl
|
|
37
|
+
"lezer-wesl": "0.6.41",
|
|
38
|
+
"wesl-fetch": "0.0.8"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"open": "^10.0.0",
|
package/src/WgslEdit.ts
CHANGED
|
@@ -194,18 +194,25 @@ export class WgslEdit extends HTMLElement {
|
|
|
194
194
|
this.dispatchChange();
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
/** Active file content (
|
|
197
|
+
/** Active file content (single-file API). */
|
|
198
198
|
get source(): string {
|
|
199
199
|
return this.editorView?.state.doc.toString() ?? this._pendingSource ?? "";
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
/** Set active file content (
|
|
202
|
+
/** Set active file content (single-file API). Auto-creates a default file entry. */
|
|
203
203
|
set source(value: string) {
|
|
204
|
+
if (!this._activeFile && this._files.size === 0) {
|
|
205
|
+
this._files.set("main.wesl", { doc: Text.of(value.split("\n")) });
|
|
206
|
+
this._activeFile = "main.wesl";
|
|
207
|
+
this.renderTabs();
|
|
208
|
+
}
|
|
204
209
|
if (this.editorView) {
|
|
205
210
|
const to = this.editorView.state.doc.length;
|
|
206
211
|
this.editorView.dispatch({ changes: { from: 0, to, insert: value } });
|
|
207
212
|
} else {
|
|
208
213
|
this._pendingSource = value;
|
|
214
|
+
const entry = this._files.get(this._activeFile);
|
|
215
|
+
if (entry) entry.doc = Text.of(value.split("\n"));
|
|
209
216
|
}
|
|
210
217
|
}
|
|
211
218
|
|
|
@@ -444,7 +451,12 @@ export class WgslEdit extends HTMLElement {
|
|
|
444
451
|
this._pendingSource ??
|
|
445
452
|
(firstFile ? this._files.get(firstFile)!.doc.toString() : "");
|
|
446
453
|
this._pendingSource = null;
|
|
447
|
-
if (firstFile)
|
|
454
|
+
if (firstFile) {
|
|
455
|
+
this._activeFile = firstFile;
|
|
456
|
+
} else if (initialDoc) {
|
|
457
|
+
this._files.set("main.wesl", { doc: Text.of(initialDoc.split("\n")) });
|
|
458
|
+
this._activeFile = "main.wesl";
|
|
459
|
+
}
|
|
448
460
|
|
|
449
461
|
const state = EditorState.create({
|
|
450
462
|
doc: initialDoc,
|
|
@@ -472,6 +484,7 @@ export class WgslEdit extends HTMLElement {
|
|
|
472
484
|
const baseTheme = EditorView.theme({
|
|
473
485
|
".cm-content": { padding: "0" },
|
|
474
486
|
".cm-line": { padding: "0" },
|
|
487
|
+
".cm-panels": { position: "relative" }, // suppress firefox warning in scrollable containers
|
|
475
488
|
});
|
|
476
489
|
return [
|
|
477
490
|
basicSetup,
|