/*! 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 // // 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 // // see https://github.com/medialize/sass.js/pull/32#issuecomment-103142214 Sass.setWorkerUrl(SASSJS_RELATIVE_PATH + "/sass.worker.js"); return Sass; }));