{"version":3,"sources":["jsdelivr-header.js","/npm/@lxjx/react-render-api@0.5.0/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,SAAS,gBAAiB,GAAM,OAAQ,GAAqB,iBAAP,GAAoB,YAAa,EAAM,EAAY,QAAI,CAAI,CAEjH,IAAI,MAAQ,QAAQ,SAChB,eAAiB,gBAAgB,OACjC,SAAW,gBAAgB,QAAQ,cACnC,MAAQ,QAAQ,eAEpB,SAAS,gBAAgB,EAAK,EAAK,GAYjC,OAXI,KAAO,EACT,OAAO,eAAe,EAAK,EAAK,CAC9B,MAAO,EACP,YAAY,EACZ,cAAc,EACd,UAAU,IAGZ,EAAI,GAAO,EAGN,CACT,CAEA,SAAS,QAAQ,EAAQ,GACvB,IAAI,EAAO,OAAO,KAAK,GAEvB,GAAI,OAAO,sBAAuB,CAChC,IAAI,EAAU,OAAO,sBAAsB,GACvC,IAAgB,EAAU,EAAQ,QAAO,SAAU,GACrD,OAAO,OAAO,yBAAyB,EAAQ,GAAK,UACtD,KACA,EAAK,KAAK,MAAM,EAAM,EACxB,CAEA,OAAO,CACT,CAEA,SAAS,eAAe,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAI,EAAyB,MAAhB,UAAU,GAAa,UAAU,GAAK,CAAC,EAEhD,EAAI,EACN,QAAQ,GAAQ,GAAM,SAAQ,SAAU,GACtC,gBAAgB,EAAQ,EAAK,EAAO,GACtC,IACS,OAAO,0BAChB,OAAO,iBAAiB,EAAQ,OAAO,0BAA0B,IAEjE,QAAQ,GAAQ,SAAQ,SAAU,GAChC,OAAO,eAAe,EAAQ,EAAK,OAAO,yBAAyB,EAAQ,GAC7E,GAEJ,CAEA,OAAO,CACT,CAEA,SAAS,8BAA8B,EAAQ,GAC7C,GAAc,MAAV,EAAgB,MAAO,CAAC,EAC5B,IAEI,EAAK,EAFL,EAAS,CAAC,EACV,EAAa,OAAO,KAAK,GAG7B,IAAK,EAAI,EAAG,EAAI,EAAW,OAAQ,IACjC,EAAM,EAAW,GACb,EAAS,QAAQ,IAAQ,IAC7B,EAAO,GAAO,EAAO,IAGvB,OAAO,CACT,CAEA,SAAS,yBAAyB,EAAQ,GACxC,GAAc,MAAV,EAAgB,MAAO,CAAC,EAE5B,IAEI,EAAK,EAFL,EAAS,8BAA8B,EAAQ,GAInD,GAAI,OAAO,sBAAuB,CAChC,IAAI,EAAmB,OAAO,sBAAsB,GAEpD,IAAK,EAAI,EAAG,EAAI,EAAiB,OAAQ,IACvC,EAAM,EAAiB,GACnB,EAAS,QAAQ,IAAQ,GACxB,OAAO,UAAU,qBAAqB,KAAK,EAAQ,KACxD,EAAO,GAAO,EAAO,GAEzB,CAEA,OAAO,CACT,CAEA,SAAS,eAAe,EAAK,GAC3B,OAAO,gBAAgB,IAAQ,sBAAsB,EAAK,IAAM,kBAClE,CAEA,SAAS,mBAAmB,GAC1B,OAAO,mBAAmB,IAAQ,iBAAiB,IAAQ,oBAC7D,CAEA,SAAS,mBAAmB,GAC1B,GAAI,MAAM,QAAQ,GAAM,CACtB,IAAK,IAAI,EAAI,EAAG,EAAO,IAAI,MAAM,EAAI,QAAS,EAAI,EAAI,OAAQ,IAAK,EAAK,GAAK,EAAI,GAEjF,OAAO,CACT,CACF,CAEA,SAAS,gBAAgB,GACvB,GAAI,MAAM,QAAQ,GAAM,OAAO,CACjC,CAEA,SAAS,iBAAiB,GACxB,GAAI,OAAO,YAAY,OAAO,IAAkD,uBAAzC,OAAO,UAAU,SAAS,KAAK,GAAgC,OAAO,MAAM,KAAK,EAC1H,CAEA,SAAS,sBAAsB,EAAK,GAClC,GAAM,OAAO,YAAY,OAAO,IAAgD,uBAAxC,OAAO,UAAU,SAAS,KAAK,GAAvE,CAIA,IAAI,EAAO,GACP,GAAK,EACL,GAAK,EACL,OAAK,EAET,IACE,IAAK,IAAiC,EAA7B,EAAK,EAAI,OAAO,cAAmB,GAAM,EAAK,EAAG,QAAQ,QAChE,EAAK,KAAK,EAAG,QAET,GAAK,EAAK,SAAW,GAH8C,GAAK,GAKhF,CAAE,MAAO,GACP,GAAK,EACL,EAAK,CACP,CAAE,QACA,IACO,GAAsB,MAAhB,EAAW,QAAW,EAAW,QAC9C,CAAE,QACA,GAAI,EAAI,MAAM,CAChB,CACF,CAEA,OAAO,CAxBP,CAyBF,CAEA,SAAS,qBACP,MAAM,IAAI,UAAU,kDACtB,CAEA,SAAS,mBACP,MAAM,IAAI,UAAU,uDACtB,CAEA,SAAS,gBAAgB,GACvB,IAAI,EAAS,UAAU,OAAS,QAAsB,IAAjB,UAAU,GAAmB,UAAU,GAAK,CAAC,EAC9E,EAAO,EAAO,KACd,EAAsB,EAAO,YAC7B,OAAsC,IAAxB,EAAiC,IAAW,EAC1D,EAAY,EAAO,UAGnB,EAAM,eAAe,YAGrB,EAAQ,GAGR,GAAY,EAGZ,EAAmB,MAAM,YAAW,SAA0B,EAAO,GACvE,IACI,EAAa,eADD,MAAM,SAAS,IACY,GACvC,EAAO,EAAW,GAClB,EAAU,EAAW,GAkCzB,SAAS,EAAS,GAEhB,YAAW,WACT,GAAQ,SAAU,GAChB,OAAO,EAAE,QAAO,SAAU,GACxB,IAAI,EAAa,EAAE,KAAO,EAM1B,OAJK,GAAc,EAAE,UACnB,EAAE,WAGG,CACT,GACF,GACF,GACF,CAIA,SAAS,IACP,YAAW,WACT,OAAO,GAAQ,SAAU,GAIvB,OAHA,EAAK,SAAQ,SAAU,GACrB,EAAI,UAAY,EAAI,UACtB,IACO,EACT,GACF,GACF,CAIA,SAAS,EAAM,GACb,IAAK,IAAI,EAAO,UAAU,OAAQ,EAAO,IAAI,MAAM,EAAO,EAAI,EAAO,EAAI,GAAI,EAAO,EAAG,EAAO,EAAM,IAClG,EAAK,EAAO,GAAK,UAAU,GAG7B,YAAW,WACT,OAAO,EAAY,WAAM,EAAQ,CAAC,GAAI,OAAO,GAC/C,GACF,CAIA,SAAS,IACP,YAAW,WACT,OAAO,GACT,GACF,CAIA,SAAS,EAAO,EAAI,GAClB,GAAQ,SAAU,GAChB,OAAO,EAAE,KAAI,SAAU,GAKrB,OAJI,EAAK,KAAO,IACd,EAAO,eAAe,CAAC,EAAG,EAAM,CAAC,EAAG,IAG/B,CACT,GACF,GACF,CAIA,SAAS,EAAY,GACnB,IAAK,IAAI,EAAQ,UAAU,OAAQ,EAAO,IAAI,MAAM,EAAQ,EAAI,EAAQ,EAAI,GAAI,EAAQ,EAAG,EAAQ,EAAO,IACxG,EAAK,EAAQ,GAAK,UAAU,GAG9B,GAAQ,SAAU,GAChB,OAAO,EAAE,KAAI,SAAU,GACrB,IAAI,EAAO,eAAe,CAAC,EAAG,GAc9B,OAZI,EACE,EAAE,KAAO,GAAM,EAAK,OACtB,EAAK,MAAO,EACZ,EAAK,SAAW,EAAK,QAAQ,MAAM,EAAM,IAGvC,EAAK,OACP,EAAK,MAAO,EACZ,EAAK,SAAW,EAAK,WAIlB,CACT,GACF,GACF,CAEA,OA5HA,MAAM,oBAAoB,GAAM,WAC9B,MAAO,CACL,MAAO,EACP,SAAU,EACV,OAAQ,EACR,UAAW,EACX,OAAQ,EAEZ,IAGA,MAAM,WAAU,WACV,EAAM,QACV,GAAQ,SAAU,GAEhB,GAAI,EAAK,QAAU,GAAe,EAAK,OAAS,EAAG,CACjD,IAAI,EAAM,EAAK,WAAU,SAAU,GACjC,OAAO,EAAK,IACd,IACA,EAAK,GAAK,MAAO,CACnB,CAEA,MAAO,GAAG,OAAO,mBAAmB,GAAO,CAAC,eAAe,CAAC,EAAG,EAAO,CACpE,OAAM,SAAU,IAAQ,EAAM,QAElC,GACF,GAAG,CAAC,IAkGG,EAAK,KAAI,SAAU,GACxB,IAAI,EAAK,EAAK,GAEV,GADS,EAAK,OACV,yBAAyB,EAAM,CAAC,KAAM,YAE9C,OAEE,eAAe,cAAc,EAAW,OAAO,OAAO,CAAC,EAAG,EAAG,CAC3D,IAAK,EACL,UAAW,EAGX,QAAS,EAAM,KAAK,KAAM,GAG1B,SAAU,EAAS,KAAK,KAAM,KAGpC,GACF,IAGA,SAAS,EAAU,GACjB,IAAI,EAAY,EAAM,UAClB,EAAQ,yBAAyB,EAAO,CAAC,cAEzC,EAAK,MAAM,iBAAiB,GAE5B,EAAS,eAAe,CAAC,EAAG,EAAO,CACrC,GAAI,IAGF,EAAW,EAAI,SAAW,EAAI,QAAQ,SAQ1C,OANI,GAAa,GACf,IAGF,EAAM,KAAK,GACX,IACO,CAAC,EAAI,QAAS,EACvB,CAIA,SAAS,IACP,GAAI,EACF,YAAW,WACT,OAAO,GACT,QAHF,CAOA,GAAY,EACZ,IAAI,EAAU,EAAM,OAAO,EAAG,GAAG,GACjC,GAAK,EAAL,CACA,IAAI,EAAa,eAAe,cAAc,EAAkB,OAAO,OAAO,CAC5E,IAAK,GACJ,IACH,SAAS,OAAO,EAAO,eAAe,cAAc,EAAM,KAAM,GAAc,EAAY,MAAM,eAAe,IAAY,WACzH,GAAY,CACd,GANoB,CAJpB,CAWF,CAOA,OAJA,EAAU,CACR,MAAM,EACN,QAAQ,IAEH,CACT,CAEA,OAAO,QAAU","file":"/npm/@lxjx/react-render-api@0.5.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@lxjx/react-render-api@0.5.0/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar ReactDom = _interopDefault(require('react-dom'));\nvar utils = require('@lxjx/utils');\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n    return;\n  }\n\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nfunction createRenderApi(Component) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var Wrap = option.wrap,\n      _option$maxInstance = option.maxInstance,\n      maxInstance = _option$maxInstance === void 0 ? Infinity : _option$maxInstance,\n      namespace = option.namespace;\n  /** 返回组件实例 */\n\n  var ref = React__default.createRef();\n  /** 每个实例需要按顺序进行处理，第一个render后在执行第二个，未执行到的存放于此处 */\n\n  var stock = [];\n  /** 是否正在render，防止插队 */\n\n  var rendering = false;\n  /* 核心控制组件，用于管理组件实例列表并提供一些常用接口 */\n\n  var RenderController = React.forwardRef(function RenderController(props, fRef) {\n    var _useState = React.useState([]),\n        _useState2 = _slicedToArray(_useState, 2),\n        list = _useState2[0],\n        setList = _useState2[1];\n\n    React.useImperativeHandle(fRef, function () {\n      return {\n        close: close,\n        closeAll: closeAll,\n        remove: onRemove,\n        removeAll: onRemoveAll,\n        update: update\n      };\n    });\n    /* 发起api调用时，合并到prop (在api中，每一次props改变都等于调用了一次api) */\n\n    React.useEffect(function () {\n      if (props.isInit) return;\n      setList(function (prev) {\n        // 超出配置的实例数时，移除第一个show为true的实例\n        if (prev.length >= maxInstance && prev.length > 0) {\n          var ind = prev.findIndex(function (item) {\n            return item.show;\n          });\n          prev[ind].show = false;\n        }\n\n        return [].concat(_toConsumableArray(prev), [_objectSpread2({}, props, {\n          show: 'show' in props ? props.show : true\n        })]);\n      });\n    }, [props]);\n    /**\r\n     * 从列表移除元素实例\r\n     * 下面的几个方法使用setTimeout的原因是，在renderApi调用后，RenderController内用于更新状态的useEffect尚未触发更新，此时最新的实例列表中是没有当次操作新增的实例的，如果马上调用下面这些方法会不起任何作用，所以需要通过setTimeout来hack一下\r\n     * */\n\n    function onRemove(id) {\n      // 移除前请先确保该项的show已经为false，防止破坏掉关闭动画等 */\n      setTimeout(function () {\n        setList(function (p) {\n          return p.filter(function (v) {\n            var notCurrent = v.id !== id;\n\n            if (!notCurrent && v.onRemove) {\n              v.onRemove(); // 当作为api使用时，需要模拟onRemove行为\n            }\n\n            return notCurrent;\n          });\n        });\n      });\n    }\n    /* 移除所有实例 */\n\n\n    function onRemoveAll() {\n      setTimeout(function () {\n        return setList(function (prev) {\n          prev.forEach(function (ins) {\n            ins.onRemove && ins.onRemove(); // 当作为api使用时，需要模拟onRemove行为\n          });\n          return [];\n        });\n      });\n    }\n    /** 设置指定组件实例的show为false, ...args用于为props.onClose提供额外参数 */\n\n\n    function close(id) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      setTimeout(function () {\n        return closeHandle.apply(void 0, [id].concat(args));\n      });\n    }\n    /** 同close, 区别是不匹配id直接移除全部 */\n\n\n    function closeAll() {\n      setTimeout(function () {\n        return closeHandle();\n      });\n    }\n    /** 根据指定id和props更新组件 */\n\n\n    function update(id, newProps) {\n      setList(function (p) {\n        return p.map(function (item) {\n          if (item.id === id) {\n            item = _objectSpread2({}, item, {}, newProps);\n          }\n\n          return item;\n        });\n      });\n    }\n    /* 根据是否传id隐藏一个/全部实例 */\n\n\n    function closeHandle(id) {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      setList(function (p) {\n        return p.map(function (v) {\n          var temp = _objectSpread2({}, v);\n\n          if (id) {\n            if (v.id === id && temp.show) {\n              temp.show = false;\n              temp.onClose && temp.onClose.apply(temp, args); // 当作为api使用时，需要模拟onClose行为\n            }\n          } else {\n            if (temp.show) {\n              temp.show = false;\n              temp.onClose && temp.onClose(); // 当作为api使用时，需要模拟onClose行为\n            }\n          }\n\n          return temp;\n        });\n      });\n    }\n\n    return list.map(function (_ref) {\n      var id = _ref.id,\n          isInit = _ref.isInit,\n          v = _objectWithoutProperties(_ref, [\"id\", \"isInit\"]);\n\n      return (\n        /* 直接将id bind到onRemove上实例组件就不用传id了 */\n        React__default.createElement(Component, Object.assign({}, v, {\n          key: id,\n          namespace: namespace,\n\n          /* eslint-disable-next-line react/jsx-no-bind */\n          onClose: close.bind(null, id),\n\n          /* eslint-disable-next-line react/jsx-no-bind */\n          onRemove: onRemove.bind(null, id)\n        }))\n      );\n    });\n  });\n  /* 动态渲染RenderController组件，包含Wrap时会一并渲染 */\n\n  function renderApi(_ref2) {\n    var singleton = _ref2.singleton,\n        props = _objectWithoutProperties(_ref2, [\"singleton\"]);\n\n    var id = utils.createRandString(2);\n\n    var _props = _objectSpread2({}, props, {\n      id: id\n    });\n\n    var closeAll = ref.current && ref.current.closeAll;\n\n    if (singleton && closeAll) {\n      closeAll();\n    }\n\n    stock.push(_props);\n    render();\n    return [ref.current, id];\n  }\n  /** 从stock中取出第一个配置对象并创建实例，如果正在render中，延迟到下一loop */\n\n\n  function render() {\n    if (rendering) {\n      setTimeout(function () {\n        return render();\n      });\n      return;\n    }\n\n    rendering = true;\n    var current = stock.splice(0, 1)[0];\n    if (!current) return;\n    var controller = React__default.createElement(RenderController, Object.assign({\n      ref: ref\n    }, current));\n    ReactDom.render(Wrap ? React__default.createElement(Wrap, null, controller) : controller, utils.getPortalsNode(namespace), function () {\n      rendering = false;\n    });\n  } // 初始化调用，防止ref不存在\n\n\n  renderApi({\n    show: false,\n    isInit: true\n  });\n  return renderApi;\n}\n\nmodule.exports = createRenderApi;\n"]}