mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-13 05:55:26 +00:00
update
This commit is contained in:
58
node_modules/clean-css/lib/reader/input-source-map-tracker.js
generated
vendored
Normal file
58
node_modules/clean-css/lib/reader/input-source-map-tracker.js
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
var SourceMapConsumer = require('source-map').SourceMapConsumer;
|
||||
|
||||
function inputSourceMapTracker() {
|
||||
var maps = {};
|
||||
|
||||
return {
|
||||
all: all.bind(null, maps),
|
||||
isTracking: isTracking.bind(null, maps),
|
||||
originalPositionFor: originalPositionFor.bind(null, maps),
|
||||
track: track.bind(null, maps)
|
||||
};
|
||||
}
|
||||
|
||||
function all(maps) {
|
||||
return maps;
|
||||
}
|
||||
|
||||
function isTracking(maps, source) {
|
||||
return source in maps;
|
||||
}
|
||||
|
||||
function originalPositionFor(maps, metadata, range, selectorFallbacks) {
|
||||
var line = metadata[0];
|
||||
var column = metadata[1];
|
||||
var source = metadata[2];
|
||||
var position = {
|
||||
line: line,
|
||||
column: column + range
|
||||
};
|
||||
var originalPosition;
|
||||
|
||||
while (!originalPosition && position.column > column) {
|
||||
position.column--;
|
||||
originalPosition = maps[source].originalPositionFor(position);
|
||||
}
|
||||
|
||||
if (!originalPosition || originalPosition.column < 0) {
|
||||
return metadata;
|
||||
}
|
||||
|
||||
if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) {
|
||||
return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1);
|
||||
}
|
||||
|
||||
return originalPosition.line !== null ?
|
||||
toMetadata(originalPosition) :
|
||||
metadata;
|
||||
}
|
||||
|
||||
function toMetadata(asHash) {
|
||||
return [asHash.line, asHash.column, asHash.source];
|
||||
}
|
||||
|
||||
function track(maps, source, data) {
|
||||
maps[source] = new SourceMapConsumer(data);
|
||||
}
|
||||
|
||||
module.exports = inputSourceMapTracker;
|
Reference in New Issue
Block a user