@storybook/react
Version:
Storybook React renderer
980 lines (963 loc) • 930 kB
JavaScript
import CJS_COMPAT_NODE_URL_0ccojhbbgp74 from 'node:url';
import CJS_COMPAT_NODE_PATH_0ccojhbbgp74 from 'node:path';
import CJS_COMPAT_NODE_MODULE_0ccojhbbgp74 from "node:module";
var __filename = CJS_COMPAT_NODE_URL_0ccojhbbgp74.fileURLToPath(import.meta.url);
var __dirname = CJS_COMPAT_NODE_PATH_0ccojhbbgp74.dirname(__filename);
var require = CJS_COMPAT_NODE_MODULE_0ccojhbbgp74.createRequire(import.meta.url);
// ------------------------------------------------------------
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
// ------------------------------------------------------------
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
var __require = /* @__PURE__ */ ((x) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(x, {
get: (a, b) => (typeof require < "u" ? require : a)[b]
}) : x)(function(x) {
if (typeof require < "u") return require.apply(this, arguments);
throw Error('Dynamic require of "' + x + '" is not supported');
});
var __esm = (fn, res, err) => function() {
if (err) throw err[0];
try {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
} catch (e) {
throw err = [e], e;
}
};
var __commonJS = (cb, mod) => function() {
try {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
} catch (e) {
throw mod = 0, e;
}
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: !0 });
}, __copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function")
for (let key of __getOwnPropNames(from))
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
mod
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
// ../../../node_modules/ts-dedent/dist/index.js
var require_dist = __commonJS({
"../../../node_modules/ts-dedent/dist/index.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.dedent = void 0;
function dedent4(templ) {
for (var values = [], _i = 1; _i < arguments.length; _i++)
values[_i - 1] = arguments[_i];
var strings = Array.from(typeof templ == "string" ? [templ] : templ);
strings[strings.length - 1] = strings[strings.length - 1].replace(/\r?\n([\t ]*)$/, "");
var indentLengths = strings.reduce(function(arr, str) {
var matches = str.match(/\n([\t ]+|(?!\s).)/g);
return matches ? arr.concat(matches.map(function(match) {
var _a, _b;
return (_b = (_a = match.match(/[\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
})) : arr;
}, []);
if (indentLengths.length) {
var pattern_1 = new RegExp(`
[ ]{` + Math.min.apply(Math, indentLengths) + "}", "g");
strings = strings.map(function(str) {
return str.replace(pattern_1, `
`);
});
}
strings[0] = strings[0].replace(/^\r?\n/, "");
var string = strings[0];
return values.forEach(function(value, i2) {
var endentations = string.match(/(?:^|\n)( *)$/), endentation = endentations ? endentations[1] : "", indentedValue = value;
typeof value == "string" && value.includes(`
`) && (indentedValue = String(value).split(`
`).map(function(str, i3) {
return i3 === 0 ? str : "" + endentation + str;
}).join(`
`)), string += indentedValue + strings[i2 + 1];
}), string;
}
exports.dedent = dedent4;
exports.default = dedent4;
}
});
// ../../../node_modules/@volar/source-map/lib/binarySearch.js
var require_binarySearch = __commonJS({
"../../../node_modules/@volar/source-map/lib/binarySearch.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.binarySearch = binarySearch;
function binarySearch(values, searchValue) {
let low = 0, high = values.length - 1, match;
for (; low <= high; ) {
let mid = Math.floor((low + high) / 2), midValue = values[mid];
if (midValue < searchValue)
low = mid + 1;
else if (midValue > searchValue)
high = mid - 1;
else {
low = mid, high = mid, match = mid;
break;
}
}
let finalLow = Math.max(Math.min(low, high, values.length - 1), 0), finalHigh = Math.min(Math.max(low, high, 0), values.length - 1);
return { low: finalLow, high: finalHigh, match };
}
}
});
// ../../../node_modules/@volar/source-map/lib/translateOffset.js
var require_translateOffset = __commonJS({
"../../../node_modules/@volar/source-map/lib/translateOffset.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.translateOffset = translateOffset;
var warned = !1;
function translateOffset(start, fromOffsets, toOffsets, fromLengths, toLengths = fromLengths, preferEnd = !1) {
if (!fromOffsets.every((value, index) => index === 0 || fromOffsets[index - 1] <= value)) {
for (let i2 = 0; i2 < fromOffsets.length; i2++) {
let fromOffset = fromOffsets[i2], fromLength = fromLengths[i2];
if (start >= fromOffset && start <= fromOffset + fromLength) {
let toLength = toLengths[i2], toOffset = toOffsets[i2], rangeOffset, relativePos = start - fromOffset;
return preferEnd && toLength > fromLength && relativePos === fromLength ? rangeOffset = toLength : rangeOffset = Math.min(relativePos, toLength), toOffset + rangeOffset;
}
}
warned || (warned = !0, console.warn("fromOffsets should be sorted in ascending order"));
}
let low = 0, high = fromOffsets.length - 1;
for (; low <= high; ) {
let mid = Math.floor((low + high) / 2), fromOffset = fromOffsets[mid], fromLength = fromLengths[mid];
if (start >= fromOffset && start <= fromOffset + fromLength) {
let toLength = toLengths[mid], toOffset = toOffsets[mid], rangeOffset, relativePos = start - fromOffset;
return preferEnd && toLength > fromLength && relativePos === fromLength ? rangeOffset = toLength : rangeOffset = Math.min(relativePos, toLength), toOffset + rangeOffset;
} else start < fromOffset ? high = mid - 1 : low = mid + 1;
}
}
}
});
// ../../../node_modules/@volar/source-map/lib/sourceMap.js
var require_sourceMap = __commonJS({
"../../../node_modules/@volar/source-map/lib/sourceMap.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.SourceMap = void 0;
var binarySearch_1 = require_binarySearch(), translateOffset_1 = require_translateOffset(), SourceMap = class {
constructor(mappings) {
this.mappings = mappings;
}
toSourceRange(generatedStart, generatedEnd, fallbackToAnyMatch, filter) {
return this.findMatchingStartEnd(generatedStart, generatedEnd, fallbackToAnyMatch, "generatedOffsets", filter);
}
toGeneratedRange(sourceStart, sourceEnd, fallbackToAnyMatch, filter) {
return this.findMatchingStartEnd(sourceStart, sourceEnd, fallbackToAnyMatch, "sourceOffsets", filter);
}
toSourceLocation(generatedOffset, filter) {
return this.findMatchingOffsets(generatedOffset, "generatedOffsets", filter);
}
toGeneratedLocation(sourceOffset, filter) {
return this.findMatchingOffsets(sourceOffset, "sourceOffsets", filter);
}
*findMatchingOffsets(offset2, fromRange, filter, preferEnd = !1) {
let memo = this.getMemoBasedOnRange(fromRange);
if (memo.offsets.length === 0)
return;
let { low: start, high: end } = (0, binarySearch_1.binarySearch)(memo.offsets, offset2), skip = /* @__PURE__ */ new Set(), toRange = fromRange === "sourceOffsets" ? "generatedOffsets" : "sourceOffsets";
for (let i2 = start; i2 <= end; i2++)
for (let mapping of memo.mappings[i2]) {
if (skip.has(mapping) || (skip.add(mapping), filter && !filter(mapping.data)))
continue;
let mapped = (0, translateOffset_1.translateOffset)(offset2, mapping[fromRange], mapping[toRange], getLengths(mapping, fromRange), getLengths(mapping, toRange), preferEnd);
mapped !== void 0 && (yield [mapped, mapping]);
}
}
*findMatchingStartEnd(start, end, fallbackToAnyMatch, fromRange, filter) {
let toRange = fromRange === "sourceOffsets" ? "generatedOffsets" : "sourceOffsets", preferEnd = toRange === "sourceOffsets", mappedStarts = [], hadMatch = !1;
for (let [mappedStart, mapping] of this.findMatchingOffsets(start, fromRange)) {
if (filter && !filter(mapping.data))
continue;
mappedStarts.push([mappedStart, mapping]);
let mappedEnd = (0, translateOffset_1.translateOffset)(end, mapping[fromRange], mapping[toRange], getLengths(mapping, fromRange), getLengths(mapping, toRange), preferEnd);
mappedEnd !== void 0 && (hadMatch = !0, yield [mappedStart, mappedEnd, mapping, mapping]);
}
if (!hadMatch && fallbackToAnyMatch) {
for (let [mappedStart, mappingStart] of mappedStarts)
for (let [mappedEnd, mappingEnd] of this.findMatchingOffsets(end, fromRange, void 0, preferEnd))
if (!(filter && !filter(mappingEnd.data) || mappedEnd < mappedStart)) {
yield [mappedStart, mappedEnd, mappingStart, mappingEnd];
break;
}
}
}
getMemoBasedOnRange(fromRange) {
return fromRange === "sourceOffsets" ? this.sourceCodeOffsetsMemo ??= this.createMemo("sourceOffsets") : this.generatedCodeOffsetsMemo ??= this.createMemo("generatedOffsets");
}
createMemo(key) {
let offsetsSet = /* @__PURE__ */ new Set();
for (let mapping of this.mappings)
for (let i2 = 0; i2 < mapping[key].length; i2++)
offsetsSet.add(mapping[key][i2]), offsetsSet.add(mapping[key][i2] + getLengths(mapping, key)[i2]);
let offsets = [...offsetsSet].sort((a, b) => a - b), mappings = offsets.map(() => /* @__PURE__ */ new Set());
for (let mapping of this.mappings)
for (let i2 = 0; i2 < mapping[key].length; i2++) {
let startIndex = (0, binarySearch_1.binarySearch)(offsets, mapping[key][i2]).match, endIndex = (0, binarySearch_1.binarySearch)(offsets, mapping[key][i2] + getLengths(mapping, key)[i2]).match;
for (let i3 = startIndex; i3 <= endIndex; i3++)
mappings[i3].add(mapping);
}
return { offsets, mappings };
}
};
exports.SourceMap = SourceMap;
function getLengths(mapping, key) {
return key === "sourceOffsets" ? mapping.lengths : mapping.generatedLengths ?? mapping.lengths;
}
}
});
// ../../../node_modules/@volar/source-map/index.js
var require_source_map = __commonJS({
"../../../node_modules/@volar/source-map/index.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
k2 === void 0 && (k2 = k);
var desc = Object.getOwnPropertyDescriptor(m, k);
(!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) && (desc = { enumerable: !0, get: function() {
return m[k];
} }), Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
k2 === void 0 && (k2 = k), o[k2] = m[k];
})), __exportStar = exports && exports.__exportStar || function(m, exports2) {
for (var p in m) p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p) && __createBinding(exports2, m, p);
};
Object.defineProperty(exports, "__esModule", { value: !0 });
__exportStar(require_sourceMap(), exports);
__exportStar(require_translateOffset(), exports);
}
});
// ../../../node_modules/@volar/language-core/lib/editor.js
var require_editor = __commonJS({
"../../../node_modules/@volar/language-core/lib/editor.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.isHoverEnabled = isHoverEnabled;
exports.isInlayHintsEnabled = isInlayHintsEnabled;
exports.isCodeLensEnabled = isCodeLensEnabled;
exports.isMonikerEnabled = isMonikerEnabled;
exports.isInlineValueEnabled = isInlineValueEnabled;
exports.isSemanticTokensEnabled = isSemanticTokensEnabled;
exports.isCallHierarchyEnabled = isCallHierarchyEnabled;
exports.isTypeHierarchyEnabled = isTypeHierarchyEnabled;
exports.isRenameEnabled = isRenameEnabled;
exports.isDefinitionEnabled = isDefinitionEnabled;
exports.isTypeDefinitionEnabled = isTypeDefinitionEnabled;
exports.isReferencesEnabled = isReferencesEnabled;
exports.isImplementationEnabled = isImplementationEnabled;
exports.isHighlightEnabled = isHighlightEnabled;
exports.isSymbolsEnabled = isSymbolsEnabled;
exports.isFoldingRangesEnabled = isFoldingRangesEnabled;
exports.isSelectionRangesEnabled = isSelectionRangesEnabled;
exports.isLinkedEditingEnabled = isLinkedEditingEnabled;
exports.isColorEnabled = isColorEnabled;
exports.isDocumentLinkEnabled = isDocumentLinkEnabled;
exports.isDiagnosticsEnabled = isDiagnosticsEnabled;
exports.isCodeActionsEnabled = isCodeActionsEnabled;
exports.isFormattingEnabled = isFormattingEnabled;
exports.isCompletionEnabled = isCompletionEnabled;
exports.isAutoInsertEnabled = isAutoInsertEnabled;
exports.isSignatureHelpEnabled = isSignatureHelpEnabled;
exports.shouldReportDiagnostics = shouldReportDiagnostics;
exports.resolveRenameNewName = resolveRenameNewName;
exports.resolveRenameEditText = resolveRenameEditText;
exports.findOverlapCodeRange = findOverlapCodeRange;
function isHoverEnabled(info) {
return !!info.semantic;
}
function isInlayHintsEnabled(info) {
return !!info.semantic;
}
function isCodeLensEnabled(info) {
return !!info.semantic;
}
function isMonikerEnabled(info) {
return !!info.semantic;
}
function isInlineValueEnabled(info) {
return !!info.semantic;
}
function isSemanticTokensEnabled(info) {
return typeof info.semantic == "object" ? info.semantic.shouldHighlight?.() ?? !0 : !!info.semantic;
}
function isCallHierarchyEnabled(info) {
return !!info.navigation;
}
function isTypeHierarchyEnabled(info) {
return !!info.navigation;
}
function isRenameEnabled(info) {
return typeof info.navigation == "object" ? info.navigation.shouldRename?.() ?? !0 : !!info.navigation;
}
function isDefinitionEnabled(info) {
return !!info.navigation;
}
function isTypeDefinitionEnabled(info) {
return !!info.navigation;
}
function isReferencesEnabled(info) {
return !!info.navigation;
}
function isImplementationEnabled(info) {
return !!info.navigation;
}
function isHighlightEnabled(info) {
return typeof info.navigation == "object" ? info.navigation.shouldHighlight?.() ?? !0 : !!info.navigation;
}
function isSymbolsEnabled(info) {
return !!info.structure;
}
function isFoldingRangesEnabled(info) {
return !!info.structure;
}
function isSelectionRangesEnabled(info) {
return !!info.structure;
}
function isLinkedEditingEnabled(info) {
return !!info.structure;
}
function isColorEnabled(info) {
return !!info.structure;
}
function isDocumentLinkEnabled(info) {
return !!info.structure;
}
function isDiagnosticsEnabled(info) {
return !!info.verification;
}
function isCodeActionsEnabled(info) {
return !!info.verification;
}
function isFormattingEnabled(info) {
return !!info.format;
}
function isCompletionEnabled(info) {
return !!info.completion;
}
function isAutoInsertEnabled(info) {
return !!info.completion;
}
function isSignatureHelpEnabled(info) {
return !!info.completion;
}
function shouldReportDiagnostics(info, source, code) {
return typeof info.verification == "object" ? info.verification.shouldReport?.(source, code) ?? !0 : !!info.verification;
}
function resolveRenameNewName(newName, info) {
return typeof info.navigation == "object" ? info.navigation.resolveRenameNewName?.(newName) ?? newName : newName;
}
function resolveRenameEditText(text, info) {
return typeof info.navigation == "object" ? info.navigation.resolveRenameEditText?.(text) ?? text : text;
}
function findOverlapCodeRange(start, end, map, filter) {
let mappedStart, mappedEnd;
for (let [mapped, mapping] of map.toGeneratedLocation(start))
if (filter(mapping.data)) {
mappedStart = mapped;
break;
}
for (let [mapped, mapping] of map.toGeneratedLocation(end))
if (filter(mapping.data)) {
mappedEnd = mapped;
break;
}
if (mappedStart === void 0 || mappedEnd === void 0) {
for (let mapping of map.mappings)
if (filter(mapping.data)) {
let mappingStart = mapping.sourceOffsets[0], mappingEnd = mapping.sourceOffsets[mapping.sourceOffsets.length - 1] + mapping.lengths[mapping.lengths.length - 1], overlap = getOverlapRange(start, end, mappingStart, mappingEnd);
if (overlap) {
let curMappedStart = overlap.start - mappingStart + mapping.generatedOffsets[0], lastGeneratedLength = (mapping.generatedLengths ?? mapping.lengths)[mapping.generatedOffsets.length - 1], curMappedEndOffset = Math.min(overlap.end - mapping.sourceOffsets[mapping.sourceOffsets.length - 1], lastGeneratedLength), curMappedEnd = mapping.generatedOffsets[mapping.generatedOffsets.length - 1] + curMappedEndOffset;
mappedStart = mappedStart === void 0 ? curMappedStart : Math.min(mappedStart, curMappedStart), mappedEnd = mappedEnd === void 0 ? curMappedEnd : Math.max(mappedEnd, curMappedEnd);
}
}
}
if (mappedStart !== void 0 && mappedEnd !== void 0)
return {
start: mappedStart,
end: mappedEnd
};
}
function getOverlapRange(range1Start, range1End, range2Start, range2End) {
let start = Math.max(range1Start, range2Start), end = Math.min(range1End, range2End);
if (!(start > end))
return {
start,
end
};
}
}
});
// ../../../node_modules/@volar/language-core/lib/linkedCodeMap.js
var require_linkedCodeMap = __commonJS({
"../../../node_modules/@volar/language-core/lib/linkedCodeMap.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.LinkedCodeMap = void 0;
var source_map_1 = require_source_map(), LinkedCodeMap = class extends source_map_1.SourceMap {
*getLinkedOffsets(start) {
for (let mapped of this.toGeneratedLocation(start))
yield mapped[0];
for (let mapped of this.toSourceLocation(start))
yield mapped[0];
}
};
exports.LinkedCodeMap = LinkedCodeMap;
}
});
// ../../../node_modules/@volar/language-core/lib/types.js
var require_types = __commonJS({
"../../../node_modules/@volar/language-core/lib/types.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
}
});
// ../../../node_modules/@volar/language-core/lib/utils.js
var require_utils = __commonJS({
"../../../node_modules/@volar/language-core/lib/utils.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.FileMap = void 0;
var FileMap2 = class extends Map {
constructor(caseSensitive) {
super(), this.caseSensitive = caseSensitive, this.originalFileNames = /* @__PURE__ */ new Map();
}
keys() {
return this.originalFileNames.values();
}
get(key) {
return super.get(this.normalizeId(key));
}
has(key) {
return super.has(this.normalizeId(key));
}
set(key, value) {
return this.originalFileNames.set(this.normalizeId(key), key), super.set(this.normalizeId(key), value);
}
delete(key) {
return this.originalFileNames.delete(this.normalizeId(key)), super.delete(this.normalizeId(key));
}
clear() {
return this.originalFileNames.clear(), super.clear();
}
normalizeId(id) {
return this.caseSensitive ? id : id.toLowerCase();
}
};
exports.FileMap = FileMap2;
}
});
// ../../../node_modules/@volar/language-core/index.js
var require_language_core = __commonJS({
"../../../node_modules/@volar/language-core/index.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
k2 === void 0 && (k2 = k);
var desc = Object.getOwnPropertyDescriptor(m, k);
(!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) && (desc = { enumerable: !0, get: function() {
return m[k];
} }), Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
k2 === void 0 && (k2 = k), o[k2] = m[k];
})), __exportStar = exports && exports.__exportStar || function(m, exports2) {
for (var p in m) p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p) && __createBinding(exports2, m, p);
};
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.defaultMapperFactory = exports.SourceMap = void 0;
exports.createLanguage = createLanguage2;
exports.forEachEmbeddedCode = forEachEmbeddedCode;
var source_map_1 = require_source_map();
Object.defineProperty(exports, "SourceMap", { enumerable: !0, get: function() {
return source_map_1.SourceMap;
} });
__exportStar(require_editor(), exports);
__exportStar(require_linkedCodeMap(), exports);
__exportStar(require_types(), exports);
__exportStar(require_utils(), exports);
var source_map_2 = require_source_map(), linkedCodeMap_1 = require_linkedCodeMap(), defaultMapperFactory = (mappings) => new source_map_2.SourceMap(mappings);
exports.defaultMapperFactory = defaultMapperFactory;
function createLanguage2(plugins, scriptRegistry, sync, onAssociationDirty) {
let virtualCodeToSourceScriptMap = /* @__PURE__ */ new WeakMap(), virtualCodeToSourceMap = /* @__PURE__ */ new WeakMap(), virtualCodeToLinkedCodeMap = /* @__PURE__ */ new WeakMap(), language = {
mapperFactory: exports.defaultMapperFactory,
plugins,
scripts: {
fromVirtualCode(virtualCode) {
return virtualCodeToSourceScriptMap.get(virtualCode);
},
get(id, includeFsFiles = !0, shouldRegister = !1) {
sync(id, includeFsFiles, shouldRegister);
let result = scriptRegistry.get(id);
return result?.isAssociationDirty && this.set(id, result.snapshot, result.languageId), scriptRegistry.get(id);
},
set(id, snapshot, languageId, _plugins = plugins) {
if (!languageId) {
for (let plugin of plugins)
if (languageId = plugin.getLanguageId?.(id), languageId)
break;
}
if (!languageId) {
console.warn(`languageId not found for ${String(id)}`);
return;
}
let associatedOnly = !1;
for (let plugin of plugins)
if (plugin.isAssociatedFileOnly?.(id, languageId)) {
associatedOnly = !0;
break;
}
if (scriptRegistry.has(id)) {
let sourceScript = scriptRegistry.get(id);
if (sourceScript.languageId !== languageId || sourceScript.associatedOnly !== associatedOnly)
return this.delete(id), triggerTargetsDirty(sourceScript), this.set(id, snapshot, languageId);
if (associatedOnly)
sourceScript.snapshot !== snapshot && (sourceScript.snapshot = snapshot, triggerTargetsDirty(sourceScript));
else if (sourceScript.isAssociationDirty || sourceScript.snapshot !== snapshot) {
sourceScript.snapshot !== snapshot && (sourceScript.snapshot = snapshot, triggerTargetsDirty(sourceScript));
let codegenCtx = prepareCreateVirtualCode(sourceScript);
if (sourceScript.generated) {
let { updateVirtualCode, createVirtualCode } = sourceScript.generated.languagePlugin, newVirtualCode = updateVirtualCode ? updateVirtualCode(id, sourceScript.generated.root, snapshot, codegenCtx) : createVirtualCode?.(id, languageId, snapshot, codegenCtx);
if (newVirtualCode) {
sourceScript.generated.root = newVirtualCode, sourceScript.generated.embeddedCodes.clear();
for (let code of forEachEmbeddedCode(sourceScript.generated.root))
virtualCodeToSourceScriptMap.set(code, sourceScript), sourceScript.generated.embeddedCodes.set(code.id, code);
return sourceScript;
} else {
this.delete(id);
return;
}
}
} else
return sourceScript;
} else {
let sourceScript = {
id,
languageId,
snapshot,
associatedIds: /* @__PURE__ */ new Set(),
targetIds: /* @__PURE__ */ new Set(),
associatedOnly
};
if (scriptRegistry.set(id, sourceScript), associatedOnly)
return sourceScript;
for (let languagePlugin of _plugins) {
let virtualCode = languagePlugin.createVirtualCode?.(id, languageId, snapshot, prepareCreateVirtualCode(sourceScript));
if (virtualCode) {
sourceScript.generated = {
root: virtualCode,
languagePlugin,
embeddedCodes: /* @__PURE__ */ new Map()
};
for (let code of forEachEmbeddedCode(virtualCode))
virtualCodeToSourceScriptMap.set(code, sourceScript), sourceScript.generated.embeddedCodes.set(code.id, code);
break;
}
}
return sourceScript;
}
},
delete(id) {
let sourceScript = scriptRegistry.get(id);
sourceScript && (sourceScript.generated?.languagePlugin.disposeVirtualCode?.(id, sourceScript.generated.root), scriptRegistry.delete(id), triggerTargetsDirty(sourceScript));
}
},
maps: {
get(virtualCode, sourceScript) {
let mapCache = virtualCodeToSourceMap.get(virtualCode.snapshot);
if (mapCache || virtualCodeToSourceMap.set(virtualCode.snapshot, mapCache = /* @__PURE__ */ new WeakMap()), !mapCache.has(sourceScript.snapshot)) {
let mappings = virtualCode.associatedScriptMappings?.get(sourceScript.id) ?? virtualCode.mappings;
mapCache.set(sourceScript.snapshot, language.mapperFactory(mappings));
}
return mapCache.get(sourceScript.snapshot);
},
*forEach(virtualCode) {
let sourceScript = virtualCodeToSourceScriptMap.get(virtualCode);
if (yield [
sourceScript,
this.get(virtualCode, sourceScript)
], virtualCode.associatedScriptMappings)
for (let [relatedScriptId] of virtualCode.associatedScriptMappings) {
let relatedSourceScript = scriptRegistry.get(relatedScriptId);
relatedSourceScript && (yield [
relatedSourceScript,
this.get(virtualCode, relatedSourceScript)
]);
}
}
},
linkedCodeMaps: {
get(virtualCode) {
let sourceScript = virtualCodeToSourceScriptMap.get(virtualCode), mapCache = virtualCodeToLinkedCodeMap.get(virtualCode.snapshot);
return mapCache?.[0] !== sourceScript.snapshot && virtualCodeToLinkedCodeMap.set(virtualCode.snapshot, mapCache = [
sourceScript.snapshot,
virtualCode.linkedCodeMappings ? new linkedCodeMap_1.LinkedCodeMap(virtualCode.linkedCodeMappings) : void 0
]), mapCache[1];
}
}
};
return language;
function triggerTargetsDirty(sourceScript) {
sourceScript.targetIds.forEach((id) => {
let sourceScript2 = scriptRegistry.get(id);
sourceScript2 && (sourceScript2.isAssociationDirty = !0, onAssociationDirty?.(sourceScript2.id));
});
}
function prepareCreateVirtualCode(sourceScript) {
for (let id of sourceScript.associatedIds)
scriptRegistry.get(id)?.targetIds.delete(sourceScript.id);
return sourceScript.associatedIds.clear(), sourceScript.isAssociationDirty = !1, {
getAssociatedScript(id) {
sync(id, !0, !0);
let relatedSourceScript = scriptRegistry.get(id);
return relatedSourceScript && (relatedSourceScript.targetIds.add(sourceScript.id), sourceScript.associatedIds.add(relatedSourceScript.id)), relatedSourceScript;
}
};
}
}
function* forEachEmbeddedCode(virtualCode) {
if (yield virtualCode, virtualCode.embeddedCodes)
for (let embeddedCode of virtualCode.embeddedCodes)
yield* forEachEmbeddedCode(embeddedCode);
}
}
});
// ../../../node_modules/@volar/typescript/lib/common.js
var require_common = __commonJS({
"../../../node_modules/@volar/typescript/lib/common.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.resolveFileLanguageId = resolveFileLanguageId2;
function resolveFileLanguageId2(path4) {
switch (path4.split(".").pop()) {
case "js":
return "javascript";
case "cjs":
return "javascript";
case "mjs":
return "javascript";
case "ts":
return "typescript";
case "cts":
return "typescript";
case "mts":
return "typescript";
case "jsx":
return "javascriptreact";
case "tsx":
return "typescriptreact";
case "json":
return "json";
}
}
}
});
// ../../../node_modules/@volar/typescript/lib/resolveModuleName.js
var require_resolveModuleName = __commonJS({
"../../../node_modules/@volar/typescript/lib/resolveModuleName.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.createResolveModuleName = createResolveModuleName;
function createResolveModuleName(ts, getFileSize, host, languagePlugins, getSourceScript) {
let toSourceFileInfo = /* @__PURE__ */ new Map(), moduleResolutionHost = {
readFile: host.readFile.bind(host),
directoryExists: host.directoryExists?.bind(host),
realpath: host.realpath?.bind(host),
getCurrentDirectory: host.getCurrentDirectory?.bind(host),
getDirectories: host.getDirectories?.bind(host),
useCaseSensitiveFileNames: typeof host.useCaseSensitiveFileNames == "function" ? host.useCaseSensitiveFileNames.bind(host) : host.useCaseSensitiveFileNames,
fileExists(fileName) {
let result = host.fileExists(fileName);
for (let { typescript } of languagePlugins)
if (typescript) {
if (!result)
for (let { extension } of typescript.extraFileExtensions) {
if (!fileName.endsWith(`.d.${extension}.ts`))
continue;
let sourceFileName = fileName.slice(0, -`.d.${extension}.ts`.length) + `.${extension}`;
if (fileExists(sourceFileName)) {
let sourceScript = getSourceScript(sourceFileName);
if (sourceScript?.generated) {
let serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
if (serviceScript) {
let dtsPath = sourceFileName + ".d.ts";
return (serviceScript.extension === ".js" || serviceScript.extension === ".jsx") && fileExists(dtsPath) ? toSourceFileInfo.set(fileName, {
sourceFileName: dtsPath,
extension: ".ts"
}) : toSourceFileInfo.set(fileName, {
sourceFileName,
extension: serviceScript.extension
}), !0;
}
}
}
}
if (typescript.resolveHiddenExtensions && fileName.endsWith(".d.ts"))
for (let { extension } of typescript.extraFileExtensions) {
let sourceFileName = fileName.slice(0, -5) + `.${extension}`;
if (fileExists(sourceFileName)) {
let sourceScript = getSourceScript(sourceFileName);
if (sourceScript?.generated) {
let serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
if (serviceScript)
return toSourceFileInfo.set(fileName, {
sourceFileName,
extension: serviceScript.extension
}), !0;
}
}
}
}
return result;
}
};
return (moduleName, containingFile, compilerOptions, cache, redirectedReference, resolutionMode) => {
let result = ts.resolveModuleName(moduleName, containingFile, compilerOptions, moduleResolutionHost, cache, redirectedReference, resolutionMode);
if (result.resolvedModule) {
let sourceFileInfo = toSourceFileInfo.get(result.resolvedModule.resolvedFileName);
sourceFileInfo && (result.resolvedModule.resolvedFileName = sourceFileInfo.sourceFileName, result.resolvedModule.extension = sourceFileInfo.extension);
}
return toSourceFileInfo.clear(), result;
};
function fileExists(fileName) {
return host.fileExists(fileName) ? (getFileSize?.(fileName) ?? host.readFile(fileName)?.length ?? 0) < 4 * 1024 * 1024 : !1;
}
}
}
});
// ../../../node_modules/@volar/typescript/lib/node/utils.js
var require_utils2 = __commonJS({
"../../../node_modules/@volar/typescript/lib/node/utils.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.getServiceScript = getServiceScript;
exports.fixupImpliedNodeFormatForFile = fixupImpliedNodeFormatForFile;
function getServiceScript(language, fileName) {
let sourceScript = language.scripts.get(fileName);
if (sourceScript?.targetIds.size)
for (let targetId of sourceScript.targetIds) {
let targetScript = language.scripts.get(targetId);
if (targetScript?.generated) {
let serviceScript = targetScript.generated.languagePlugin.typescript?.getServiceScript(targetScript.generated.root);
if (serviceScript)
return [serviceScript, targetScript, sourceScript];
}
}
if (sourceScript?.associatedOnly)
return [void 0, sourceScript, sourceScript];
if (sourceScript?.generated) {
let serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
if (serviceScript)
return [serviceScript, sourceScript, sourceScript];
}
return [void 0, void 0, void 0];
}
function fixupImpliedNodeFormatForFile(ts, pluginExtensions, sourceFile, packageJsonInfoCache, host, options) {
if (sourceFile.impliedNodeFormat !== void 0 || !pluginExtensions.some((ext) => sourceFile.fileName.endsWith(ext)) || [".d.ts", ".ts", ".tsx", ".js", ".jsx"].some((ext) => sourceFile.fileName.endsWith(ext)))
return;
let asTs = sourceFile.fileName + ".ts", impliedNodeFormat = ts.getImpliedNodeFormatForFileWorker?.(asTs, packageJsonInfoCache, host, options)?.impliedNodeFormat;
if (impliedNodeFormat !== void 0)
return sourceFile.impliedNodeFormat = impliedNodeFormat, () => sourceFile.impliedNodeFormat = void 0;
}
}
});
// ../../../node_modules/@volar/typescript/lib/node/decorateLanguageServiceHost.js
var require_decorateLanguageServiceHost = __commonJS({
"../../../node_modules/@volar/typescript/lib/node/decorateLanguageServiceHost.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.decorateLanguageServiceHost = decorateLanguageServiceHost;
exports.searchExternalFiles = searchExternalFiles;
var resolveModuleName_1 = require_resolveModuleName(), utils_1 = require_utils2();
function decorateLanguageServiceHost(ts, language, languageServiceHost) {
let pluginExtensions = language.plugins.map((plugin) => plugin.typescript?.extraFileExtensions.map((ext) => "." + ext.extension) ?? []).flat(), scripts = /* @__PURE__ */ new Map(), crashFileNames = /* @__PURE__ */ new Set(), readDirectory = languageServiceHost.readDirectory?.bind(languageServiceHost), resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals?.bind(languageServiceHost), resolveModuleNames = languageServiceHost.resolveModuleNames?.bind(languageServiceHost), getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost), getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);
if (readDirectory && (languageServiceHost.readDirectory = (path4, extensions, exclude, include, depth) => {
if (extensions)
for (let ext of pluginExtensions)
extensions.includes(ext) || (extensions = [...extensions, ext]);
return readDirectory(path4, extensions, exclude, include, depth);
}), pluginExtensions.length) {
let resolveModuleName = (0, resolveModuleName_1.createResolveModuleName)(ts, ts.sys.getFileSize, languageServiceHost, language.plugins, (fileName) => language.scripts.get(fileName)), moduleResolutionCache = languageServiceHost.getModuleResolutionCache?.();
resolveModuleNameLiterals && (languageServiceHost.resolveModuleNameLiterals = (moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, ...rest) => {
let disposeFixup = (0, utils_1.fixupImpliedNodeFormatForFile)(ts, pluginExtensions, containingSourceFile, moduleResolutionCache?.getPackageJsonInfoCache(), languageServiceHost, options);
try {
return moduleLiterals.every((name) => !pluginExtensions.some((ext) => name.text.endsWith(ext))) ? resolveModuleNameLiterals(moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, ...rest) : moduleLiterals.map((moduleLiteral) => {
let mode = ts.getModeForUsageLocation(containingSourceFile, moduleLiteral, options);
return resolveModuleName(moduleLiteral.text, containingFile, options, moduleResolutionCache, redirectedReference, mode);
});
} finally {
disposeFixup?.();
}
}), resolveModuleNames && (languageServiceHost.resolveModuleNames = (moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile) => moduleNames.every((name) => !pluginExtensions.some((ext) => name.endsWith(ext))) ? resolveModuleNames(moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile) : moduleNames.map((moduleName) => resolveModuleName(moduleName, containingFile, options, moduleResolutionCache, redirectedReference).resolvedModule));
}
languageServiceHost.getScriptSnapshot = (fileName) => {
let virtualScript = updateVirtualScript(fileName, !0);
return virtualScript ? virtualScript.snapshot : getScriptSnapshot(fileName);
}, getScriptKind && (languageServiceHost.getScriptKind = (fileName) => {
let virtualScript = updateVirtualScript(fileName, !1);
return virtualScript ? virtualScript.scriptKind : getScriptKind(fileName);
});
function updateVirtualScript(fileName, shouldRegister) {
if (crashFileNames.has(fileName))
return;
let version2;
try {
version2 = languageServiceHost.getScriptVersion(fileName);
} catch {
crashFileNames.add(fileName);
}
if (version2 === void 0)
return;
let script = scripts.get(fileName);
if (!script || script[0] !== version2) {
script = [version2];
let sourceScript = language.scripts.get(fileName, void 0, shouldRegister);
if (sourceScript?.generated) {
let serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
if (serviceScript)
if (serviceScript.preventLeadingOffset)
script[1] = {
extension: serviceScript.extension,
scriptKind: serviceScript.scriptKind,
snapshot: serviceScript.code.snapshot
};
else {
let virtualContents = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength()).split(`
`).map((line) => " ".repeat(line.length)).join(`
`) + serviceScript.code.snapshot.getText(0, serviceScript.code.snapshot.getLength());
script[1] = {
extension: serviceScript.extension,
scriptKind: serviceScript.scriptKind,
snapshot: ts.ScriptSnapshot.fromString(virtualContents)
};
}
sourceScript.generated.languagePlugin.typescript?.getExtraServiceScripts && console.warn("getExtraServiceScripts() is not available in TS plugin.");
}
scripts.set(fileName, script);
}
return script[1];
}
}
function searchExternalFiles(ts, project, exts) {
if (project.projectKind !== ts.server.ProjectKind.Configured)
return [];
let configFile = project.getProjectName(), config = ts.readJsonConfigFile(configFile, project.readFile.bind(project)), parseHost = {
useCaseSensitiveFileNames: project.useCaseSensitiveFileNames(),
fileExists: project.fileExists.bind(project),
readFile: project.readFile.bind(project),
readDirectory: (...args) => (args[1] = exts, project.readDirectory(...args))
};
return ts.parseJsonSourceFileConfigFileContent(config, parseHost, project.getCurrentDirectory()).fileNames;
}
}
});
// ../../../node_modules/@volar/typescript/lib/node/transform.js
var require_transform = __commonJS({
"../../../node_modules/@volar/typescript/lib/node/transform.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.transformCallHierarchyItem = transformCallHierarchyItem;
exports.transformDiagnostic = transformDiagnostic;
exports.fillSourceFileText = fillSourceFileText;
exports.transformFileTextChanges = transformFileTextChanges;
exports.transformDocumentSpan = transformDocumentSpan;
exports.transformSpan = transformSpan;
exports.transformTextChange = transformTextChange;
exports.transformTextSpan = transformTextSpan;
exports.toSourceOffset = toSourceOffset;
exports.toSourceRanges = toSourceRanges;
exports.toSourceOffsets = toSourceOffsets;
exports.toGeneratedRange = toGeneratedRange;
exports.toGeneratedRanges = toGeneratedRanges;
exports.toGeneratedOffset = toGeneratedOffset;
exports.toGeneratedOffsets = toGeneratedOffsets;
exports.getMappingOffset = getMappingOffset;
var language_core_1 = require_language_core(), utils_1 = require_utils2(), transformedDiagnostics = /* @__PURE__ */ new WeakMap(), transformedSourceFile = /* @__PURE__ */ new WeakSet();
function transformCallHierarchyItem(language, item, fallbackToAnyMatch, filter) {
let span = transformSpan(language, item.file, item.span, fallbackToAnyMatch, filter), selectionSpan = transformSpan(language, item.file, item.selectionSpan, fallbackToAnyMatch, filter);
return {
...item,
file: span?.fileName ?? item.file,
span: span?.textSpan ?? { start: 0, length: 0 },
selectionSpan: selectionSpan?.textSpan ?? { start: 0, length: 0 }
};
}
function transformDiagnostic(language, diagnostic, program, isTsc) {
if (!transformedDiagnostics.has(diagnostic)) {
transformedDiagnostics.set(diagnostic, void 0);
let { relatedInformation } = diagnostic;
if (relatedInformation && (diagnostic.relatedInformation = relatedInformation.map((d) => transformDiagnostic(language, d, program, isTsc)).filter((d) => !!d)), diagnostic.file !== void 0 && diagnostic.start !== void 0 && diagnostic.length !== void 0) {
let [serviceScript] = (0, utils_1.getServiceScript)(language, diagnostic.file.fileName);
if (serviceScript) {
let [sourceSpanFileName, sourceSpan] = transformTextSpan(void 0, language, serviceScript, {
start: diagnostic.start,
length: diagnostic.length
}, !0, (data2) => (0, language_core_1.shouldReportDiagnostics)(data2, String(diagnostic.source), String(diagnostic.code))) ?? [], actualDiagnosticFile = sourceSpanFileName ? diagnostic.file.fileName === sourceSpanFileName ? diagnostic.file : program?.getSourceFile(sourceSpanFileName) : void 0;
sourceSpan && actualDiagnosticFile && (isTsc && fillSourceFileText(language, diagnostic.file), transformedDiagnostics.set(diagnostic, {
...diagnostic,
file: actualDiagnosticFile,
start: sourceSpan.start,
length: sourceSpan.length
}));
} else
transformedDiagnostics.set(diagnostic, diagnostic);
} else
transformedDiagnostics.set(diagnostic, diagnostic);
}
return transformedDiagnostics.get(diagnostic);
}
function fillSourceFileText(language, sourceFile) {
if (transformedSourceFile.has(sourceFile))
return;
transformedSourceFile.add(sourceFile);
let [serviceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
if (serviceScript && !serviceScript.preventLeadingOffset) {
let sourceScript = language.scripts.fromVirtualCode(serviceScript.code);
sourceFile.text = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength()) + sourceFile.text.substring(sourceScript.snapshot.getLength());
}
}
function transformFileTextChanges(language, changes, fallbackToAnyMatch, filter) {
let changesPerFile = {}, newFiles = /* @__PURE__ */ new Set();
for (let fileChanges of changes) {
let [_, source] = (0, utils_1.getServiceScript)(language, fileChanges.fileName);
if (source)
fileChanges.textChanges.forEach((c) => {
let { fileName, textSpan } = transformSpan(language, fileChanges.fileName, c.span, fallbackToAnyMatch, filter) ?? {};
fileName && textSpan && (changesPerFile[fileName] ?? (changesPerFile[fileName] = [])).push({ ...c, span: textSpan });
});
else {
let list2 = changesPerFile[fileChanges.fileName] ?? (changesPerFile[fileChanges.fileName] = []);
fileChanges.textChanges.forEach((c) => {
list2.push(c);
}), fileChanges.isNewFile && newFiles.add(fileChanges.fileName);
}
}
let result = [];
for (let fileName in changesPerFile)
result.push({
fileName,
isNewFile: newFiles.has(fileName),
textChanges: changesPerFile[fileName]
});
return result;
}
function transformDocumentSpan(language, documentSpan, fallbackToAnyMatch, filter, shouldFallback) {
let textSpan = transformSpan(language, documentSpan.fileName, documentSpan.textSpan, fallbackToAnyMatch, filter);
if (!textSpan && shouldFallback && (textSpan = {
fileName: documentSpan.fileName,
textSpan: { start: 0, length: 0 }
}), !textSpan)
return;
let contextSpan = transformSpan(language, documentSpan.fileName, documentSpan.contextSpan, fallbackToAnyMatch, filter), originalTextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalTextSpan, fallbackToAnyMatch, filter), originalContextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalContextSpan, fallbackT