| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 | /*! sass.js - v0.11.1 (f286436) - built 2019-10-20  providing libsass 3.6.2 (4da7c4bd)  via emscripten 1.38.31 (040e49a) */(function (root, factory) {    "use strict";    if (typeof define === "function" && define.amd) {        define([], factory);    } else if (typeof exports === "object") {        module.exports = factory();    } else {        root.Sass = factory();    }}(this, function () {/*global document*/// identify the path sass.js is located at in case we're loaded by a simple// <script src="path/to/sass.js"></script>// this path can be used to identify the location of// * sass.worker.js from sass.js// * libsass.js.mem from sass.sync.js// see https://github.com/medialize/sass.js/pull/32#issuecomment-103142214// see https://github.com/medialize/sass.js/issues/33    var SASSJS_RELATIVE_PATH = (function () {        "use strict";        // in Node things are rather simple        var hasDir = typeof __dirname !== "undefined";        if (hasDir) {            return __dirname;        }        // we can only run this test in the browser,        // so make sure we actually have a DOM to work with.        if (typeof document === "undefined" || !document.getElementsByTagName) {            return null;        }        // http://www.2ality.com/2014/05/current-script.html        var currentScript = document.currentScript || (function () {            var scripts = document.getElementsByTagName("script");            return scripts[scripts.length - 1];        })();        var path = currentScript && currentScript.src;        if (!path) {            return null;        }        // [worker] make sure we're not running in some concatenated thing        if (path.slice(-8) === "/sass.js") {            return path.slice(0, -8);        }        // [sync] make sure we're not running in some concatenated thing        if (path.slice(-13) === "/sass.sync.js") {            return path.slice(0, -13);        }        return null;    })() || ".";    /*global Worker, SASSJS_RELATIVE_PATH*/    "use strict";    var noop = function () {    };    var slice = [].slice;    // defined upon first Sass.initialize() call    var globalWorkerUrl;    function Sass(workerUrl) {        if (!workerUrl && !globalWorkerUrl) {            /*jshint laxbreak:true */            throw new Error(                "Sass needs to be initialized with the URL of sass.worker.js - "                + "either via Sass.setWorkerUrl(url) or by new Sass(url)"            );            /*jshint laxbreak:false */        }        if (!globalWorkerUrl) {            globalWorkerUrl = workerUrl;        }        // bind all functions        // we're doing this because we used to have a single hard-wired instance that allowed        // [].map(Sass.removeFile) and we need to maintain that for now (at least until 1.0.0)        for (var key in this) {            if (typeof this[key] === "function") {                this[key] = this[key].bind(this);            }        }        this._callbacks = {};        this._worker = new Worker(workerUrl || globalWorkerUrl);        this._worker.addEventListener("message", this._handleWorkerMessage, false);    }    // allow setting the workerUrl before the first Sass instance is initialized,    // where registering the global workerUrl would've happened automatically    Sass.setWorkerUrl = function (workerUrl) {        globalWorkerUrl = workerUrl;    };    Sass.style = {        nested: 0,        expanded: 1,        compact: 2,        compressed: 3    };    Sass.comments = {        "none": 0,        "default": 1    };    Sass.prototype = {        style: Sass.style,        comments: Sass.comments,        destroy: function () {            this._worker && this._worker.terminate();            this._worker = null;            this._callbacks = {};            this._importer = null;        },        _handleWorkerMessage: function (event) {            if (event.data.command) {                this[event.data.command](event.data.args);            }            this._callbacks[event.data.id] && this._callbacks[event.data.id](event.data.result);            delete this._callbacks[event.data.id];        },        _dispatch: function (options, callback) {            if (!this._worker) {                throw new Error("Sass worker has been terminated");            }            options.id = "cb" + Date.now() + Math.random();            this._callbacks[options.id] = callback;            this._worker.postMessage(options);        },        _importerInit: function (args) {            // importer API done callback pushing results            // back to the worker            var done = function done(result) {                this._worker.postMessage({                    command: "_importerFinish",                    args: [result]                });            }.bind(this);            try {                this._importer(args[0], done);            } catch (e) {                done({error: e.message});                throw e;            }        },        importer: function (importerCallback, callback) {            if (typeof importerCallback !== "function" && importerCallback !== null) {                throw new Error("importer callback must either be a function or null");            }            // callback is executed in the main EventLoop            this._importer = importerCallback;            // tell worker to activate importer callback            this._worker.postMessage({                command: "importer",                args: [Boolean(importerCallback)]            });            callback && callback();        }    };    var commands = "writeFile readFile listFiles removeFile clearFiles lazyFiles preloadFiles options compile compileFile";    commands.split(" ").forEach(function (command) {        Sass.prototype[command] = function () {            var callback = slice.call(arguments, -1)[0];            var args = slice.call(arguments, 0, -1);            if (typeof callback !== "function") {                args.push(callback);                callback = noop;            }            this._dispatch({                command: command,                args: args            }, callback);        };    });    // automatically set the workerUrl in case we're loaded by a simple    // <script src="path/to/sass.js"></script>    // see https://github.com/medialize/sass.js/pull/32#issuecomment-103142214    Sass.setWorkerUrl(SASSJS_RELATIVE_PATH + "/sass.worker.js");    return Sass;}));
 |