{"version":3,"sources":["jsdelivr-header.js","/npm/jsx-transform@2.4.1/lib/jsx.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACaA,aAEA,IAAI,GAAK,QAAQ,MACb,aAAe,QAAQ,QAAQ,QAC/B,YAAc,QAAQ,eAAe,UACrC,UAAY,QAAQ,aACpB,mBAAqB,QAAQ,wBAC7B,QAAU,QAAQ,YAwCtB,SAAS,WAAW,EAAK,GACvB,EAAU,eAAe,GAEzB,IAAI,EAAc,YAAY,CAAC,WAAY,EAAK,GAAS,KAEzD,OAAO,mBAAmB,EAC5B,CAOA,SAAS,SAAS,EAAM,GACtB,EAAU,eAAe,GACzB,IAAI,EAAc,YAAY,CAAC,WAAY,GAAG,aAAa,EAAM,QAAS,GAAS,KACnF,OAAO,mBAAmB,EAC5B,CAEA,SAAS,eAAe,GAKtB,GAJuB,iBAAZ,IACT,EAAU,CAAC,GAGkB,iBAApB,EAAQ,QACjB,MAAM,IAAI,MAAM,0CAqBlB,YAjBkC,IAAvB,EAAQ,aACjB,EAAQ,WAAa,wBAIc,IAA1B,EAAQ,gBACjB,EAAQ,eAAgB,GAGM,iBAArB,EAAQ,WACjB,EAAQ,SAAW,iBAGoB,iBAA9B,EAAQ,oBACjB,EAAQ,kBAAoB,SAGvB,CACT,CA2CA,SAAS,oBAAoB,EAAU,GACrC,OAAO,oBAAoB,UAAU,EAA9B,CAAuC,EAChD,CAlIA,OAAO,QAAU,CACf,WAAY,WACZ,SAAU,SACV,oBAAqB,oBACrB,QAAS,WAgIX,oBAAoB,UAAY,SAAU,GAKxC,YAJkC,IAAvB,EAAQ,aACjB,EAAQ,WAAa,CAAC,MAAO,OAAQ,MAAO,SAGvC,SAAU,GACf,KAAM,EAAQ,WAAW,QAAQ,aAAa,IAE5C,OAAO,UAGT,IAAI,EAAO,GAEX,OAAO,SAAQ,SAAU,EAAO,EAAK,GAGnC,GAAQ,EAAM,SAAS,QACvB,GACF,IAAG,SAAU,GACX,IACE,KAAK,KAAK,WAAW,EAAM,IAC3B,GACF,CAAE,MAAO,GACP,EAAK,EACP,CACF,GACF,CACF","file":"/npm/jsx-transform@2.4.1/lib/jsx.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/jsx-transform@2.4.1/lib/jsx.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\r\n * jsx-transform\r\n * https://github.com/alexmingoia/jsx-transform\r\n */\r\n\r\n/**\r\n * This module aims to be a standard and configurable implementation of JSX\r\n * decoupled from {@link https://github.com/facebook/react|React} for use with\r\n * {@link https://github.com/Raynos/mercury|Mercury} or other modules.\r\n *\r\n * JSX is a JavaScript syntax for composing virtual DOM elements.\r\n * See React's [documentation][0] for an explanation.\r\n *\r\n * For linting files containing JSX see\r\n * {@link https://github.com/STRML/JSXHint|JSXHint}.\r\n *\r\n * @module jsx-transform\r\n */\r\n\r\n'use strict';\r\n\r\nvar fs = require('fs');\r\nvar getExtension = require('path').extname;\r\nvar jstransform = require('jstransform').transform;\r\nvar visitNode = require('./visitor');\r\nvar trimTrailingSpaces = require('./trimTrailingSpaces');\r\nvar through = require('through2');\r\n\r\nmodule.exports = {\r\n  fromString: fromString,\r\n  fromFile: fromFile,\r\n  browserifyTransform: browserifyTransform,\r\n  visitor: visitNode\r\n};\r\n\r\n/**\r\n * Desugar JSX and return transformed string.\r\n *\r\n * @example\r\n *\r\n * ```javascript\r\n * var jsx = require('jsx-transform');\r\n *\r\n * jsx.fromString('<h1>Hello World</h1>', {\r\n *   factory: 'mercury.h'\r\n * });\r\n * // => 'mercury.h(\"h1\", null, [\"Hello World\"])'\r\n * ```\r\n *\r\n * @param {String} str\r\n * @param {Object=} options\r\n * @param {String} options.factory Factory function name for element creation.\r\n * @param {String=} options.spreadFn Name of function for use with spread\r\n * attributes (default: Object.assign).\r\n * @param {String=} options.unknownTagPattern uses given pattern for unknown\r\n * tags where `{tag}` is replaced by the tag name. Useful for rending mercury\r\n * components as `Component.render()` instead of `Component()`.\r\n * @param {Boolean=} options.passUnknownTagsToFactory Handle unknown tags\r\n * like known tags, and pass them as an object to `options.factory`. If\r\n * true, `createElement(Component)` instead of `Component()` (default: false).\r\n * @param {Boolean=} options.unknownTagsAsString Pass unknown tags as string\r\n * to `options.factory` (default: false).\r\n * @param {Boolean=} options.arrayChildren Pass children as array instead of\r\n * arguments (default: true).\r\n * @returns {String}\r\n */\r\nfunction fromString(str, options) {\r\n  options = processOptions(options);\r\n\r\n  var transformed = jstransform([visitNode], str, options).code;\r\n\r\n  return trimTrailingSpaces(transformed);\r\n}\r\n\r\n/**\r\n * @param {String} path\r\n * @param {Object=} options\r\n * @returns {String}\r\n */\r\nfunction fromFile(path, options) {\r\n  options = processOptions(options);\r\n  var transformed = jstransform([visitNode], fs.readFileSync(path, 'utf8'), options).code;\r\n  return trimTrailingSpaces(transformed);\r\n}\r\n\r\nfunction processOptions(options){\r\n  if (typeof options !== 'object') {\r\n    options = {};\r\n  }\r\n\r\n  if (typeof options.factory !== 'string') {\r\n    throw new Error('Missing options.factory function name.');\r\n  }\r\n\r\n  // parses the file as an ES6 module, except disabled implicit strict-mode\r\n  if (typeof options.sourceType === 'undefined') {\r\n    options.sourceType = 'nonStrictModule';\r\n  }\r\n\r\n  // defaults to true to keep existing behaviour (but inconsietent with babel and react-tools)\r\n  if (typeof options.arrayChildren === 'undefined') {\r\n    options.arrayChildren = true;\r\n  }\r\n\r\n  if (typeof options.spreadFn !== 'string') {\r\n    options.spreadFn = 'Object.assign';\r\n  }\r\n\r\n  if (typeof options.unknownTagPattern !== 'string') {\r\n    options.unknownTagPattern = '{tag}';\r\n  }\r\n\r\n  return options;\r\n}\r\n\r\n/**\r\n * Make a browserify transform.\r\n *\r\n * @example\r\n *\r\n * ```javascript\r\n * var browserify = require('browserify');\r\n * var jsxify = require('jsx-transform').browserifyTransform;\r\n *\r\n * browserify()\r\n *   .transform(jsxify, options)\r\n *   .bundle()\r\n * ```\r\n *\r\n * Use `.configure(options)` to return a configured transform:\r\n *\r\n * ```javascript\r\n * var browserify = require('browserify');\r\n * var jsxify = require('jsx-transform').browserifyTransform;\r\n *\r\n * browserify({\r\n *   transforms: [jsxify.configure(options)]\r\n * }).bundle()\r\n * ```\r\n *\r\n * Use in `package.json`:\r\n *\r\n * ```json\r\n * \"browserify\": {\r\n *   \"transform\": [\r\n *     [\"jsx-transform/browserify\", { \"factory\": \"h\" }]\r\n *   ]\r\n * }\r\n * ```\r\n *\r\n * @param {String=} filename\r\n * @param {Object=} options\r\n * @param {String=} options.extensions Array of file extensions to run\r\n * browserify transform on (default: `['.js', '.jsx', '.es', '.es6']`).\r\n * @returns {Function} browserify transform\r\n */\r\nfunction browserifyTransform(filename, options) {\r\n  return browserifyTransform.configure(options)(filename);\r\n}\r\n\r\nbrowserifyTransform.configure = function (options) {\r\n  if (typeof options.extensions === 'undefined') {\r\n    options.extensions = ['.js', '.jsx', '.es', '.es6'];\r\n  }\r\n\r\n  return function (filename) {\r\n    if (!~options.extensions.indexOf(getExtension(filename))) {\r\n      // We don't need to apply any transforms, just provide a simple pass-through stream\r\n      return through();\r\n    }\r\n\r\n    var data = \"\";\r\n\r\n    return through(function (chunk, enc, next) {\r\n      // This function receives chunks of data and we don't want to perform any transforms on an incomplete file.\r\n      // We buffer the data until the flush function is called. We can then safely perform the transforms on the full file.\r\n      data += chunk.toString('utf8');\r\n      next();\r\n    }, function (next) {\r\n      try {\r\n        this.push(fromString(data, options));\r\n        next();\r\n      } catch (err) {\r\n        next(err);\r\n      }\r\n    });\r\n  };\r\n}\r\n"]}