{"version":3,"file":"rd-runtime.mjs","sources":["../node_modules/page-lifecycle/dist/lifecycle.mjs","../node_modules/eventemitter3/index.js","../src/command/buffer.js","../src/events/index.js","../node_modules/dayjs/dayjs.min.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_root.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../src/utils/data.js","../node_modules/nanoid/index.browser.js","../src/utils/datetime.js","../src/utils/vapp.js","../src/utils/uri.js","../src/utils/index.js","../src/command/index.js","../src/data/DataOptions/level.js","../src/data/DataOptions/actions.js","../src/data/DataOptions/dataTypes.js","../src/data/DataOptions/component.js","../src/data/DataOptions/events.js","../src/data/DataOptions/appEvents.js","../src/data/DataOptions/index.js","../src/secrecy/rich_wasm_bg.wasm?url","../../../../__vite-plugin-wasm-helper","../src/secrecy/rich_wasm_bg.js","../src/secrecy/rich_wasm_bg.wasm","../src/secrecy/rich_wasm.js","../src/secrecy/index.js","../node_modules/lodash/isFinite.js","../src/utils/request.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/eq.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/toString.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/get.js","../src/helper/other.js","../src/remote/requestData.js","../src/remote/RemoteData.js","../src/remote/index.js","../src/data/defineData.js","../src/data/getData.js","../src/data/ElementData/msData.js","../src/data/ElementData/ModuleData.js","../src/data/ElementData/GroupData.js","../src/data/ElementData/SpritesData.js","../src/data/ElementData/expand.js","../src/data/ElementData/index.js","../src/data/actionData.js","../src/data/GlobalData.js","../src/data/EventData.js","../src/data/RemoteData.js","../src/data/PluginData.js","../node_modules/js-cookie/dist/js.cookie.mjs","../src/data/aBind.js","../src/data/index.js","../src/display/createSprite.js","../src/display/interaction/getActions.js","../src/display/hooks.js","../src/display/stage.js","../src/component/dispatchEvent.js","../src/component/baseComponent.js","../src/display/createStyle.js","../src/display/interaction/click.js","../node_modules/lodash/isNil.js","../src/display/interaction/customize.js","../src/display/interaction/timeout.js","../src/display/interaction/interval.js","../src/display/createEvent.js","../src/display/createProps.js","../src/display/coms/SpriteObject.js","../src/display/coms/SpriteGroup.js","../src/display/coms/Module.js","../src/display/coms/Plane.js","../src/display/coms/Popwin.js","../src/display/coms/Content.js","../src/display/coms/ContentFixed.js","../src/display/coms/Overlayer.js","../src/display/coms/Message.js","../src/display/coms/Mask.js","../src/display/coms/Background.js","../src/display/index.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/identity.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/constant.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/merge.js","../src/component/index.js","../src/controller/actions.js","../src/controller/controller.js","../src/controller/index.js","../src/helper/element.js","../src/helper/event.js","../src/helper/action.js","../src/helper/handleOptions.js","../src/helper/index.js","../src/utils/loadjs.js","../src/plugin/index.js","../node_modules/vapp2-irpc/dist/vapp2-irpc.mjs","../src/rpc.js","../src/app.js","../src/index.js"],"sourcesContent":["/*!\n Copyright 2018 Google Inc. All Rights Reserved.\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n/*! lifecycle.mjs v0.1.1 */\nlet e;try{new EventTarget,e=!0}catch(t){e=!1}class t{constructor(){this.e={}}addEventListener(e,t,s=!1){this.t(e).push(t)}removeEventListener(e,t,s=!1){const i=this.t(e),a=i.indexOf(t);a>-1&&i.splice(a,1)}dispatchEvent(e){return e.target=this,Object.freeze(e),this.t(e.type).forEach(t=>t(e)),!0}t(e){return this.e[e]=this.e[e]||[]}}var s=e?EventTarget:t;class i{constructor(e){this.type=e}}var a=e?Event:i;class n extends a{constructor(e,t){super(e),this.newState=t.newState,this.oldState=t.oldState,this.originalEvent=t.originalEvent}}const r=\"active\",h=\"passive\",c=\"hidden\",o=\"frozen\",d=\"terminated\",u=\"object\"==typeof safari&&safari.pushNotification,v=\"onpageshow\"in self,l=[\"focus\",\"blur\",\"visibilitychange\",\"freeze\",\"resume\",\"pageshow\",v?\"pagehide\":\"unload\"],g=e=>(e.preventDefault(),e.returnValue=\"Are you sure?\"),f=e=>e.reduce((e,t,s)=>(e[t]=s,e),{}),b=[[r,h,c,d],[r,h,c,o],[c,h,r],[o,c],[o,r],[o,h]].map(f),p=(e,t)=>{for(let s,i=0;s=b[i];++i){const i=s[e],a=s[t];if(i>=0&&a>=0&&a>i)return Object.keys(s).slice(i,a+1)}return[]},E=()=>document.visibilityState===c?c:document.hasFocus()?r:h;class m extends s{constructor(){super();const e=E();this.s=e,this.i=[],this.a=this.a.bind(this),l.forEach(e=>addEventListener(e,this.a,!0)),u&&addEventListener(\"beforeunload\",e=>{this.n=setTimeout(()=>{e.defaultPrevented||e.returnValue.length>0||this.r(e,c)},0)})}get state(){return this.s}get pageWasDiscarded(){return document.wasDiscarded||!1}addUnsavedChanges(e){!this.i.indexOf(e)>-1&&(0===this.i.length&&addEventListener(\"beforeunload\",g),this.i.push(e))}removeUnsavedChanges(e){const t=this.i.indexOf(e);t>-1&&(this.i.splice(t,1),0===this.i.length&&removeEventListener(\"beforeunload\",g))}r(e,t){if(t!==this.s){const s=this.s,i=p(s,t);for(let t=0;t<i.length-1;++t){const s=i[t],a=i[t+1];this.s=a,this.dispatchEvent(new n(\"statechange\",{oldState:s,newState:a,originalEvent:e}))}}}a(e){switch(u&&clearTimeout(this.n),e.type){case\"pageshow\":case\"resume\":this.r(e,E());break;case\"focus\":this.r(e,r);break;case\"blur\":this.s===r&&this.r(e,E());break;case\"pagehide\":case\"unload\":this.r(e,e.persisted?o:d);break;case\"visibilitychange\":this.s!==o&&this.s!==d&&this.r(e,E());break;case\"freeze\":this.r(e,o)}}}var w=new m;export default w;\n//# sourceMappingURL=lifecycle.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","/**\r\n * 发送相同事件名间隔时间缓冲判断\r\n */\r\nconst eventNames = {}\r\nconst interval = 10;\r\nlet sprid = null\r\nexport default function (name, args) {\r\n    // 过滤发送的事件命令，发送间隔低于10毫秒的不通过\r\n    var ispass = true\r\n    var time = new Date().getTime()\r\n    if (eventNames[name]) {\r\n        if (time - eventNames[name].time < interval) ispass = false\r\n        eventNames[name].count++\r\n        eventNames[name].time = time\r\n    } else {\r\n        eventNames[name] = {\r\n            count: 1,\r\n            time: time\r\n        }\r\n    }\r\n    if (ispass) {\r\n        sprid = null\r\n    } else if (name == 'action') {\r\n        if (args && args.sprid != sprid) {\r\n            ispass = true\r\n            sprid = args.sprid\r\n        }\r\n    }\r\n    return ispass\r\n}","// 对外用户事件\r\nexport const EVENTS = {\r\n   //    点击舞台\r\n   CLICK_STAGE: 'click-stage',\r\n   //    点击舞台背景\r\n   CLICK_BACKGROUND: 'click-background',\r\n   //    点击元素\r\n   CLICK_SPRITE: 'click-sprite',\r\n   //    双击元素\r\n   DBLCLICK_SPRITE: 'dblclick-sprite',\r\n   //    鼠标按下舞台背景\r\n   MOUSEDOWN_BACKGROUND: 'mousedown-background',\r\n   //    鼠标释放舞台背景\r\n   MOUSEUP_BACKGROUND: 'mouseup-background',\r\n   //    鼠标经过元素\r\n   MOUSEOVER_SPRITE: 'mouseover-sprite',\r\n   //    鼠标离开元素\r\n   MOUSEOUT_SPRITE: 'mouseout-sprite',\r\n   //    鼠标按下元素\r\n   MOUSEDOWN_SPRITE: 'mousedown-sprite',\r\n   //    鼠标释放元素\r\n   MOUSEUP_SPRITE: 'mouseup-sprite',\r\n   //    鼠标移入元素\r\n   MOUSEENTER_SPRITE: 'mouseenter-sprite',\r\n   //    鼠标移出元素\r\n   MOUSELEAVE_SPRITE: 'mouseleave-sprite',\r\n   //    舞台渲染完毕\r\n   STAGE_MOUNTED: 'stage-mounted',\r\n   // 数据加载完成\r\n   DATA_LOADED: 'data-loaded',\r\n   // 页面状态\r\n   PAGE_STATE: 'page-state'\r\n}\r\n// 内部控制事件\r\nexport const CEVENTS = {\r\n   // 执行动作\r\n   ACTION: 'action',\r\n   // 设置应用\r\n   APP_ACTION: 'appAction'\r\n}","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","import isPlainObject from 'lodash/isPlainObject'\r\nimport * as dayjs from 'dayjs'\r\n\r\nconst formatFunc = {\r\n    dayjs(value, rule) {\r\n        return dayjs(value).format(rule)\r\n    }\r\n}\r\n\r\n\r\n// 读取数据\r\nconst readData = function (data, keyPath, mapKey, format) {\r\n    let resData = data\r\n    if (keyPath) {\r\n        let keys = keyPath.split('.')\r\n        for (let key of keys) {\r\n            if (typeof resData[key] != 'undefined') {\r\n                resData = resData[key]\r\n            } else {\r\n                resData = null\r\n                break\r\n            }\r\n        }\r\n    } else {\r\n        if (typeof format == 'object' && format.func) {\r\n            return formatFunc[format.func].call(null, resData, format.rule)\r\n        } else {\r\n            return resData\r\n        }\r\n    }\r\n    if (mapKey && resData instanceof Array) {\r\n        return resData.map(itemData => {\r\n            return readData(itemData, mapKey, null, format)\r\n        })\r\n    } else {\r\n        if (typeof format == 'object' && format.func) {\r\n            return formatFunc[format.func].call(null, resData, format.rule)\r\n        } else {\r\n            return resData\r\n        }\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * 提取原来数据中的相关数据，转换后如下\r\n * config是提取规则，规则主要是两个值x和y值\r\n * x是一个横向的数据的提取规则\r\n * y是一个纵向的多组数据的提取规则\r\n * 任何一个规则都包含三个属性值name：姓名名称，path：提取深度路径，mapKey：提取所在深度的具体值，\r\n * 示例：\r\n * 数据源\r\n *  {\r\n    base: {\r\n        name: 'wangli',\r\n        age: 18,\r\n        ued: [{\r\n                year: '2010',\r\n                fk: {a: 11,b: 99}\r\n            },\r\n            {\r\n                year: '2011',\r\n                fk: {a: 15,b: 80}\r\n            },\r\n            {\r\n                year: '2012',\r\n                fk: {a: 30,b: 60}\r\n            }]\r\n        }\r\n    }\r\n * -----------------------------------------------------------------------------------------\r\n  提取规则 1\r\n  {name:'year',path:'base.ued',mapKey:'year',format:{func:'dayjs',rule:''}}\r\n  返回结果\r\n  { year:['2010','2011','2012'] }\r\n * -----------------------------------------------------------------------------------------\r\n  提取规则 2\r\n  [\r\n  {name:'year',path:'base.ued',mapKey:'year'},\r\n  {name:'name',path:'base.name',mapKey:''},\r\n  ]\r\n  返回结果\r\n  {\r\n  year:['2010','2011','2012'],\r\n  name:'wangli'\r\n  }\r\n * -----------------------------------------------------------------------------------------\r\n  提取规则 3\r\n  {\r\n   x:{name:'年份',path:'base.ued',mapKey:'year',format:null},\r\n   y:[{name:'张三',path:'base.ued',mapKey:'fk.a',format:null},{name:'张三',path:'base.ued',mapKey:'fk.a',format:null}]\r\n  }\r\n  返回结果\r\n  [\r\n    [ '年份', '张三', '李四' ],\r\n    [ '2010', 11, 99 ],\r\n    [ '2011', 15, 80 ],\r\n    [ '2012', 30, 60 ]\r\n  ]\r\n * -----------------------------------------------------------------------------------------\r\n * \r\n * @param {*} data 提取数据\r\n * @param {*} config 提取规则\r\n * @returns Object\r\n */\r\nexport const extractData = function (data, config) {\r\n    if (config && isPlainObject(config) && config.y && config.y instanceof Array && config.y.length > 0) {\r\n        let resData = []\r\n        if (config.x && config.x.name && config.x.path) {\r\n            resData.push([config.x.name])\r\n            // 二维数组，填充第一条数据\r\n            let rowHead = readData(data, config.x.path, config.x.mapKey, config.x.format)\r\n            if (rowHead) {\r\n                rowHead.forEach((element, index) => {\r\n                    resData[index + 1] = [element]\r\n                })\r\n            }\r\n            // 根据y数据规则集合，提取数据行列\r\n            config.y.forEach(item => {\r\n                // 行数据，第一列数据\r\n                resData[0].push(item.name)\r\n                // 行数据，追加其他数据\r\n                let itemData = readData(data, item.path, item.mapKey, item.format)\r\n                if (itemData && itemData instanceof Array) {\r\n                    itemData.forEach((element, index) => {\r\n                        if (resData[index + 1]) {\r\n                            resData[index + 1].push(element)\r\n                        } else {\r\n                            resData[index + 1] = [element]\r\n                        }\r\n                    })\r\n                }\r\n            })\r\n        } else {\r\n            // 根据y数据规则集合，提取数据行列\r\n            config.y.forEach((item, i) => {\r\n                let itemData = readData(data, item.path, item.mapKey, item.format)\r\n                if (itemData && itemData instanceof Array) {\r\n                    if (i == 0) {\r\n                        resData.push([item.name])\r\n                    } else {\r\n                        resData[0].push(item.name)\r\n                    }\r\n                    itemData.forEach((element, index) => {\r\n                        if (resData[index + 1]) {\r\n                            resData[index + 1].push(element)\r\n                        } else {\r\n                            resData[index + 1] = [element]\r\n                        }\r\n                    })\r\n                }\r\n            })\r\n        }\r\n        return resData\r\n    } else if (config && isPlainObject(config) && config.name && config.path) {\r\n        return {\r\n            [config.name]: readData(data, config.path, config.mapKey, config.format)\r\n        }\r\n    } else if (config && config instanceof Array) {\r\n        let resData = {}\r\n        config.forEach(element => {\r\n            if (element?.name) {\r\n                resData[element.name] = readData(data, element.path, element.mapKey, element.format)\r\n            }\r\n        })\r\n        return resData\r\n    } else {\r\n        console.log('数据未处理')\r\n        return data\r\n    }\r\n}\r\n\r\n// 将一般对象转换为纯json对象\r\nexport const jsonData = function (val) {\r\n    if (typeof val == 'string') {\r\n        try {\r\n            return JSON.parse(val)\r\n        } catch (error) {\r\n            return val\r\n        }\r\n    } else if (val) {\r\n        return JSON.parse(JSON.stringify(val))\r\n    } else {\r\n        return {}\r\n    }\r\n}\r\n\r\n\r\n// 删除数组值，根据对象key值删除\r\nexport const removeArray = function (array, key, value) {\r\n    if (array && array instanceof Array) {\r\n        let index = key ? array.findIndex(n => n[key] == value) : array.findIndex(n => n == value)\r\n        if (index > -1) {\r\n            return array.splice(index, 1)\r\n        } else {\r\n            return false\r\n        }\r\n    } else {\r\n        return false\r\n    }\r\n}","export { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n  let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n  let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n  return (size = defaultSize) => {\n    let id = ''\n    while (true) {\n      let bytes = getRandom(step)\n      let j = step\n      while (j--) {\n        id += alphabet[bytes[j] & mask] || ''\n        if (id.length === size) return id\n      }\n    }\n  }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n  customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) =>\n  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n    byte &= 63\n    if (byte < 36) {\n      id += byte.toString(36)\n    } else if (byte < 62) {\n      id += (byte - 26).toString(36).toUpperCase()\n    } else if (byte > 62) {\n      id += '-'\n    } else {\n      id += '_'\n    }\n    return id\n  }, '')\n","import { nanoid } from 'nanoid'\r\n\r\n// 生成唯一序号\r\nexport const guid = function () {\r\n    const S4 = function () {\r\n        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n    }\r\n    return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4());\r\n}\r\n\r\n// 定时器\r\nlet ids = {}\r\nexport const interval = {\r\n    add(_fun, _time = 1000, _id) {\r\n        let id = _id || \"it_\" + nanoid(7)\r\n        if (ids[id]) {\r\n            clearInterval(ids[id])\r\n        }\r\n        ids[id] = setInterval(_fun, _time);\r\n        return id;\r\n    },\r\n    del(_id) {\r\n        if (_id) {\r\n            if (ids[_id]) {\r\n                clearInterval(ids[_id])\r\n                delete ids[_id]\r\n            }\r\n        } else {\r\n            for (const key in ids) {\r\n                clearInterval(ids[key])\r\n            }\r\n            ids = {}\r\n        }\r\n    }\r\n}\r\n\r\n// 延时处理\r\nlet idos = {}\r\nexport const timeout = {\r\n    add(_fun, _time, _id) {\r\n        let time = _time || 1000\r\n        let id = _id || \"id_\" + new Date().getTime() + \"\" + Math.floor(Math.random() * 1000);\r\n        if (idos[id]) {\r\n            clearTimeout(idos[id])\r\n        }\r\n        idos[id] = setTimeout(_fun, time);\r\n        return id;\r\n    },\r\n    del(_id) {\r\n        if (_id) {\r\n            if (idos[_id]) {\r\n                clearTimeout(idos[_id])\r\n                delete idos[_id]\r\n            }\r\n        } else {\r\n            for (const key in idos) {\r\n                if (Object.hasOwnProperty.call(idos, key)) {\r\n                    clearTimeout(idos[key])\r\n                }\r\n            }\r\n            idos = {}\r\n        }\r\n    }\r\n}\r\n","import { getCurrentInstance } from 'vue'\r\nimport { nanoid } from 'nanoid'\r\n\r\n// 获取vue当前的全局参数对象\r\nexport const getAppGlobal = function (key = 'AppSetup') {\r\n    const { appContext: { config: { globalProperties: global = {} } } } = getCurrentInstance()\r\n    return global[key] || null\r\n}\r\n// 获取上级尺寸\r\nexport const getParentSize = function (_dom) {\r\n    if (_dom && _dom != document.body && _dom.parentNode) {\r\n        if (_dom.parentNode.clientWidth > 0 && _dom.parentNode.clientHeight > 0) {\r\n            return {\r\n                width: _dom.parentNode.clientWidth,\r\n                height: _dom.parentNode.clientHeight,\r\n                ratio: _dom.parentNode.clientHeight / _dom.parentNode.clientWidth\r\n            }\r\n        } else {\r\n            return getParentSize(_dom.parentNode)\r\n        }\r\n    } else {\r\n        return {\r\n            width: window.outerWidth,\r\n            height: window.outerHeight,\r\n            ratio: window.outerHeight / window.outerWidth\r\n        }\r\n    }\r\n}\r\n\r\n// 距离计算\r\nexport const getDomRect = function (_dom) {\r\n    if (_dom) {\r\n        let dom = (typeof _dom == 'string') ? document.querySelector(_dom) : _dom\r\n        let rect = dom.getBoundingClientRect()\r\n        if (rect.width > 0 && rect.height > 0) {\r\n            return rect\r\n        } else if (dom.parentElement && dom.parentElement.localName != \"body\") {\r\n            return getDomRect(dom.parentElement)\r\n        } else {\r\n            return {\r\n                width: window.innerWidth,\r\n                height: window.innerHeight\r\n            }\r\n        }\r\n    }\r\n    return null\r\n}\r\n// 返回一个根据窗口变化的缩放比\r\nexport const getScale = function (dom, _size) {\r\n    let rect = getDomRect(dom) || {\r\n        width: window.innerWidth,\r\n        height: window.innerHeight\r\n    }\r\n    let h = rect.height / _size.height;\r\n    let w = rect.width / _size.width;\r\n    if (h < w) {\r\n        return { value: h, h, w }\r\n    } else {\r\n        return { value: w, h, w }\r\n    }\r\n}\r\n\r\n// 获取列表项最大的深度值\r\nexport const getMaxZIndex = function (components) {\r\n    if (Array.isArray(components) && components.length > 0) {\r\n        let comps = components.map(item => {\r\n            return {\r\n                id: item.id,\r\n                zIndex: item.zIndex || 0\r\n            }\r\n        }).sort((a, b) => {\r\n            return b.zIndex - a.zIndex\r\n        })\r\n        return comps[0].zIndex || 0\r\n    } else {\r\n        return 0\r\n    }\r\n}\r\n// 创建一个数据源对象的描述副本\r\nexport const createSimpleData = function (data) {\r\n    let object = {\r\n        id: null,\r\n        gpid: null,\r\n        mid: null,\r\n        visible: null,\r\n        name: null,\r\n        type: null,\r\n        zIndex: null\r\n    }\r\n    for (const key in object) {\r\n        if (Object.hasOwnProperty.call(object, key)) {\r\n            object[key] = data[key]\r\n        }\r\n    }\r\n    return object\r\n}\r\nexport const getTemplateData = function (...override) {\r\n    let time = new Date().getTime()\r\n    let data = {\r\n        id: 'A_' + nanoid(10),\r\n        title: \"\",\r\n        creattime: time,\r\n        uptime: time,\r\n        cover: \"\",\r\n        description: \"\",\r\n        background: { backgroundColor: \"#111111\" },\r\n        width: 1080,\r\n        height: 768,\r\n        scaleMode: 'auto',\r\n        network: {\r\n            host: '',\r\n            method: 'GET',\r\n            offline: false,\r\n            headers: {},\r\n            watch: ''\r\n        },\r\n        globalData: [],\r\n        modules: [],\r\n        actions: [],\r\n        plugins: [],\r\n        remote: []\r\n    }\r\n    return Object.assign({}, data, ...override)\r\n}","\r\n// json转url参数\r\nexport const jsonToParams = function (data) {\r\n    return data ? Object.keys(data).map(function (key) {\r\n        return encodeURIComponent(key) + \"=\" + encodeURIComponent(data[key]);\r\n    }).join(\"&\") : ''\r\n}\r\n\r\n// 获取url参数值\r\nexport const getUrlParam = function (name, decode = true) {\r\n    let url = location.search || location.hash\r\n    let result = {}\r\n    let reg = /([^?=&#]+)=([^?=&#]+)/g\r\n    url.replace(reg, (n, x, y) => result[x] = decode ? decodeURIComponent(y) : y)\r\n    return name ? result[name] || '' : result\r\n}","import * as Dayjs from 'dayjs'\r\n\r\nexport const dayjs = Dayjs\r\nexport * from './data'\r\nexport * from './datetime'\r\nexport * from './vapp'\r\nexport * from './uri'","import EventEmitter from 'eventemitter3'\r\nimport buffer from './buffer'\r\nimport { CEVENTS } from '@/events'\r\nimport { jsonData } from '@/utils'\r\n\r\n// 事件监听\r\nconst evtCenter = new EventEmitter()\r\n\r\n/**\r\n * 根据事件委托命令发送中心\r\n * @module command\r\n */\r\nconst command = {\r\n   /**\r\n    * 添加需要托管的eventObj对象事件\r\n    * @param {string} eventName 事件名称\r\n    * @param {function} fun 事件方法\r\n    * @param {object} eventObj  委托对象\r\n    */\r\n   addEventListener(eventName, fun, eventObj = null) {\r\n      // 注册命令事件\r\n      evtCenter.on(eventName, fun, eventObj)\r\n   },\r\n   /**\r\n    * 删除托管的eventObj对象事件\r\n    * @param {string} eventName 事件名称\r\n    * @param {function} fun 委托对象\r\n    * @param {object} eventObj  委托对象\r\n    */\r\n   removeEventListener(eventName, fun, eventObj) {\r\n      if (eventObj && fun) {\r\n         evtCenter.off(eventName, fun, eventObj)\r\n      } else if (fun) {\r\n         evtCenter.off(eventName, fun)\r\n      } else {\r\n         evtCenter.off(eventName)\r\n      }\r\n   },\r\n   /**\r\n    * 清除所有\r\n    */\r\n   clear(event) {\r\n      evtCenter.removeAllListeners(event)\r\n   },\r\n   /**\r\n    * 发送命令\r\n    * @param {string} eventName 事件名称\r\n    * @param {object} args 参数 \r\n    * @param {boolean} force 强制发送\r\n    */\r\n   emit(eventName, args, force = false) {\r\n      if (typeof force == 'boolean' && force) {\r\n         evtCenter.emit(eventName, args)\r\n      } else if (buffer(eventName, args)) {\r\n         let len = arguments.length\r\n         if (len <= 3) {\r\n            evtCenter.emit(eventName, args, force)\r\n         } else {\r\n            let _args = []\r\n            for (i = 1; i < len; i++) {\r\n               _args[0] = arguments[i]\r\n            }\r\n            evtCenter.emit(eventName, ..._args)\r\n         }\r\n      }\r\n   },\r\n   /**\r\n    * 执行命令\r\n    * @param {*} action 动作\r\n    * @param {*} sprid 操作元素id\r\n    * @param {*} appid 来自应以id\r\n    */\r\n   execute(action, sprid = \"\", appid) {\r\n      let sendData = {\r\n         sprid,\r\n         appid,\r\n         data: jsonData(action)\r\n      }\r\n      this.emit(CEVENTS.ACTION, sendData)\r\n   },\r\n   /**\r\n    * 消息提示\r\n    */\r\n   message(val) {\r\n      this.emit('message-send', val)\r\n   },\r\n   /**\r\n    * 执行元素内的cmdRunning方法\r\n    * @param {string} id 元素id \r\n    * @param {*} data \r\n    */\r\n   running(id, data) {\r\n      this.emit('run_function_' + id, data)\r\n   },\r\n   /**\r\n    * 执行数据更新\r\n    * @param {string} sprid 目标对象id \r\n    * @param {*} value 数据值\r\n    */\r\n   reviewData(sprid, value) {\r\n      this.emit(CEVENTS.ACTION, {\r\n         data: {\r\n            action: 'reviewData',\r\n            sprid,\r\n            value\r\n         }\r\n      })\r\n   }\r\n}\r\n\r\nexport default command","export default [{\r\n    name: '主内容区',\r\n    type: 'content'\r\n}, {\r\n    name: '覆盖弹层',\r\n    type: 'overlayer'\r\n}, {\r\n    name: '固定层',\r\n    type: 'fixed'\r\n}]","export default [{\r\n    name: '显示隐藏',\r\n    action: \"show\",\r\n    target: 'component',\r\n    valueType: 'boolean',\r\n    value: true\r\n},\r\n{\r\n    name: '显示开关',\r\n    action: \"toggle\",\r\n    target: 'component',\r\n    valueType: \"undefined\",\r\n    value: null\r\n},\r\n{\r\n    name: '发送数据',\r\n    action: \"sendData\",\r\n    target: 'component',\r\n    valueType: 'object',\r\n    value: null\r\n}, {\r\n    name: '打开外链',\r\n    action: 'href',\r\n    target: 'url',\r\n    valueType: 'string',\r\n    value: ''\r\n}, {\r\n    name: '页面切换',\r\n    action: 'singleModule',\r\n    target: 'modules',\r\n    valueType: 'string',\r\n    value: \"\"\r\n}, {\r\n    name: '开关弹窗',\r\n    action: 'popup',\r\n    target: 'module',\r\n    valueType: 'string',\r\n    value: \"\"\r\n}, {\r\n    name: '远端请求',\r\n    action: 'readRemote',\r\n    target: 'remote',\r\n    valueType: 'object',\r\n    value: null\r\n}, {\r\n    name: '数据修改',\r\n    action: 'setGData',\r\n    target: 'gdata',\r\n    valueType: 'object',\r\n    value: null\r\n}, {\r\n    name: 'iframe通信',\r\n    action: 'iframeRpc',\r\n    target: 'component',\r\n    valueType: 'object',\r\n    value: null\r\n}]\r\n","export default [\r\n    {\r\n        name: '静态数据',\r\n        type: 'source'\r\n    },\r\n    {\r\n        name: '远程数据',\r\n        type: 'remote'\r\n    },\r\n    {\r\n        name: '本地数据',\r\n        type: 'local'\r\n    }\r\n]","export default [\r\n    { name: '形状', type: 'shape' },\r\n    { name: '文本', type: 'text' },\r\n    { name: '数字', type: 'number' },\r\n    { name: '图表', type: 'chart' },\r\n    { name: '表格', type: 'table' },\r\n    { name: '表单', type: 'form' },\r\n    { name: '菜单', type: 'menu' },\r\n    { name: '时间', type: 'date' },\r\n    { name: '媒体', type: 'media' },\r\n    { name: '地图', type: 'map' },\r\n    { name: '3D', type: '3d' },\r\n    { name: '其它', type: 'other' }\r\n]","export default [{\r\n    name: '点击',\r\n    event: 'click',\r\n    pams: '',\r\n    actions: [],\r\n    actionValue: {},\r\n    disabled: false\r\n},\r\n{\r\n    name: '定时任务',\r\n    event: 'interval',\r\n    pams: { delay: 1000 },\r\n    actions: [],\r\n    actionValue: {},\r\n    disabled: false\r\n},\r\n{\r\n    name: '延迟任务',\r\n    event: 'timeout',\r\n    pams: { delay: 1000 },\r\n    actions: [],\r\n    actionValue: {},\r\n    disabled: false\r\n}]","export default [{\r\n    name: '应用启动',\r\n    event: 'launch',\r\n    pams: null,\r\n    actions: [],\r\n    actionValue: {}\r\n},\r\n{\r\n    name: '定时任务',\r\n    event: 'interval',\r\n    pams: { delay: 1000 },\r\n    actions: [],\r\n    actionValue: {}\r\n},\r\n{\r\n    name: '延迟任务',\r\n    event: 'timeout',\r\n    pams: { delay: 1000 },\r\n    actions: [],\r\n    actionValue: {}\r\n}]","import level from \"./level\"\r\nimport actions from \"./actions\"\r\nimport dataTypes from \"./dataTypes\"\r\nimport component from \"./component\"\r\nimport events from \"./events\"\r\nimport appEvents from \"./appEvents\"\r\n\r\n/**\r\n * 此模块是数据相关定义、初始化、配置等\r\n */\r\nexport default {\r\n    get level() { return level },\r\n    get actions() { return actions },\r\n    get dataTypes() { return dataTypes },\r\n    get component() { return component },\r\n    get events() { return events },\r\n    get appEvents() { return appEvents }\r\n}","export default \"data:application/wasm;base64,AGFzbQEAAAAB4gEfYAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAF/AX9gAX8AYAV/f39/fwBgBH9/f38AYAR/f39/AX9gAAF/YAV/f39/fwF/YAZ/f39/f38AYAF/AX5gAABgBn9/f39/fwF/YAd/f39/f39/AGAJf39/f39/f39/AGAJf39/f39/fn5+AGAFf39+f38AYAV/f31/fwBgA39/fABgBX9/fH9/AGAEf35/fwBgBH99f38AYAR/fH9/AGAHf39/f39/fwF/YAN/fH8Bf2AEf3x/fwF/YAJ+fwF/YAN+f38Bf2ABfAF/Ar8LHxEuL3JpY2hfd2FzbV9iZy5qcxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgAFES4vcmljaF93YXNtX2JnLmpzFV9fd2JpbmRnZW5fbnVtYmVyX25ldwAeES4vcmljaF93YXNtX2JnLmpzFF9fd2JpbmRnZW5faXNfb2JqZWN0AAQRLi9yaWNoX3dhc21fYmcuanMZX193YmluZGdlbl9qc3ZhbF9sb29zZV9lcQAAES4vcmljaF93YXNtX2JnLmpzFl9fd2JpbmRnZW5fYm9vbGVhbl9nZXQABBEuL3JpY2hfd2FzbV9iZy5qcxVfX3diaW5kZ2VuX251bWJlcl9nZXQAAhEuL3JpY2hfd2FzbV9iZy5qcxVfX3diaW5kZ2VuX3N0cmluZ19nZXQAAhEuL3JpY2hfd2FzbV9iZy5qcxRfX3diaW5kZ2VuX2Vycm9yX25ldwAAES4vcmljaF93YXNtX2JnLmpzGl9fd2JnX2dldF8yN2ZlM2RhYzFjNGQwMjI0AAARLi9yaWNoX3dhc21fYmcuanMdX193YmdfbGVuZ3RoX2U0OThmYmMyNGY5YzFkNGYABBEuL3JpY2hfd2FzbV9iZy5qcxpfX3diZ19uZXdfYjUyNWRlMTdmNDRhODk0MwAJES4vcmljaF93YXNtX2JnLmpzFl9fd2JpbmRnZW5faXNfZnVuY3Rpb24ABBEuL3JpY2hfd2FzbV9iZy5qcxtfX3diZ19uZXh0X2I3ZDUzMGMwNGZkOGIyMTcABBEuL3JpY2hfd2FzbV9iZy5qcxtfX3diZ19uZXh0Xzg4NTYwZWMwNmEwOTRkZWEABBEuL3JpY2hfd2FzbV9iZy5qcxtfX3diZ19kb25lXzFlYmVjMDNiYmQ5MTk4NDMABBEuL3JpY2hfd2FzbV9iZy5qcxxfX3diZ192YWx1ZV82YWM4ZGE1Y2M1YjNlZmRhAAQRLi9yaWNoX3dhc21fYmcuanMfX193YmdfaXRlcmF0b3JfNTVmMTE0NDQ2MjIxYWE1YQAJES4vcmljaF93YXNtX2JnLmpzGl9fd2JnX2dldF9iYWY0ODU1ZjlhOTg2MTg2AAARLi9yaWNoX3dhc21fYmcuanMbX193YmdfY2FsbF85NWQxZWE0ODhkMDNlNGU4AAARLi9yaWNoX3dhc21fYmcuanMaX193Ymdfc2V0XzE3MjI0YmM1NDhkZDFkN2IAAxEuL3JpY2hfd2FzbV9iZy5qcx5fX3diZ19pc0FycmF5XzM5ZDI4OTk3YmY2Yjk2YjQABBEuL3JpY2hfd2FzbV9iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2E2OWYwMmVlNGM0ZjUwNjUABBEuL3JpY2hfd2FzbV9iZy5qcyRfX3diZ19pc1NhZmVJbnRlZ2VyXzhjNDc4OTAyOWU4ODUxNTkABBEuL3JpY2hfd2FzbV9iZy5qcx1fX3diZ19idWZmZXJfY2Y2NWMwN2RlMzRiOWEwOAAEES4vcmljaF93YXNtX2JnLmpzGl9fd2JnX25ld181MzdiNzM0MWNlOTBiYjMxAAQRLi9yaWNoX3dhc21fYmcuanMaX193Ymdfc2V0XzE3NDk5ZThhYTQwMDNlYmQAAxEuL3JpY2hfd2FzbV9iZy5qcx1fX3diZ19sZW5ndGhfMjdhMmFmZThhYjQyYjA5ZgAEES4vcmljaF93YXNtX2JnLmpzLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8wMWNlYmU3OWNhNjA2Y2NhAAQRLi9yaWNoX3dhc21fYmcuanMXX193YmluZGdlbl9kZWJ1Z19zdHJpbmcAAhEuL3JpY2hfd2FzbV9iZy5qcxBfX3diaW5kZ2VuX3Rocm93AAIRLi9yaWNoX3dhc21fYmcuanMRX193YmluZGdlbl9tZW1vcnkACQOcApoCAwYEDwMIBgAABQYAAQUIGwEDAg4DEAUCGgIBBQUFAQADAQIEBQUDBQIDHAECAwsABRELBQAZBAoAAAIBHQADAwAABQECAAkABQIDAwIDAgIDAgIA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AEHY4sAAQcziwAA2AgBBzOLAAEHE4sAANgIAQeDiwABB1OLAADYCAEHU4sAAQcziwAA2AgBB6OLAAEHc4sAANgIAQdziwABB1OLAADYCAEHk4sAAQdziwAA2AgBB8OLAAEHk4sAANgIAQeziwABB5OLAADYCAEH44sAAQeziwAA2AgBB9OLAAEHs4sAANgIAQYDjwABB9OLAADYCAEH84sAAQfTiwAA2AgBBiOPAAEH84sAANgIAQYTjwABB/OLAADYCAEGQ48AAQYTjwAA2AgBBjOPAAEGE48AANgIAQZjjwABBjOPAADYCAEGU48AAQYzjwAA2AgBBoOPAAEGU48AANgIAQZzjwABBlOPAADYCAEGo48AAQZzjwAA2AgBBsOPAAEGk48AANgIAQaTjwABBnOPAADYCAEG448AAQazjwAA2AgBBrOPAAEGk48AANgIAQcDjwABBtOPAADYCAEG048AAQazjwAA2AgBByOPAAEG848AANgIAQbzjwABBtOPAADYCAEHQ48AAQcTjwAA2AgBBxOPAAEG848AANgIAQdjjwABBzOPAADYCAEHM48AAQcTjwAA2AgBB4OPAAEHU48AANgIAQdTjwABBzOPAADYCAEHo48AAQdzjwAA2AgBB3OPAAEHU48AANgIAQfDjwABB5OPAADYCAEHk48AAQdzjwAA2AgBB+OPAAEHs48AANgIAQezjwABB5OPAADYCAEGA5MAAQfTjwAA2AgBB9OPAAEHs48AANgIAQYjkwABB/OPAADYCAEH848AAQfTjwAA2AgBBkOTAAEGE5MAANgIAQYTkwABB/OPAADYCAEGY5MAAQYzkwAA2AgBBjOTAAEGE5MAANgIAQaDkwABBlOTAADYCAEGU5MAAQYzkwAA2AgBBnOTAAEGU5MAANgIAQQhBCBD/ASEBQRRBCBD/ASECQRBBCBD/ASEGQbjkwAAgAyADELMCIgBBCBD/ASAAayIDELECIgA2AgBBsOTAACAFQQhqIAYgASACamogA2prIgE2AgAgACABQQFyNgIEQQhBCBD/ASEDQRRBCBD/ASECQRBBCBD/ASEFIAAgARCxAiAFIAIgA0EIa2pqNgIEQcTkwABBgICAATYCAAtBACECQbDkwAAoAgAiACAETQ0AQbDkwAAgACAEayIBNgIAQbjkwABBuOTAACgCACIAIAQQ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GGoQswEMDgsgAiAAKAIENgIIIAJBJGpBAjYCACACQSxqQQE2AgAgAkHAksAANgIgIAJBADYCGCACQR02AhQgAiACQRBqNgIoIAIgAkEIajYCECABIAJBGGoQswEMDQsgAiAAKQIENwMIIAJBJGpBATYCACACQSxqQQE2AgAgAkGsksAANgIgIAJBADYCGCACQR42AhQgAiACQRBqNgIoIAIgAkEIajYCECABIAJBGGoQswEMDAsgAkEkakEBNgIAIAJBLGpBADYCACACQZySwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMCwsgAkEkakEBNgIAIAJBLGpBADYCACACQYiSwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMCgsgAkEkakEBNgIAIAJBLGpBADYCACACQfSRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMCQsgAkEkakEBNgIAIAJBLGpBADYCACACQeCRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMCAsgAkEkakEBNgIAIAJBLGpBADYCACACQciRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMBwsgAkEkakEBNgIAIAJBLGpBADYCACACQbiRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMBgsgAkEkakEBNgIAIAJBLGpBADYCACACQayRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMBQsgAkEkakEBNgIAIAJBLGpBADYCACACQaCRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMBAsgAkEkakEBNgIAIAJBLGpBADYCACACQYyRwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMAwsgAkEkakEBNgIAIAJBLGpBADYCACACQfSQwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMAgsgAkEkakEBNgIAIAJBLGpBADYCACACQdyQwAA2AiAgAkHMkMAANgIoIAJBADYCGCABIAJBGGoQswEMAQsgASAAKAIEIABBCGooAgAQgwILIAJBMGokAAvwBwEIfwJAAkAgAEEDakF8cSICIABrIgUgAUsgBUEE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AiQgA0EgagwCCyADQQM2AiggA0Gev8AANgIkIANBAjsBICADQSBqDAELIANBAzYCKCADQaG/wAA2AiQgA0ECOwEgIANBIGoLIQQgA0HcAGogBTYCACADIAQ2AlggAyAGNgJUIAMgAjYCUCAAIANB0ABqED4gA0GAAWokAAvlBAEOfyMAQfAAayICJAAgASgCCCIFQQFxIAEoAgQhCSABKAIAIQogASgCDCEEIAVBAk8EQCAFQQF2IQ0gAkEgaiELA0AgAkEQaiAKIAZBBXQiA2oiAUEgaiIHIAEQaSACQTBqIAcgARBpIAJB0ABqIAAgAkEwahA/IAJByABqIgcgAkHoAGopAwA3AwAgAkFAayIOIAJB4ABqKQMANwMAIAJBOGoiDyACQdgAaikDADcDACACIAIpA1A3AzAgAyAJaiEDQQAhAQNAIAJBMGogAWoiCCAILQAAIAEgBGotAABzOgAAIAFBAWoiAUEQRw0AC0EAIQEDQCABIAJqQUBrIgggCC0AACACQRBqIAFqLQAAczoAACABQQFqIgFBEEcNAAsgAyACKQMwNwAAIANBGGogBykDADcAACADQRBqIA4pAwA3AAAgA0EIaiAPKQMANwAAIARBCGogC0EIaikAADcAACAEIAspAAA3AAAgDSAGQQFqIgZHDQALCwRAIAkgBUH+////AHFBBHQiAWohAyACIAEgCmoiAUEQaiIFIAEQpAEgAkEQaiAFIAEQpAEgAkEwahDjASACQThqIAJBGGoiASkDADcDACACIAIpAxA3AzAgAkHQAGogACACQTBqED8gASACQdgAaikDADcDACACIAIpA1A3AxBBACEBA0AgAkEQaiABaiIAIAAtAAAgASAEai0AAHM6AAAgAUEBaiIBQRBHDQALIAMgAikDEDcAACADQQhqIAJBGGopAwA3AAAgBCACKQMANwAAIARBCGogAkEIaikDADcAAAsgAkHwAGokAAv8BAEIfyMAQRBrIgckAAJ/IAIoAgQiBARAQQEgACACKAIAIAQgASgCDBEBAA0BGgtBACACQQxqKAIAIgNFDQAaIAIoAggiBCADQQxsaiEIIAdBDGohCQNAAkACQAJAAkAgBC8BAEEBaw4CAgEACwJAIAQoAgQiAkHBAE8EQCABQQxqKAIAIQMDQEEBIABB8MTAAEHAACADEQEADQcaIAJB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Qfj///8DcSEGQQAhAwNAIAIoAgAgAkF4aigCACACQXBqKAIAIAJBaGooAgAgAkFgaigCACACQVhqKAIAIAJBUGooAgAgAkFIaigCACADampqampqamohAyACQUBrIQIgBkF4aiIGDQALIAJBRGoLIQIgBARAIAJBBGohAgNAIAIoAgAgA2ohAyACQQhqIQIgBEF/aiIEDQALCyABQRRqKAIADQEgAyEEDAMLQQAhAyABQRRqKAIADQFBASECDAQLIANBD0sNACAHKAIERQ0CCyADIANqIgQgA0kNAQsgBEUNAAJAIARBf0oEQCAEQQEQiAIiAkUNASAEIQMMAwsQygEACyAEQQEQrAIAC0EBIQJBACEDCyAAQQA2AgggACACNgIEIAAgAzYCACAFIAA2AgwgBUEgaiABQRBqKQIANwMAIAVBGGogAUEIaikCADcDACAFIAEpAgA3AxAgBUEMakGYpcAAIAVBEGoQPQRAQYimwABBMyAFQShqQbymwABB5KbAABCYAQALIAVBMGokAAuHBAEDfyMAQaAKayIDJAAgA0EQakEAQYAEEK8CGgJAIAJBgQRJBEAgA0EQaiACIAEgAkHcicAAEOkBIANBEDYC8AkgA0GQBGoQLCADQfgGakHUgMAAKQAANwMAIANBzIDAACkAADcD8AYgA0GAB2ogA0GQBGpB8AIQrgIaIANBkApqIgRCADcAACAEQQhqQgA3AAAgAkFwcSIEQY98akH+e00NASADQZAKaiABIARqIAJBD3EiBRCuAhogA0GQCmogBWpBECAFayIFIAUQrwIaIANB+AlqIANBmApqKQMANwMAIAMgAykDkAo3A/AJIAMgA0EQaiAEaiIENgKMCiADIAJBBHYiAjYCiAogAyABNgKACiADIANBEGo2AoQKIAMgA0HgCWoiBTYCnAogAyACNgKYCiADIAE2ApAKIAMgA0EQajYClAogA0GAB2ogA0GQCmoQbSADIAU2ApgKIAMgBDYClAogAyADQfAJajYCkAogA0GAB2ogA0GQCmoQdyADKAKECiICRQ0BIANBCGogAygCiAogAygCjApBAEdqQQR0IgFBABC3ASADKAIIIQQgACADKAIMIgU2AgQgACAENgIAIAUgAiABEK4CGiAAIAE2AgggA0GgCmokAA8LIAJBgARBzInAABCZAgALQYKJwABB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CyACIAFBsKfAAEEAIAVBCWogA2pBJyADaxAyIAVBMGokAAvYAgIDfwF+IwBBQGoiAiQAIAJBIGogAEEIaigCADYCACACIAApAgA3AxggAkEoaiACQRhqEG4CQAJAIAIoAigEQEEAIQAgAkEANgIQIAJCgICAgBA3AwgMAQsgAkEQaiACQTRqKAIAIgA2AgAgAiACKQIsNwMIIABFBEBBACEADAELIAJBGGogAigCDCAAEF4gAigCGCEDIAJBKGogAigCHCIEIAIoAiAiABAzIAIoAigEQCACKQIsIgVCgICAgPAfg0KAgICAIFINAgsgAiAANgIwIAIgBDYCLCACIAM2AiggASgCBCEDIAEoAgggAEYEfyAEIAMgABDAAUUFQQALIQAgAkEoahD4AQsgAkEIahD4ASABEPgBIAJBQGskACAADwsgAiAANgI4IAIgBDYCNCACIAM2AjAgAiAFNwMoQYCAwABBKyACQShqQbyAwABBrIPAABCYAQALsAIBBH8CQAJAAkACQAJAAkAgAUEDakF8cSIDIAFGDQAgAyABayIDIAIgAyACSRsiBEUNAEEAIQNBASEFA0AgASADai0AAEEKRg0GIAQgA0EBaiIDRw0ACyAEIAJBeGoiA0sNAgwBCyACQXhqIQNBACEECwNAAkAgASAEaiIFKAIAQYqUqNAAcyIGQX9zIAZB//37d2pxQYCBgoR4cQ0AIAVBBGooAgBBipSo0ABzIgVBf3MgBUH//ft3anFBgIGChHhxDQAgBEEIaiIEIANNDQELCyAEIAJLDQELQQAhBSACIARGDQEDQCABIARqLQAAQQpGBEAgBCEDQQEhBQwECyAEQQFqIgQgAkcNAAsMAQsgBCACQYzGwAAQmAIACyACIQMLIAAgAzYCBCAAIAU2AgALtgIBA38jAEGACmsiAyQAIANBEGpBAEGABBCvAhogAkGBBEkEQCADQRBqIAIgASACQZyKwAAQ6QEgA0EQNgKQBCADQZAEahAsIANB+AZqQdSAwAApAAA3AwAgA0HMgMAAKQAANwPwBiADQYAHaiADQZAEakHwAhCuAhogAyACQQ9xBH9BzIDAAAUgAyABNgLwCSADIANB4AlqNgL8CSADIAJBBHYiATYC+AkgAyADQRBqNgL0CSADQYAHaiADQfAJahA4IANBCGogA0EQaiABEJYBIAMo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QaHCwABBASADKAIEKAIMEQEADQMgAygCGCEFDAELQQEhBCADKAIAQZXCwABBAiADKAIEKAIMEQEARQ0BDAILQQEhBCACQQE6ABcgAkH0wcAANgIcIAIgAykCADcDCCACIAJBF2o2AhAgAykCCCEGIAMpAhAhByACIAMtACA6ADggAiADKAIcNgI0IAIgBTYCMCACIAc3AyggAiAGNwMgIAIgAkEIajYCGCABIAJBGGpBvKXAACgCABEAAA0BIAIoAhhBk8LAAEECIAIoAhwoAgwRAQAhBAwBCyABIANBvKXAACgCABEAACEECyAAQQE6AAUgACAEOgAEIAJBQGskAAv9AQEHfyMAQdAAayIDJAAgA0EANgIgIAEgAmsiCEEEdiIBQQIgAUECSRsiBgRAIAMhASAGIQcgAiEFA0AgA0EoaiAFQRBqIgkgBRCkASABQQhqIANBMGopAwA3AgAgASADKQMoNwIAIAMgAygCIEEBaiIENgIgIAFBEGohASAJIQUgB0F/aiIHDQALCyAIQSFPBEAgA0FAayACIAZBBHRqIgFBEGogARCkAQsgBEECTwRAIAAgAykDADcAACAAQRhqIANBGGopAwA3AAAgAEEQaiADQRBqKQMANwAAIABBCGogA0EIaikDADcAACADQdAAaiQADwsgBEECEJ0BAAuSAgEBfyMAQTBrIgMkACADIAI6ABQgAyABNgIQIANBCGpBAEEAELcBIANBADYCICADIAMpAwg3AxggA0EoaiADQRBqEJkBAkACQAJAIAMtAChFBEADQCADLQApRQ0CIAMtACohAiADKAIgIgEgAygCGEYEfyADQRhqIAEQwQEgAygCIAUgAQsgAygCHGogAjoAACADIAMoAiBBAWo2AiAgA0EoaiADQRBqEJkBIAMtAChFDQALCyAAQQA2AgQgACADKAIsNgIAIANBGGoQ+AEgAygCECICQYQBSQ0CDAELIAAgAykDGDcCACAAQQhqIANBIGooAgA2AgAgAygCECICQYMBTQ0BCyACEAALIANBMGokAAudAgEEfyMAQSBrIgIkABAQIQQgASgCACIDIAQQESEBIAJBEGoQ4gEgAigCFCABIAIoAhAiBRshAQJAAkACQAJAAkAgBUUEQCABEAtBAUYNASAAQQI6AAQgAUGEAUkNAwwCCyAAQQM6AAQgACABNgIADAILIAEgAxASIQMgAkEIahDiASACKAIMIAMgAigCCCIFGyEDAkACQCAFRQRAIAIgAzYCHCACQRxqENYBDQIgAEECOgAEIANBhAFJDQEgAxAADAELIABBAzoABCAAIAM2AgALIAFBhAFPDQEMAgsgAEEAOgAEIAAgAzYCACABQYQBTwRAIAEQAAsgBEGDAUsNAgwDCyABEAALIARBgwFNDQELIAQQAAsgAkEgaiQAC4wCAQR/IwBBQGoiAyQAIAFBA24iBEH/////A3EgBEchBiAEQQJ0IQUCQCABIARBA2xrIgRFBEAgBSEBDAELAkACQAJAIAJFBEBBAiEBIARBf2oOAgMCAQsgBiAFQQRqIgEgBUlyIQYMAwsgA0EUakEBNgIAIANBHGpBATYCACADQTRqQQE2AgAgA0E8akEANgIAIANBmJ7AADYCECADQQA2AgggA0EuNgIkIANBtJ7AADYCMCADQeydwAA2AjggA0EANgIoIAMgA0EgajYCGCADIANBKGo2AiAgA0EIakGcn8AAENUBAAtBAyEBCyABIAVyIQELIAAgATYCBCAAIAZBAXM2AgAgA0FAayQAC/0BAgh/An4jAEHQAGsiAiQAIAEoAggiBgRAIAEoAgwhBCABKAIEIQcgASgCACEIA0AgAiAIIAVBBHQiAWoiA0EQaiADEKQBIAEgB2ohA0EAIQEDQCABIAJqIgkgCS0AACABIARqLQAAczoAACABQQFqIgFBEEcNAAsgAkEQahDjASACQRhqIAJBCGoiASkDADcDACACIAIpAwA3AxAgAkEwaiAAIAJBEGoQRSABIAJBOGopAwAiCjcDACACIAIpAzAiCzcDACAEQQhqIAo3AAAgBCALNwAAIAMgCzcAACADQQhqIAo3AAAgBiAFQQFqIgVHDQALCyACQdAAaiQAC/sBAgV/AX4jAEEwayICJAAgASgCBCEEIAJBCGogASgCCCIFENgBIAIgAikDCDcDECACIAJBEGooAgQiA0EBELcBIAIgAzYCICACIAIoAgQiBjYCHCACIAIoAgA2AhggAkEoaiAEIAUgBiADIAIoAhAgAigCFBAiAkACQCADAn8gAi0AKEEERgRAIAIoAiwMAQsgAikDKCIHQv8Bg0IEUg0BIAdCIIinCyIDTwRAIAIgAzYCIAsgACACKQMYNwIEIABBADYCACAAQQxqIAJBIGooAgA2AgAMAQsgAEEBNgIAIAAgBzcCBCACQRhqEPgBCyABEPgBIAJBMGokAAuRAgEEfyMAQTBrIgMkACACKAIEIQQgAigCCCECEAohBiADQSBqIgUgATYCCCAFQQA2AgQgBSAGNgIAAn8CQAJAIAMoAigEQCADQRhqIANBKGooAgA2AgAgAyADKQMgNwMQA0AgAkUNAyACQX9qIQIgAyAENgIgIARBAWohBCADQQhqIANBEGogA0EgahC2ASADKAIIRQ0ACyADKAIMIQIgAygCECIBQYQBSQ0BIAEQAAwBCyADKAIgIQILQQEMAQsgA0EoaiADQRhqKAIANgIAIAMgAykDEDcDICADIANBIGooAgA2AgQgA0EANgIAIAMoAgQhAiADKAIACyEBIAAgAjYCBCAAIAE2AgAgA0EwaiQAC4sCAgN/AX4jAEEwayICJAAgASgCBEUEQCABKAIMIQMgAkEQaiIEQQA2AgAgAkKAgICAEDcDCCACIAJBCGo2AhQgAkEoaiADQRBqKQIANwMAIAJBIGogA0EIaikCADcDACACIAMpAgA3AxggAkEUakHkosAAIAJBGGoQPRogAUEIaiAEKAIANgIAIAEgAikDCDcCAAsgASkCACEFIAFCgICAgBA3AgAgAkEgaiIDIAFBCGoiASgCADYCACABQQA2AgAgAiAFNwMYQQxBBBCIAiIBRQRAQQxBBBCsAgALIAEgAikDGDcCACABQQhqIAMoAgA2AgAgAEHApMAANgIEIAAgATYCACACQTBqJAAL/gEBA38jAEEwayICJAAgAkEQaiABEKYBIAJBCGogAigCFCIDQYAgIANBgCBJG0EAIAIoAhAbQQAQtwEgAkEANgIgIAIgAikDCDcDGCACQShqIAEQlwECQAJAIAItAChFBEADQCACLQApRQ0CIAItACohBCACKAIgIgMgAigCGEYEfyACQRhqIAMQwQEgAigCIAUgAwsgAigCHGogBDoAACACIAIoAiBBAWo2AiAgAkEoaiABEJcBIAItAChFDQALCyAAQQA2AgQgACACKAIsNgIAIAJBGGoQ+AEMAQsgACACKQMYNwIAIABBCGogAkEgaigCADYCAAsgAkEwaiQAC+UBAQF/IwBBEGsiAiQAIAAoAgAgAkEANgIMIAJBDGoCfyABQYABTwRAIAFBgBBP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AXwjAEEgayICJAAgAkEQaiABKAIAEAUgAiACKAIQIAIrAxgQ/QECQCACKAIARQ0AIAIrAwghBSABKAIAEBZFDQAgBUQAAAAAAADgw2YhAUIAQv///////////wACfiAFmUQAAAAAAADgQ2MEQCAFsAwBC0KAgICAgICAgIB/C0KAgICAgICAgIB/IAEbIAVE////////30NkGyAFIAViGyEDQgEhBAsgACADNwMIIAAgBDcDACACQSBqJAALnQEBAX8jAEFAaiICJAAgAkIANwM4IAJBOGogACgCABAcIAJBFGpBAjYCACACQRxqQQE2AgAgAiACKAI8IgA2AjAgAiACKAI4NgIsIAIgADYCKCACQS02AiQgAkGAlcAANgIQIAJBADYCCCACIAJBKGo2AiAgAiACQSBqNgIYIAEgAkEIahCzASACKAIoBEAgAigCLBAoCyACQUBrJAALmwECAX8BfiMAQTBrIgIkACACQQhqIAEQjAECQAJAIAIoAghBAUYEQCACKQMQIgNCf1UNAQsgASACQShqQbyEwAAQQCEBIABBAToAACAAIAE2AgQMAQsgAAJ/IANCgAJaBEAgAkEBOgAYIAIgAzcDICAAIAJBGGogAkEoahCbATYCBEEBDAELIAAgAzwAAUEACzoAAAsgAkEwaiQAC6EBAQF/IwBBIGsiAiQAAkACQCABKAIAEBtFBEAgASgCABAVDQEgAEEANgIEDAILIAJBEGogARC9ASAAQQhqIAJBGGooAgA2AgAgACACKQMQNwIADAELIAIgASgCABAYNgIMIAJBEGogAkEMahC9ASAAQQhqIAJBGGooAgA2AgAgACACKQMQNwIAIAIoAgwiAEGEAUkNACAAEAALIAJBIGokAAuRAQEDfyMAQYABayIDJAAgAC0AACECQQAhAANAIAAgA2pB/wBqQTBBNyACQQ9xIgRBCkkbIARqOgAAIABBf2ohACACIgRBBHYhAiAEQQ9LDQALIABBgAFqIgJBgQFPBEAgAkGAAUHQwsAAEJgCAAsgAUEBQeDCwABBAiAAIANqQYABakEAIABrEDIgA0GAAWokAAuSAQEDfyMAQYABayIDJAAgAC0AACECQQAhAANAIAAgA2pB/wBqQTBB1wAgAkEPcSIEQQpJGyAEajoAACAAQX9qIQAgAiIEQQR2IQIgBEEPSw0ACyAA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QS82AgAgA0GcwMAANgIQIANBADYCCCADQS82AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACENUBAAt3AQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakECNgIAIANBHGpBAjYCACADQSxqQS82AgAgA0HQxsAANgIQIANBADYCCCADQS82AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACENUBAAt3AQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakECNgIAIANBHGpBAjYCACADQSxqQS82AgAgA0HwxsAANgIQIANBADYCCCADQS82AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACENUBAAt3AQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakECNgIAIANBHGpBAjYCACADQSxqQS82AgAgA0Gkx8AANgIQIANBADYCCCADQS82AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACENUBAAt3AQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakEDNgIAIANBHGpBAjYCACADQSxqQS82AgAgA0H0x8AANgIQIANBADYCCCADQS82AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACENUBAAtpAQF/IwBBMGsiAiQAIAIgATYCKCACIAA2AiQgAiABNgIgIAJBCGogAkEgahDdASACQRBqIAIoAgggAigCDBD+ASACQShqIAJBGGooAgA2AgAgAiACKQMQNwMgIAJBIGoQQiACQTBqJAALaAECfyMAQSBrIgMkACADQQA2AhgCQCABIAJrIgFBECABQRBJIgQbIgFFDQAgA0EIaiACIAEQrgIaIAQNACAAIAMpAwg3AAAgAEEIaiADQRBqKQMANwAAIANBIGokAA8LIAFBEBCdAQALcgEDfyMAQSBrIgIkAAJ/QQEgACABEF8NABogASgCBCEDIAEoAgAhBCACQQA2AhwgAkGwp8AANgIYIAJBATYCFCACQeC/wAA2AhAgAkEANgIIQQEgBCADIAJBCGoQPQ0AGiAAQQRqIAEQXwsgAkEgaiQAC2gBAn8jAEEgayICJAAgAkEYagJ/QQAgASgCCEUNABpBACABKAIEIgMgASgCAGsiASABIANLGwsiATYCACACQQE2AhQgAiABNgIQIAJBCGogAkEQahDUASAAIAIpAwg3AwAgAkEgaiQAC3IBAX8jAEEwayIDJAAgAyACNgIEIAMgATYCACADQRRqQQg2AgAgA0EJNgIMIAMgADYCCCADIAM2AhAgA0ECNgIsIANBAjYCJCADQaSQwAA2AiAgA0EANgIYIAMgA0EIajYCKCADQRhqEKsBIANBMGokAAt8AQN/IAAgABCzAiIAQQgQ/wEgAGsiAhCxAiEAQbDkwAAgASACayIBNgIAQbjkwAAgADYCACAAIAFBAXI2AgRBCEEIEP8BIQJBFEEIEP8BIQNBEEEIEP8BIQQgACABELECIAQgAyACQQhramo2AgRBxOTAAEGAgIABNgIAC3IAIwBBMGsiASQAQdDgwAAtAAAEQCABQRRqQQI2AgAgAUEcakEBNgIAIAFBzKPAADYCECABQQA2AgggAUEvNgIkIAEgADYCLCABIAFBIGo2AhggASABQSxqNgIgIAFBCGpB9KPAABDVAQALIAFBMGokAAthAQJ/IwBBEGsiAiQAIAAoAgAiAEEIaigCACEDIABBBGooAgAhACACIAEQ5QEgAwRAA0AgAiAANgIMIAIgAkEMahBoIABBAWohACADQX9qIgMNAAsLIAIQ4AEgAkEQaiQAC2gBAX8jAEFAaiIBJAAgAUEANgIIIAFCgICAgBA3AwAgAUEQaiABEOQBIAAgAUEQahCxAQRAQeSOwABBNyABQThqQZyPwABB+I/AABCYAQALIAEoAgQgASgCCBAHIAEQ+AEgAUFAayQAC2MBAX8jAEEgayIDJAAgAyABNgIEIAMgADYCACADQRhqIAJBEGopAgA3AwAgA0EQaiACQQhqKQIANwMAIAMgAikCADcDCCADQcTAwAAgA0EEakHEwMAAIANBCGpBgKjAABBNAAteACAAIAEgAiADECQhAAJAAkBBnYPAAC0AAAR/IAAgA0sNASABIAAgAmogAyAAaxC4AQVBAAsgAGogAEkNAQ8LIAAgA0HghsAAEJgCAAtB8IbAAEEqQZyHwAAQnAIAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBrI7AACACQQhqED0gAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpB5KLAACACQQhqED0gAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBmKXAACACQQhqED0gAkEgaiQAC1MBAn8jAEEgayICJAAgASgCBCEDIAEoAgAgAkEYaiAAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqED0gAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBrMTAACACQQhqED0gAkEgaiQAC1MBAn8jAEEgayICJAAgACgCBCEDIAAoAgAgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAyACQQhqED0gAkEgaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBrI7AACACQQhqED0gAkEgaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBrMTAACACQQhqED0gAkEgaiQAC3UBA38jAEEQayIDJAAgASgCBCEFIAEoAggaIANBCGoiBCACKAIALQAAuBABNgIEIARBADYCACADKAIMIQIgAygCCCIERQRAIAEoAgAgBSACEBMgASABKAIEQQFqNgIECyAAIAQ2AgAgACACNgIEIANBEGokAAtcAQF/AkAgAUUEQEEBIQIMAQsgAUEATgRAIAFBf3NBH3YhAwJ/IAJFBEAgASADEIgCDAELIAEgAxDbAQsiAg0BIAEgAxCsAgALEMoBAAsgACACNgIEIAAgATYCAAtWAQJ/AkAgAEEDcEEDc0EDcCIERQRADAELQQAhAANAIAAgAkcEQCAAIAFqQT06AAAgAEEBaiEDQQEhACADIARJDQEMAgsLIAIgAkGsn8AAEJ4BAAsgAwtKAQF/IwBBIGsiAiQAIAIgASgCBCABKAIIEEggAkEYaiACQQhqKAIANgIAIAIgAikDADcDECAAIAJBEGoQeCABEPgBIAJBIGokAAtOAQF/IwBBMGsiAiQAIAJBEGogARA2IAJBKGogAkEYaigCADYCACACIAIpAxA3AyAgAkEIaiACQSBqEN0BIAAgAikDCDcDACACQTBqJAALRgEBfyMAQSBrIgEkACABQRhqIABBEGopAgA3AwAgAUEQaiAAQQhqKQIANwMAIAEgACkCADcDCCABQQhqEKsBIAFBIGokAAtfAQN/IwBBEGsiASQAAkAgACgCDCICBEAgACgCCCIDRQ0BIAEgAjYCCCABIAA2AgQgASADNgIAIAEQ3wEAC0H8osAAQStBsKTAABC+AQALQfyiwABBK0GgpMAAEL4BAAtRAQR/IwBBEGsiAiQAIAJBCGogASgCACIDEBpBABC3ASACKAIIIQQgACACKAIMIgU2AgQgACAENgIAIAEgBRDHASAAIAMQGjYCCCACQRBqJAALUgEBfyMAQSBrIgMkACADQQxqQQE2AgAgA0EUakEANgIAIANBsKfAADYCECADQQA2AgAgAyABNgIcIAMgADYCGCADIANBGGo2AgggAyACENUBAAtTAQF/IwBBIGsiAiQAIAJBDGpBATYCACACQRRqQQE2AgAgAkG8wMAANgIIIAJBADYCACACQcYANgIcIAIgADYCGCACIAJBGGo2AhAgAiABENUBAAtDAQN/AkAgAkUNAANAIAAtAAAiBCABLQAAIgVGBEAgAEEBaiEAIAFBAWohASACQX9qIgINAQwCCwsgBCAFayEDCyADC0sBAX8jAEEQayICJAAgAkEIaiAAIAFBARCLAQJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCsAgALIAJBEGokAA8LEMoBAAtLAQF/IwBBEGsiAyQAIANBCGogACABIAIQiwECQCADKAIMIgBBgYCAgHhHBEAgAEUNASADKAIIIAAQrAIACyADQRBqJAAPCxDKAQALNAEBfyMAQRBrIgIkACACIABBCGo2AgggAiAANgIMIAEgAkEIaiACQQxqEIYBIAJBEGokAAtKAQF/IAAoAgAiACgCACAAKAIIIgNrIAJJBH8gACADIAIQwgEgACgCCAUgAwsgACgCBGogASACEK4CGiAAIAAoAgggAmo2AghBAAtHAQF/IAAoAgAiACgCACAAKAIIIgNrIAJJBEAgACADIAIQeyAAKAIIIQMLIAAoAgQgA2ogASACEK4CGiAAIAIgA2o2AghBAAtHAQF/IAAoAgAiACgCACAAKAIIIgNrIAJJBEAgACADIAIQfCAAKAIIIQMLIAAoAgQgA2ogASACEK4CGiAAIAIgA2o2AghBAAtCAQN/EB4iAxAXIgQQGCECIARBhAFPBEAgBBAACyACIAAoAgAgARAZIAJBhAFPBEAgAhAACyADQYQBTwRAIAMQAAsLQwEBfyAAKAIAIAAoAggiA2sgAkkEfyAAIAMgAhDCASAAKAIIBSADCyAAKAIEaiABIAIQrgIaIAAgACgCCCACajYCCAtDAQF/An9BACABKAIAIgIgASgCBE8NABogASACQQFqNgIAIAEoAggoAgAgAhAIIQFBAQshAiAAIAE2AgQgACACNgIAC0oBAX8jAEEgayIAJAAgAEEUakEBNgIAIABBHGpBADYCACAAQfClwAA2AhAgAEHApcAANgIYIABBADYCCCAAQQhqQfilwAAQ1QEAC0YBAn8gASgCBCECIAEoAgAhA0EIQQQQiAIiAUUEQEEIQQQQrAIACyABIAI2AgQgASADNgIAIABB0KTAADYCBCAAIAE2AgALOwIBfwF8IAEoAhhBAXEhAiAAKwMAIQMgASgCEEEBRgRAIAEgAyACIAFBFGooAgAQLg8LIAEgAyACEDcLOwEBfyMAQRBrIgIkACACQQhqIAFBBGogARCSASACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJAALPAEBfyMAQRBrIgIkACACQQhqIAAgARCCASACKAIMIgBBgYCAgHhHBEAgAigCCCAAEKwCAAsgAkEQaiQACzsBAX8jAEEQayICJAAgAkEIaiAAIAEQdiACKAIMIgBBgYCAgHhHBEAgAigCCCAAEKwCAAsgAkEQaiQACzsBAX8gAUEHaiICIAFJBEBB+JnAAEEzQaCbwAAQnAIACyAAIAJBA3Y2AgAgACABQQNqQQJ2QQNsNgIECzkBAX8gAUEQdkAAIQIgAEEANgIIIABBACABQYCAfHEgAkF/RiIBGzYCBCAAQQAgAkEQdCABGzYCAAs5AAJAAn8gAkGAgMQARwRAQQEgACACIAEoAhARAAANARoLIAMNAUEACw8LIAAgAyAEIAEoAgwRAQALNwEBfyMAQRBrIgIkACACIAE2AgwgACACQQxqEI4BIAIoAgwiAEGEAU8EQCAAEAALIAJBEGokAAs0AQF/An9BACABKAIEQQFHDQAaIAFBCGooAgAiAiABKAIARgshASAAIAI2AgQgACABNgIACz8BAX8jAEEgayICJAAgAkEBOgAYIAIgATYCFCACIAA2AhAgAkGswMAANgIMIAJBsKfAADYCCCACQQhqELwBAAswAQF/AkAgACgCACIAEAJBAUcNACAAEAwiABALQQFGIQEgAEGEAUkNACAAEAALIAELMwACQCAAQfz///8HSw0AIABFBEBBBA8LIAAgAEH9////B0lBAnQQiAIiAEUNACAADwsACzYBAX8jAEEQayICJAAgAkEIaiABENABIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAslAQF/IwBBEGsiAiQAIAIgADYCDCABIAJBDGoQhAEgAkEQaiQACzIAIAAoAgAhACABEI8CRQRAIAEQkAJFBEAgACABEJsCDwsgACABEJUBDwsgACABEJQBCyYAAkAgACABEE4iAUUNACABELQCEJMCDQAgAUEAIAAQrwIaCyABCzYAIAAoAgAhACABEI8CRQRAIAEQkAJFBEAgADEAAEEBIAEQWw8LIAAgARCQAQ8LIAAgARCRAQsyAQF/IAAgASgCACABKAIIIgJLBH8gASACEM8BIAEoAggFIAILNgIEIAAgASgCBDYCAAsuAQF/IAEoAgAiAgRAIABBATYCCCAAIAI2AgQgACABKAIENgIADwsgAEEANgIICy0BAX8jAEEQayIBJAAgAUEIaiAAQQhqKAIANgIAIAEgACkCADcDACABEJMBAAsyAQF/QQEhASAALQAEBH8gAQUgACgCACIAKAIAQbTCwABBASAAQQRqKAIAKAIMEQEACwsnACAAIAAoAgRBAXEgAXJBAnI2AgQgACABaiIAIAAoAgRBAXI2AgQLOgECf0HU4MAALQAAIQFB1ODAAEEAOgAAQdjgwAAoAgAhAkHY4MAAQQA2AgAgACACNgIEIAAgATYCAAsnACAAQgA3AAAgAEEYakIANwAAIABBEGpCADcAACAAQQhqQgA3AAALNAAgAEEDOgAgIABCgICAgIAENwIYIABBADYCECAAQQA2AgggAEHMjsAANgIEIAAgATYCAAsyAQF/IAEoAgBBosLAAEEBIAEoAgQoAgwRAQAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsgAQF/AkAgAEEEaigCACIBRQ0AIAAoAgBFDQAgARAoCwsmAQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIaiACEL8BAAsjAAJAIAFB/P///wdNBEAgACABQQQgAhCAAiIADQELAAsgAAsfACABIANGBEAgACACIAEQrgIaDwsgASADIAQQogEACyMAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACx4AIABFBEAQpQIACyAAIAIgAyAEIAUgASgCEBEKAAsfAQJ+IAApAwAiAiACQj+HIgOFIAN9IAJCf1UgARBbCyABAX8gACgCACAAKAIIIgJrIAFJBEAgACACIAEQwgELCxwAIABFBEAQpQIACyAAIAIgAyAEIAEoAhARBwALHAAgAEUEQBClAgALIAAgAiADIAQgASgCEBEWAAscACAARQRAEKUCAAsgACACIAMgBCABKAIQERcACxwAIABFBEAQpQIACyAAIAIgAyAEIAEoAhARCAALHAAgAEUEQBClAgALIAAgAiADIAQgASgCEBEYAAseACAAIAFBA3I2AgQgACABaiIAIAAoAgRBAXI2AgQLGgAgAEUEQBClAgALIAAgAiADIAEoAhARAwALFAAgACgCAARAIABBBGooAgAQKAsLIgAgAC0AAEUEQCABQcTFwABBBRArDwsgAUHAxcAAQQQQKwsYACAARQRAEKUCAAsgACACIAEoAhARAAALEQAgACgCAARAIAAoAgQQKAsLGQEBfyAAKAIQIgEEfyABBSAAQRRqKAIACwsSAEEAQRkgAEEBdmsgAEEfRhsLFgAgACABQQFyNgIEIAAgAWogATYCAAsUACAAKAIAIgBBhAFPBEAgABAACwsUACAAIAI5AwggACABQQBHrTcDAAsXACAAIAI2AgggACABNgIEIAAgAjYCAAsQACAAIAFqQX9qQQAgAWtxCwwAIAAgASACIAMQLQsLACABBEAgABAoCwsPACAAQQF0IgBBACAAa3ILFgAgACgCACABIAIgACgCBCgCDBEBAAsZACABKAIAQaDZwABBBSABKAIEKAIMEQEACwoAIABBCGoQ+AELFAAgACgCACABIAAoAgQoAgwRAAALDwAgACABIAIgAyAEECUACwgAIAAgARBOCxAAIAAoAgAgACgCBCABEC8LEAAgASAAKAIEIAAoAggQKwsWAEHY4MAAIAA2AgBB1ODAAEEBOgAACxMAIABB0KTAADYCBCAAIAE2AgALDQAgAC0ABEECcUEBdgsQACABIAAoAgAgACgCBBArCw0AIAAtABhBEHFBBHYLDQAgAC0AGEEgcUEFdgsNACAAIAEgAhDIAUEACwoAQQAgAGsgAHELCwAgAC0ABEEDcUULDAAgACABQQNyNgIECw0AIAAoAgAgACgCBGoLDQAgACgCACABEFlBAAsOACAAKAIAGgNADAALAAsMACAAIAEgAhCfAQALDAAgACABIAIQoAEACwwAIAAgASACEKEBAAsNACAANQIAQQEgARBbCwwAIAAgASACEOcBAAsNACAAKAIAIAEgAhBKCw0AIAApAwBBASABEFsLDgAgACgCAC0AACABEGALDgAgACgCACkDACABEEkLCwAgACMAaiQAIwALDgAgAUH4iMAAQQoQgwILBwAgABD4AQsMACAAKAIAIAEQjQELDABBxJTAAEEyEB0ACw4AIAFBoKHAAEEIEIMCCwoAIAAoAgRBeHELCgAgACgCBEEBcQsKACAAKAIMQQFxCwoAIAAoAgxBAXYLCwAgACgCACABEH8LGQAgACABQfTgwAAoAgAiAEEwIAAbEQIAAAsLACAAKAIAIAEQXwsKACAAIAEgAhBaCwsAIAAgASACEIUBCw4AIAFBqJPAAEECEIMCCwcAIAAgAWoLBwAgACABawsHACAAQQhqCwcAIABBeGoLDQBCyLXgz8qG29OJfwsNAELujtXpx4aXxKR/CwwAQtf+oZ2h8ZeHHQsDAAELC/xbCQBBgIDAAAupCmNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAQAAAAQAAAAEAAAAAgAAAAMAAAAUAAAABAAAAAQAAAAxMjM0NTY3ODkwMDk4NzY1/////////////////////////////////////////////////////////z7///8/NDU2Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf///////xobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8CAABzcmNcbGliLnJzAAAAnwEQAAoAAAAaAAAALQAAAJ8BEAAKAAAALAAAADIAAACfARAACgAAADIAAAAyAAAAnwEQAAoAAAA4AAAAKQAAAJ8BEAAKAAAAPQAAAEAAAACfARAACgAAAEcAAAAyAAAAnwEQAAoAAABNAAAAMgAAAJ8BEAAKAAAAUAAAACEAAACfARAACgAAAFMAAAAjAAAABQAAAAAAAAABAAAABgAAAAUAAAAAAAAAAQAAAAcAAAAQAAAAQzpcVXNlcnNcd2FuZ2xpcDhcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xnaXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjNcZ2VuZXJpYy1hcnJheS0wLjE0LjZcc3JjXGxpYi5ycwAAAGACEABhAAAANQIAAAkAAABpbnZhbGlkIHZhbHVlOiAsIGV4cGVjdGVkIAAA1AIQAA8AAADjAhAACwAAAEM6XFVzZXJzXHdhbmdsaXA4XC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXGJhc2U2NC0wLjIxLjBcc3JjXGVuY29kZS5ycwAAAAADEABdAAAAUAAAACcAAAB1c2l6ZSBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIGI2NCBsZW5ndGgAAAADEABdAAAAVwAAAAoAAAAKAAAAFAAAAAQAAAAEAAAAQzpcVXNlcnNcd2FuZ2xpcDhcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xnaXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjNcYmFzZTY0LTAuMjEuMFxzcmNcZW5naW5lXG1vZC5yc2ludGVnZXIgb3ZlcmZs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XFVzZXJzXHdhbmdsaXA4XC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXGJhc2U2NC0wLjIxLjBcc3JjXGVuZ2luZVxnZW5lcmFsX3B1cnBvc2VcZGVjb2RlLnJzACsNEAB0AAAAJAAAABIAAABDOlxVc2Vyc1x3YW5nbGlwOFwuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xiYXNlNjQtMC4yMS4wXHNyY1xlbmdpbmVcZ2VuZXJhbF9wdXJwb3NlXGRlY29kZV9zdWZmaXgucnMAsA0QAHsAAAAdAAAAFAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAPA4QACoAAABJbXBvc3NpYmxlOiBtdXN0IG9ubHkgaGF2ZSAwIHRvIDggaW5wdXQgYnl0ZXMgaW4gbGFzdCBjaHVuaywgd2l0aCBubyBpbnZhbGlkIGxlbmd0aHNwDhAAVAAAALANEAB7AAAAhQAAAA4AAACwDRAAewAAAJoAAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAADsDhAAKgAAAEltcG9zc2libGUgcmVtYWluZGVyIA8QABQAAABDOlxVc2Vyc1x3YW5nbGlwOFwuY2FyZ29ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xiYXNlNjQtMC4yMS4wXHNyY1xlbmNvZGUucnMAAAA8DxAAXQAAAG4AAAAWAAAAPA8QAF0AAACBAAAACQAAAEM6XFVzZXJzXHdhbmdsaXA4XC5jYXJnb1xyZWdpc3RyeVxzcmNcZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzXGFlcy0wLjguMlxzcmNcc29mdFxmaXhzbGljZTMyLnJzAAC8DxAAYgAAAEsAAAAjAAAAvA8QAGIAAABMAAAAIwAAALwPEABiAAAACQEAACQAAAC8DxAAYgAAAB4BAAAoAAAAvA8QAGIAAACJBAAAEgAAALwPEABiAAAAiQQAAD0AAAC8DxAAYgAAABQFAAAiAAAAvA8QAGIAAAAUBQAACQAAAFBhZEVycm9yR2VuZXJpY0Fy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N6sOYTkvGKE5MBxhSPMeoUxANGFQ8GqhUU9vIVKdvKFSAM9hU2XRoVMA2iFUAODhVa7iYVfs5CFZ0OihWSAA7lnwAX9aAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDPAgqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgECAQMBBQIHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwADHQIeAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAcBAQUBKAkMAiAEAgIBAzgBAQIDAQEDOggCApgDAQ0BBwQBBgEDAsZAAAHDIQADjQFgIAAGaQIABAEKIAJQAgABAwEEARkCBQGXAhoSDQEmCBkLLgMwAQIEAgInAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABAACUANGCzEEewE2DykBAgIKAzEEAgIHAT0DJAUBCD4BDAI0CQoEAgFfAwIBAQIGAQIBnQEDCBUCOQIBAQEBFgEOBwMFwwgCAwEBFwFRAQIGAQECAQECAQLrAQIEBgIBAhsCVQgCAQECagEBAQIGAQFlAwIEAQUACQEC9QEKAgEBBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQEBAQABBg8ABTsHAAE/BFEBAAIALgIXAAEBAwQFCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFZAGgBwABPQQABAAHbQcAYIDwAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjY4LjEgKDg0NjBjYTgyMyAyMDIzLTAzLTIwKQZ3YWxydXMGMC4xOS4wDHdhc20tYmluZGdlbhIwLjIuODQgKGNlYThjYzNkMik=\"","export default async (opts = {}, url) => {\n    let result;\n    if (url.startsWith(\"data:\")) {\n        const urlContent = url.replace(/^data:.*?base64,/, \"\");\n        let bytes;\n        if (typeof Buffer === \"function\" && typeof Buffer.from === \"function\") {\n            bytes = Buffer.from(urlContent, \"base64\");\n        }\n        else if (typeof atob === \"function\") {\n            const binaryString = atob(urlContent);\n            bytes = new Uint8Array(binaryString.length);\n            for (let i = 0; i < binaryString.length; i++) {\n                bytes[i] = binaryString.charCodeAt(i);\n            }\n        }\n        else {\n            throw new Error(\"Cannot decode base64-encoded data URL\");\n        }\n        result = await WebAssembly.instantiate(bytes, opts);\n    }\n    else {\n        // https://github.com/mdn/webassembly-examples/issues/5\n        // WebAssembly.instantiateStreaming requires the server to provide the\n        // correct MIME type for .wasm files, which unfortunately doesn't work for\n        // a lot of static file servers, so we just work around it by getting the\n        // raw buffer.\n        // @ts-ignore\n        const response = await fetch(url);\n        const contentType = response.headers.get(\"Content-Type\") || \"\";\n        if (\"instantiateStreaming\" in WebAssembly && contentType.startsWith(\"application/wasm\")) {\n            result = await WebAssembly.instantiateStreaming(response, opts);\n        }\n        else {\n            const buffer = await response.arrayBuffer();\n            result = await WebAssembly.instantiate(buffer, opts);\n        }\n    }\n    return result.instance.exports;\n}","let wasm;\r\nexport function __wbg_set_wasm(val) {\r\n    wasm = val;\r\n}\r\n\r\n\r\nconst heap = new Array(128).fill(undefined);\r\n\r\nheap.push(undefined, null, true, false);\r\n\r\nfunction getObject(idx) { return heap[idx]; }\r\n\r\nlet heap_next = heap.length;\r\n\r\nfunction dropObject(idx) {\r\n    if (idx < 132) return;\r\n    heap[idx] = heap_next;\r\n    heap_next = idx;\r\n}\r\n\r\nfunction takeObject(idx) {\r\n    const ret = getObject(idx);\r\n    dropObject(idx);\r\n    return ret;\r\n}\r\n\r\nfunction addHeapObject(obj) {\r\n    if (heap_next === heap.length) heap.push(heap.length + 1);\r\n    const idx = heap_next;\r\n    heap_next = heap[idx];\r\n\r\n    heap[idx] = obj;\r\n    return idx;\r\n}\r\n\r\nfunction isLikeNone(x) {\r\n    return x === undefined || x === null;\r\n}\r\n\r\nlet cachedFloat64Memory0 = null;\r\n\r\nfunction getFloat64Memory0() {\r\n    if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\r\n        cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\r\n    }\r\n    return cachedFloat64Memory0;\r\n}\r\n\r\nlet cachedInt32Memory0 = null;\r\n\r\nfunction getInt32Memory0() {\r\n    if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\r\n        cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\r\n    }\r\n    return cachedInt32Memory0;\r\n}\r\n\r\nlet WASM_VECTOR_LEN = 0;\r\n\r\nlet cachedUint8Memory0 = null;\r\n\r\nfunction getUint8Memory0() {\r\n    if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\r\n        cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\r\n    }\r\n    return cachedUint8Memory0;\r\n}\r\n\r\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\r\n\r\nlet cachedTextEncoder = new lTextEncoder('utf-8');\r\n\r\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\r\n    ? function (arg, view) {\r\n    return cachedTextEncoder.encodeInto(arg, view);\r\n}\r\n    : function (arg, view) {\r\n    const buf = cachedTextEncoder.encode(arg);\r\n    view.set(buf);\r\n    return {\r\n        read: arg.length,\r\n        written: buf.length\r\n    };\r\n});\r\n\r\nfunction passStringToWasm0(arg, malloc, realloc) {\r\n\r\n    if (realloc === undefined) {\r\n        const buf = cachedTextEncoder.encode(arg);\r\n        const ptr = malloc(buf.length);\r\n        getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\r\n        WASM_VECTOR_LEN = buf.length;\r\n        return ptr;\r\n    }\r\n\r\n    let len = arg.length;\r\n    let ptr = malloc(len);\r\n\r\n    const mem = getUint8Memory0();\r\n\r\n    let offset = 0;\r\n\r\n    for (; offset < len; offset++) {\r\n        const code = arg.charCodeAt(offset);\r\n        if (code > 0x7F) break;\r\n        mem[ptr + offset] = code;\r\n    }\r\n\r\n    if (offset !== len) {\r\n        if (offset !== 0) {\r\n            arg = arg.slice(offset);\r\n        }\r\n        ptr = realloc(ptr, len, len = offset + arg.length * 3);\r\n        const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\r\n        const ret = encodeString(arg, view);\r\n\r\n        offset += ret.written;\r\n    }\r\n\r\n    WASM_VECTOR_LEN = offset;\r\n    return ptr;\r\n}\r\n\r\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\r\n\r\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\r\n\r\ncachedTextDecoder.decode();\r\n\r\nfunction getStringFromWasm0(ptr, len) {\r\n    return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\r\n}\r\n\r\nfunction debugString(val) {\r\n    // primitive types\r\n    const type = typeof val;\r\n    if (type == 'number' || type == 'boolean' || val == null) {\r\n        return  `${val}`;\r\n    }\r\n    if (type == 'string') {\r\n        return `\"${val}\"`;\r\n    }\r\n    if (type == 'symbol') {\r\n        const description = val.description;\r\n        if (description == null) {\r\n            return 'Symbol';\r\n        } else {\r\n            return `Symbol(${description})`;\r\n        }\r\n    }\r\n    if (type == 'function') {\r\n        const name = val.name;\r\n        if (typeof name == 'string' && name.length > 0) {\r\n            return `Function(${name})`;\r\n        } else {\r\n            return 'Function';\r\n        }\r\n    }\r\n    // objects\r\n    if (Array.isArray(val)) {\r\n        const length = val.length;\r\n        let debug = '[';\r\n        if (length > 0) {\r\n            debug += debugString(val[0]);\r\n        }\r\n        for(let i = 1; i < length; i++) {\r\n            debug += ', ' + debugString(val[i]);\r\n        }\r\n        debug += ']';\r\n        return debug;\r\n    }\r\n    // Test for built-in\r\n    const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\r\n    let className;\r\n    if (builtInMatches.length > 1) {\r\n        className = builtInMatches[1];\r\n    } else {\r\n        // Failed to match the standard '[object ClassName]'\r\n        return toString.call(val);\r\n    }\r\n    if (className == 'Object') {\r\n        // we're a user defined class or Object\r\n        // JSON.stringify avoids problems with cycles, and is generally much\r\n        // easier than looping through ownProperties of `val`.\r\n        try {\r\n            return 'Object(' + JSON.stringify(val) + ')';\r\n        } catch (_) {\r\n            return 'Object';\r\n        }\r\n    }\r\n    // errors\r\n    if (val instanceof Error) {\r\n        return `${val.name}: ${val.message}\\n${val.stack}`;\r\n    }\r\n    // TODO we could test for more things here, like `Set`s and `Map`s.\r\n    return className;\r\n}\r\n/**\r\n* @param {string} string\r\n* @returns {string}\r\n*/\r\nexport function secretkey(string) {\r\n    try {\r\n        const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\r\n        const ptr0 = passStringToWasm0(string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\r\n        const len0 = WASM_VECTOR_LEN;\r\n        wasm.secretkey(retptr, ptr0, len0);\r\n        var r0 = getInt32Memory0()[retptr / 4 + 0];\r\n        var r1 = getInt32Memory0()[retptr / 4 + 1];\r\n        return getStringFromWasm0(r0, r1);\r\n    } finally {\r\n        wasm.__wbindgen_add_to_stack_pointer(16);\r\n        wasm.__wbindgen_free(r0, r1);\r\n    }\r\n}\r\n\r\n/**\r\n* @param {string} string\r\n* @param {string} string2\r\n* @returns {boolean}\r\n*/\r\nexport function validate(string, string2) {\r\n    const ptr0 = passStringToWasm0(string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\r\n    const len0 = WASM_VECTOR_LEN;\r\n    const ptr1 = passStringToWasm0(string2, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\r\n    const len1 = WASM_VECTOR_LEN;\r\n    const ret = wasm.validate(ptr0, len0, ptr1, len1);\r\n    return ret !== 0;\r\n}\r\n\r\n/**\r\n* @param {string} string\r\n* @returns {any}\r\n*/\r\nexport function encrypt(string) {\r\n    const ptr0 = passStringToWasm0(string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\r\n    const len0 = WASM_VECTOR_LEN;\r\n    const ret = wasm.encrypt(ptr0, len0);\r\n    return takeObject(ret);\r\n}\r\n\r\n/**\r\n* @param {any} data\r\n* @returns {string}\r\n*/\r\nexport function decrypt(data) {\r\n    try {\r\n        const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\r\n        wasm.decrypt(retptr, addHeapObject(data));\r\n        var r0 = getInt32Memory0()[retptr / 4 + 0];\r\n        var r1 = getInt32Memory0()[retptr / 4 + 1];\r\n        return getStringFromWasm0(r0, r1);\r\n    } finally {\r\n        wasm.__wbindgen_add_to_stack_pointer(16);\r\n        wasm.__wbindgen_free(r0, r1);\r\n    }\r\n}\r\n\r\nfunction handleError(f, args) {\r\n    try {\r\n        return f.apply(this, args);\r\n    } catch (e) {\r\n        wasm.__wbindgen_exn_store(addHeapObject(e));\r\n    }\r\n}\r\n\r\nexport function __wbindgen_object_drop_ref(arg0) {\r\n    takeObject(arg0);\r\n};\r\n\r\nexport function __wbindgen_number_new(arg0) {\r\n    const ret = arg0;\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbindgen_is_object(arg0) {\r\n    const val = getObject(arg0);\r\n    const ret = typeof(val) === 'object' && val !== null;\r\n    return ret;\r\n};\r\n\r\nexport function __wbindgen_jsval_loose_eq(arg0, arg1) {\r\n    const ret = getObject(arg0) == getObject(arg1);\r\n    return ret;\r\n};\r\n\r\nexport function __wbindgen_boolean_get(arg0) {\r\n    const v = getObject(arg0);\r\n    const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\r\n    return ret;\r\n};\r\n\r\nexport function __wbindgen_number_get(arg0, arg1) {\r\n    const obj = getObject(arg1);\r\n    const ret = typeof(obj) === 'number' ? obj : undefined;\r\n    getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\r\n    getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\r\n};\r\n\r\nexport function __wbindgen_string_get(arg0, arg1) {\r\n    const obj = getObject(arg1);\r\n    const ret = typeof(obj) === 'string' ? obj : undefined;\r\n    var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\r\n    var len0 = WASM_VECTOR_LEN;\r\n    getInt32Memory0()[arg0 / 4 + 1] = len0;\r\n    getInt32Memory0()[arg0 / 4 + 0] = ptr0;\r\n};\r\n\r\nexport function __wbindgen_error_new(arg0, arg1) {\r\n    const ret = new Error(getStringFromWasm0(arg0, arg1));\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_get_27fe3dac1c4d0224(arg0, arg1) {\r\n    const ret = getObject(arg0)[arg1 >>> 0];\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_length_e498fbc24f9c1d4f(arg0) {\r\n    const ret = getObject(arg0).length;\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_new_b525de17f44a8943() {\r\n    const ret = new Array();\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbindgen_is_function(arg0) {\r\n    const ret = typeof(getObject(arg0)) === 'function';\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_next_b7d530c04fd8b217(arg0) {\r\n    const ret = getObject(arg0).next;\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_next_88560ec06a094dea() { return handleError(function (arg0) {\r\n    const ret = getObject(arg0).next();\r\n    return addHeapObject(ret);\r\n}, arguments) };\r\n\r\nexport function __wbg_done_1ebec03bbd919843(arg0) {\r\n    const ret = getObject(arg0).done;\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_value_6ac8da5cc5b3efda(arg0) {\r\n    const ret = getObject(arg0).value;\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_iterator_55f114446221aa5a() {\r\n    const ret = Symbol.iterator;\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_get_baf4855f9a986186() { return handleError(function (arg0, arg1) {\r\n    const ret = Reflect.get(getObject(arg0), getObject(arg1));\r\n    return addHeapObject(ret);\r\n}, arguments) };\r\n\r\nexport function __wbg_call_95d1ea488d03e4e8() { return handleError(function (arg0, arg1) {\r\n    const ret = getObject(arg0).call(getObject(arg1));\r\n    return addHeapObject(ret);\r\n}, arguments) };\r\n\r\nexport function __wbg_set_17224bc548dd1d7b(arg0, arg1, arg2) {\r\n    getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\r\n};\r\n\r\nexport function __wbg_isArray_39d28997bf6b96b4(arg0) {\r\n    const ret = Array.isArray(getObject(arg0));\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_instanceof_ArrayBuffer_a69f02ee4c4f5065(arg0) {\r\n    let result;\r\n    try {\r\n        result = getObject(arg0) instanceof ArrayBuffer;\r\n    } catch {\r\n        result = false;\r\n    }\r\n    const ret = result;\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_isSafeInteger_8c4789029e885159(arg0) {\r\n    const ret = Number.isSafeInteger(getObject(arg0));\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_buffer_cf65c07de34b9a08(arg0) {\r\n    const ret = getObject(arg0).buffer;\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_new_537b7341ce90bb31(arg0) {\r\n    const ret = new Uint8Array(getObject(arg0));\r\n    return addHeapObject(ret);\r\n};\r\n\r\nexport function __wbg_set_17499e8aa4003ebd(arg0, arg1, arg2) {\r\n    getObject(arg0).set(getObject(arg1), arg2 >>> 0);\r\n};\r\n\r\nexport function __wbg_length_27a2afe8ab42b09f(arg0) {\r\n    const ret = getObject(arg0).length;\r\n    return ret;\r\n};\r\n\r\nexport function __wbg_instanceof_Uint8Array_01cebe79ca606cca(arg0) {\r\n    let result;\r\n    try {\r\n        result = getObject(arg0) instanceof Uint8Array;\r\n    } catch {\r\n        result = false;\r\n    }\r\n    const ret = result;\r\n    return ret;\r\n};\r\n\r\nexport function __wbindgen_debug_string(arg0, arg1) {\r\n    const ret = debugString(getObject(arg1));\r\n    const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\r\n    const len0 = WASM_VECTOR_LEN;\r\n    getInt32Memory0()[arg0 / 4 + 1] = len0;\r\n    getInt32Memory0()[arg0 / 4 + 0] = ptr0;\r\n};\r\n\r\nexport function __wbindgen_throw(arg0, arg1) {\r\n    throw new Error(getStringFromWasm0(arg0, arg1));\r\n};\r\n\r\nexport function __wbindgen_memory() {\r\n    const ret = wasm.memory;\r\n    return addHeapObject(ret);\r\n};\r\n\r\n","\nURL = globalThis.URL\nimport __vite__wasmUrl from \"D:/work/rich-data/rd-runtime/src/secrecy/rich_wasm_bg.wasm?url\"\nimport __vite__initWasm from \"/__vite-plugin-wasm-helper\"\nimport * as __vite__wasmImport_0 from \"./rich_wasm_bg.js\";\nconst __vite__wasmModule = await __vite__initWasm({ \"./rich_wasm_bg.js\": { \"__wbindgen_object_drop_ref\": __vite__wasmImport_0[\"__wbindgen_object_drop_ref\"],\n\"__wbindgen_number_new\": __vite__wasmImport_0[\"__wbindgen_number_new\"],\n\"__wbindgen_is_object\": __vite__wasmImport_0[\"__wbindgen_is_object\"],\n\"__wbindgen_jsval_loose_eq\": __vite__wasmImport_0[\"__wbindgen_jsval_loose_eq\"],\n\"__wbindgen_boolean_get\": __vite__wasmImport_0[\"__wbindgen_boolean_get\"],\n\"__wbindgen_number_get\": __vite__wasmImport_0[\"__wbindgen_number_get\"],\n\"__wbindgen_string_get\": __vite__wasmImport_0[\"__wbindgen_string_get\"],\n\"__wbindgen_error_new\": __vite__wasmImport_0[\"__wbindgen_error_new\"],\n\"__wbg_get_27fe3dac1c4d0224\": __vite__wasmImport_0[\"__wbg_get_27fe3dac1c4d0224\"],\n\"__wbg_length_e498fbc24f9c1d4f\": __vite__wasmImport_0[\"__wbg_length_e498fbc24f9c1d4f\"],\n\"__wbg_new_b525de17f44a8943\": __vite__wasmImport_0[\"__wbg_new_b525de17f44a8943\"],\n\"__wbindgen_is_function\": __vite__wasmImport_0[\"__wbindgen_is_function\"],\n\"__wbg_next_b7d530c04fd8b217\": __vite__wasmImport_0[\"__wbg_next_b7d530c04fd8b217\"],\n\"__wbg_next_88560ec06a094dea\": __vite__wasmImport_0[\"__wbg_next_88560ec06a094dea\"],\n\"__wbg_done_1ebec03bbd919843\": __vite__wasmImport_0[\"__wbg_done_1ebec03bbd919843\"],\n\"__wbg_value_6ac8da5cc5b3efda\": __vite__wasmImport_0[\"__wbg_value_6ac8da5cc5b3efda\"],\n\"__wbg_iterator_55f114446221aa5a\": __vite__wasmImport_0[\"__wbg_iterator_55f114446221aa5a\"],\n\"__wbg_get_baf4855f9a986186\": __vite__wasmImport_0[\"__wbg_get_baf4855f9a986186\"],\n\"__wbg_call_95d1ea488d03e4e8\": __vite__wasmImport_0[\"__wbg_call_95d1ea488d03e4e8\"],\n\"__wbg_set_17224bc548dd1d7b\": __vite__wasmImport_0[\"__wbg_set_17224bc548dd1d7b\"],\n\"__wbg_isArray_39d28997bf6b96b4\": __vite__wasmImport_0[\"__wbg_isArray_39d28997bf6b96b4\"],\n\"__wbg_instanceof_ArrayBuffer_a69f02ee4c4f5065\": __vite__wasmImport_0[\"__wbg_instanceof_ArrayBuffer_a69f02ee4c4f5065\"],\n\"__wbg_isSafeInteger_8c4789029e885159\": __vite__wasmImport_0[\"__wbg_isSafeInteger_8c4789029e885159\"],\n\"__wbg_buffer_cf65c07de34b9a08\": __vite__wasmImport_0[\"__wbg_buffer_cf65c07de34b9a08\"],\n\"__wbg_new_537b7341ce90bb31\": __vite__wasmImport_0[\"__wbg_new_537b7341ce90bb31\"],\n\"__wbg_set_17499e8aa4003ebd\": __vite__wasmImport_0[\"__wbg_set_17499e8aa4003ebd\"],\n\"__wbg_length_27a2afe8ab42b09f\": __vite__wasmImport_0[\"__wbg_length_27a2afe8ab42b09f\"],\n\"__wbg_instanceof_Uint8Array_01cebe79ca606cca\": __vite__wasmImport_0[\"__wbg_instanceof_Uint8Array_01cebe79ca606cca\"],\n\"__wbindgen_debug_string\": __vite__wasmImport_0[\"__wbindgen_debug_string\"],\n\"__wbindgen_throw\": __vite__wasmImport_0[\"__wbindgen_throw\"],\n\"__wbindgen_memory\": __vite__wasmImport_0[\"__wbindgen_memory\"] } }, __vite__wasmUrl);\nexport const memory = __vite__wasmModule.memory;\nexport const secretkey = __vite__wasmModule.secretkey;\nexport const validate = __vite__wasmModule.validate;\nexport const encrypt = __vite__wasmModule.encrypt;\nexport const decrypt = __vite__wasmModule.decrypt;\nexport const __wbindgen_malloc = __vite__wasmModule.__wbindgen_malloc;\nexport const __wbindgen_realloc = __vite__wasmModule.__wbindgen_realloc;\nexport const __wbindgen_add_to_stack_pointer = __vite__wasmModule.__wbindgen_add_to_stack_pointer;\nexport const __wbindgen_free = __vite__wasmModule.__wbindgen_free;\nexport const __wbindgen_exn_store = __vite__wasmModule.__wbindgen_exn_store;\n","import * as wasm from \"./rich_wasm_bg.wasm\";\nimport { __wbg_set_wasm } from \"./rich_wasm_bg.js\";\n__wbg_set_wasm(wasm);\nexport * from \"./rich_wasm_bg.js\";\n","import * as crypt from './rich_wasm'\r\nimport { nanoid } from 'nanoid'\r\n\r\n// 读取文件\r\nconst readFile = function (file) {\r\n    return new Promise((resolve, reject) => {\r\n        if (file instanceof Blob) {\r\n            var reader = new FileReader()\r\n            reader.onload = function (evt) {\r\n                resolve(evt.target.result)\r\n            }\r\n            reader.onerror = (event) => {\r\n                reject(event)\r\n            }\r\n            reader.readAsArrayBuffer(file)\r\n        } else {\r\n            reject(\"不是二进制文件\")\r\n        }\r\n    })\r\n}\r\n// 数据编码\r\nexport const encrypt = function (value) {\r\n    let string = typeof value == 'string' ? value : JSON.stringify(value)\r\n    let data = crypt.encrypt(string)\r\n    let blob = new Blob([new Uint8Array(data).buffer])\r\n    return blob\r\n}\r\n\r\n// 数据解码\r\nexport const decrypt = async function (file) {\r\n    let data = null\r\n    if (typeof file == 'string') {\r\n        data = file\r\n    } else if (file instanceof Blob) {\r\n        let res = await readFile(file, 'buffer')\r\n        let arr = Array.prototype.slice.call(new Uint8Array(res))\r\n        data = crypt.decrypt(arr)\r\n    } else if (file && typeof file == 'object' && typeof file != 'function' && !Array.isArray(file)) {\r\n        return file\r\n    }\r\n    try {\r\n        return JSON.parse(data)\r\n    } catch (error) {\r\n        Promise.reject('数据格式无效')\r\n    }\r\n}\r\n\r\n// 生成密钥\r\nexport const secretkey = function (value) {\r\n    if (typeof value == 'string') {\r\n        if (value.length > 2 && value.length < 16) {\r\n            return crypt.secretkey(value)\r\n        }\r\n    }\r\n    return null\r\n}\r\n// 密钥校验\r\nexport const validateKey = function (value1, value2) {\r\n    if (typeof value1 == 'string' && typeof value2 == 'string') {\r\n        return crypt.validate(value1, value2)\r\n    }\r\n    return false\r\n}\r\n// 拷贝数据（覆盖内容，并生成新的数据id）\r\nexport const copyData = async function (value, option) {\r\n    if (!value) return null;\r\n    let id = 'A_' + nanoid(10)\r\n    let data = await decrypt(value)\r\n    data && (data.id = id)\r\n    option && Object.assign(data, option)\r\n    return { id, data }\r\n}","var root = require('./_root');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite;\n\n/**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\nfunction isFinite(value) {\n  return typeof value == 'number' && nativeIsFinite(value);\n}\n\nmodule.exports = isFinite;\n","/**\r\n * 获取服务端api接口数据\r\n */\r\nimport { jsonToParams } from './uri'\r\n\r\n\r\nexport default function (_obj, _network = {}) {\r\n    let headers = {\r\n        'Access-Control-Allow-Origin': '*',\r\n        'Content-Type': 'application/json'\r\n    }\r\n    if (_network.headers) {\r\n        Object.assign(headers, _network.headers)\r\n        delete _network.headers\r\n    }\r\n    let network = Object.assign({\r\n        host: '',\r\n        token: 'token',\r\n        responseType: 'json',\r\n        method: 'get',\r\n        mode: 'cors',\r\n        headers\r\n    }, _network)\r\n\r\n    // 地址\r\n    let url = /^(?!https?:\\/\\/)/.test(_obj.url) ? network.host + _obj.url : _obj.url\r\n    // 令牌\r\n    let authorization = localStorage.getItem(network.token) ? { 'Authorization': localStorage.getItem(network.token) } : {}\r\n    // 完全自定义覆盖\r\n    let customize = _obj.customize || {}\r\n    // 头部信息，如果 headers为'','null',false删除默认配置\r\n    if (!network.headers || (typeof network.headers == 'string')) {\r\n        network.headers = {}\r\n    }\r\n    // 请求对象\r\n    let obj = Object.assign({\r\n        method: _obj.method || network.method,\r\n        mode: _obj.mode || network.mode,\r\n        signal: _obj.signal,\r\n        headers: new Headers(Object.assign(network.headers, authorization, _obj.headers))\r\n    }, customize)\r\n    if (obj.method.toUpperCase() == \"POST\") {\r\n        obj.body = (obj.headers.get('Content-Type') == 'application/json') ? JSON.stringify(_obj.data) : _obj.data\r\n    } else {\r\n        url = /\\?/.test(url) ? url + \"&\" + jsonToParams(_obj.data) : url + \"?\" + jsonToParams(_obj.data)\r\n    }\r\n    //    请求数据\r\n    return new Promise((resolve, reject) => {\r\n        fetch(url, obj).then(response => {\r\n            if (network.responseType) {\r\n                return response[network.responseType]()\r\n            } else {\r\n                return response.json()\r\n            }\r\n        }, reject).then(resolve);\r\n    })\r\n}","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","import { isReactive } from 'vue'\r\nimport isPlainObject from 'lodash/isPlainObject'\r\nimport getValue from 'lodash/get'\r\n/**\r\n * 转换接口传参转换（数组转请求body值）\r\n * @param {Array} data \r\n * @returns \r\n */\r\nexport const getBodyData = function (data) {\r\n    if (!this.appData) {\r\n        console.warn('缺少数据源')\r\n        return null\r\n    }\r\n    let _o = {}\r\n    if (data && Array.isArray(data)) {\r\n        data.forEach(element => {\r\n            if (isPlainObject(element)) {\r\n                if (typeof element.value == 'string' && element.key) {\r\n                    let _val = this.appData.getDataSource(element.value)\r\n                    if (_val || _val == 0 || _val == \"\") {\r\n                        if (isReactive(_val)) {\r\n                            _o[element.key] = element.path ? getValue(_val.data, element.path) : _val.data || _val\r\n                        } else {\r\n                            _o[element.key] = element.path ? getValue(_val, element.path) : _val\r\n                        }\r\n                    } else {\r\n                        _o[element.key] = element.value\r\n                    }\r\n                } else if (element.key) {\r\n                    _o[element.key] = element.value\r\n                }\r\n            }\r\n        })\r\n    }\r\n    return _o\r\n}","import EventEmitter from 'eventemitter3'\r\nimport request from \"@/utils/request\"\r\nimport isPlainObject from 'lodash/isPlainObject'\r\nimport { nanoid } from 'nanoid'\r\nimport { removeArray } from \"@/utils\"\r\nimport { getBodyData } from '@/helper/other'\r\n\r\nconst reqs = {}\r\nconst ids = []\r\n\r\nclass RequestData extends EventEmitter {\r\n   constructor(options, remote) {\r\n      super()\r\n      this.remote = remote\r\n      this.id = \"R_\" + nanoid(10)\r\n      this.controller = new AbortController()\r\n      this.signal = this.controller.signal\r\n      this.isloading = false\r\n      this.status = 'wait'\r\n      this.options = options\r\n      this.data = null\r\n      this.err = null\r\n      // this.request()\r\n   }\r\n   // 更新配置\r\n   setOptions(options) {\r\n      Object.assign(this.options, options)\r\n   }\r\n   //    请求数据\r\n   request(callback, body = {}) {\r\n      if (this.remote.AppInfo.network && this.remote.AppInfo.network.offline == true) return;\r\n      if (this.status == 'request') return;\r\n      this.isloading = true\r\n      this.status = 'request'\r\n      this.emit(\"request\", this)\r\n      const newBody = isPlainObject(body) ? body : {}\r\n      let data = Object.assign({}, getBodyData.call(this.remote, this.options.body) || {}, newBody)\r\n      let network = JSON.parse(JSON.stringify(this.remote.AppInfo.network))\r\n      if (network.headers) {\r\n         let kyes = Object.keys(network.headers)\r\n         kyes.forEach(key => {\r\n            network.headers[key] = this.remote.appData.getDataSource(network.headers[key])\r\n         })\r\n      }\r\n      request({\r\n         data,\r\n         url: this.options.url,\r\n         method: this.options.method,\r\n         signal: this.signal\r\n      }, network).then(res => {\r\n         this.data = res\r\n         this.status = 'success'\r\n         this.isloading = false\r\n         this.err = null\r\n         this.emit(\"success\", res)\r\n         callback && callback(this)\r\n      }, err => {\r\n         this.status = 'success'\r\n         this.isloading = false\r\n         this.err = err\r\n         this.emit(\"error\", err)\r\n         callback && callback(this)\r\n      })\r\n   }\r\n   destroy() {\r\n      this.controller && this.controller.abort()\r\n      this.controller = null\r\n      this.signal = null\r\n      this.isloading = null\r\n      this.status = null\r\n      this.options = null\r\n      this.data = null\r\n      this.err = null\r\n      if (reqs[this.id]) {\r\n         removeArray(ids, 'id', this.id)\r\n         delete reqs[this.id]\r\n      }\r\n   }\r\n}\r\n// 添加一个新的请求对象\r\nexport default function (options, remote) {\r\n   let url = options.url || \"\"\r\n   let body = options.body || {}\r\n   let test = (url + JSON.stringify(body)).split(\"\").sort().join(\"\")\r\n   let rid = ids.find(n => n.test == test)\r\n   if (rid && reqs[rid.id]) {\r\n      //    如果当前请求地址和参数相同，返回已有请求对象\r\n      return reqs[rid.id]\r\n   }\r\n   let req = new RequestData(options, remote)\r\n   ids.push({\r\n      id: req.id,\r\n      test\r\n   })\r\n   reqs[req.id] = req\r\n   return reqs[req.id]\r\n}","import EventEmitter from 'eventemitter3'\r\nimport isFinite from 'lodash/isFinite'\r\nimport requestData from './requestData'\r\nimport { reactive, ref, watch } from \"vue\"\r\nimport { jsonData, interval, extractData } from '@/utils'\r\nimport { nanoid } from 'nanoid'\r\n\r\n/**\r\n * @param {string} url 接口地址\r\n * @param {object} extractRule 数据提取规则\r\n */\r\nexport default class extends EventEmitter {\r\n   constructor(options, appData = {}) {\r\n      super()\r\n      const { id, url, extractRule, body, method, itval, func, instart = true } = options\r\n      this.appData = appData\r\n      this.AppSetup = appData.AppSetup\r\n      this.AppInfo = appData.info\r\n      this.id = id || \"RD_\" + nanoid(10)\r\n      this.url = url\r\n      this.body = body\r\n      this.method = method\r\n      this.data = reactive({ data: null })\r\n      this.sourceData = null\r\n      this.instart = instart\r\n      // 用户接口返回数据后的处理函数\r\n      this.func = ''\r\n      this.handleFun = null\r\n      try {\r\n         if (func && typeof func == 'string') {\r\n            this.func = func\r\n            this.handleFun = new Function(\"data\", func)\r\n         }\r\n      } catch (error) { }\r\n      // 加载状态\r\n      this.loading = ref(false)\r\n      this.isloading = false\r\n      // 是否轮询请求（默认为0，大于0为间隔请求的秒数）\r\n      this.itval = itval || 0\r\n      this.it = null\r\n      // 状态\r\n      this.status = 'wait'\r\n      // 错误信息\r\n      this.err = null\r\n      // 提取规则\r\n      this.extractRule = extractRule ? reactive(extractRule) : reactive({})\r\n      let req = requestData({ url, body, method }, this)\r\n      req.on('request', () => {\r\n         this.loading.value = true\r\n         this.isloading = true\r\n         this.status = 'request'\r\n      })\r\n      req.on('success', (res) => {\r\n         this.sourceData = res\r\n         this.status = 'success'\r\n         this.loading.value = false\r\n         this.isloading = false\r\n         this.err = null\r\n         if (this.handleFun) {\r\n            this.fillData(this.handleFun(res))\r\n         } else {\r\n            this.fillData(res)\r\n         }\r\n         this.emit(\"success\", this)\r\n      })\r\n      req.on('error', (err) => {\r\n         this.status = 'success'\r\n         this.loading.value = false\r\n         this.isloading = false\r\n         this.err = err\r\n         this.emit(\"error\", err)\r\n      })\r\n      this.req = req\r\n      this.unwatch = null\r\n      // 监听规则变化\r\n      this.watchRule()\r\n   }\r\n   watchRule() {\r\n      this.stopWatch()\r\n      // 监听规则变化\r\n      this.watch = watch(this.extractRule, () => {\r\n         this.sourceData && this.fillData(this.sourceData)\r\n      })\r\n      this.sourceData && this.fillData(this.sourceData)\r\n   }\r\n   stopWatch() {\r\n      if (this.unwatch) {\r\n         this.unwatch()\r\n         this.unwatch = null\r\n      }\r\n   }\r\n   setData(info = {}) {\r\n      if (info.url) {\r\n         this.url = info.url\r\n         this.req.options.url = info.url\r\n      }\r\n      if (info.method) {\r\n         this.method = info.method\r\n         this.req.options.method = info.method\r\n      }\r\n      if (info.body) {\r\n         this.body = info.body\r\n         this.req.options.body = info.body\r\n      }\r\n      if (info.func) {\r\n         try {\r\n            if (info.func && typeof info.func == 'string') {\r\n               this.func = info.func\r\n               this.handleFun = new Function(\"data\", info.func)\r\n            }\r\n         } catch (e) { }\r\n      }\r\n      if (typeof info.instart != 'undefined') {\r\n         this.instart = info.instart\r\n      }\r\n      if (isFinite(info.itval)) {\r\n         this.itval = info.itval\r\n      }\r\n   }\r\n   // 修改规则\r\n   setExtractRule(extractRule) {\r\n      if ((this.extractRule instanceof Array && extractRule instanceof Array) || (this.extractRule instanceof Object && extractRule instanceof Object && !Array.isArray(this.extractRule) && !Array.isArray(extractRule))) {\r\n         for (const key in this.extractRule) {\r\n            delete this.extractRule[key]\r\n         }\r\n         Object.assign(this.extractRule, extractRule)\r\n      } else {\r\n         this.extractRule = reactive(jsonData(extractRule))\r\n         this.watchRule()\r\n      }\r\n   }\r\n   // 返回规则（返回的是一个非响应式的数据对象）\r\n   getExtractRule() {\r\n      return jsonData(this.extractRule)\r\n   }\r\n   //    请求数据\r\n   request(callback, body) {\r\n      setTimeout(() => {\r\n         this.req.request(callback, body)\r\n         this.setinterval(this.itval)\r\n      }, 10)\r\n   }\r\n   // 开启轮询请求\r\n   setinterval(timeval = 0) {\r\n      if (this.AppSetup.interaction) {\r\n         if (timeval && timeval > 0) {\r\n            this.it = interval.add(() => {\r\n               this.req.request()\r\n            }, timeval * 1000)\r\n         }\r\n      }\r\n   }\r\n   // 关闭轮询请求\r\n   stopInterval() {\r\n      if (this.it) {\r\n         interval.del(this.it)\r\n         this.it = null\r\n      }\r\n   }\r\n   //    清除数据\r\n   clearData() {\r\n      if (this.status == 'request' && this.req.controller) {\r\n         this.req.controller.abort()\r\n      }\r\n      let keys = Object.keys(this.data)\r\n      keys.forEach(key => {\r\n         delete this.data[key]\r\n      })\r\n   }\r\n   // 返回数据内容\r\n   getData() {\r\n      return {\r\n         id: this.id,\r\n         url: this.url,\r\n         body: this.body || \"\",\r\n         method: this.method || \"\",\r\n         itval: this.itval || 0,\r\n         extractRule: this.extractRule || \"\",\r\n         func: this.func || '',\r\n         instart: this.instart\r\n      }\r\n   }\r\n   /**\r\n    * 填充数据\r\n    * @param {*} data \r\n    */\r\n   fillData(data) {\r\n      // 清除数据\r\n      this.clearData()\r\n      if (this.extractRule && (this.extractRule.x || this.extractRule.name || (Array.isArray(this.extractRule) && this.extractRule.length > 0))) {\r\n         // 如果存在接口数据提取规则，将提取数据后赋值\r\n         Object.assign(this.data, { data: extractData(data, this.extractRule) })\r\n      } else {\r\n         Object.assign(this.data, { data })\r\n      }\r\n      localStorage.setItem(this.id, JSON.stringify(this.data.data))\r\n   }\r\n   /**\r\n    * 销毁\r\n    */\r\n   destroy() {\r\n      this.req.destroy()\r\n      this.clearData()\r\n      this.stopWatch()\r\n      this.stopInterval()\r\n      this.extractRule = null\r\n   }\r\n}","import { reactive } from \"vue\"\r\nimport { removeArray, getAppGlobal } from \"@/utils\"\r\nimport RemoteData from \"./RemoteData\"\r\n\r\n/**\r\n * 远端数据\r\n */\r\nexport const remotes = {}\r\nconst remoteList = reactive([])\r\n\r\n// 创建规则\r\n\r\nexport const createExtractRule = function () {\r\n   return reactive({\r\n      x: {\r\n         name: '',\r\n         path: '',\r\n         mapKey: ''\r\n      },\r\n      y: []\r\n   })\r\n}\r\n\r\n// 远程接口列表\r\nexport const getList = function () {\r\n   return remoteList\r\n}\r\n// 添加远程请求api的方法\r\nexport const add = function (options) {\r\n   if (options.id && remotes[options.id]) {\r\n      return remotes[options.id]\r\n   } else {\r\n      let data = new RemoteData(options, this)\r\n      remoteList.push(data)\r\n      remotes[data.id] = data\r\n      return data\r\n   }\r\n}\r\n\r\nconst delRemote = function (id) {\r\n   removeArray(remoteList, 'id', id)\r\n   remotes[id].destroy()\r\n   delete remotes[id]\r\n   return id\r\n}\r\n\r\n// 删除api请求对象\r\nexport const del = function (val) {\r\n   if (val) {\r\n      if (remotes[val]) {\r\n         return delRemote(val)\r\n      } else {\r\n         for (let key in remotes) {\r\n            if (remotes[key].url == val) {\r\n               delRemote(key)\r\n            }\r\n         }\r\n         return val\r\n      }\r\n   } else {\r\n      let keys = Object.keys(remotes)\r\n      keys.forEach(key => {\r\n         delRemote(key)\r\n      })\r\n      remoteList.splice(0, remoteList.length)\r\n      return true\r\n   }\r\n}\r\n\r\n// 返回一个远端的数据请求对象\r\nexport const getRemote = function (id, url = false) {\r\n   if (remotes[id]) {\r\n      return remotes[id]\r\n   } else if (url) {\r\n      for (let key in remotes) {\r\n         if (remotes[key].url == id) {\r\n            return remotes[key]\r\n         }\r\n      }\r\n   }\r\n   return null\r\n}\r\n// 清空数据\r\nexport const clearRemote = function () {\r\n   del()\r\n}\r\n/**\r\n * 请求数据\r\n * @param {*} refresh 强制重新请求\r\n * @param {*} api 接口地址\r\n * @param {*} callback 完成回调方法\r\n * @returns \r\n */\r\nexport const requestData = function (refresh = false, api = \"\", callback) {\r\n   if (api && remotes[api]) {\r\n      remotes[api].request(callback)\r\n   } else {\r\n      for (let key in remotes) {\r\n         if (remotes[key].status != 'success' || remotes[key].err || refresh) {\r\n            if (api) {\r\n               if (remotes[key].url == api) {\r\n                  remotes[key].request(callback)\r\n                  return\r\n               }\r\n            } else {\r\n               remotes[key].request(callback)\r\n            }\r\n         }\r\n      }\r\n   }\r\n}\r\n// 启动请求所有接口\r\nexport const launchRequest = function () {\r\n   for (let key in remotes) {\r\n      if (remotes[key].instart && remotes[key].status != 'success') {\r\n         remotes[key].request()\r\n      }\r\n   }\r\n}","import { ref, reactive, isReactive, shallowReactive, computed } from 'vue'\r\nimport { nanoid } from 'nanoid'\r\n\r\n\r\n\r\n// 应用设置\r\nexport const defineAppSetup = function (option) {\r\n    return shallowReactive(Object.assign({\r\n        // 缩放模式\r\n        scaleMode: 'auto',\r\n        // 开启交互动作\r\n        interaction: false,\r\n        // 点击事件鼠标经过光标样式\r\n        clickCursor: 'auto',\r\n        // 是否开启整体缩放\r\n        scale: false,\r\n        // 当前应用状态，none未创建，create已创建，display已展示，destroy销毁\r\n        status: 'none',\r\n        // 是否在编辑状态\r\n        develop: false,\r\n        // 所在容器\r\n        dom: null\r\n    }, option))\r\n}\r\n\r\n// 应用信息\r\nexport const defineAppInfo = function () {\r\n    return reactive({\r\n        title: \"\",\r\n        id: 'A_' + nanoid(10),\r\n        creattime: null,\r\n        uptime: null,\r\n        cover: null,\r\n        description: '',\r\n        width: 800,\r\n        height: 600,\r\n        parentSize: false,\r\n        background: {\r\n            backgroundColor: \"#222222\"\r\n        },\r\n        network: {\r\n            host: '',\r\n            token: '',\r\n            method: 'GET',\r\n            offline: false,\r\n            headers: {},\r\n            watch: ''\r\n        },\r\n        scaleMode: 'auto'\r\n    })\r\n}\r\n\r\nexport const computedAppInfo = function (appinfo) {\r\n    if (isReactive(appinfo)) {\r\n        return computed(() => {\r\n            return appinfo\r\n        })\r\n    }\r\n    return null\r\n}\r\n\r\n// 应用信息\r\nexport const defineAction = function (option) {\r\n    return Object.assign({\r\n        id: 'AC_' + nanoid(10),\r\n        action: '',\r\n        target: 'app',\r\n        value: null,\r\n        description: \"\"\r\n    }, option)\r\n}\r\n\r\n// 全局数据信息\r\nexport const defineGData = function (option) {\r\n    const { id, value = \"\", name = \"\", type = \"source\", uptime, trigger, func } = option\r\n    let myValue = value\r\n    if (type != 'remote') {\r\n        myValue = (value instanceof Object) ? reactive(value) : ref(value)\r\n    }\r\n    const result = {\r\n        id: id || \"GD_\" + nanoid(10),\r\n        name,\r\n        type,\r\n        value: myValue,\r\n        uptime: uptime || new Date().getTime(),\r\n    }\r\n    if (trigger) {\r\n        result.trigger = Object.assign({ operator: '', value: '', action: '', actionValue: null }, trigger)\r\n    }\r\n    if (func) {\r\n        result.func = func\r\n    }\r\n    return result\r\n}\r\n\r\n// 插件数据信息\r\nexport const definePlugin = function (option) {\r\n    return reactive(Object.assign({\r\n        id: \"PD_\" + nanoid(10),\r\n        name: '',\r\n        title: '',\r\n        url: '',\r\n        password: '',\r\n        version: '',\r\n        uptime: new Date().getTime()\r\n    }, option))\r\n}\r\n\r\n// 应用事件\r\nexport const defineGEvent = function (option) {\r\n    return Object.assign({\r\n        event: \"launch\",\r\n        pams: { delay: 1000 },\r\n        actions: [],\r\n        actionValue: {}\r\n    }, option)\r\n}\r\n// 资源数据信息\r\nexport const defineAssets = function (option) {\r\n    const { id, url = \"\", type = 'other', uptime } = option\r\n    return reactive({\r\n        id: id || \"AS_\" + nanoid(10),\r\n        url,\r\n        type,\r\n        uptime: uptime || new Date().getTime()\r\n    })\r\n}\r\n\r\n// 脚本函数信息\r\nexport const defineFunction = function (option) {\r\n    const { id, name, description = '', value = '', uptime } = option\r\n    return reactive({\r\n        id: id || \"FU_\" + nanoid(10),\r\n        name,\r\n        description,\r\n        value,\r\n        uptime: uptime || new Date().getTime()\r\n    })\r\n}\r\n","import { jsonData } from '@/utils'\r\n\r\n\r\nexport default function (app) {\r\n    const appData = app.getAppData()\r\n    const mData = app.mData\r\n    const gData = app.gData\r\n    const aData = app.aData\r\n    const eData = app.eData\r\n    const rData = app.rData\r\n    const pData = app.pData\r\n\r\n    let modules = jsonData(mData.getModuleList())\r\n    modules.forEach(module => {\r\n        if (module.components && Array.isArray(module.components)) {\r\n            module.components = module.components.map(element => {\r\n                if (element.type == 'group') {\r\n                    let groupData = mData.getGroup(element.id)\r\n                    if (groupData.components) {\r\n                        groupData.components = groupData.components.map(sprite => {\r\n                            let sprData = mData.getSprite(sprite.id)\r\n                            sprData.selected = false\r\n                            return sprData\r\n                        })\r\n                    }\r\n                    groupData.selected = false\r\n                    return groupData\r\n                } else {\r\n                    let sprData = mData.getSprite(element.id)\r\n                    sprData.selected = false\r\n                    return sprData\r\n                }\r\n            })\r\n        }\r\n    })\r\n\r\n    let globalData = jsonData(gData.getGDataList())\r\n    globalData.forEach((element, index) => {\r\n        if (element.type == 'temp') {\r\n            globalData.splice(index, 1)\r\n        }\r\n        let trigger = element.trigger\r\n        if (!trigger || (trigger && (!trigger.operator || !trigger.action))) {\r\n            element.trigger = null\r\n        }\r\n    })\r\n    return jsonData({\r\n        ...appData.info,\r\n        globalData,\r\n        modules,\r\n        actions: aData.getActionList(),\r\n        events: eData.getGAction(),\r\n        plugins: pData.getPluginList(),\r\n        remote: rData.getRemoteList()\r\n    })\r\n}","import { reactive } from 'vue'\r\nimport { nanoid } from 'nanoid'\r\n\r\nlet moduleCunt = 1\r\n// 组合计数\r\nlet groupCount = 1\r\n// 元素计数\r\nlet spriteCount = 1\r\n// 初始化一个模块数据\r\nexport const initModuleData = function (option = {}) {\r\n   let data = {\r\n      type: 'content',\r\n      name: 'vx-module',\r\n      title: '页面' + moduleCunt++,\r\n      x: 0,\r\n      y: 0,\r\n      layout: null,\r\n      components: []\r\n   }\r\n   Object.assign(data, option)\r\n   if (!data.id) {\r\n      data.id = 'mdu_' + nanoid(10)\r\n   }\r\n   return data\r\n}\r\n\r\n// 初始化一个组合数据\r\nexport const initGroupData = function (options = {}) {\r\n   let data = reactive({\r\n      id: null,\r\n      gpid: null,\r\n      mid: null,\r\n      name: 'vx-sprite-group',\r\n      type: 'group',\r\n      title: '组合' + groupCount++,\r\n      x: 0,\r\n      y: 0,\r\n      width: 0,\r\n      height: 0,\r\n      opacity: 100,\r\n      visible: true,\r\n      selected: false,\r\n      hover: false,\r\n      padding: '',\r\n      filter: '',\r\n      cstatus: false,\r\n      childstatus: {},\r\n      background: {},\r\n      border: {},\r\n      shadow: {},\r\n      anim: {},\r\n      events: [],\r\n      components: []\r\n   })\r\n   Object.assign(data, options)\r\n   if (!data.id) {\r\n      data.id = 'group_' + nanoid(10)\r\n   }\r\n   return data\r\n}\r\n\r\n\r\n// 返回组件默认基础数据\r\nexport const initSpriteData = function (comp, name, option = {}) {\r\n   let defaultData = comp.getDefaultData(name)\r\n   let title = defaultData.title\r\n   let data = reactive({\r\n      id: null,\r\n      gpid: null,\r\n      mid: null,\r\n      name: defaultData.name,\r\n      type: defaultData.type,\r\n      title: title ? (title + spriteCount++) : '元素 ' + spriteCount++,\r\n      x: defaultData.x || 0,\r\n      y: defaultData.y || 0,\r\n      zIndex: defaultData.zIndex || 0,\r\n      width: defaultData.width || 80,\r\n      height: defaultData.height || 80,\r\n      angle: defaultData.angle || 0,\r\n      opacity: defaultData.opacity || 100,\r\n      visible: defaultData.visible || true,\r\n      selected: defaultData.selected || false,\r\n      hover: defaultData.hover || false,\r\n      padding: defaultData.padding || '',\r\n      filter: defaultData.filter || '',\r\n      lock: defaultData.lock || false,\r\n      background: defaultData.background || {},\r\n      border: defaultData.border || {},\r\n      shadow: defaultData.shadow || {},\r\n      anim: defaultData.anim || {},\r\n      options: defaultData.options || {},\r\n      events: defaultData.events || [],\r\n      data: defaultData.data || '',\r\n      passthrough: false\r\n   })\r\n   Object.assign(data, option)\r\n   if (!data.id) {\r\n      data.id = 'sprite_' + nanoid(10)\r\n   }\r\n   return data\r\n}\r\n/**\r\n * 创建数据简单描述副本\r\n * @param {*} data \r\n * @param {*} value \r\n * @returns \r\n */\r\nexport const createSimpleData = function (data, value = {}) {\r\n   let resData = null\r\n   if (data && typeof data == 'object' && this) {\r\n      if (data.type == 'group') {\r\n         resData = Object.assign({\r\n            id: data.id,\r\n            gpid: data.gpid,\r\n            mid: data.mid,\r\n            visible: data.visible,\r\n            name: data.name,\r\n            title: data.title,\r\n            type: data.type,\r\n            zIndex: data.zIndex,\r\n            components: data.components ? data.components.map(item => item.id) : []\r\n         }, value)\r\n      } else {\r\n         resData = Object.assign({\r\n            id: data.id,\r\n            gpid: data.gpid,\r\n            mid: data.mid,\r\n            visible: data.visible,\r\n            name: data.name,\r\n            title: data.title,\r\n            type: data.type,\r\n            zIndex: data.zIndex\r\n         }, value)\r\n      }\r\n   }\r\n   if (resData) {\r\n      this.esSimple[resData.id] = reactive(resData)\r\n      return this.esSimple[resData.id]\r\n   }\r\n   return null\r\n}\r\n","import { reactive } from 'vue'\r\nimport { initModuleData } from './msData'\r\nimport { removeArray } from '@/utils'\r\n\r\nexport default class ModuleData {\r\n   // 数据管理\r\n   mData = null\r\n   // 模块集合\r\n   modules = reactive({})\r\n\r\n   constructor(mData) {\r\n      this.mData = mData\r\n   }\r\n   // 创建一个新的模块，并添加\r\n   newMoule(data) {\r\n      if (data && typeof data == 'object') {\r\n         if (data.id && this.modules[data.id]) {\r\n            console.warn(\"模块\" + data.id + '已存在')\r\n            return null\r\n         }\r\n      } else if (typeof data == 'string' && this.modules[data]) {\r\n         console.warn(\"模块\" + data + '已存在')\r\n         return null\r\n      }\r\n      let newData = initModuleData(data)\r\n      if (!Array.isArray(newData.components)) newData.components = []\r\n      this.modules[newData.id] = newData\r\n      // 加入元素库\r\n      this.mData.elements[newData.id] = this.modules[newData.id]\r\n      return newData\r\n   }\r\n   // 添加元素（元素、组合的基本属性）\r\n   addElement(element, mid = 'default') {\r\n      if (mid && element && typeof element != 'string') {\r\n         if (this.modules[mid] && this.modules[mid]['components']) {\r\n            this.modules[mid]['components'].push(element)\r\n         } else {\r\n            console.warn('模块添加元素数据失败')\r\n         }\r\n      }\r\n   }\r\n   // 删除元素（只是在模块内删除，并为删除数据源）\r\n   delElement(id, mid = 'default') {\r\n      if (mid && id) {\r\n         if (this.modules[mid] && this.modules[mid]['components']) {\r\n            return removeArray(this.modules[mid]['components'], 'id', id)\r\n         } else {\r\n            console.warn('模块删除元素数据失败')\r\n            return false\r\n         }\r\n      } else {\r\n         console.warn('mid && id 无效')\r\n         return false\r\n      }\r\n   }\r\n   /**\r\n    * 删除模块数据\r\n    * @param {*} mid 模块id\r\n    * @param {*} clear 是否清除所有模块内数据\r\n    * @returns \r\n    */\r\n   delModule(mid, clear = false) {\r\n      if (clear && this.modules[mid]) {\r\n         let items = this.modules[mid]['components']\r\n         if (Array.isArray(items)) {\r\n            let ids = items.map(item => item.id)\r\n            ids.forEach(id => {\r\n               // 清除所有数据\r\n               this.mData.delElement(id, true)\r\n            })\r\n         }\r\n         delete this.modules[mid]\r\n         delete this.mData.elements[mid]\r\n         return mid\r\n      } else if (this.modules[mid]) {\r\n         delete this.modules[mid]\r\n         delete this.mData.elements[mid]\r\n         return mid\r\n      } else {\r\n         return null\r\n      }\r\n   }\r\n\r\n   // 配置模块\r\n   setModule = function (id, data) {\r\n      let elements = this.mData.elements\r\n\r\n      if (id) {\r\n         // 如果模块不存在，先创建一个模块\r\n         if (!this.modules[id]) {\r\n            this.modules[id] = initModuleData(Object.assign({ id }, data))\r\n            elements[id] = modules[id]\r\n         }\r\n         // 模块中元素列表不存在，创建一个空列表\r\n         if (!this.modules[id]['components']) modules[id]['components'] = []\r\n         return this.modules[id]\r\n      } else if (data) {\r\n         let md = initModuleData(data)\r\n         this.modules[md.id] = md\r\n         elements[md.id] = this.modules[md.id]\r\n         return this.modules[md.id]\r\n      } else {\r\n         return null\r\n      }\r\n   }\r\n\r\n   // 返回某个模块\r\n   getModule(id) {\r\n      return id ? this.modules[id] : null\r\n   }\r\n   // 返回当前所有\r\n   getModules() {\r\n      return this.modules\r\n   }\r\n   /**\r\n    * 返回当前所有（数组）\r\n    * @param {string|function} filter 过滤键值，或自定义过滤方法\r\n    * @param {string} key 过滤键名\r\n    * @returns \r\n    */\r\n   getModuleList(filter, key = 'type') {\r\n      if (filter) {\r\n         let items = Object.values(this.modules)\r\n         if (typeof filter == 'string') {\r\n            return items.filter(item => item[key] == filter)\r\n         } else if (typeof filter == 'function') {\r\n            return items.filter(item => filter(item))\r\n         } else {\r\n            return items\r\n         }\r\n      } else {\r\n         return Object.values(this.modules)\r\n      }\r\n   }\r\n   /**\r\n    * 返回模块中的所有元素\r\n    * @param {*} mid 模块id\r\n    * @param {*} source 是否是原始数据\r\n    * @returns \r\n    */\r\n   getMyElements(mid = 'default', source = false) {\r\n      if (this.modules[mid] && this.modules[mid]['components']) {\r\n         let components = this.modules[mid]['components']\r\n         return source ? components.map(item => this.mData.getElement(item.id)) : components\r\n      } else {\r\n         return []\r\n      }\r\n   }\r\n   // 清空所有模块数据\r\n   clearModules() {\r\n      let keys = Object.keys(this.modules)\r\n      keys.forEach(key => {\r\n         this.delModule(key)\r\n      })\r\n   }\r\n}\r\n","import { initGroupData, createSimpleData } from './msData'\r\nimport { removeArray } from '@/utils'\r\n\r\n\r\nexport default class GroupData {\r\n\r\n   // 数据管理\r\n   mData = null\r\n   // 编组集合\r\n   groups = {}\r\n\r\n   constructor(mData) {\r\n      this.mData = mData\r\n   }\r\n\r\n   /**\r\n    * 添加一个组合\r\n    * @param {object} data 数据对象\r\n    * @param {string} mid 模块id\r\n    * @returns \r\n    */\r\n   newGroup(data, mid = 'default') {\r\n      if (data && typeof data == 'object' && data.id && this.groups[data.id]) {\r\n         console.warn(\"组合\" + data.id + '已存在')\r\n         return null\r\n      }\r\n      let group = initGroupData(Object.assign({ mid }, data))\r\n      this.groups[group.id] = group\r\n      this.mData.elements[group.id] = group\r\n\r\n      if (!group.zIndex) {\r\n         // 设置在舞台的深度\r\n         group.zIndex = this.mData.getMaxZIndex(mid) + 1\r\n      }\r\n      this.mData.appendElement(createSimpleData.call(this.mData, group), group.mid)\r\n      this.mData.watchSimples(group)\r\n\r\n      return group\r\n   }\r\n   /**\r\n    * 删除组合，是否删除内部数据源\r\n    * @param {string|array} val \r\n    * @param {boolean} clearSource \r\n    * @returns \r\n    */\r\n   delGroup(val, clearSource = false) {\r\n      if (Array.isArray(val)) {\r\n         val.forEach(id => {\r\n            this.delGroup(id, clearSource)\r\n         })\r\n         return val\r\n      } else if (typeof val == 'string') {\r\n         let modules = this.mData.modules\r\n         let unwatchs = this.mData.unwatchs\r\n\r\n         if (this.groups[val]) {\r\n            if (clearSource) {\r\n               let components = this.groups[val].components\r\n               if (Array.isArray(components) && components.length > 0) {\r\n                  this.mData.delSprite(components.map(element => element.id))\r\n               }\r\n            }\r\n            modules.delElement(this.groups[val].id, this.groups[val].mid)\r\n            delete this.groups[val]\r\n            delete this.mData.elements[val]\r\n            if (unwatchs[val] && typeof unwatchs[val] == 'function') {\r\n               unwatchs[val]()\r\n            }\r\n            return val\r\n         }\r\n      }\r\n      return false\r\n   }\r\n   // 项组合添加元素（元素、组合的基本属性）\r\n   addElement(element, gpid) {\r\n      if (gpid && element && typeof element != 'string') {\r\n         if (this.groups[gpid] && this.groups[gpid]['components']) {\r\n            this.groups[gpid]['components'].push(element)\r\n            // this.esSimple[gpid]\r\n         } else {\r\n            console.warn('模块添加元素数据失败')\r\n         }\r\n      }\r\n   }\r\n   // 从组合中删除元素\r\n   delElement(id, gpid) {\r\n      let del = false\r\n      if (gpid && id && this.groups[gpid] && this.groups[gpid]['components']) {\r\n         del = removeArray(this.groups[gpid]['components'], 'id', id)\r\n      }\r\n      if (!del) {\r\n         console.warn('模块删除元素数据失败')\r\n      }\r\n      return del\r\n   }\r\n   /**\r\n    * 创建新组合并加入已有元素\r\n    * @param {array} ids 需要绑定编组的元素id\r\n    * @param {string} mid 当前模块id\r\n    * @returns \r\n    */\r\n   newBindGroup(ids, mid = 'default') {\r\n      if (Array.isArray(ids)) {\r\n         let elements = this.mData.elements\r\n         let modules = this.mData.modules\r\n         let sprites = this.mData.sprites\r\n         let esSimple = this.mData.esSimple\r\n\r\n         // 获取组合的边界\r\n         let point = { x1: 0, y1: 0, x2: 0, y2: 0 }\r\n         let moduleComps = modules.getMyElements(mid)\r\n         // 需要组合的实际元素\r\n         let spids = []\r\n         // 无效的id\r\n         let invalids = []\r\n         // 处理id\r\n         ids.forEach(val => {\r\n            if (/^group_/.test(val)) {\r\n               // 解绑组合元素，并追加到绑定列表\r\n               spids.push(...this.unbindGroup(val,))\r\n            } else {\r\n               spids.push(val)\r\n            }\r\n         })\r\n         // 尺寸位置对比\r\n         spids.forEach((id, i) => {\r\n            let element = moduleComps.find(item => item.id == id)\r\n            let spr = element ? element.type == 'group' ? this.groups[id] : elements[id] : null\r\n            if (spr) {\r\n               if (i == 0) {\r\n                  point.x1 = spr.x\r\n                  point.y1 = spr.y\r\n                  point.x2 = spr.x + spr.width\r\n                  point.y2 = spr.y + spr.height\r\n               } else {\r\n                  point.x1 = spr.x < point.x1 ? spr.x : point.x1\r\n                  point.y1 = spr.y < point.y1 ? spr.y : point.y1\r\n                  point.x2 = spr.x + spr.width > point.x2 ? spr.x + spr.width : point.x2\r\n                  point.y2 = spr.y + spr.height > point.y2 ? spr.y + spr.height : point.y2\r\n               }\r\n            } else {\r\n               invalids.push(id)\r\n            }\r\n         })\r\n         if (invalids.length > 0) {\r\n            console.warn(invalids.join(), \"元素无法组合\")\r\n            return false\r\n         }\r\n         // 从模块中移除元素（非组合）\r\n         sprites.delSprite(spids, false)\r\n\r\n         // 创建组合\r\n         let group = this.newGroup({\r\n            x: point.x1,\r\n            y: point.y1,\r\n            width: point.x2 - point.x1,\r\n            height: point.y2 - point.y1\r\n         }, mid)\r\n         if (group) {\r\n            // 添加元素到组合\r\n            spids.forEach((id, index) => {\r\n               if (elements[id]) {\r\n                  elements[id].x -= point.x1\r\n                  elements[id].y -= point.y1\r\n                  elements[id].gpid = group.id\r\n                  elements[id].hover = false\r\n                  elements[id].selected = false\r\n                  this.addElement(esSimple[id], group.id)\r\n               }\r\n            })\r\n            group.selected = true\r\n            return group\r\n         } else {\r\n            return false\r\n         }\r\n      } else {\r\n         return false\r\n      }\r\n   }\r\n   /**\r\n    * 编组解绑，并删除这个组合\r\n    * @param {*} gpid 组合id\r\n    * @param {*} add 是否移除后添加到源有模块中\r\n    * @returns \r\n    */\r\n   unbindGroup(gpid, add = true) {\r\n      let elements = this.mData.elements\r\n      let modules = this.mData.modules\r\n      let unwatchs = this.mData.unwatchs\r\n      let esSimple = this.mData.esSimple\r\n      let myGroup = this.groups[gpid]\r\n      let myZindex = myGroup.zIndex\r\n\r\n      if (gpid && myGroup && myGroup.components) {\r\n         // 删除模块子集内的组合\r\n\r\n         if (unwatchs[gpid] && typeof unwatchs[gpid] == 'function') {\r\n            unwatchs[gpid]()\r\n         }\r\n         let ids = []\r\n         // 将组合内的元素添加到模块内\r\n         let components = myGroup.components\r\n         // 获取所在模块的所有元素\r\n         let moduleElements = modules.getMyElements(myGroup.mid)\r\n         if (Array.isArray(moduleElements) && moduleElements.length > 0) {\r\n            moduleElements = moduleElements.sort((a, b) => a.zIndex - b.zIndex)\r\n            let sIndex = moduleElements.findIndex(item => item.id == myGroup.id) + 1\r\n            let count = components.length\r\n            for (let index = sIndex, lg = moduleElements.length; index < lg; index++) {\r\n               let ele = elements[moduleElements[index].id]\r\n               ele && (ele.zIndex += count)\r\n            }\r\n         }\r\n         // 删除组合\r\n         this.delGroup(gpid)\r\n         components.forEach((element, index) => {\r\n            elements[element.id].x += myGroup.x\r\n            elements[element.id].y += myGroup.y\r\n            elements[element.id].gpid = null\r\n            // elements[element.id].zIndex = element.zIndex\r\n            ids.push(element.id)\r\n            add && modules.addElement(esSimple[element.id], element.mid)\r\n         })\r\n         return ids\r\n      }\r\n      return false\r\n   }\r\n   // 配置组合\r\n   setGroup = function (id, data) {\r\n      if (id) {\r\n         // 如果模块不存在，先创建一个模块\r\n         if (this.groups[id]) {\r\n            Object.assign(this.groups[id], data)\r\n         } else {\r\n            this.groups[id] = initGroupData(Object.assign({ id }, data))\r\n            this.mData.elements[id] = this.groups[id]\r\n         }\r\n         return this.groups[id]\r\n      } else {\r\n         let group = initGroupData(data)\r\n         this.groups[group.id] = group\r\n         this.mData.elements[group.id] = group\r\n         return group\r\n      }\r\n   }\r\n\r\n   /**\r\n    * 返回某个组合\r\n    * @param {string} id \r\n    * @returns \r\n    */\r\n   getGroup(id) {\r\n      return id ? this.groups[id] : null\r\n   }\r\n   // 返回当前所有组合\r\n   getGroups() {\r\n      return this.groups\r\n   }\r\n   // 返回当前所有（数组）\r\n   getGroupList() {\r\n      return Object.values(this.groups)\r\n   }\r\n   // 清空所有组件数据\r\n   clearGroups() {\r\n      let keys = Object.keys(this.groups)\r\n      keys.forEach(key => {\r\n         this.delGroup(key)\r\n      })\r\n   }\r\n}","import { watch } from 'vue'\r\nimport { initSpriteData, createSimpleData } from './msData'\r\n\r\n\r\nexport default class SpritesData {\r\n\r\n   // 数据管理\r\n   mData = null\r\n   // 元素集合\r\n   sprites = {}\r\n\r\n   constructor(mData) {\r\n      this.mData = mData\r\n   }\r\n   /**\r\n    * 添加一个元素（或新建一个元素）\r\n    * @param {*} data \r\n    * @param {*} mid \r\n    * @param {*} gpid \r\n    * @returns \r\n    */\r\n   addSprite(data, mid = 'default', gpid = null) {\r\n      // 建立一个新的元素数据对象（响应式的）\r\n      let newData = null\r\n      if (typeof data == 'string' && typeof mid == 'object') {\r\n         newData = this.setSprite(data, mid)\r\n      } else if (typeof data == 'object') {\r\n         newData = this.setSprite(data, { mid, gpid })\r\n      }\r\n      if (this.appendSprite(newData)) {\r\n         return newData\r\n      }\r\n      return null\r\n   }\r\n   setSprite(data, option) {\r\n      let comp = this.mData.component\r\n      let elements = this.mData.elements\r\n      let sprites = this.sprites\r\n\r\n      if (typeof data == 'string' && comp.iComponents[data]) {\r\n         // 创建一个基础的原件对象\r\n         let newData = initSpriteData(comp, data, option)\r\n         sprites[newData.id] = newData\r\n         elements[newData.id] = newData\r\n         return newData\r\n      } else if (typeof data == 'object') {\r\n         // 根据初始化数据创建原件对象\r\n         if (data.id && sprites[data.id]) {\r\n            if (option) {\r\n               Object.assign(sprites[data.id], option)\r\n            } else {\r\n               console.warn(\"元素\" + data.id + '已存在')\r\n            }\r\n            return sprites[data.id]\r\n         } else if (data.name) {\r\n            // 重新初始化对象\r\n            let newData = initSpriteData(comp, data.name, Object.assign({}, data, option))\r\n            sprites[newData.id] = newData\r\n            elements[newData.id] = newData\r\n            return sprites[newData.id]\r\n         } else {\r\n            // 无任何数据描述\r\n            console.error('元素添加失败', data)\r\n            return null\r\n         }\r\n      } else {\r\n         return null\r\n      }\r\n   }\r\n   appendSprite(newData) {\r\n      let modules = this.mData.modules\r\n      let groups = this.mData.groups\r\n\r\n      if (!newData) {\r\n         console.warn('添加元素失败,无数据信息')\r\n         return false\r\n      }\r\n      if (!newData.mid) {\r\n         console.warn('添加元素失败,无模块id' + mid)\r\n         return false\r\n      }\r\n      if (!newData.zIndex) {\r\n         // 设置在舞台的深度\r\n         newData.zIndex = this.mData.getMaxZIndex(newData.mid) + 1\r\n      }\r\n      // 创建一个简单的元素副本\r\n      let simpleSprite = createSimpleData.call(this.mData, newData)\r\n      if (newData.gpid && groups.setGroup(newData.gpid)) {\r\n         // 添加到组合中\r\n         groups.addElement(simpleSprite, newData.gpid)\r\n      } else if (modules.setModule(newData.mid)) {\r\n         // 添加到模块中\r\n         modules.addElement(simpleSprite, newData.mid)\r\n      } else {\r\n         console.warn('添加元素失败，无法加入组或模块', simpleSprite)\r\n         return false\r\n      }\r\n      this.mData.watchSimples(newData)\r\n      return newData\r\n   }\r\n   // 删除单个元素\r\n   delOneSprite(id, source = true) {\r\n      let elements = this.mData.elements\r\n      let modules = this.mData.modules\r\n      let groups = this.mData.groups\r\n      let unwatchs = this.mData.unwatchs\r\n      let sprites = this.sprites\r\n\r\n      if (sprites[id]) {\r\n         let res = null\r\n         if (sprites[id]['gid']) {\r\n            res = groups.delElement(id, sprites[id]['gid'])\r\n         } else if (sprites[id]['mid']) {\r\n            res = modules.delElement(id, sprites[id]['mid'])\r\n         }\r\n         if (source) {\r\n            // 删除源头\r\n            delete sprites[id]\r\n            delete elements[id]\r\n            if (res && unwatchs[id] && typeof unwatchs[id] == 'function') {\r\n               unwatchs[id]()\r\n            }\r\n         }\r\n         return res ? true : false\r\n      } else {\r\n         console.warn('删除模块内元素失败')\r\n      }\r\n      return false\r\n   }\r\n\r\n   // 删除元素\r\n   delSprite(ids, source = true) {\r\n      if (ids) {\r\n         if (Array.isArray(ids)) {\r\n            ids.forEach(_id => {\r\n               this.delOneSprite(_id, source)\r\n            })\r\n            return true\r\n         } else if (typeof ids == 'string') {\r\n            return this.delOneSprite(ids, source)\r\n         }\r\n      }\r\n      return false\r\n   }\r\n\r\n   // 返回元素数据集合（以id键名）\r\n   getSprites() {\r\n      return this.sprites;\r\n   }\r\n\r\n   /**\r\n    * 返回元素数据集合（数组）\r\n    * @param {string} mid 模块id\r\n    * @returns \r\n    */\r\n   getSpriteList(mid) {\r\n      let _sprites = Object.values(this.sprites)\r\n      return mid ? _sprites.filter(item => item.mid == mid) : _sprites\r\n   }\r\n   // 返回元素数据\r\n   getSprite(id) {\r\n      if (id && this.sprites[id]) {\r\n         let defData = this.mData.component.getDefaultData(this.sprites[id].name)\r\n         Object.assign(this.sprites[id], Object.assign({}, defData, this.sprites[id]))\r\n         return this.sprites[id]\r\n      } else {\r\n         return null\r\n      }\r\n   }\r\n   // 清空所有组件数据\r\n   clearSprites() {\r\n      let keys = Object.keys(this.sprites)\r\n      keys.forEach(key => {\r\n         this.clearSpriteData(this.sprites[key])\r\n         this.delSprite(key)\r\n      });\r\n   }\r\n   // 清空组件内部数据\r\n   clearSpriteData(sprite) {\r\n      let keys = Object.keys(sprite)\r\n      keys.forEach(key => {\r\n         delete sprite[key]\r\n      })\r\n   }\r\n}\r\n\r\n\r\n","import { watch } from 'vue'\r\nimport { jsonData } from '@/utils'\r\n\r\n/**\r\n * 添加已有的数据模板\r\n * @param {string|object} value 可以是元素名称，也可是数据内容\r\n * @param {string|object} mid 模块id\r\n * @param {string} gid 组id\r\n * @returns \r\n */\r\nexport const addElement = function (value, mid, gid) {\r\n   if (value && typeof value == 'object') {\r\n      let element = jsonData(value)\r\n      let myMid = mid || element.mid\r\n      if (element.type == 'group' && myMid) {\r\n         // 组合处理\r\n         let groupComponents = []\r\n         if (element.components) {\r\n            groupComponents = element.components\r\n            delete element.components\r\n         }\r\n         let newGroup = this.newGroup(element, myMid)\r\n         groupComponents.forEach(sprite => {\r\n            addElement.call(this, sprite, myMid, newGroup.id)\r\n         })\r\n         return newGroup\r\n      } else if (myMid) {\r\n         return this.addSprite(element, myMid, gid)\r\n      } else {\r\n         console.warn('缺少页面数据')\r\n         return false\r\n      }\r\n   } else if (value && typeof value == 'string') {\r\n      return this.addSprite(value, mid, gid)\r\n   } else {\r\n      console.warn('添加失败')\r\n      return false\r\n   }\r\n}\r\n\r\n/**\r\n * 删除元素\r\n * @param {*} id 删除的id\r\n * @param {*} clear 是否清除原始数据\r\n */\r\nexport const delElement = function (id, clear = true) {\r\n\r\n   let spritesData = this.sprites.sprites\r\n   let groupsData = this.groups.groups\r\n\r\n   if (spritesData[id]) {\r\n      return this.sprites.delSprite(id, clear)\r\n   } else if (groupsData[id]) {\r\n      return this.groups.delGroup(id, clear)\r\n   }\r\n}\r\n/**\r\n * 将元素追加到容器内\r\n * @param {*} element 元素内容（可以是对象，也可是是元素id）\r\n * @param {*} parentId 需要加入的容器id（模块或编组）\r\n */\r\nexport const appendElement = function (element, parentId) {\r\n   if (this.modules.modules[parentId]) {\r\n      return this.modules.addElement(element, parentId)\r\n   } else if (this.groups.groups[parentId]) {\r\n      return this.groups.addElement(element, parentId)\r\n   }\r\n   return null\r\n}\r\n/**\r\n * 将元素从容器内移除\r\n * @param {*} element \r\n * @param {*} parentId \r\n */\r\nexport const removeElement = function (id, parentId) {\r\n   if (this.modules.modules[parentId]) {\r\n      return this.modules.delElement(id, parentId)\r\n   } else if (this.groups.groups[parentId]) {\r\n      return this.groups.delElement(id, parentId)\r\n   }\r\n   return null\r\n}\r\n\r\n/**\r\n * 填充数据\r\n * @param {array} moduleList \r\n */\r\nexport const fillData = function (moduleList) {\r\n   if (Array.isArray(moduleList) && moduleList.length > 0) {\r\n      moduleList.forEach(_module => {\r\n         // 添加模块基本信息\r\n         let moduleComponents = []\r\n         if (typeof _module == 'object') {\r\n            if (_module.components) {\r\n               moduleComponents = _module.components\r\n               delete _module.components\r\n            }\r\n         }\r\n         // 创建模块\r\n         this.newMoule(_module)\r\n         // 添加模块内元素\r\n         moduleComponents.forEach(element => {\r\n            if (element.type == 'group') {\r\n               // 组合处理\r\n               let groupComponents = []\r\n               if (element.components) {\r\n                  groupComponents = element.components\r\n                  delete element.components\r\n               }\r\n               this.newGroup(element, _module.id)\r\n               groupComponents.forEach(sprite => {\r\n                  this.addSprite(sprite, _module.id, sprite.gpid)\r\n               })\r\n            } else {\r\n               this.addSprite(element, _module.id)\r\n            }\r\n         })\r\n      })\r\n   } else {\r\n      // 新默认模块\r\n      this.newMoule({ id: 'default' })\r\n   }\r\n}\r\n/**\r\n * 监听数据变化时更新到副本\r\n * @param {*} data \r\n */\r\nexport const watchSimples = function (data) {\r\n   let unwatchs = this.unwatchs\r\n   let esSimple = this.esSimple\r\n   if (data) {\r\n      unwatchs[data.id] = watch(data, attsVary => {\r\n         if (esSimple[attsVary.id]) {\r\n            let keys = Object.keys(esSimple[attsVary.id])\r\n            keys.forEach(key => {\r\n               if (esSimple[attsVary.id][key] != attsVary[key]) {\r\n                  esSimple[attsVary.id][key] = attsVary[key]\r\n               }\r\n            })\r\n         }\r\n      })\r\n   }\r\n}","import { reactive } from 'vue'\r\nimport ModuleData from \"./ModuleData\"\r\nimport GroupsData from \"./GroupData\"\r\nimport SpritesData from \"./SpritesData\"\r\nimport { fillData, addElement, delElement, appendElement, removeElement, watchSimples } from './expand'\r\nimport { getMaxZIndex } from \"@/utils\"\r\n\r\nexport default class ElementData {\r\n   AppSetup = null\r\n   component = null\r\n   // 模块管理\r\n   modules = null\r\n   // 组合管理\r\n   groups = null\r\n   // 元素管理\r\n   sprites = null\r\n   // 所有元素集合\r\n   elements = {}\r\n   // 元素数据集合（简单副本）\r\n   esSimple = {}\r\n   // 监听对象\r\n   unwatchs = {}\r\n   // -------------------\r\n   constructor(appData, _data) {\r\n      this.AppSetup = appData.app.AppSetup\r\n      this.component = appData.app.component\r\n      this.modules = new ModuleData(this)\r\n      this.groups = new GroupsData(this)\r\n      this.sprites = new SpritesData(this)\r\n      // 初始数据\r\n      _data && this.fillData(_data)\r\n   }\r\n   // 填充数据\r\n   fillData(data) {\r\n      fillData.call(this, data)\r\n   }\r\n   // 添加元素\r\n   addElement() {\r\n      return addElement.call(this, ...arguments)\r\n   }\r\n   // 删除元素数据\r\n   delElement() {\r\n      return delElement.call(this, ...arguments)\r\n   }\r\n   // 返回单个元素\r\n   getElement(id) {\r\n      return this.elements[id]\r\n   }\r\n   // 返回所有元素（含编组）的数组列表\r\n   getElements() {\r\n      return [...this.groups.getGroupList(), ...this.sprites.getSpriteList()]\r\n   }\r\n   // 添加已有元素到容器\r\n   appendElement() {\r\n      return appendElement.call(this, ...arguments)\r\n   }\r\n   // 移除容器内的已有元素\r\n   removeElement() {\r\n      return removeElement.call(this, ...arguments)\r\n   }\r\n   // 新建模块\r\n   newMoule() {\r\n      return this.modules.newMoule(...arguments)\r\n   }\r\n   // 删除模块\r\n   delModule() {\r\n      return this.modules.delModule(...arguments)\r\n   }\r\n   // 返回模块\r\n   getModule() {\r\n      return this.modules.getModule(...arguments)\r\n   }\r\n   // 返回所有模块键值对集合\r\n   getModules() {\r\n      return this.modules.getModules(...arguments)\r\n   }\r\n   // 返回所有模块数组列表\r\n   getModuleList() {\r\n      return this.modules.getModuleList(...arguments)\r\n   }\r\n   // 返回模块内所有元素\r\n   getMyElements() {\r\n      return this.modules.getMyElements(...arguments)\r\n   }\r\n   // 清除所有模块\r\n   clearModules() {\r\n      return this.modules.clearModules(...arguments)\r\n   }\r\n   // 添加一个新的组合\r\n   newGroup() {\r\n      return this.groups.newGroup(...arguments)\r\n   }\r\n   // 返回组合对象\r\n   getGroup() {\r\n      return this.groups.getGroup(...arguments)\r\n   }\r\n   // 返回所有组合的键值对集合\r\n   getGroups() {\r\n      return this.groups.getGroups(...arguments)\r\n   }\r\n   // 返回所有组合的数组集合\r\n   getGroupList() {\r\n      return this.groups.getGroupList(...arguments)\r\n   }\r\n   // 编组(创建新组合并加入已有元素)\r\n   bindGroup() {\r\n      return this.groups.newBindGroup(...arguments)\r\n   }\r\n   // 解绑恢复\r\n   unbindGroup() {\r\n      return this.groups.unbindGroup(...arguments)\r\n   }\r\n   // 清除所有组合\r\n   clearGroups() {\r\n      return this.groups.clearGroups(...arguments)\r\n   }\r\n   // 添加元素\r\n   addSprite() {\r\n      return this.sprites.addSprite(...arguments)\r\n   }\r\n   // 删除元素\r\n   delSprite() {\r\n      return this.sprites.delSprite(...arguments)\r\n   }\r\n   // 返回单个元素\r\n   getSprite() {\r\n      return this.sprites.getSprite(...arguments)\r\n   }\r\n   // 返回所有元素键值对集合\r\n   getSprites() {\r\n      return this.sprites.getSprites(...arguments)\r\n   }\r\n   // 返回所有元素数组列表\r\n   getSpriteList() {\r\n      return this.sprites.getSpriteList(...arguments)\r\n   }\r\n   // 监听原始数据信息到副本\r\n   watchSimples() {\r\n      watchSimples.call(this, ...arguments)\r\n   }\r\n   // 清空所有元素\r\n   clearSprites() {\r\n      return this.sprites.clearSprites(...arguments)\r\n   }\r\n   // 返回模块内元素的当前最大深度\r\n   getMaxZIndex(mid) {\r\n      return getMaxZIndex(this.getMyElements(mid))\r\n   }\r\n   // 清空所有内容数据\r\n   clearData() {\r\n      this.sprites.clearSprites()\r\n      this.groups.clearGroups()\r\n      this.modules.clearModules()\r\n   }\r\n}","import { reactive } from 'vue'\r\nimport { defineAction } from './defineData'\r\nimport DataOptions from '@/data/DataOptions'\r\n\r\nexport default class ActionData {\r\n\r\n   // 动作数据集合\r\n   actions = reactive({})\r\n   appData = null\r\n\r\n   constructor(appData, _data) {\r\n      this.appData = appData\r\n      // 初始数据\r\n      _data && this.fillData(_data)\r\n   }\r\n   // 填充数据\r\n   fillData(data) {\r\n      if (Array.isArray(data)) {\r\n         data.forEach(element => {\r\n            this.setActionData(element)\r\n         })\r\n      }\r\n   }\r\n   /**\r\n    * 创建新动作\r\n    * @param {string} actionName 动作名称\r\n    * @param {object} option 覆盖参数\r\n    * @returns \r\n    */\r\n   createActionData(actionName, option) {\r\n      let actionData = DataOptions.actions.find(n => n.action == actionName)\r\n      if (!actionData) {\r\n         console.warn(action + ' 动作不存在')\r\n         return null\r\n      }\r\n      let action = actionName\r\n      let target = option.target || ''\r\n      let value = option.value || actionData.value\r\n      let description = option.description || actionData.description\r\n      let options = option.options || {}\r\n\r\n      if (actionData.target == 'component' && !description) {\r\n         description = actionData.name + this.appData.getElement(target).title\r\n      }\r\n      return this.setActionData({ action, target, value, options, description })\r\n   }\r\n   // 修改动作数据\r\n   editActionData(data) {\r\n      if (data.id) {\r\n         return this.setActionData(data)\r\n      } else {\r\n         console.warn('没有要修改的动作信息')\r\n         return null\r\n      }\r\n   }\r\n   // 添加动作数据\r\n   setActionData(data) {\r\n      if (data && typeof data == 'object') {\r\n         let newData = defineAction(data)\r\n         this.actions[newData.id] = newData\r\n         return newData.id\r\n      } else {\r\n         return null\r\n      }\r\n   }\r\n   // 删除动作数据\r\n   delActionData = function (id) {\r\n      if (this.actions[id]) {\r\n         delete this.actions[id]\r\n      }\r\n   }\r\n   // 返回动作数据\r\n   getActionData = function (id) {\r\n      return this.actions[id]\r\n   }\r\n   // 返回当前所有\r\n   getActionsData = function () {\r\n      return this.actions\r\n   }\r\n   // 返回当前所有（数组）\r\n   getActionList = function (ids) {\r\n      if (ids) {\r\n         let list = []\r\n         if (ids instanceof Array) {\r\n            for (const key in ids) {\r\n               list.push(this.actions[ids[key]])\r\n            }\r\n         } else if (typeof ids == 'string' && this.actions[ids]) {\r\n            list.push(this.actions[ids])\r\n         }\r\n         return list\r\n      } else {\r\n         return Object.values(this.actions)\r\n      }\r\n   }\r\n   /**\r\n    * 清空数据\r\n    */\r\n   clearData = function () {\r\n      let keys = Object.keys(this.actions)\r\n      keys.forEach(key => {\r\n         delete this.actions[key]\r\n      })\r\n   }\r\n}","import { reactive } from \"vue\"\r\nimport { getUrlParam, removeArray } from '@/utils'\r\nimport isPlainObject from 'lodash/isPlainObject'\r\nimport { defineGData } from './defineData'\r\n\r\nconst reactiveData = function (obj) {\r\n   return reactive({\r\n      get id() {\r\n         return obj.id || \"\"\r\n      },\r\n      get type() {\r\n         return obj.type || \"\"\r\n      },\r\n      name: obj.name,\r\n      value: obj.value,\r\n      uptime: obj.uptime || '',\r\n      trigger: obj.trigger,\r\n      func: obj.func\r\n   })\r\n}\r\n\r\nexport default class GlobalData {\r\n   // 数据集合\r\n   data = {}\r\n   dataList = reactive([])\r\n   appData = null\r\n\r\n   constructor(appData, _data) {\r\n      this.appData = appData\r\n      // 初始数据\r\n      _data && this.fillData(_data)\r\n   }\r\n   // 填充数据\r\n   fillData(data) {\r\n      // 添加一组url参数信息\r\n      this.addGData({ id: 'GD_query', name: 'url参数', type: 'temp', value: { data: getUrlParam() } })\r\n      if (Array.isArray(data)) {\r\n         data.forEach(element => {\r\n            this.addGData(element)\r\n         })\r\n      }\r\n   }\r\n   /**\r\n    * 新增一个数据对象\r\n    * @param {*} value 值\r\n    * @param {*} name 名称\r\n    * @param {*} type 类型\r\n    * @param {*} trigger 触发条件\r\n    * @param {function} func 自定义函数处理\r\n    * @returns \r\n    */\r\n   addGData(value, name = \"\", type = \"source\", trigger = null, func = null) {\r\n      const remote = this.appData.rData\r\n      let inData = null\r\n      if (isPlainObject(value) && value.id) {\r\n         // 添加已有数据\r\n         if (this.data[value.id]) {\r\n            // 返回当前存在的数据\r\n            return this.data[value.id]\r\n         }\r\n         // 格式化原有数据\r\n         inData = defineGData(value)\r\n         // 远程数据赋值调用id\r\n         if (inData.type == 'remote') {\r\n            inData.value = remote.addRemote(inData.value).id\r\n         }\r\n      } else if (name) {\r\n         // 新建数据并添加\r\n         inData = defineGData({\r\n            name,\r\n            value: type == 'remote' ? remote.addRemote(value).id : value,\r\n            type,\r\n            trigger\r\n         })\r\n         if (func) {\r\n            inData.func = func\r\n         }\r\n      } else {\r\n         console.warn('无效全局数据添加,必须要有名称')\r\n         return false\r\n      }\r\n      this.data[inData.id] = reactiveData(inData)\r\n      this.dataList.push(this.data[inData.id])\r\n      this.appData.watchDataTrigger(this.data[inData.id])\r\n      return this.data[inData.id]\r\n\r\n   }\r\n   /**\r\n    * 编辑一个数据对象\r\n    * @param {string|object} res \r\n    * @param {object} value \r\n    * @returns \r\n    */\r\n   editGData(res, value) {\r\n      let id = null\r\n      if (typeof res == 'string' && isPlainObject(value) && this.data[res]) {\r\n         id = res\r\n         this.data[id] = value\r\n      } else if (isPlainObject(res) && typeof res.id == 'string' && this.data[res.id]) {\r\n         id = res.id\r\n         this.data[id] = res\r\n      }\r\n      if (id) {\r\n         let index = this.dataList.findIndex(item => item.id == id)\r\n         if (index > -1) {\r\n            return this.dataList[index] = this.data[id]\r\n         }\r\n      }\r\n      return false\r\n   }\r\n   // 删除一个数据对象\r\n   delGData(id) {\r\n      if (this.data[id]) {\r\n         removeArray(this.dataList, 'id', id)\r\n         delete this.data[id]\r\n      }\r\n   }\r\n   // 返回一个数据对象\r\n   getGData(id) {\r\n      return this.data[id] || null\r\n   }\r\n   // 返回所有数据列表(数组)\r\n   getGDataList() {\r\n      return this.dataList\r\n   }\r\n   // 清空数据\r\n   clearData() {\r\n      let keys = Object.keys(this.data)\r\n      keys.forEach(key => {\r\n         delete this.data[key]\r\n      });\r\n      this.dataList.splice(0, this.dataList.length)\r\n   }\r\n   get GData() {\r\n      return this.data\r\n   }\r\n}\r\n\r\n","import { reactive } from \"vue\"\r\nimport DataOptions from \"./DataOptions\"\r\n\r\nexport default class EventData {\r\n    // 数据集合\r\n    data = reactive({})\r\n    appData = null\r\n\r\n    constructor(appData, _data) {\r\n        this.appData = appData\r\n        // 初始数据\r\n        _data && this.fillData(_data)\r\n    }\r\n    // 填充数据\r\n    fillData(data) {\r\n        if (typeof data != 'object') return;\r\n        let keys = Object.keys(data)\r\n        if (Array.isArray(keys)) {\r\n            keys.forEach(key => {\r\n                this.data[key] = data[key]\r\n            })\r\n        }\r\n    }\r\n    /**\r\n     * 为事件添加一个动作\r\n     * @param {string} actionId 动作id\r\n     * @param {string} eventName 事件名称，通过元素id添加动作时，必须包含一个事件名称\r\n     */\r\n    addGAction = function (actionId, eventName = \"launch\") {\r\n\r\n        let event = DataOptions.appEvents.find(n => n.event == eventName)\r\n        if (event) {\r\n            // 如果事件不存在，创建一个新的事件对象\r\n            if (!this.data[eventName]) {\r\n                this.data[eventName] = JSON.parse(JSON.stringify(event))\r\n            }\r\n            // 添加动作\r\n            if (this.data[eventName].actions.findIndex(n => n == actionId) < 0) {\r\n                this.data[eventName].actions.push(actionId)\r\n            } else {\r\n                console.warn(actionId + '当前动作已存在')\r\n            }\r\n        } else {\r\n            console.warn(\"当前应用中\" + eventName + '事件不存在')\r\n        }\r\n    }\r\n    /**\r\n     * 编辑一个数据对象\r\n     * 编辑当前元素向触发的动作传值\r\n     * @param {*} actionId \r\n     * @param {*} eventName \r\n     * @param {*} value \r\n     * @returns \r\n     */\r\n    editGAction = function (actionId, eventName, value) {\r\n        if (eventName) {\r\n            if (this.data[eventName]) {\r\n                if (typeof value != 'undefined') {\r\n                    if (!this.data[eventName].actionValue) {\r\n                        this.data[eventName].actionValue = {}\r\n                    }\r\n                    this.data[eventName].actionValue[actionId] = value\r\n                }\r\n            } else {\r\n                console.warn(\"当前应用中\" + eventName + '事件不存在')\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * 删除事件上的动作\r\n     * @param {*} eventName 事件名称\r\n     * @param {string} actionId  动作id\r\n     * @returns \r\n     */\r\n    delGAction = function (eventName = \"\", actionId) {\r\n        if (this.data[eventName] && actionId) {\r\n            let index = this.data[eventName].actions.findIndex(n => n == actionId)\r\n            if (index > -1) {\r\n                this.data[eventName].actions.splice(index, 1)\r\n            }\r\n        } else if (this.data[eventName]) {\r\n            delete this.data[eventName]\r\n            return eventName\r\n        }\r\n    }\r\n    // 返回一个数据对象\r\n    getGAction = function (eventName) {\r\n        return eventName ? this.data[eventName] : this.data\r\n    }\r\n    // 清空数据\r\n    clearData = function () {\r\n        let keys = Object.keys(this.data)\r\n        keys.forEach(key => {\r\n            delete this.data[key]\r\n        })\r\n    }\r\n}\r\n\r\n","import { reactive } from \"vue\"\r\nimport * as remote from '@/remote'\r\n\r\nexport default class RemoteData {\r\n    remotes = reactive([])\r\n    appData = null\r\n    constructor(appData, _data) {\r\n        this.appData = appData\r\n        // 初始数据\r\n        _data && this.fillData(_data)\r\n    }\r\n    // 填充数据\r\n    fillData(data) {\r\n        if (Array.isArray(data)) {\r\n            data.forEach(element => {\r\n                this.addRemote(element)\r\n            })\r\n        }\r\n    }\r\n    addRemote() {\r\n        let data = remote.getRemote.call(this, ...arguments)\r\n        if (!data) {\r\n            data = remote.add.call(this.appData, ...arguments)\r\n            if (data && data.id && this.remotes.findIndex(id => id == data.id) < 0) {\r\n                this.remotes.push(data.id)\r\n            }\r\n        }\r\n        return data\r\n    }\r\n    delRemote() {\r\n        let id = remote.del.call(this, ...arguments)\r\n        if (typeof id == 'string' && this.remotes[id]) {\r\n            let index = this.remotes.findIndex(id => id == id)\r\n            if (index >= 0) {\r\n                this.remotes.splice(index, 1)\r\n            }\r\n        }\r\n        return id\r\n    }\r\n    getRemote() {\r\n        return remote.getRemote.call(this, ...arguments)\r\n    }\r\n    requestData() {\r\n        return remote.requestData.call(this, ...arguments)\r\n    }\r\n    launchRequest() {\r\n        return remote.launchRequest.call(this, ...arguments)\r\n    }\r\n    createExtractRule() {\r\n        return remote.createExtractRule.call(this, ...arguments)\r\n    }\r\n    getRemoteList() {\r\n        return this.remotes.map(id => remote.remotes[id].getData())\r\n    }\r\n    // 清空数据\r\n    clearData() {\r\n        this.remotes.forEach(id => {\r\n            remote.del(id)\r\n        })\r\n        this.remotes.splice(0, this.remotes.length)\r\n    }\r\n}","import { reactive } from \"vue\"\r\nimport { removeArray } from \"@/utils\"\r\nimport { definePlugin } from './defineData'\r\nimport isPlainObject from 'lodash/isPlainObject'\r\n\r\nexport default class PluginData {\r\n    // 数据集合\r\n    data = {}\r\n    dataList = reactive([])\r\n    appData = null\r\n\r\n    constructor(appData, _data) {\r\n        this.appData = appData\r\n        // 初始数据\r\n        _data && this.fillData(_data)\r\n    }\r\n    // 填充数据\r\n    fillData(data) {\r\n        if (Array.isArray(data)) {\r\n            data.forEach(element => {\r\n                this.addPlugin(element)\r\n            })\r\n        }\r\n    }\r\n    addPlugin(option) {\r\n        if (isPlainObject(option)) {\r\n            if (option.id && this.data[option.id]) {\r\n                console.warn('插件存在')\r\n                return null\r\n            } else if (option.url) {\r\n                let pulugin = definePlugin(option)\r\n                this.data[pulugin.id] = pulugin\r\n                this.dataList.push(pulugin)\r\n                return this.data[pulugin.id]\r\n            }\r\n        }\r\n        console.warn('插件添加失败', option)\r\n        return null\r\n    }\r\n    delPlugin(id) {\r\n        if (this.data[id]) {\r\n            removeArray(this.dataList, 'id', id)\r\n            delete this.data[id]\r\n        } else if (id) {\r\n            let pulugins = Object.values(this.data)\r\n            let pulugin = pulugins.find(item => item.url == id)\r\n            if (pulugin) {\r\n                if (this.data[pulugin.id]) {\r\n                    removeArray(this.dataList, 'id', pulugin.id)\r\n                    delete this.data[pulugin.id]\r\n                }\r\n            }\r\n        }\r\n    }// 返回一个数据对象\r\n    getPlugin = function (id) {\r\n        return this.data[id]\r\n    }\r\n\r\n    // 返回所有数据列表(数组)\r\n    getPluginList = function () {\r\n        return this.dataList\r\n    }\r\n    // 清空数据\r\n    clearData = function () {\r\n        let keys = Object.keys(this.data)\r\n        keys.forEach(key => {\r\n            delete this.data[key]\r\n        });\r\n        this.dataList.splice(0, this.dataList.length)\r\n    }\r\n}","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import { computed, watch, isRef, ref } from 'vue'\r\nimport CMD from '@/command'\r\nimport getValue from 'lodash/get'\r\nimport jsCookie from 'js-cookie'\r\nimport * as remote from '@/remote'\r\n\r\n// 缩放变形相关样式\r\nexport const getTransform = function () {\r\n    return computed(() => {\r\n        if (this.AppSetup.scale) {\r\n            if (this.info.scaleMode == 'auto') {\r\n                let size = { width: this.app.appInfo.value.width, height: this.app.appInfo.value.height }\r\n                if (this.scale.w > this.scale.h) {\r\n                    let mvx = size.width * (this.scale.w - this.scale.h) / 2 / this.scale.value\r\n                    return \"scale(\" + this.scale.value + \")  translateX(\" + mvx + \"px)\"\r\n                } else {\r\n                    let mvy = size.height * (this.scale.h - this.scale.w) / 2 / this.scale.value\r\n                    return \"scale(\" + this.scale.value + \")  translateY(\" + mvy + \"px)\"\r\n                }\r\n            } else if (this.info.scaleMode == 'fill') {\r\n                return \"scale(\" + this.scale.w + \",\" + this.scale.h + \")\"\r\n            } else {\r\n                return ''\r\n            }\r\n        } else {\r\n            return ''\r\n        }\r\n    })\r\n}\r\n\r\n\r\nexport const clearUnwatch = function () {\r\n    this.unwatch.forEach(stop => stop())\r\n    this.unwatch = []\r\n    for (const key in this.filterDatas) {\r\n        this.filterDatas[key] = null\r\n    }\r\n    this.filterDatas = {}\r\n}\r\n\r\nconst judgeDataTrigger = function (data, operator, value) {\r\n    let targetValue = this.getDataSource(value)\r\n    switch (operator) {\r\n        case '==':\r\n            return data == targetValue\r\n        case '>':\r\n            return data > targetValue\r\n        case '<':\r\n            return data < targetValue\r\n        case '>=':\r\n            return data >= targetValue\r\n        case '<=':\r\n            return data <= targetValue\r\n        case '!=':\r\n            return data != targetValue\r\n        case 'always':\r\n            return true\r\n        default:\r\n            return false\r\n    }\r\n}\r\n\r\nconst actionTrigger = function (action, actionValue) {\r\n    if (this.aData.actions[action]) {\r\n        let myAction = JSON.parse(JSON.stringify(this.aData.actions[action]))\r\n        if (typeof actionValue != 'undefined' && actionValue != null) {\r\n            myAction.value = actionValue\r\n        }\r\n        CMD.execute(myAction, '', this.info.id)\r\n    }\r\n}\r\nexport const watchDataTrigger = function (data) {\r\n    if (data && data.id && data.trigger) {\r\n        let operator = data.trigger.operator\r\n        let value = data.trigger.value\r\n        let action = data.trigger.action\r\n        let actionValue = data.trigger.actionValue\r\n        if (operator && action) {\r\n            if (data.type == 'source') {\r\n                this.unwatch.push(watch(data, newData => {\r\n                    let srcData = isRef(newData.value) ? newData.value.value : newData.value\r\n                    if (judgeDataTrigger.call(this, srcData, operator, value)) {\r\n                        actionTrigger.call(this, action, actionValue)\r\n                    }\r\n                }, { deep: true }))\r\n            } else if (data.type == 'remote' && typeof data.value == 'string') {\r\n                let _remote = remote.getRemote(data.value)\r\n                if (_remote) {\r\n                    this.unwatch.push(watch(_remote.data, newData => {\r\n                        if (judgeDataTrigger.call(this, newData.data, operator, value)) {\r\n                            actionTrigger.call(this, action, actionValue)\r\n                        }\r\n                    }, { deep: true }))\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * 根据全局数据对象或远程数据对象放回绑定的数据源\r\n * @param {*} value \r\n * @returns *\r\n */\r\nexport const getDataSource = function (value, disable = []) {\r\n    if (typeof value != 'string' || disable.includes(value)) {\r\n        return value\r\n    }\r\n    if (/^RD_\\S{10}$/.test(value) && remote.remotes[value]) {\r\n        return remote.remotes[value].data\r\n    } else if (this.gData) {\r\n        const { GData } = this.gData\r\n        const unwatch = this.unwatch\r\n        const filterDatas = this.filterDatas\r\n        let gdid = value\r\n        let path = null\r\n\r\n        if (/.\\?+./.test(value)) {\r\n            let arr = value.split('?')\r\n            gdid = arr[0]\r\n            path = arr[1]\r\n        }\r\n        if (/(^GD_\\S{10})|(^GD_query)$/.test(gdid) && GData[gdid]) {\r\n            if (GData[gdid].type == 'remote') {\r\n                let _remote = remote.getRemote(GData[gdid].value)\r\n                if (_remote) {\r\n                    if (path) {\r\n                        const watchid = gdid + path\r\n                        if (!filterDatas[watchid]) {\r\n                            filterDatas[watchid] = ref(null)\r\n                            let _path = path\r\n                            unwatch.push(watch(_remote.data, newData => {\r\n                                let newValue = getValue(newData.data || newData, _path)\r\n                                filterDatas[watchid].value = newValue\r\n                            }, { immediate: true }))\r\n                        }\r\n                        return filterDatas[watchid]\r\n                    } else {\r\n                        return _remote.data\r\n                    }\r\n                } else {\r\n                    return null\r\n                }\r\n            } else if (GData[gdid].type == 'local') {\r\n                let value = GData[gdid].value\r\n                let data = null\r\n                if (value.source == 'cookie') {\r\n                    data = jsCookie.get(value.key)\r\n                } else {\r\n                    let res = value.source == 'local' ? localStorage.getItem(value.key) : sessionStorage.getItem(value.key)\r\n                    try {\r\n                        data = JSON.parse(res)\r\n                    } catch (error) {\r\n                        data = res\r\n                    }\r\n                }\r\n                if (data && typeof data == 'object' && path) {\r\n                    return getValue(data, path)\r\n                }\r\n                return data\r\n            } else {\r\n                let myValue = GData[gdid].value\r\n                const func = GData[gdid].func\r\n                if (func) {\r\n                    try {\r\n                        if (typeof func == 'string') {\r\n                            const handleFun = new Function(\"data\", func)\r\n                            if (myValue && typeof myValue == 'object') {\r\n                                const keys = Object.keys(myValue)\r\n                                const values = Object.values(myValue)\r\n                                const nextDisable = values.filter(v => /^RD_\\S{10}$/.test(v))\r\n                                const o = {}\r\n                                // 记录读取预防死循环\r\n                                const disableRds = [value, ...nextDisable, ...disable]\r\n                                keys.forEach(key => {\r\n                                    // 不能读取自身\r\n                                    if (myValue[key] != value) {\r\n                                        o[key] = this.getDataSource(myValue[key], disableRds)\r\n                                    } else {\r\n                                        o[key] = myValue[key]\r\n                                    }\r\n                                })\r\n                                myValue = handleFun.call(null, o)\r\n                            } else {\r\n                                myValue = handleFun.call(null, myValue)\r\n                            }\r\n                        }\r\n                    } catch (e) {\r\n                        console.warn('custom function error')\r\n                    }\r\n                }\r\n                if (path) {\r\n                    myValue = getValue(myValue, path)\r\n                }\r\n                return myValue\r\n            }\r\n        }\r\n    }\r\n    return value\r\n}","/**\r\n * app基础布局与组件渲染数据\r\n */\r\nimport { reactive } from 'vue'\r\nimport { jsonData, getScale } from '@/utils'\r\nimport { defineAppSetup, defineAppInfo } from './defineData'\r\nimport { EVENTS } from '@/events'\r\nimport isPlainObject from 'lodash/isPlainObject'\r\nimport cmd from '@/command'\r\nimport getData from './getData'\r\nimport ElementData from './ElementData'\r\nimport ActionData from './ActionData'\r\nimport GlobalData from './GlobalData'\r\nimport EventData from './EventData'\r\nimport RemoteData from './RemoteData'\r\nimport PluginData from './PluginData'\r\nimport * as ABind from './aBind'\r\n\r\n\r\nclass AppData {\r\n   // 应用配置\r\n   AppSetup = defineAppSetup()\r\n   // 应用\r\n   app = null\r\n   // vue实例\r\n   vapp = null\r\n   // 应用信息\r\n   info = defineAppInfo()\r\n   // 原始数据\r\n   iData = {}\r\n   // 管理舞台元素数据\r\n   mData = null\r\n   // 管理动作事件数据\r\n   aData = null\r\n   // app事件管理\r\n   eData = null\r\n   // 管理全局数据\r\n   gData = null\r\n   // 管理接口数据\r\n   rData = null\r\n   // 插件管理\r\n   pData = null\r\n   // 监听对象\r\n   unwatch = []\r\n   // 过滤器\r\n   filterDatas = {}\r\n\r\n   constructor(app, option) {\r\n      this.app = app\r\n      Object.assign(this.AppSetup, option)\r\n      // 缩放信息\r\n      this.scale = reactive({ value: 1, h: 1, w: 1 })\r\n      // 样式缩放\r\n      this.transform = ABind.getTransform.call(this)\r\n      // 模块数据\r\n      this.mData = new ElementData(this)\r\n      // 动作数据\r\n      this.aData = new ActionData(this)\r\n      // app事件数据\r\n      this.eData = new EventData(this)\r\n      // 远程数据\r\n      this.rData = new RemoteData(this)\r\n      // 全局数据\r\n      this.gData = new GlobalData(this)\r\n      // 插件数据\r\n      this.pData = new PluginData(this)\r\n   }\r\n   init(_data) {\r\n      if (this.app.vapp) {\r\n         this.vapp = this.app.vapp\r\n         if (this.vapp.dom) {\r\n            this.AppSetup.dom = this.vapp.dom\r\n         }\r\n      }\r\n      this.splitData(_data)\r\n      this.initData()\r\n      this.resetScale()\r\n      // 窗口变化数据处理\r\n      window.addEventListener('resize', () => this.resetScale())\r\n   }\r\n   // 缩放比例更新\r\n   resetScale() {\r\n      let size = { width: this.app.appInfo.value.width, height: this.app.appInfo.value.height }\r\n      Object.assign(this.scale, getScale(this.AppSetup.dom, size))\r\n   }\r\n   // 拆分数据\r\n   splitData(_data) {\r\n      this.iData = {}\r\n      let data = _data ? jsonData(_data) : {}\r\n      let keys = ['modules', 'actions', 'globalData', 'remote', 'plugins', 'events']\r\n      keys.forEach(key => {\r\n         if (data[key]) {\r\n            this.iData[key] = data[key]\r\n            delete data[key]\r\n         } else {\r\n            this.iData[key] = []\r\n         }\r\n      })\r\n      this.iData.info = data\r\n   }\r\n   initData() {\r\n      if (this.iData) {\r\n         // 应用基本信息\r\n         this.initAppInfo(this.iData.info)\r\n         // 模块数据\r\n         this.mData.fillData(this.iData.modules)\r\n         // 动作数据\r\n         this.aData.fillData(this.iData.actions)\r\n         // 事件数据\r\n         this.eData.fillData(this.iData.events)\r\n         // 远程数据\r\n         this.rData.fillData(this.iData.remote)\r\n         // 全局数据\r\n         this.gData.fillData(this.iData.globalData)\r\n         // 插件数据\r\n         this.pData.fillData(this.iData.plugins)\r\n         // 数据加载完成\r\n         cmd.emit(EVENTS.DATA_LOADED, this)\r\n         // 请求远端数据\r\n         this.rData.launchRequest()\r\n      }\r\n      return this\r\n   }\r\n   initAppInfo(info) {\r\n      let keys = Object.keys(this.info)\r\n      keys.forEach(key => {\r\n         if (isPlainObject(this.info[key]) && isPlainObject(info[key])) {\r\n            Object.assign(this.info[key], info[key])\r\n         } else if (typeof info[key] != 'undefined') {\r\n            this.info[key] = info[key]\r\n         }\r\n      })\r\n   }\r\n   requestRemote() {\r\n      // 请求远端数据\r\n      this.rData.requestData(true)\r\n   }\r\n   // 返回元素\r\n   getElement(id) {\r\n      return this.mData.getElement(id)\r\n   }\r\n   // 模块列表\r\n   getModuleList() {\r\n      return this.mData.getModuleList(...arguments)\r\n   }\r\n   // 元素列表\r\n   getElementList() {\r\n      return this.mData.getElements(...arguments)\r\n   }\r\n   // 动作列表\r\n   getActionList() {\r\n      return this.aData.getActionList(...arguments)\r\n   }\r\n   // 数据列表\r\n   getGDataList() {\r\n      return this.gData.getGDataList(...arguments)\r\n   }\r\n   // 接口列表\r\n   getRemoteList() {\r\n      return this.rData.getRemoteList(...arguments)\r\n   }\r\n   // 返回数据\r\n   getAppData() {\r\n      return {\r\n         info: this.info,\r\n         scale: this.scale,\r\n         transform: this.transform\r\n      }\r\n   }\r\n   // 返回所有数据\r\n   getData() {\r\n      return getData(this)\r\n   }\r\n   // 数据源处理\r\n   getDataSource() {\r\n      return ABind.getDataSource.call(this, ...arguments)\r\n   }\r\n   // 数据监听\r\n   watchDataTrigger() {\r\n      return ABind.watchDataTrigger.call(this, ...arguments)\r\n   }\r\n   // 清除所有数据\r\n   clearDataAll() {\r\n      this.mData.clearData()\r\n      this.aData.clearData()\r\n      this.gData.clearData()\r\n      this.rData.clearData()\r\n      this.pData.clearData()\r\n      this.eData.clearData()\r\n      ABind.clearUnwatch.call(this)\r\n   }\r\n}\r\n\r\n\r\nexport default AppData","import { h, isReactive, resolveComponent } from 'vue'\r\nimport { getAppGlobal } from '@/utils'\r\n// import createEvent from './createEvent'\r\n\r\n/**\r\n * 创建组件\r\n * @param {String} componentName 组件名称\r\n * @param {String|Object} props 元素id或组件props\r\n * @param {String|Object} slots 用到插槽的内容\r\n * @returns \r\n */\r\nexport default function (options) {\r\n   const { name, props, slots, ref, events = {} } = options\r\n   const myApp = {\r\n      AppSetup: getAppGlobal('AppSetup'),\r\n      data: getAppGlobal('data'),\r\n      component: getAppGlobal('component')\r\n   }\r\n   const mData = myApp.data.mData\r\n\r\n   let componentName = name\r\n   let component = null;\r\n   if (!componentName) {\r\n      console.warn('数据缺少组件' + props);\r\n      component = \"div\";\r\n   } else {\r\n      component = resolveComponent(componentName);\r\n      if (component == componentName) {\r\n         console.warn(component + '组件没有找到');\r\n         component = \"div\";\r\n      }\r\n   }\r\n   if (typeof props == 'string') {\r\n      // 如果是元素id\r\n      const spriteData = mData.getElement(props)\r\n      if (!spriteData) { return }\r\n      let myProps = { id: props, options: spriteData.options, ref, ...events }\r\n      // if (spriteData.id) {\r\n      //    // 绑定事件\r\n      //    let event = { myApp, events: spriteData.events || [], data: spriteData, componentName }\r\n      //    Object.assign(myProps, createEvent(event))\r\n      // }\r\n      // 删除组件定义相关信息\r\n      if (spriteData.data) {\r\n         let _data = myApp.data.getDataSource(spriteData.data)\r\n         // console.log(componentName, spriteData.title, _data, isReactive(_data))\r\n         if (isReactive(_data)) {\r\n            if (typeof _data.data != 'undefined') {\r\n               myProps.data = _data.data\r\n            } else {\r\n               myProps.data = _data\r\n            }\r\n         } else {\r\n            myProps.data = _data\r\n         }\r\n      }\r\n\r\n      return h(component, myProps)\r\n   } else if (typeof props != 'undefined') {\r\n      // 如果是模块或组合\r\n      let myProps = { ...props }\r\n      // if (props.events) {\r\n      //    let event = { myApp, events: props.events || [], data: props, componentName }\r\n      //    Object.assign(myProps, createEvent(event))\r\n      // }\r\n      myProps['ref'] = ref || myProps.id\r\n      // 删除组件定义相关信息\r\n      if (myProps['name']) delete myProps['name']\r\n      if (myProps['mid']) delete myProps['mid']\r\n\r\n      return h(component, myProps, slots)\r\n   } else {\r\n      // 无信息返回组件\r\n      return h(component, {}, \"\")\r\n   }\r\n}","import { jsonData } from '@/utils'\r\n\r\nexport default function (data, event) {\r\n    let actions = jsonData(data.getActionList(event.actions))\r\n    if (event.actionValue && typeof event.actionValue == 'object') {\r\n        actions.forEach(action => {\r\n            if (event.actionValue[action.id]) {\r\n                action.value = data.getDataSource(event.actionValue[action.id])\r\n            }\r\n        })\r\n    }\r\n    return actions\r\n}","import { onMounted, onUnmounted } from \"vue\"\r\nimport { interval, timeout } from '@/utils'\r\nimport { EVENTS } from '@/events'\r\nimport cmd from '@/command'\r\nimport getActions from './interaction/getActions'\r\n\r\nconst dispatchEvent = function ($el, event, component, value) {\r\n    if ($el && $el.getAttribute && $el.getAttribute(event)) {\r\n        $el.dispatchEvent(new CustomEvent(event, {\r\n            detail: {\r\n                component,\r\n                value\r\n            }\r\n        }))\r\n    }\r\n}\r\n\r\nexport const lifecycleHook = function (vnode, props, context) {\r\n    let $el = null\r\n    onMounted(() => {\r\n        if (props.id) {\r\n            cmd.addEventListener(`run_function_${props.id}`, data => {\r\n                if (vnode.child && vnode.child.value) {\r\n                    vnode.child.value.cmdRunning && vnode.child.value.cmdRunning(data)\r\n                }\r\n            })\r\n        }\r\n        if (vnode.value && vnode.value.el) {\r\n            $el = vnode.value.el\r\n            dispatchEvent($el, 'timeout', vnode.value, 'mounted')\r\n            dispatchEvent($el, 'interval', vnode.value, 'mounted')\r\n        }\r\n    })\r\n    onUnmounted(() => {\r\n        if (props.id) {\r\n            cmd.removeEventListener(`run_function_${props.id}`)\r\n        }\r\n        if ($el) {\r\n            dispatchEvent($el, 'timeout', vnode.value, 'beforeUnmount')\r\n            dispatchEvent($el, 'interval', vnode.value, 'beforeUnmount')\r\n        }\r\n    })\r\n}\r\n\r\nexport const stageHook = function (data) {\r\n    let it = null\r\n    let ti = null\r\n    onMounted(() => {\r\n        cmd.emit(EVENTS.STAGE_MOUNTED)\r\n        if (data.AppSetup.interaction) {\r\n            const appid = data.info.id\r\n            const evtLaunch = data.eData.getGAction('launch')\r\n            const evtInterval = data.eData.getGAction('interval')\r\n            const evtTimeout = data.eData.getGAction('timeout')\r\n            if (evtLaunch && Array.isArray(evtLaunch.actions)) {\r\n                cmd.execute(getActions(data, evtLaunch), 'app', appid)\r\n            }\r\n            if (evtInterval && Array.isArray(evtInterval.actions)) {\r\n                let delay = evtInterval.pams ? evtInterval.pams.delay || 1000 : 1000\r\n                it = interval.add(() => cmd.execute(getActions(data, evtInterval), 'app', appid), parseInt(delay))\r\n            }\r\n            if (evtTimeout && Array.isArray(evtTimeout.actions)) {\r\n                let delay = evtTimeout.pams ? evtTimeout.pams.delay || 1000 : 1000\r\n                ti = timeout.add(() => cmd.execute(getActions(data, evtTimeout), 'app', appid), parseInt(delay))\r\n            }\r\n\r\n        }\r\n    })\r\n    onUnmounted(() => {\r\n        interval.del()\r\n        timeout.del()\r\n    })\r\n}","import { h, onMounted, isVNode } from 'vue'\r\nimport { jsonData, getAppGlobal } from '@/utils'\r\nimport { EVENTS } from '@/events'\r\nimport createSprite from './createSprite'\r\nimport cmd from '@/command'\r\nimport { stageHook } from './hooks'\r\nexport default {\r\n   name: 'stage',\r\n   props: {\r\n      background: {\r\n         type: Object,\r\n         default() {\r\n            return {}\r\n         }\r\n      },\r\n      content: {\r\n         type: Object,\r\n         default() {\r\n            return {}\r\n         }\r\n      },\r\n      fixed: {\r\n         type: Object,\r\n         default() {\r\n            return {}\r\n         }\r\n      },\r\n      overlayer: {\r\n         type: Object,\r\n         default() {\r\n            return {}\r\n         }\r\n      },\r\n      popwin: {\r\n         type: Object,\r\n         default() {\r\n            return {}\r\n         }\r\n      },\r\n      slots: [Object, Array]\r\n   },\r\n   setup(props) {\r\n      const data = getAppGlobal('data')\r\n      const appInfo = getAppGlobal('appInfo')\r\n      const modules = data.mData.modules.getModules()\r\n      const appData = data.getAppData()\r\n      const slots = isVNode(props.slots) ? [props.slots] : []\r\n      if (slots.length == 0) {\r\n         if (Array.isArray(props.slots)) {\r\n            props.slots.forEach(element => {\r\n               slots.push(h(element))\r\n            })\r\n         } else if (props.slots) {\r\n            slots.push(h(props.slots))\r\n         }\r\n      }\r\n      stageHook(data)\r\n\r\n      return () => {\r\n         // 舞台内容分层显示容器组件\r\n         var containerList = []\r\n         // 主内容层\r\n         const content = []\r\n         // 固定内容\r\n         const fixed = []\r\n         // 弹层\r\n         const overlayer = []\r\n         let background = jsonData(appInfo.value.background)\r\n         // 遍历模块数据\r\n         for (const key in modules) {\r\n            if (modules.hasOwnProperty.call(modules, key)) {\r\n               const item = modules[key];\r\n               if (typeof item.visible == 'undefined' || item.visible == true) {\r\n                  if (item.type == 'content') {\r\n                     content.push(item)\r\n                  } else if (item.type == 'fixed') {\r\n                     fixed.push(item)\r\n                  } else if (item.type == 'overlayer') {\r\n                     overlayer.push(item)\r\n                  }\r\n               }\r\n            }\r\n         }\r\n         try {\r\n            containerList.push(createSprite({ name: 'vx-background', props: props.background }), ...slots)\r\n\r\n            if (content.length > 0) {\r\n               containerList.push(createSprite({ name: 'vx-content', props: { modules: content } }))\r\n            }\r\n            if (fixed.length > 0) {\r\n               containerList.push(createSprite({ name: 'vx-fixed', props: { modules: fixed } }))\r\n            }\r\n            if (overlayer.length > 0) {\r\n               containerList.unshift(createSprite({ name: 'vx-mask' }))\r\n               containerList.push(createSprite({ name: 'vx-overlayer', props: { modules: overlayer } }))\r\n            }\r\n\r\n            // 用户自定义弹层窗口\r\n            containerList.push(createSprite({ name: 'vx-popwin', props: props.popwin }))\r\n            // 消息提醒弹层\r\n            containerList.push(createSprite({ name: 'vx-message' }))\r\n         } catch (error) {\r\n            console.error(error)\r\n         }\r\n         if (background && background.backgroundColor) {\r\n            if (/\\blinear-gradient\\(([^()]*|\\([^()]*\\))*\\)/.test(background.backgroundColor)) {\r\n               let backgroundColor = background.backgroundColor\r\n               delete background.backgroundColor\r\n               if (background.backgroundImage) {\r\n                  background.backgroundImage = background.backgroundImage + \",\" + backgroundColor\r\n               } else {\r\n                  background.backgroundImage = backgroundColor\r\n               }\r\n            }\r\n         }\r\n\r\n         let style = {\r\n            position: 'absolute',\r\n            width: appInfo.value.width ? appInfo.value.width + \"px\" : \"100%\",\r\n            height: appInfo.value.height ? appInfo.value.height + \"px\" : \"100%\",\r\n            top: 0,\r\n            left: 0,\r\n            transformOrigin: \"0 0\",\r\n            transform: appData.transform.value,\r\n            zIndex: 0,\r\n            userSelect: 'none',\r\n            overflow: 'hidden',\r\n            ...background\r\n         }\r\n         return h('div', {\r\n            id: \"vx-stage\",\r\n            style,\r\n            onclick(event) {\r\n               cmd.emit(EVENTS.CLICK_STAGE, event)\r\n            }\r\n         }, containerList)\r\n      }\r\n   }\r\n}","export default function ($el, event, component, value) {\r\n   if ($el && $el.getAttribute && $el.getAttribute(event)) {\r\n      $el.dispatchEvent(new CustomEvent(event, {\r\n         detail: {\r\n            component,\r\n            value\r\n         }\r\n      }));\r\n   }\r\n}","import dispatchEvent from \"./dispatchEvent\"\r\nimport cmd from '@/command'\r\nexport default {\r\n    props: {\r\n        id: { type: String, default: \"\" },\r\n        // 是否可见\r\n        visible: { type: Boolean, default: true },\r\n        // 横坐标\r\n        x: { type: Number, default: 0 },\r\n        // 纵坐标\r\n        y: { type: Number, default: 0 },\r\n        // 宽度\r\n        width: { type: Number, default: 0 },\r\n        // 高度\r\n        height: { type: Number, default: 0 },\r\n        // 透明\r\n        opacity: { type: Number, default: 100 },\r\n        // 角度\r\n        angle: { type: Number, default: 0 },\r\n        // 边框\r\n        border: { type: Object, default() { return {} } },\r\n        // 内边距\r\n        padding: { type: String, default: \"\" },\r\n        // 背景\r\n        background: { type: Object, default() { return {} } },\r\n        // 阴影\r\n        shadow: { type: Object, default() { return {} } },\r\n        // 深度\r\n        zIndex: { type: Number, default: 0 },\r\n        // 事件名称\r\n        events: { type: Array, default() { return [] } },\r\n        // 附加配置项\r\n        options: { type: Object, default() { return {} } },\r\n        // 是否被选中\r\n        selected: { type: Boolean, default: false },\r\n        // 锁\r\n        lock: { type: Boolean, default: false },\r\n        // 划过\r\n        hover: { type: Boolean, default: false },\r\n        // 捆绑玉约束\r\n        bind: { type: Boolean, default: false },\r\n        // 动效\r\n        anim: { type: Object, default() { return {} } },\r\n        // 数据\r\n        data: [String, Number, Object, Array],\r\n        // 标题（说明）\r\n        title: String\r\n    },\r\n    computed: {\r\n        rect() {\r\n            return {\r\n                x: this.x,\r\n                y: this.y,\r\n                width: this.width,\r\n                height: this.height\r\n            }\r\n        },\r\n        style() {\r\n            let anim = (typeof this.anim == 'object' && this.anim.options) ? this.anim.options : {}\r\n            return {\r\n                position: 'absolute',\r\n                width: this.width > 0 ? this.width + 'px' : 'auto',\r\n                height: this.height > 0 ? this.height + 'px' : 'auto',\r\n                top: this.y + 'px',\r\n                left: this.x + 'px',\r\n                zIndex: this.selected ? 100000 + this.zIndex : this.zIndex,\r\n                transform: 'rotate(' + this.angle + 'deg)',\r\n                opacity: this.opacity / 100,\r\n                padding: this.padding,\r\n                ...this.border,\r\n                ...this.background,\r\n                ...this.shadow,\r\n                ...anim\r\n            }\r\n        }\r\n    },\r\n    created() {\r\n        if (this.id) {\r\n            cmd.addEventListener(`run_function_${this.id}`, data => {\r\n                this.cmdRunning && this.cmdRunning(data)\r\n            })\r\n        }\r\n    },\r\n    mounted() {\r\n        dispatchEvent(this.$el, 'timeout', this, 'mounted')\r\n        dispatchEvent(this.$el, 'interval', this, 'mounted')\r\n    },\r\n    beforeUnmount() {\r\n        if (this.id) {\r\n            cmd.removeEventListener(`run_function_${this.id}`)\r\n        }\r\n        dispatchEvent(this.$el, 'timeout', this, 'beforeUnmount')\r\n        dispatchEvent(this.$el, 'interval', this, 'beforeUnmount')\r\n    }\r\n}","import { jsonData } from '@/utils'\r\nexport default function (myData) {\r\n    let anim = (typeof myData.anim == 'object' && myData.anim.options) ? myData.anim.options : {}\r\n\r\n    let background = jsonData(myData.background)\r\n    if (background && background.backgroundColor) {\r\n        if (/\\blinear-gradient\\(([^()]*|\\([^()]*\\))*\\)/.test(background.backgroundColor)) {\r\n            let backgroundColor = background.backgroundColor\r\n            delete background.backgroundColor\r\n            if (background.backgroundImage) {\r\n                background.backgroundImage = background.backgroundImage + \",\" + backgroundColor\r\n            } else {\r\n                background.backgroundImage = backgroundColor\r\n            }\r\n        }\r\n    }\r\n    const style = {\r\n        position: 'absolute',\r\n        width: myData.width > 0 ? myData.width + 'px' : '80px',\r\n        height: myData.height > 0 ? myData.height + 'px' : '80px',\r\n        top: myData.y + 'px',\r\n        left: myData.x + 'px',\r\n        zIndex: myData.selected ? 100000 + myData.zIndex : myData.zIndex,\r\n        transform: 'rotate(' + myData.angle + 'deg)',\r\n        opacity: myData.opacity / 100,\r\n        padding: myData.padding,\r\n        overflow: myData.overflow || 'visible',\r\n        filter: myData.filter || '',\r\n        mixBlendMode: myData.mixBlendMode || '',\r\n        ...background,\r\n        ...myData.border,\r\n        ...myData.shadow,\r\n        ...anim\r\n    }\r\n    if (myData.display) {\r\n        style.display = myData.display\r\n    }\r\n    return style\r\n}","import CMD from '@/command'\r\nimport { EVENTS } from '@/events'\r\nimport { createSimpleData } from '@/utils'\r\nimport getActions from './getActions'\r\n\r\n/**\r\n * 添加用户点击事件\r\n * @param {*} event 事件\r\n * @param {*} elementData 元素数据\r\n */\r\nexport default function (eventItem, elementData) {\r\n   const AppSetup = this.AppSetup\r\n   const data = this.data\r\n   const appid = this.data.info.id\r\n   const sprid = elementData.id\r\n   // 用户点击元素\r\n   return {\r\n      style: {\r\n         cursor: AppSetup.clickCursor\r\n      },\r\n      onClickCapture: function (evt) {\r\n         CMD.emit(EVENTS.CLICK_SPRITE, createSimpleData(elementData), evt)\r\n         if (eventItem.actions) {\r\n            let actions = getActions(data, eventItem)\r\n            CMD.execute(actions, sprid, appid)\r\n         }\r\n      }\r\n   }\r\n}","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nmodule.exports = isNil;\n","import CMD from '@/command'\r\nimport { jsonData } from '@/utils'\r\nimport isNil from 'lodash/isNil'\r\n\r\n/**\r\n * 执行动作列表\r\n * @param {*} actions \r\n * @param {*} spid \r\n */\r\nconst executeActions = function (actions, spid, data) {\r\n   const appid = this.info.id\r\n   // 元素内部触发的事件与绑定的动作关联，并根据发送参数合并或替换到动作中的动作值\r\n   let actionsArr = jsonData(this.getActionList(actions))\r\n   for (let i = 0, lg = actionsArr.length; i < lg; i++) {\r\n      if (!isNil(data) && actionsArr[i].value && typeof actionsArr[i].value == 'object') {\r\n         Object.assign(actionsArr[i].value, data)\r\n      } else if (!isNil(data)) {\r\n         if (!['show', 'toggle'].includes(actionsArr[i].action)) {\r\n            actionsArr[i].value = data\r\n         }\r\n      }\r\n   }\r\n   CMD.execute(actionsArr, spid, appid)\r\n}\r\n\r\n/**\r\n * 添加用户点击事件\r\n * @param {*} element 目标对象\r\n * @param {*} spid 元素id\r\n */\r\nexport default function (element, elementData, componentName) {\r\n   const appData = this.data\r\n   const actionData = this.data.aData\r\n   const components = this.component.iComponents\r\n   const appid = this.data.info.id\r\n   const sprid = elementData.id\r\n   let evts = {}\r\n   if (componentName && components[componentName]) {\r\n      let emits = components[componentName].emits || []\r\n      // 元素内部触发\r\n      let event = emits.find(n => n == element.event)\r\n\r\n      if (event && typeof event == 'string') {\r\n         // 事件名称要符合字母、数字、下划线、减号，大于1位小于33位，并已字母开头的规则\r\n         if (/^[a-zA-Z][-_a-zA-Z0-9_-]{1,32}$/.test(event)) {\r\n            // 将首字母转大写\r\n            let evtName = event.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase())\r\n            // evtName = evtName.replace(/-./g, (match) => match.charAt(1).toUpperCase())\r\n            evts[\"on\" + evtName] = function (data) {\r\n               if (/^Solo-/.test(evtName) && (data || data == 0 || data == \"\")) {\r\n                  if (element.actions && element.actions instanceof Array && element.actions.length > 0) {\r\n                     // 如果自定义事件绑定了指定的动作，将参数传递给指定的动作\r\n                     executeActions.call(appData, element.actions, sprid, data)\r\n                  } else {\r\n                     // solo单事件处理，事件参数就是动作id\r\n                     CMD.execute(jsonData(actionData.getActionList(data)), sprid, appid)\r\n                  }\r\n               } else if (element.actions && element.actions instanceof Array) {\r\n                  executeActions.call(appData, element.actions, sprid, data)\r\n               }\r\n            }\r\n         } else {\r\n            console.warn(event + \"无效的事件名定义\")\r\n         }\r\n      } else {\r\n         console.warn(element.event + \"事件没有定义\")\r\n      }\r\n   }\r\n   return evts\r\n}","import CMD from '@/command'\r\nimport getActions from './getActions'\r\n\r\n/**\r\n * 添加用户延迟事件\r\n * @param {*} element 目标对象\r\n * @param {*} elementData 元素数据\r\n */\r\nexport default function (eventItem, elementData) {\r\n   const data = this.data\r\n   const appid = this.data.info.id\r\n   const sprid = elementData.id\r\n   let it = null\r\n   // 用户点击元素\r\n   return {\r\n      timeout: '1',\r\n      onTimeout(evt) {\r\n         let lifecycle = evt.detail.value\r\n         if (it) {\r\n            clearTimeout(it)\r\n            it = null\r\n         }\r\n         if (lifecycle == 'mounted') {\r\n            let pams = eventItem.pams || {}\r\n            let delay = pams.delay || 1000\r\n            it = setTimeout(() => {\r\n               // 执行动作\r\n               if (eventItem.actions) {\r\n                  CMD.execute(getActions(data, eventItem), sprid, appid)\r\n               }\r\n            }, parseInt(delay))\r\n         }\r\n      }\r\n   }\r\n}","import CMD from '@/command'\r\nimport { interval } from '@/utils'\r\nimport getActions from './getActions'\r\n\r\n/**\r\n * 添加定时任务事件\r\n * @param {*} element 目标对象\r\n * @param {*} elementData 元素数据\r\n */\r\nexport default function (eventItem, elementData) {\r\n   const data = this.data\r\n   const appid = this.data.info.id\r\n   const sprid = elementData.id\r\n   let it = null\r\n\r\n   return {\r\n      interval: '1',\r\n      onInterval(evt) {\r\n         if (it) {\r\n            interval.del(it)\r\n            it = null\r\n         }\r\n         if (evt.detail.value == 'mounted') {\r\n            let pams = eventItem.pams || {}\r\n            let delay = pams.delay || 1000\r\n            it = interval.add(() => {\r\n               // 执行动作\r\n               if (eventItem.actions) {\r\n                  CMD.execute(getActions(data, eventItem), sprid, appid)\r\n               }\r\n            }, parseInt(delay))\r\n         }\r\n      }\r\n   }\r\n}","import CMD from '@/command'\r\nimport { EVENTS } from '@/events'\r\nimport { createSimpleData } from '@/utils'\r\nimport * as interaction from './interaction'\r\n\r\n/**\r\n * 对组件创建一组事件对象，并在h方法中通过props传递\r\n * @param {Array} events 事件\r\n * @param {String} id 组件id\r\n * @returns \r\n */\r\nexport default function (options) {\r\n   const { myApp = {}, events, data = {}, componentName = \"\" } = options\r\n   let evts = {}\r\n   if (componentName) {\r\n      evts = {\r\n         style: {}\r\n      }\r\n   }\r\n   if (myApp.AppSetup && myApp.AppSetup.interaction) {\r\n      // 开始交互动作\r\n      events.forEach(item => {\r\n         switch (item.event) {\r\n            case 'click':\r\n               // 用户点击元素\r\n               Object.assign(evts, interaction.click.call(myApp, item, data))\r\n               break\r\n            case 'timeout':\r\n               // 显示后延迟执行\r\n               Object.assign(evts, interaction.timeout.call(myApp, item, data))\r\n               break\r\n            case 'interval':\r\n               // 显示后定时执行\r\n               Object.assign(evts, interaction.interval.call(myApp, item, data))\r\n               break\r\n            default:\r\n               // 自定义事件\r\n               Object.assign(evts, interaction.customize.call(myApp, item, data, componentName))\r\n         }\r\n      });\r\n   } else {\r\n      if (data.type == 'group' && !data.gpid) {\r\n         Object.assign(evts, {\r\n            onClickCapture(e) {\r\n               e.stopPropagation()\r\n               CMD.emit(EVENTS.CLICK_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onDblclickCapture(e) {\r\n               e.stopPropagation()\r\n               CMD.emit(EVENTS.DBLCLICK_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMousedownCapture(e) {\r\n               CMD.emit(EVENTS.MOUSEDOWN_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseoverCapture(e) {\r\n               CMD.emit(EVENTS.MOUSEOVER_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseoutCapture(e) {\r\n               CMD.emit(EVENTS.MOUSEOUT_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseupCapture(e) {\r\n               CMD.emit(EVENTS.MOUSEUP_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseleaveCapture(e) {\r\n               CMD.emit(EVENTS.MOUSELEAVE_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseenterCapture(e) {\r\n               CMD.emit(EVENTS.MOUSEENTER_SPRITE, createSimpleData(data), e)\r\n            }\r\n         })\r\n      } else {\r\n         Object.assign(evts, {\r\n            onClick(e) {\r\n               e.stopPropagation()\r\n               CMD.emit(EVENTS.CLICK_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMousedown(e) {\r\n               CMD.emit(EVENTS.MOUSEDOWN_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseover(e) {\r\n               CMD.emit(EVENTS.MOUSEOVER_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseout(e) {\r\n               CMD.emit(EVENTS.MOUSEOUT_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseup(e) {\r\n               CMD.emit(EVENTS.MOUSEUP_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseleave(e) {\r\n               CMD.emit(EVENTS.MOUSELEAVE_SPRITE, createSimpleData(data), e)\r\n            },\r\n            onMouseenter(e) {\r\n               CMD.emit(EVENTS.MOUSEENTER_SPRITE, createSimpleData(data), e)\r\n            }\r\n         })\r\n      }\r\n   }\r\n   return evts\r\n}","import createStyle from \"./createStyle\"\r\nimport createEvent from './createEvent'\r\nexport default function (myData, { id, myApp }) {\r\n    const myStyle = createStyle(myData)\r\n    const myEvent = createEvent({ myApp, events: myData.events || [], data: myData, componentName: myData.name || \"\" })\r\n    const myClass = ['element_sprite', { 'element_selected': myData.selected }, { 'element_hover': myData.hover }]\r\n    if (myApp.AppSetup.interaction) {\r\n        if (myData['anim'] && myData['anim'].name) {\r\n            myClass.push(myData['anim'].name)\r\n            if (myData['anim'].init && typeof myData['anim'].init == 'object') {\r\n                Object.assign(myStyle, myData['anim'].init)\r\n            }\r\n        }\r\n        if (myData.passthrough) {\r\n            myStyle.pointerEvents = \"none\"\r\n        }\r\n    }\r\n    if (myEvent.style) {\r\n        Object.assign(myStyle, myEvent.style)\r\n        delete myEvent.style\r\n    }\r\n    return { id, events: myEvent, style: myStyle, class: myClass }\r\n}","import { h, provide, reactive, ref } from 'vue'\r\nimport { getAppGlobal } from '@/utils'\r\nimport createSprite from '../createSprite'\r\nimport createProps from '../createProps'\r\nimport { lifecycleHook } from '../hooks'\r\n// 组件包裹层\r\nexport default {\r\n   name: 'vx-sprite',\r\n   props: {\r\n      id: String,\r\n      layout: Object\r\n   },\r\n   setup(props, context) {\r\n      const vnode = { value: null, child: ref(null) }\r\n      const AppSetup = getAppGlobal('AppSetup')\r\n      const data = getAppGlobal('data')\r\n      const component = getAppGlobal('component')\r\n      const rect = reactive({ x: 0, y: 0, width: 0, height: 0 })\r\n      provide('rect', rect)\r\n      lifecycleHook(vnode, props, context)\r\n      return () => {\r\n         try {\r\n            const myData = data.getElement(props.id)\r\n            rect.x = myData.x\r\n            rect.y = myData.y\r\n            rect.width = myData.width\r\n            rect.height = myData.height\r\n            let myProps = createProps(myData, { id: props.id, myApp: { AppSetup, data, component } })\r\n            let slot = createSprite({ name: myData.name, props: myData.id, ref: vnode.child, events: myProps.events })\r\n            delete myProps.events\r\n            if (props.layout && props.layout.type == 'grid') {\r\n               myProps.style.position = 'relative'\r\n               myProps.style.top = 'auto'\r\n               myProps.style.left = 'auto'\r\n            }\r\n            myProps.id = myProps.id + '_outer'\r\n            vnode.value = h('div', myProps, slot)\r\n         } catch (error) {\r\n            console.error(error)\r\n         }\r\n         return vnode.value\r\n      }\r\n   }\r\n}","import { h, isReactive } from 'vue'\r\nimport SpriteObject from './SpriteObject'\r\nimport createProps from '../createProps'\r\nimport { getAppGlobal } from '@/utils'\r\n// 原件组合容器\r\nexport default {\r\n   name: 'vx-sprite-group',\r\n   props: {\r\n      id: String,\r\n      layout: Object\r\n   },\r\n   setup(props) {\r\n      const AppSetup = getAppGlobal('AppSetup')\r\n      const data = getAppGlobal('data')\r\n      const component = getAppGlobal('component')\r\n\r\n      return (ctx) => {\r\n         const myData = data.getElement(props.id)\r\n         let myProps = createProps(myData, { id: props.id, myApp: { AppSetup, data, component } })\r\n         let events = myProps.events\r\n         delete myProps.events\r\n         Object.assign(myProps, events)\r\n         let uData = myData.data\r\n         if (myData.data) {\r\n            uData = data.getDataSource(myData.data)\r\n            if (uData && isReactive(uData)) {\r\n               uData = uData.data\r\n            }\r\n         }\r\n         if (props.layout && props.layout.type == 'grid') {\r\n            myProps.style.position = 'relative'\r\n            myProps.style.top = 'auto'\r\n            myProps.style.left = 'auto'\r\n         }\r\n         // 组件内容\r\n         const containerList = []\r\n         // 遍历模块数据\r\n         if (myData.components) {\r\n            myData.components.forEach((item, i) => {\r\n               if (item.visible) {\r\n                  if (myData.cstatus && myData.childstatus) {\r\n                     if (myData.childstatus[item.id] && myData.childstatus[item.id] == uData) {\r\n                        containerList.push(h(SpriteObject, { id: item.id }))\r\n                     }\r\n                  } else {\r\n                     containerList.push(h(SpriteObject, { id: item.id }))\r\n                  }\r\n               }\r\n            })\r\n         }\r\n         myProps.id = myProps.id + '_outer'\r\n         return h('div', myProps, containerList)\r\n      }\r\n   }\r\n}","import { h, toRefs, watch } from 'vue'\r\nimport { getAppGlobal } from '@/utils'\r\nimport baseComponent from '@/component/baseComponent'\r\nimport SpriteGroup from './SpriteGroup'\r\nimport SpriteObject from './SpriteObject'\r\nexport default {\r\n   extends: baseComponent,\r\n   name: 'vx-module',\r\n   props: ['components', 'layout'],\r\n   setup(props) {\r\n      const AppSetup = getAppGlobal('AppSetup')\r\n      const data = getAppGlobal('data')\r\n      const appInfo = getAppGlobal('appInfo')\r\n      const appData = data.getAppData()\r\n      const { components } = toRefs(props)\r\n      return (context) => {\r\n         // 组件内容\r\n         const containerList = []\r\n         let style = context.style\r\n         try {\r\n            // 遍历模块数据\r\n            if (components.value) {\r\n               const items = components.value.sort((a, b) => b.zIndex - a.zIndex)\r\n               items.forEach((item, i) => {\r\n                  if (item.visible) {\r\n                     if (AppSetup.develop && props.layout && props.layout.type == 'grid') {\r\n                        let sVNode = null\r\n                        if (item.type == 'group') {\r\n                           sVNode = h(SpriteGroup, { id: item.id, layout: props.layout })\r\n                        } else {\r\n                           sVNode = h(SpriteObject, { id: item.id, layout: props.layout })\r\n                        }\r\n                        containerList.push(h('div', { className: 'rd_page_grid_wrapper' }, sVNode))\r\n                     } else {\r\n                        if (item.type == 'group') {\r\n                           containerList.push(h(SpriteGroup, { id: item.id, layout: props.layout }))\r\n                        } else {\r\n                           containerList.push(h(SpriteObject, { id: item.id, layout: props.layout }))\r\n                        }\r\n                     }\r\n                  }\r\n               })\r\n            }\r\n            if (props.layout && props.layout.type == 'grid') {\r\n               let width = context.style.width == 'auto' ? appInfo.value.width + 'px' : context.style.width\r\n               let height = context.style.height == 'auto' ? appInfo.value.height + 'px' : context.style.height\r\n               style = Object.assign({}, context.style, {\r\n                  position: 'fixed',\r\n                  display: 'grid',\r\n                  overflow: props.layout.rows ? 'auto' : 'hidden auto',\r\n                  gridTemplateColumns: props.layout.colums || 'none',\r\n                  gridTemplateRows: props.layout.rows || 'none',\r\n                  gridTemplateAreas: props.layout.areas || 'none',\r\n                  width,\r\n                  height\r\n               })\r\n               if (style.gridTemplateRows == 'none') {\r\n                  style.maxHeight = style.height\r\n                  delete style.height\r\n               }\r\n            }\r\n         } catch (error) {\r\n            console.error(error)\r\n         }\r\n         return h('div', {\r\n            id: context.id,\r\n            style,\r\n         }, containerList)\r\n      }\r\n   }\r\n}","import { h } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\nimport createSprite from '../createSprite'\r\nexport default {\r\n   extends: baseComponent,\r\n   name: 'vx-plane',\r\n   props: ['components'],\r\n   setup() {\r\n      return (context) => {\r\n         // 组件内容\r\n         const containerList = [];\r\n\r\n         // 遍历模块数据\r\n         if (context.components) {\r\n            context.components.forEach((item, i) => {\r\n               if (item.visible) {\r\n                  containerList.push(createSprite({ name: item.name, props: item.id }))\r\n               }\r\n            })\r\n         }\r\n         return h('div', {\r\n            id: context.id,\r\n            style: context.style,\r\n         }, containerList)\r\n      }\r\n   }\r\n}","import { h } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\n\r\nexport default {\r\n   extends: baseComponent,\r\n   name: 'vx-popwin',\r\n   render() {\r\n      let style = {\r\n         position: 'absolute',\r\n         width: \"100%\",\r\n         zIndex: 50000\r\n      }\r\n      return h('div', {\r\n         id: \"vx-popwin\",\r\n         style,\r\n      })\r\n   }\r\n}","import { h } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\nimport createSprite from '../createSprite'\r\n\r\nlet style = {\r\n   position: 'absolute',\r\n   width: \"auto\",\r\n   height: \"auto\",\r\n   top: 0,\r\n   left: 0,\r\n   zIndex: 10000\r\n}\r\nexport default {\r\n   extends: baseComponent,\r\n   name: 'vx-content',\r\n   props: ['modules'],\r\n   setup(props) {\r\n      return () => {\r\n         const modules = props.modules\r\n         const content = []\r\n         for (const key in modules) {\r\n            if (modules.hasOwnProperty.call(modules, key)) {\r\n               const item = modules[key]\r\n               if (typeof item.visible == 'undefined' || item.visible == true) {\r\n                  content.push(createSprite({ name: 'vx-module', props: item }))\r\n               }\r\n            }\r\n         }\r\n         return h('div', {\r\n            id: \"vx-content\",\r\n            style,\r\n         }, content)\r\n      }\r\n   }\r\n}","import { h } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\nimport createSprite from '../createSprite'\r\n\r\nlet style = {\r\n   position: 'absolute',\r\n   width: \"100%\",\r\n   top: 0,\r\n   left: 0,\r\n   zIndex: 20000\r\n}\r\nexport default {\r\n   extends: baseComponent,\r\n   name: 'vx-fixed',\r\n   props: ['modules'],\r\n   setup(props) {\r\n      return () => {\r\n         const modules = props.modules\r\n         const content = [];\r\n         for (const key in modules) {\r\n            if (modules.hasOwnProperty.call(modules, key)) {\r\n               const item = modules[key];\r\n               if (typeof item.visible == 'undefined' || item.visible == true) {\r\n                  content.push(createSprite({ name: 'vx-module', props: item }))\r\n               }\r\n            }\r\n         }\r\n         return h('div', {\r\n            id: \"vx-fixed\",\r\n            style,\r\n         }, content)\r\n      }\r\n   }\r\n}","import { h } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\nimport createSprite from '../createSprite'\r\n\r\nlet style = {\r\n   position: 'absolute',\r\n   width: \"100%\",\r\n   height: \"100%\",\r\n   top: 0,\r\n   left: 0,\r\n   zIndex: 40000\r\n}\r\nexport default {\r\n   exports: baseComponent,\r\n   name: 'vx-overlayer',\r\n   props: ['modules'],\r\n   setup(props) {\r\n      return () => {\r\n         const modules = props.modules\r\n         const content = [];\r\n         for (const key in modules) {\r\n            if (modules.hasOwnProperty.call(modules, key)) {\r\n               const item = modules[key];\r\n               if (typeof item.visible == 'undefined' || item.visible == true) {\r\n                  content.push(createSprite({ name: 'vx-module', props: item }))\r\n               }\r\n            }\r\n         }\r\n         return h('div', {\r\n            id: \"vx-overlayer\",\r\n            style,\r\n         }, content)\r\n      }\r\n   }\r\n}","import { h, reactive } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\nimport cmd from '@/command'\r\n\r\nlet style = {\r\n   position: 'absolute',\r\n   width: \"100%\",\r\n   top: 0,\r\n   left: 0,\r\n   zIndex: 99999999\r\n}\r\nlet itemStyle = {\r\n   width: '60%',\r\n   lineHeight: '18px',\r\n   borderRadius: '6px',\r\n   backgroundColor: 'rgba(255, 240, 0, 0.66)',\r\n   textAlign: 'center',\r\n   padding: '8px 5px',\r\n   margin: '5px auto',\r\n   boxShadow: '1px 1px 1px #00000022',\r\n   fontSize: '14px',\r\n   animation: '0.4s ease 0s 1 normal none running vx_enter'\r\n}\r\nexport default {\r\n   extends: baseComponent,\r\n   name: 'vx-message',\r\n   setup() {\r\n      const items = reactive([])\r\n      // 添加消息事件\r\n      cmd.addEventListener('message-send', res => {\r\n         if (items.length == 0) {\r\n            deleteItem();\r\n         }\r\n         items.push(res);\r\n      })\r\n      const deleteItem = function () {\r\n         setTimeout(() => {\r\n            if (items.length > 0) {\r\n               items.splice(0, 1);\r\n               if (items.length > 0) {\r\n                  deleteItem()\r\n               }\r\n            }\r\n         }, 3000);\r\n      }\r\n      return () => {\r\n         if (items.length > 0) {\r\n            return h('div', {\r\n               id: \"vx-message\",\r\n               style\r\n            }, items.map((item) => {\r\n               return h('div', { class: 'message_item', style: itemStyle }, item)\r\n            }))\r\n         } else {\r\n            return h('div', {\r\n               id: \"vx-message\",\r\n               style\r\n            })\r\n         }\r\n      }\r\n   }\r\n}","import { h } from 'vue'\r\nimport baseComponent from '@/component/baseComponent'\r\n\r\nexport default {\r\n   exports: baseComponent,\r\n   name: 'vx-mask',\r\n   render() {\r\n      let style = {\r\n         position: 'absolute',\r\n         width: \"100%\",\r\n         height: \"100%\",\r\n         top: 0,\r\n         left: 0,\r\n         backgroundColor: \"rgba(0, 0, 0, .8)\",\r\n         zIndex: 30000\r\n      }\r\n      return h('div', {\r\n         id: \"vx-mask\",\r\n         style,\r\n         onClick: $event => {\r\n\r\n         }\r\n      })\r\n   }\r\n}","import { h } from 'vue'\r\nimport CMD from '../../command'\r\nimport { EVENTS } from '../../events'\r\n\r\nlet style = {\r\n   position: 'absolute',\r\n   width: \"100%\",\r\n   height: \"100%\",\r\n   top: 0,\r\n   left: 0,\r\n   backgroundColor: \"rgba(0, 0, 0, 0)\",\r\n   zIndex: 1\r\n}\r\nexport default {\r\n   name: 'vx-background',\r\n   setup(props) {\r\n      return () => {\r\n         let myStyle = Object.assign({}, style, props.style)\r\n         return h('div', {\r\n            id: \"vx-background\",\r\n            style: myStyle,\r\n            onmousedown: $event => {\r\n               CMD.emit(EVENTS.MOUSEDOWN_BACKGROUND, $event)\r\n            },\r\n            onmouseup: $event => {\r\n               CMD.emit(EVENTS.MOUSEUP_BACKGROUND, $event)\r\n            },\r\n            onclick: $event => {\r\n               CMD.emit(EVENTS.CLICK_BACKGROUND, $event)\r\n            }\r\n         })\r\n      }\r\n   }\r\n}","import Module from './coms/Module'\r\nimport Plane from './coms/Plane'\r\nimport Popwin from './coms/Popwin'\r\nimport Content from './coms/Content'\r\nimport ContentFixed from './coms/ContentFixed'\r\nimport Overlayer from './coms/Overlayer'\r\nimport Message from './coms/Message'\r\nimport Mask from './coms/Mask'\r\nimport Background from './coms/Background'\r\nimport SpriteGroup from './coms/SpriteGroup'\r\nimport SpriteObject from './coms/SpriteObject'\r\n\r\n/**\r\n * 舞台内容的组成部分\r\n * 包括\r\n * state 舞台\r\n * background 舞台背景\r\n * content 舞台基本内容\r\n * module 组件分组模块\r\n * overlayer 舞台模块弹窗内容\r\n * popwin 用户弹窗\r\n * mask 弹层下的透明黑遮罩层\r\n * message 消息窗口\r\n */\r\n\r\nconst coms = [Module, Plane, Popwin, Overlayer, Content, ContentFixed, Message, Mask, Background, SpriteGroup, SpriteObject]\r\n\r\nexport default {\r\n   install: (app) => {\r\n      coms.forEach(item => {\r\n         app.component(item.name, item)\r\n      })\r\n   }\r\n}","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","import { reactive } from 'vue'\r\nimport { nanoid } from 'nanoid'\r\nimport { removeArray } from \"@/utils\"\r\nimport DataOptions from '@/data/DataOptions'\r\nimport baseComponent from './baseComponent'\r\nimport merge from 'lodash/merge'\r\n\r\n\r\nclass AppComponent {\r\n    app = null\r\n    // 所有已安装组件\r\n    iComponents = {}\r\n    // 所有已安装组件的信息内容\r\n    iComponentsInfo = reactive({})\r\n    // 所有组件\r\n    componentItems = []\r\n\r\n    constructor(app) {\r\n        this.app = app\r\n    }\r\n    // 返回组件列表\r\n    getItems() {\r\n        return Object.values(this.iComponents)\r\n    }\r\n    // 返回组件默认数据\r\n    getDefaultData(name) {\r\n        let component = this.iComponents[name]\r\n        if (!component) return {}\r\n        let data = {}\r\n        let mixins = component['mixins'] || []\r\n        let props = {}\r\n        for (const val of mixins) {\r\n            if (val['props']) {\r\n                Object.assign(props, val['props'])\r\n            }\r\n        }\r\n        Object.assign(props, component['props'])\r\n        for (const key in props) {\r\n            if (Object.hasOwnProperty.call(props, key)) {\r\n                const element = props[key];\r\n                if (typeof element['default'] == 'function') {\r\n                    data[key] = element['default'].call()\r\n                } else {\r\n                    data[key] = element['default']\r\n                }\r\n            }\r\n        }\r\n        data['id'] = 'sprite_' + nanoid(10)\r\n        data['name'] = name\r\n        data['type'] = component.type || \"\"\r\n        return data\r\n    }\r\n    // 返回组件自定义事件\r\n    getMyEvents(name) {\r\n        let component = this.iComponents[name]\r\n        if (!component) return []\r\n        let data = []\r\n        let emits = component['emits'] || []\r\n        for (const key in emits) {\r\n            data.push({\r\n                name: emits[key],\r\n                event: emits[key],\r\n                pams: '',\r\n                actions: /^solo-/.test(name) ? null : []\r\n            })\r\n        }\r\n        return data\r\n    }\r\n    // 返回组件事件（含默认事件）\r\n    getEvents(name) {\r\n        return [...DataOptions.events, ...this.getMyEvents(name)]\r\n    }\r\n    // 添加组件（放入未安装列表）\r\n    add(com) {\r\n        if (!com) return false;\r\n        if (Array.isArray(com)) {\r\n            com.forEach(element => {\r\n                if (this.componentItems.find(item => item.name == element.name)) {\r\n                    console.warn(element.name + '组件名重复')\r\n                } else {\r\n                    this.componentItems.push(element)\r\n                }\r\n            })\r\n            return true\r\n        } else {\r\n            if (this.componentItems.find(item => item.name == com.name)) {\r\n                console.warn(com.name + '组件名重复')\r\n                return false\r\n            } else {\r\n                this.componentItems.push(com)\r\n                return true\r\n            }\r\n        }\r\n    }\r\n    // 删除组件\r\n    del(key) {\r\n        if (key && typeof key == 'string') {\r\n            removeArray(this.componentItems, 'name', key)\r\n            if (this.iComponents[key]) {\r\n                delete this.iComponents[key]\r\n                delete this.iComponentsInfo[key]\r\n            }\r\n        } else if (Array.isArray(key)) {\r\n            key.forEach(k => this.del(k))\r\n        }\r\n    }\r\n    // 删除所有组件\r\n    removeAll() {\r\n        this.del(Object.keys(this.iComponents))\r\n    }\r\n    // 安装组件（注册组件到vue实例上）\r\n    __install(component) {\r\n        if (component && component.name) {\r\n            if (this.iComponents[component.name]) {\r\n                console.warn('重复组件名:' + component.name)\r\n            } else {\r\n                let item = merge({}, component)\r\n                this.iComponents[component.name] = item\r\n                this.iComponentsInfo[item.name] = {\r\n                    name: item.name,\r\n                    type: item.type,\r\n                    label: item.label,\r\n                    icon: item.icon,\r\n                }\r\n                if (this.app && this.app.vapp) {\r\n                    this.app.vapp.component(component.name, item)\r\n                } else {\r\n                    console.error('组件注册失败，缺少vapp')\r\n                }\r\n            }\r\n        } else if (Array.isArray(component)) {\r\n            component.forEach(item => this.__install(item))\r\n        } else if (component) {\r\n            console.warn('缺少组件名')\r\n        }\r\n    }\r\n    // 安装组件\r\n    install(com) {\r\n        if (com) {\r\n            if (!Array.isArray(com)) {\r\n                if (this.add(com)) {\r\n                    this.__install(com)\r\n                }\r\n            } else if (Array.isArray(com)) {\r\n                com.forEach(item => this.install(item))\r\n            }\r\n        } else {\r\n            this.__install(this.componentItems)\r\n        }\r\n    }\r\n    // 重装组件（一般应用与vue实例变更）\r\n    reload() {\r\n        let items = Object.values(this.iComponents)\r\n        items.forEach(component => {\r\n            if (this.app && this.app.vapp) {\r\n                this.iComponents[component.name] = merge({}, baseComponent, component)\r\n                this.app.vapp.component(component.name, this.iComponents[component.name])\r\n            } else {\r\n                console.error('组件注册失败，缺少app')\r\n            }\r\n        })\r\n    }\r\n}\r\n\r\nexport default AppComponent","import { isRef, isReactive } from 'vue'\r\n/**\r\n * 动作处理\r\n */\r\n\r\nexport const initActions = function () {\r\n   return {\r\n      // 更新元素原始数据\r\n      reviewData(target, data) {\r\n         if (data && data.id) {\r\n            console.warn(data.id + '不能替换')\r\n            return\r\n         }\r\n         Object.assign(target, data)\r\n      },\r\n      // 显示元素\r\n      show(target, value) {\r\n         if (!target) return\r\n         if (Array.isArray(target)) {\r\n            target.forEach(element => {\r\n               element.visible = value\r\n            })\r\n         } else {\r\n            target.visible = value\r\n         }\r\n      },\r\n      // 切换显示\r\n      toggle(target) {\r\n         if (!target) return\r\n         if (Array.isArray(target)) {\r\n            target.forEach(element => {\r\n               element && (element.visible = !element.visible)\r\n            })\r\n         } else {\r\n            target.visible = !target.visible\r\n         }\r\n      },\r\n      // 更新元素传递数据\r\n      sendData(target, value) {\r\n         if (!target) return\r\n         if (Array.isArray(target)) {\r\n            target.forEach(element => {\r\n               element.data = value\r\n            })\r\n         } else {\r\n            target.data = value\r\n         }\r\n      },\r\n      // 链接跳转\r\n      href(url, target = \"_blank\") {\r\n         if (!url) return\r\n         if (target == 'a') {\r\n            window.location.href = url\r\n         } else {\r\n            window.open(url, target)\r\n         }\r\n      },\r\n      // 模块切换显示（页面切换）\r\n      singleModule(modules, value) {\r\n         const ps = value.split('?')\r\n         const mid = ps[0]\r\n         const display = ps[1]\r\n         if (display) {\r\n            modules.filter(item => item.type == 'content').forEach(element => {\r\n               element.visible = true\r\n               if (element.style) {\r\n                  element.style.display = element.id == mid ? display : 'none'\r\n               } else {\r\n                  element.style = element.id == mid ? { display } : { display: 'none' }\r\n               }\r\n            })\r\n         } else {\r\n            modules.filter(item => item.type == 'content').forEach(element => {\r\n               element.visible = element.id == mid ? true : false\r\n            })\r\n         }\r\n      },\r\n      // 开关弹窗页面\r\n      popup(module, value) {\r\n         if (module && module.type == 'overlayer') {\r\n            if (typeof value == 'boolean') {\r\n               module.visible = value\r\n            } else {\r\n               module.visible = !module.visible\r\n            }\r\n         }\r\n         return module\r\n      },\r\n      // 接口数据读取\r\n      readRemote(target, value) {\r\n         if (Array.isArray(target)) {\r\n            target.forEach(element => {\r\n               element && element.request(null, value)\r\n            })\r\n         } else if (target && target.request) {\r\n            target.request(null, value)\r\n         }\r\n      },\r\n      // 修改数据对象\r\n      setGData(target, value, options) {\r\n         const { field } = options || {}\r\n         if (target && target.value) {\r\n            if (isRef(target.value)) {\r\n               if (field && typeof target.value.value[field] != 'undefined') {\r\n                  target.value.value[field] = value\r\n               } else {\r\n                  target.value.value = value\r\n               }\r\n            } else if (isReactive(target.value) && value && typeof value == 'object') {\r\n               if (field && typeof target.value[field] != 'undefined') {\r\n                  target.value[field] = value\r\n               } else {\r\n                  Object.assign(target.value, value)\r\n               }\r\n            } else {\r\n               if (field && typeof target.value[field] != 'undefined') {\r\n                  target.value[field] = value\r\n               } else {\r\n                  target.value = value\r\n               }\r\n            }\r\n         }\r\n      },\r\n      // iframe通信窗口操作\r\n      iframeRpc(target, value, options) {\r\n         const { action } = options || {}\r\n         if (target?.options?.targetID) {\r\n            const targetID = target.options.targetID\r\n            const rpcTarget = document?.querySelector(\"#\" + targetID)\r\n            if (RPC && rpcTarget) {\r\n               if (action) {\r\n                  RPC.execute(action, value, null, { target: rpcTarget })\r\n               } else {\r\n                  RPC.sendData(value, { target: rpcTarget })\r\n               }\r\n            } else {\r\n               console.warn('缺少rpc或ifram对象')\r\n            }\r\n         }\r\n      }\r\n   }\r\n}","import { initActions } from './actions'\r\nimport { CEVENTS } from '@/events'\r\nimport DataOptions from '@/data/DataOptions'\r\n\r\nconst ActionTypes = DataOptions.actions\r\n\r\nconst defineAction = function (_config) {\r\n   return {\r\n      name: _config.name || '无名动作',\r\n      action: _config.action || null,\r\n      target: _config.target || 'component',\r\n      valueType: _config.valueType || null,\r\n      value: _config.value || \"\"\r\n   }\r\n}\r\n\r\n/**\r\n * 执行动作，需要绑定控制器\r\n * @param {string} action 动作\r\n * @param {*} target 目标\r\n * @param {*} value 值\r\n * @param {*} options 参数\r\n */\r\nexport const executeAction = function (action, target, value, options) {\r\n   if (this.actions[action]) {\r\n      let { data: { mData: ElementData, rData: remoteData, gData: globalData } } = this.app\r\n      // 获取动作类型\r\n      let actionType = ActionTypes.find(n => n.action == action)\r\n      if (actionType) {\r\n         // 类型存在\r\n         let targetData = {}\r\n         if (actionType.target == 'component' || actionType.target == 'components') {\r\n            // 获取元素数据\r\n            if (target instanceof Array) {\r\n               targetData = []\r\n               target.forEach(element => {\r\n                  targetData.push(ElementData.getElement(element))\r\n               })\r\n            } else if (target) {\r\n               targetData = ElementData.getElement(target)\r\n            }\r\n         } else if (actionType.target == 'app') {\r\n            // 获取应用数据\r\n            targetData = data.getAppData()\r\n         } else if (actionType.target == 'url') {\r\n            // 一个打开外部链接动作\r\n            targetData = target\r\n         } else if (actionType.target == 'modules') {\r\n            // 所有模块\r\n            targetData = ElementData.getModuleList()\r\n         } else if (actionType.target == 'module') {\r\n            // 目标模块\r\n            targetData = ElementData.getModule(target)\r\n         } else if (actionType.target == 'remote') {\r\n            // 远程请求\r\n            if (Array.isArray(target)) {\r\n               let items = []\r\n               target.forEach(item => {\r\n                  items.push(remoteData.getRemote(item, true))\r\n               })\r\n               targetData = items\r\n            } else {\r\n               targetData = remoteData.getRemote(target, true)\r\n            }\r\n         } else if (actionType.target == 'gdata') {\r\n            // 修改全局数据对象\r\n            targetData = globalData.getGData(target)\r\n         }\r\n         // 执行动作\r\n         this.actions[action].call(this.app, targetData, value, options)\r\n      } else {\r\n         let myTargetData = ElementData.getElement(target) || ElementData.getModule(target)\r\n         myTargetData && (targetData = myTargetData)\r\n         // 执行动作\r\n         this.actions[action].call(this.app, targetData, value, options)\r\n      }\r\n   } else {\r\n      console.warn(action + '动作不存在')\r\n   }\r\n}\r\n\r\n// 处理动作\r\nexport const ActionTrigger = {\r\n   // 元素动作\r\n   [CEVENTS.ACTION](res) {\r\n      if (res.data && res.appid == this.app.id) {\r\n         if (res.data instanceof Array) {\r\n            // 如果是一个数组\r\n            res.data.forEach(item => {\r\n               executeAction.call(this, item.action, item.target, item.value, item.options)\r\n            })\r\n         } else if (res.data instanceof Object && typeof res.data != 'function') {\r\n            // 如果是单个动作对象\r\n            executeAction.call(this, res.data.action, res.data.target, res.data.value, res.data.options)\r\n         }\r\n      }\r\n   },\r\n   // 应用动作\r\n   [CEVENTS.APP_ACTION]() { }\r\n}\r\n\r\nexport class Controller {\r\n   app = null\r\n   // 动作方法集合\r\n   actions = initActions()\r\n   // 外部插件添加的动作（用于可删除操作）\r\n   uses = {}\r\n   constructor(app) {\r\n      this.app = app\r\n   }\r\n   /**\r\n    * 添加一个动作\r\n    * @param {object} _config \r\n    */\r\n   useAction(_config) {\r\n      let config = defineAction(_config)\r\n      if (ActionTypes.find(n => n.action == config.action)) {\r\n         console.warn(_config, \"已存在\")\r\n      } else if (config.action && _config.handle) {\r\n         if (this.actions[config.action]) {\r\n            console.warn(config.action + \"动作已存在\")\r\n         } else {\r\n            // 添加动作\r\n            ActionTypes.push(config)\r\n            this.actions[config.action] = _config.handle\r\n            this.uses[config.action] = config\r\n         }\r\n      } else if (!config.action) {\r\n         console.warn(_config, \"缺少action名称\")\r\n      } else {\r\n         console.warn(_config, \"缺少动作方法函数\")\r\n      }\r\n   }\r\n   // 删除动作\r\n   remove(action) {\r\n      if (this.uses[action]) {\r\n         let index = ActionTypes.findIndex(n => n.action == action)\r\n         if (index > -1) {\r\n            ActionTypes.splice(index, 1)\r\n         }\r\n         delete this.actions[action]\r\n         delete this.uses[action]\r\n      }\r\n   }\r\n   // 删除所有动作\r\n   removeAll() {\r\n      let keys = Object.keys(this.uses)\r\n      keys.forEach(element => {\r\n         this.remove(element)\r\n      })\r\n   }\r\n}\r\n","import CMD from '../command'\r\nimport { CEVENTS } from '../events'\r\nimport { Controller, ActionTrigger } from './controller'\r\nexport default function (app) {\r\n   /**\r\n    * 将相关事件与动作绑定\r\n    * 控制中心的任务是将个动作方法注册到事件中心，通过事件来触发动作命令\r\n    * CEVENTS是一个事件触发类型常量\r\n    * controller包含了根据相关事件对应的方法内处理的动作\r\n    */\r\n   const ctl = new Controller(app)\r\n   for (const key in CEVENTS) {\r\n      let event = CEVENTS[key]\r\n      if (ActionTrigger[event]) {\r\n         CMD.addEventListener(event, ActionTrigger[event], ctl)\r\n      }\r\n   }\r\n   return ctl\r\n}","import { jsonData } from '@/utils'\r\n\r\n\r\n\r\n/**\r\n * 调整元素所在顺序(数组内位置)\r\n * @param {*} spid \r\n * @param {*} newIndex \r\n * @returns \r\n */\r\nexport const setIndex = function (spid, newIndex) {\r\n    // 获取元素的数据对象\r\n    const sprite = this.appData.getElement(spid)\r\n    const parentId = sprite ? sprite.gpid || sprite.mid : null\r\n    const parent = parentId ? this.appData.getElement(parentId) : null\r\n    if (parent && Array.isArray(parent.components) && typeof newIndex != 'undefined') {\r\n        let index = parent.components.findIndex(item => item.id == spid)\r\n        if (index > -1 && parent.components[newIndex]) {\r\n            let a = parent.components.splice(index, 1)\r\n            parent.components.splice(newIndex, 0, a[0])\r\n            return true\r\n        }\r\n    }\r\n    return false\r\n}\r\n/**\r\n * 调整元素层级\r\n * @param {string} spid \r\n * @param {string|number} level \r\n */\r\nexport const setZindex = function (spid, level = 'up', move = false) {\r\n    const { mData } = this.appData\r\n    // 所有舞台元素\r\n    const elements = mData.elements\r\n    // 获取元素的数据对象\r\n    const sprite = mData.getElement(spid)\r\n    if (!sprite) {\r\n        console.warn('元素不存在' + spid)\r\n        return\r\n    } else if (!sprite.mid) {\r\n        console.warn('页面上找不到' + spid)\r\n        return\r\n    }\r\n    // 获取所有元素的zIndex排序\r\n    let sprs = mData.getMyElements(sprite.mid).map(item => {\r\n        return {\r\n            title: item.title,\r\n            id: item.id,\r\n            zIndex: item.zIndex\r\n        }\r\n    }).sort((a, b) => {\r\n        return b.zIndex - a.zIndex\r\n    })\r\n\r\n    if (typeof level == 'number') {\r\n        if (move) {\r\n            let oldIndex = sprs.findIndex(n => n.id == spid)\r\n            let newIndex = sprs.findIndex(n => n.zIndex == level)\r\n            if (newIndex > oldIndex) {\r\n                // 移动位置层级值小于原有值，\r\n                for (let i = newIndex; i > oldIndex; i--) {\r\n                    elements[sprs[i].id].zIndex = sprs[i - 1].zIndex\r\n                }\r\n            } else if (newIndex < oldIndex && newIndex > -1) {\r\n                // 移动位置层级值大于原有值，\r\n                for (let i = newIndex; i < oldIndex; i++) {\r\n                    let newZindex = sprs[i + 1].zIndex - 1\r\n                    elements[sprs[i].id].zIndex = newZindex\r\n                }\r\n            }\r\n            elements[spid].zIndex = level\r\n        } else {\r\n            sprite.zIndex = level\r\n        }\r\n        return\r\n    }\r\n\r\n    if (level == 'up') {\r\n        // 层级向上\r\n        let index = sprs.findIndex(n => n.id == spid)\r\n        if (index > 0) {\r\n            let upId = sprs[index - 1].id\r\n            let upzIndex = elements[upId].zIndex\r\n            elements[upId].zIndex = elements[spid].zIndex\r\n            elements[spid].zIndex = upzIndex\r\n\r\n        }\r\n    } else if (level == 'down') {\r\n        // 层级向下\r\n        let index = sprs.findIndex(n => n.id == spid)\r\n        if (index < sprs.length - 1 && index > -1) {\r\n            let upId = sprs[index + 1].id\r\n            let upzIndex = elements[upId].zIndex\r\n            elements[upId].zIndex = elements[spid].zIndex\r\n            elements[spid].zIndex = upzIndex\r\n\r\n        }\r\n    } else if (level == 'top') {\r\n        // 层级置顶\r\n        let index = sprs.findIndex(n => n.id == spid)\r\n        if (index > 0) {\r\n            elements[spid].zIndex = sprs[0].zIndex\r\n            for (let i = 0; i < index; i++) {\r\n                elements[sprs[i].id].zIndex--\r\n            }\r\n        }\r\n    } else if (level == 'bottom') {\r\n        // 层级最底\r\n        let index = sprs.findIndex(n => n.id == spid)\r\n        if (index < sprs.length - 1 && index > -1) {\r\n            elements[spid].zIndex = sprs[sprs.length - 1].zIndex\r\n            for (let i = index + 1, lg = sprs.length; i < lg; i++) {\r\n                elements[sprs[i].id].zIndex++\r\n            }\r\n        }\r\n    }\r\n}\r\n/**\r\n * 复制元素并添加\r\n * @param {*} sid 需要复制的数据id\r\n * @param {*} option 数据覆盖\r\n * @param {*} gpid 所在组id\r\n */\r\nexport const copyAdd = function (sid, option, gpid = null) {\r\n    const { mData } = this.appData\r\n    // 所有舞台元素\r\n    const spritesData = mData.getSprites()\r\n    const groupsData = mData.getGroups()\r\n    if (spritesData[sid]) {\r\n        let sprData = jsonData(spritesData[sid])\r\n        sprData.title += \"_c\"\r\n        delete sprData.id\r\n        delete sprData.zIndex\r\n        Object.assign(sprData, option)\r\n        return mData.addSprite(sprData, sprData.mid, gpid)\r\n    } else if (groupsData[sid]) {\r\n        let element = jsonData(groupsData[sid])\r\n        element.title += \"_c\"\r\n        delete element.id\r\n        delete element.zIndex\r\n        Object.assign(element, option)\r\n        // 组合处理\r\n        let groupComponents = []\r\n        if (element.components && Array.isArray(element.components)) {\r\n            groupComponents = element.components.sort((a, b) => a.zIndex - b.zIndex)\r\n            delete element.components\r\n        }\r\n        let newGroup = mData.newGroup(element, element.mid)\r\n        newGroup.zIndex = newGroup.zIndex + groupComponents.length\r\n        groupComponents.forEach((sprite, index) => {\r\n            let zIndex = newGroup.zIndex + 1 + index\r\n            this.copyAdd(sprite.id, { gpid: newGroup.id, zIndex }, newGroup.id)\r\n        })\r\n        return newGroup\r\n    }\r\n}\r\n\r\n/**\r\n * 复制元素数据\r\n * @param {*} id 需要复制的数据id\r\n * @param {*} clear 是否清除事件与数据\r\n */\r\nexport const copy = function (id, clear) {\r\n    const { mData } = this.appData\r\n    // 所有舞台元素\r\n    const spritesData = mData.getSprites()\r\n    const groupsData = mData.getGroups()\r\n    if (spritesData[id]) {\r\n        let sprData = jsonData(spritesData[id])\r\n        sprData.title += \"_c\"\r\n        if (clear) {\r\n            // 清除关联信息\r\n            delete sprData.id\r\n            delete sprData.gpid\r\n            delete sprData.mid\r\n            delete sprData.zIndex\r\n            delete sprData.lock\r\n            delete sprData.bind\r\n            if (typeof sprData.data == 'string' && (/(^GD_\\S{10})|(^GD_query)|(^RD_\\S{10})$/.test(sprData.data))) {\r\n                sprData.data = ''\r\n            }\r\n            sprData.events = []\r\n        }\r\n        return sprData\r\n    } else if (groupsData[id]) {\r\n        let element = jsonData(groupsData[id])\r\n        element.title += \"_c\"\r\n        if (clear) {\r\n            delete element.id\r\n            delete element.gpid\r\n            delete element.mid\r\n            delete element.zIndex\r\n        }\r\n        // 处理子元素\r\n        if (Array.isArray(element.components)) {\r\n            element.components = element.components.map(item => {\r\n                return this.copy(item.id, clear)\r\n            })\r\n        }\r\n        return element\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * 切换模块\r\n * @param {*} id 需要显示的模块id\r\n * @param {*} ids 跳过不处理的id数组\r\n */\r\nexport const changeModuleShow = function (id, ids) {\r\n    const { mData } = this.appData\r\n    mData.getModuleList().forEach(element => {\r\n        if (ids) {\r\n            if (typeof ids == 'string') {\r\n                if (element.id == ids) return\r\n            } else if (ids instanceof Array) {\r\n                if (ids.find(myid => myid == element.id)) return\r\n            }\r\n        }\r\n        if (element.type != 'fixed') {\r\n            if (element.id == id) {\r\n                element.visible = true\r\n            } else {\r\n                element.visible = false\r\n            }\r\n        }\r\n    });\r\n}","import { jsonData } from '@/utils'\r\nimport DataOptions from '@/data/DataOptions'\r\n\r\n// 创建一个新的事件对象数据\r\nexport const newEventData = function (name, cmpName) {\r\n   const { component } = this.app\r\n   let event = DataOptions.events.find(n => n.event == name) || component.getMyEvents(cmpName).find(n => n.event == name)\r\n   if (event) {\r\n      return jsonData(event)\r\n   } else {\r\n      return false\r\n   }\r\n}\r\n\r\n/**\r\n * 返回事件信息，eventName不传时返回所有事件列表\r\n * @param {string} id 元素id\r\n * @param {string} eventName 事件类型\r\n * @param {boolean} index 只返回事件所在列表的索引位置\r\n * @returns \r\n */\r\nexport const getEvent = function (id, eventName, index = false) {\r\n   let element = this.appData.getElement(id)\r\n   if (eventName) {\r\n      if (index) {\r\n         return element['events'] ? element['events'].findIndex(n => n.event == eventName) : -1\r\n      } else {\r\n         return element['events'] ? element['events'].find(n => n.event == eventName) : null\r\n      }\r\n   } else {\r\n      return element['events'] || null\r\n   }\r\n}\r\n\r\n/**\r\n * 为元素添加一个事件 \r\n * @param {string} id 元素id \r\n * @param {string} eventName 事件名称 \r\n * @param {options} options\r\n * @param {string} options.pams  配置参数\r\n * @param {boolean} options.disabled   配置参数\r\n */\r\nexport const addEvent = function (id, eventName, options) {\r\n   const { pams, disabled } = options || {}\r\n   const appData = this.appData\r\n   let event = this.getEvent(id, eventName)\r\n   if (event) return event\r\n   let element = appData.getElement(id)\r\n   let newEvent = this.newEventData(eventName, element.name)\r\n   if (element && newEvent) {\r\n      if (!element['events']) {\r\n         element['events'] = []\r\n      }\r\n      if (pams) {\r\n         newEvent['pams'] = pams\r\n      }\r\n\r\n      element['events'].push(newEvent)\r\n      return element['events'][element['events'].length - 1]\r\n   } else if (!element) {\r\n      console.warn('缺少组件数据')\r\n   } else {\r\n      console.warn(eventName + '事件名称不对')\r\n   }\r\n   return null\r\n}\r\n\r\n/**\r\n * 编辑元素事件参数\r\n * @param {string} id 元素id\r\n * @param {string} eventName 事件名称 \r\n * @param {options} options\r\n * @param {string} options.pams  配置参数\r\n * @param {boolean} options.disabled   配置参数\r\n */\r\nexport const editEvent = function (id, eventName, options) {\r\n   const { pams, disabled } = options || {}\r\n   const appData = this.appData\r\n   let eventIndex = this.getEvent(id, eventName, true)\r\n   if (eventIndex > -1) {\r\n      let element = appData.getElement(id)\r\n      typeof disabled != 'undefined' && (element['events'][eventIndex].disabled = disabled)\r\n      typeof pams != 'undefined' && (element['events'][eventIndex].pams = pams)\r\n      return element['events'][eventIndex]\r\n   }\r\n   return null\r\n}\r\n/**\r\n * 删除元素某一事件\r\n * @param {*} id 元素id\r\n * @param {*} eventName 事件名称 \r\n */\r\nexport const removeEvent = function (id, eventName) {\r\n   const appData = this.appData\r\n   let eventIndex = this.getEvent(id, eventName, true)\r\n   if (eventIndex > -1) {\r\n      let element = appData.getElement(id)\r\n      element['events'].splice(eventIndex, 1)\r\n      return element['events']\r\n   }\r\n   return null\r\n}","import { removeArray } from '@/utils'\r\n\r\n/**\r\n * 为事件添加一个动作\r\n * @param {string} actionId 动作id\r\n * @param {object|string} target 添加的目标对象，事件的响应对象，元素id \r\n * @param {string} eventName 事件名称，通过元素id添加动作时，必须包含一个事件名称\r\n */\r\nexport const addEventAction = function (actionId, target, eventName = \"\") {\r\n   if (target == 'app') {\r\n      this.appData.eData.addGAction(actionId, eventName)\r\n   } else if (eventName && typeof target == 'string') {\r\n      let event = this.getEvent(target, eventName)\r\n      if (event) {\r\n         if (event.actions.findIndex(n => n == actionId) < 0) {\r\n            event.actions.push(actionId)\r\n         }\r\n      } else {\r\n         console.warn(target + \"中\" + eventName + '事件不存在')\r\n      }\r\n      return event\r\n   } else if (typeof target == 'object' && target.actions && target.actions instanceof Array) {\r\n      target.actions.push(actionId)\r\n      return target\r\n   }\r\n}\r\n/**\r\n * 编辑当前元素向触发的动作传值\r\n * @param {*} actionId \r\n * @param {*} target \r\n * @param {*} eventName \r\n * @param {*} value \r\n */\r\nexport const editEventAction = function (actionId, target, eventName, value) {\r\n   if (target == 'app') {\r\n      this.appData.eData.editGAction(actionId, eventName, value)\r\n   } else if (eventName && typeof target == 'string') {\r\n      let event = this.getEvent(target, eventName)\r\n      if (event) {\r\n         if (typeof value != 'undefined') {\r\n            if (!event.actionValue) {\r\n               event.actionValue = {}\r\n            }\r\n            event.actionValue[actionId] = value\r\n         }\r\n      } else {\r\n         console.warn(target + \"中\" + eventName + '事件不存在')\r\n      }\r\n      return event\r\n   }\r\n}\r\n/**\r\n * 删除事件上的动作\r\n * @param {string} actionId  动作id\r\n * @param {*} target 目标对象\r\n * @param {*} eventName 事件名称\r\n * @param {*} removeSource 是否删除源头\r\n * @returns \r\n */\r\nexport const removeEventAction = function (actionId, target, eventName = \"\", removeSource = false) {\r\n   const data = this.appData\r\n   if (target == 'app') {\r\n      this.appData.eData.delGAction(eventName, actionId)\r\n   } else if (eventName && typeof target == 'string') {\r\n      let event = this.getEvent(target, eventName)\r\n      if (event) {\r\n         removeArray(event.actions, '', actionId)\r\n      }\r\n      if (removeSource) {\r\n         data.aData.delActionData(actionId)\r\n      }\r\n      return event\r\n   } else if (typeof target == 'object' && target.actions && target.actions instanceof Array) {\r\n      removeArray(target.actions, '', actionId)\r\n      if (removeSource) {\r\n         data.aData.delActionData(actionId)\r\n      }\r\n      return target\r\n   }\r\n}\r\n/**\r\n * 获取元素上的所有动作\r\n * @param {*} id 目标对象id\r\n * @param {*} event 事件名称\r\n * @returns 获取所有元素的所有动作id信息\r\n */\r\nexport const getSpriteActions = function (id, event) {\r\n   const data = this.appData\r\n   let spriteActions = []\r\n   if (id) {\r\n      let sprite = data.getElement(id)\r\n      if (Array.isArray(sprite.events)) {\r\n         if (event) {\r\n            let eve = sprite.events.find(item => item.event == event)\r\n            if (eve) {\r\n               spriteActions = eve.actions.map(id => {\r\n                  return {\r\n                     sname: sprite.title,\r\n                     sid: sprite.id,\r\n                     event: eve.event,\r\n                     id\r\n                  }\r\n               })\r\n            }\r\n         } else {\r\n            spriteActions = sprite.events.map(myEvent => {\r\n               if (myEvent.actions) {\r\n                  return myEvent.actions.map(id => {\r\n                     return {\r\n                        sname: sprite.title,\r\n                        sid: sprite.id,\r\n                        event: myEvent.event,\r\n                        id\r\n                     }\r\n                  })\r\n               } else {\r\n                  return []\r\n               }\r\n            }).flat()\r\n         }\r\n      }\r\n   } else {\r\n      spriteActions = data.mData.getSpriteList().map(sprite => {\r\n         if (sprite.events && sprite.events.length > 0) {\r\n            return sprite.events.map(event => {\r\n               if (event.actions) {\r\n                  return event.actions.map(id => {\r\n                     return {\r\n                        sname: sprite.title,\r\n                        sid: sprite.id,\r\n                        event: event.event,\r\n                        id\r\n                     }\r\n                  })\r\n               } else {\r\n                  return []\r\n               }\r\n            }).flat()\r\n         } else {\r\n            return []\r\n         }\r\n      }).flat()\r\n   }\r\n   return spriteActions\r\n}","import { isReactive } from \"vue\"\r\n\r\n// 处理组件的options内容\r\nexport default function (data, options) {\r\n    let res = options ? JSON.stringify(options) : \"{}\"\r\n    if (res) {\r\n        const tplList = res.match(/\\$\\{(.+?)\\}/g)\r\n        if (tplList) {\r\n            tplList.forEach(item => {\r\n                let str = item.match(/\\$\\{(.+?)\\}/)\r\n                if (str && str[1]) {\r\n                    let _data = data.getDataSource(str[1])\r\n                    if (_data) {\r\n                        if (isReactive(_data)) {\r\n                            let mydata = _data.data || _data\r\n                            res = res.replace(item, JSON.stringify(mydata))\r\n                        } else if (typeof _data == 'string') {\r\n                            res = res.replace(item, _data)\r\n                        } else {\r\n                            res = res.replace(item, JSON.stringify(_data))\r\n                        }\r\n                    }\r\n                }\r\n            })\r\n        } else {\r\n            return options\r\n        }\r\n    }\r\n\r\n    return JSON.parse(res)\r\n}","import * as element from './element'\r\nimport * as event from './event'\r\nimport * as action from './action'\r\nimport * as other from './other'\r\nimport { jsonData, extractData } from '@/utils'\r\nimport handleOptions from './handleOptions'\r\n\r\n\r\nclass Helper {\r\n   app = null\r\n   appData = null\r\n   constructor(app) {\r\n      this.app = app\r\n      this.appData = app.data\r\n   }\r\n   jsonData() {\r\n      return jsonData.call(this, ...arguments)\r\n   }\r\n   extractData() {\r\n      return extractData.call(this, ...arguments)\r\n   }\r\n   setIndex() {\r\n      return element.setIndex.call(this, ...arguments)\r\n   }\r\n   setZindex() {\r\n      return element.setZindex.call(this, ...arguments)\r\n   }\r\n   copy() {\r\n      return element.copy.call(this, ...arguments)\r\n   }\r\n   copyAdd() {\r\n      return element.copyAdd.call(this, ...arguments)\r\n   }\r\n   changeModuleShow() {\r\n      return element.changeModuleShow.call(this, ...arguments)\r\n   }\r\n   newEventData() {\r\n      return event.newEventData.call(this, ...arguments)\r\n   }\r\n   getEvent() {\r\n      return event.getEvent.call(this, ...arguments)\r\n   }\r\n   addEvent() {\r\n      return event.addEvent.call(this, ...arguments)\r\n   }\r\n   editEvent() {\r\n      return event.editEvent.call(this, ...arguments)\r\n   }\r\n   removeEvent() {\r\n      return event.removeEvent.call(this, ...arguments)\r\n   }\r\n   addEventAction() {\r\n      return action.addEventAction.call(this, ...arguments)\r\n   }\r\n   editEventAction() {\r\n      return action.editEventAction.call(this, ...arguments)\r\n   }\r\n   removeEventAction() {\r\n      return action.removeEventAction.call(this, ...arguments)\r\n   }\r\n   getSpriteActions() {\r\n      return action.getSpriteActions.call(this, ...arguments)\r\n   }\r\n   getBodyData() {\r\n      return other.getBodyData.call(this, ...arguments)\r\n   }\r\n   handleOptions() {\r\n      return handleOptions.call(this, this.appData, ...arguments)\r\n   }\r\n   getDataSource() {\r\n      return this.appData.getDataSource(...arguments)\r\n   }\r\n}\r\n\r\nexport default Helper","/**\r\n * Global dependencies.\r\n * @global {Object} document - DOM\r\n */\r\n\r\nvar devnull = function () {},\r\n   bundleIdCache = {},\r\n   bundleResultCache = {},\r\n   bundleCallbackQueue = {};\r\n\r\n\r\n/**\r\n * Subscribe to bundle load event.\r\n * @param {string[]} bundleIds - Bundle ids\r\n * @param {Function} callbackFn - The callback function\r\n */\r\nfunction subscribe(bundleIds, callbackFn) {\r\n   // listify\r\n   bundleIds = bundleIds.push ? bundleIds : [bundleIds];\r\n\r\n   var depsNotFound = [],\r\n      i = bundleIds.length,\r\n      numWaiting = i,\r\n      fn,\r\n      bundleId,\r\n      r,\r\n      q;\r\n\r\n   // define callback function\r\n   fn = function (bundleId, pathsNotFound) {\r\n      if (pathsNotFound.length) depsNotFound.push(bundleId);\r\n\r\n      numWaiting--;\r\n      if (!numWaiting) callbackFn(depsNotFound);\r\n   };\r\n\r\n   // register callback\r\n   while (i--) {\r\n      bundleId = bundleIds[i];\r\n\r\n      // execute callback if in result cache\r\n      r = bundleResultCache[bundleId];\r\n      if (r) {\r\n         fn(bundleId, r);\r\n         continue;\r\n      }\r\n\r\n      // add to callback queue\r\n      q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\r\n      q.push(fn);\r\n   }\r\n}\r\n\r\n\r\n/**\r\n * Publish bundle load event.\r\n * @param {string} bundleId - Bundle id\r\n * @param {string[]} pathsNotFound - List of files not found\r\n */\r\nfunction publish(bundleId, pathsNotFound) {\r\n   // exit if id isn't defined\r\n   if (!bundleId) return;\r\n\r\n   var q = bundleCallbackQueue[bundleId];\r\n\r\n   // cache result\r\n   bundleResultCache[bundleId] = pathsNotFound;\r\n\r\n   // exit if queue is empty\r\n   if (!q) return;\r\n\r\n   // empty callback queue\r\n   while (q.length) {\r\n      q[0](bundleId, pathsNotFound);\r\n      q.splice(0, 1);\r\n   }\r\n}\r\n\r\n\r\n/**\r\n * Execute callbacks.\r\n * @param {Object or Function} args - The callback args\r\n * @param {string[]} depsNotFound - List of dependencies not found\r\n */\r\nfunction executeCallbacks(args, depsNotFound) {\r\n   // accept function as argument\r\n   if (args.call) args = { success: args };\r\n\r\n   // success and error callbacks\r\n   if (depsNotFound.length)(args.error || devnull)(depsNotFound);\r\n   else(args.success || devnull)(args);\r\n}\r\n\r\n\r\n/**\r\n * Load individual file.\r\n * @param {string} path - The file path\r\n * @param {Function} callbackFn - The callback function\r\n */\r\nfunction loadFile(path, callbackFn, args, numTries) {\r\n   var doc = document,\r\n      async = args.async,\r\n         maxTries = (args.numRetries || 0) + 1,\r\n         beforeCallbackFn = args.before || devnull,\r\n         pathname = path.replace(/[\\?|#].*$/, ''),\r\n         pathStripped = path.replace(/^(css|img|module|nomodule)!/, ''),\r\n         isLegacyIECss,\r\n         hasModuleSupport,\r\n         e;\r\n\r\n   numTries = numTries || 0;\r\n\r\n   if (/(^css!|\\.css$)/.test(pathname)) {\r\n      // css\r\n      e = doc.createElement('link');\r\n      e.rel = 'stylesheet';\r\n      e.href = pathStripped;\r\n\r\n      // tag IE9+\r\n      isLegacyIECss = 'hideFocus' in e;\r\n\r\n      // use preload in IE Edge (to detect load errors)\r\n      if (isLegacyIECss && e.relList) {\r\n         isLegacyIECss = 0;\r\n         e.rel = 'preload';\r\n         e.as = 'style';\r\n      }\r\n   } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\r\n      // image\r\n      e = doc.createElement('img');\r\n      e.src = pathStripped;\r\n   } else {\r\n      // javascript\r\n      e = doc.createElement('script');\r\n      e.src = pathStripped;\r\n      e.async = async ===undefined ? true : async;\r\n\r\n      // handle es modules\r\n      // modern browsers:\r\n      //   module: add to dom with type=\"module\"\r\n      //   nomodule: call success() callback without adding to dom\r\n      // legacy browsers:\r\n      //   module: call success() callback without adding to dom\r\n      //   nomodule: add to dom with default type (\"text/javascript\")\r\n      hasModuleSupport = 'noModule' in e;\r\n      if (/^module!/.test(pathname)) {\r\n         if (!hasModuleSupport) return callbackFn(path, 'l');\r\n         e.type = \"module\";\r\n      } else if (/^nomodule!/.test(pathname) && hasModuleSupport) return callbackFn(path, 'l');\r\n   }\r\n\r\n   e.onload = e.onerror = e.onbeforeload = function (ev) {\r\n      var result = ev.type[0];\r\n\r\n      // treat empty stylesheets as failures to get around lack of onerror\r\n      // support in IE9-11\r\n      if (isLegacyIECss) {\r\n         try {\r\n            if (!e.sheet.cssText.length) result = 'e';\r\n         } catch (x) {\r\n            // sheets objects created from load errors don't allow access to\r\n            // `cssText` (unless error is Code:18 SecurityError)\r\n            if (x.code != 18) result = 'e';\r\n         }\r\n      }\r\n\r\n      // handle retries in case of load failure\r\n      if (result == 'e') {\r\n         // increment counter\r\n         numTries += 1;\r\n\r\n         // exit function and try again\r\n         if (numTries < maxTries) {\r\n            return loadFile(path, callbackFn, args, numTries);\r\n         }\r\n      } else if (e.rel == 'preload' && e.as == 'style') {\r\n         // activate preloaded stylesheets\r\n         return e.rel = 'stylesheet'; // jshint ignore:line\r\n      }\r\n\r\n      // execute callback\r\n      callbackFn(path, result, ev.defaultPrevented);\r\n   };\r\n\r\n   // add to document (unless callback returns `false`)\r\n   if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\r\n}\r\n\r\n\r\n/**\r\n * Load multiple files.\r\n * @param {string[]} paths - The file paths\r\n * @param {Function} callbackFn - The callback function\r\n */\r\nfunction loadFiles(paths, callbackFn, args) {\r\n   // listify paths\r\n   paths = paths.push ? paths : [paths];\r\n\r\n   var numWaiting = paths.length,\r\n      x = numWaiting,\r\n      pathsNotFound = [],\r\n      fn,\r\n      i;\r\n\r\n   // define callback function\r\n   fn = function (path, result, defaultPrevented) {\r\n      // handle error\r\n      if (result == 'e') pathsNotFound.push(path);\r\n\r\n      // handle beforeload event. If defaultPrevented then that means the load\r\n      // will be blocked (ex. Ghostery/ABP on Safari)\r\n      if (result == 'b') {\r\n         if (defaultPrevented) pathsNotFound.push(path);\r\n         else return;\r\n      }\r\n\r\n      numWaiting--;\r\n      if (!numWaiting) callbackFn(pathsNotFound);\r\n   };\r\n\r\n   // load scripts\r\n   for (i = 0; i < x; i++) loadFile(paths[i], fn, args);\r\n}\r\n\r\n\r\n/**\r\n * Initiate script load and register bundle.\r\n * @param {(string|string[])} paths - The file paths\r\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\r\n *   callback or (3) object literal with success/error arguments, numRetries,\r\n *   etc.\r\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\r\n *   literal with success/error arguments, numRetries, etc.\r\n */\r\nfunction loadjs(paths, arg1, arg2) {\r\n   var bundleId,\r\n      args;\r\n\r\n   // bundleId (if string)\r\n   if (arg1 && arg1.trim) bundleId = arg1;\r\n\r\n   // args (default is {})\r\n   args = (bundleId ? arg2 : arg1) || {};\r\n\r\n   // throw error if bundle is already defined\r\n   if (bundleId) {\r\n      if (bundleId in bundleIdCache) {\r\n         throw \"LoadJS\";\r\n      } else {\r\n         bundleIdCache[bundleId] = true;\r\n      }\r\n   }\r\n\r\n   function loadFn(resolve, reject) {\r\n      loadFiles(paths, function (pathsNotFound) {\r\n         // execute callbacks\r\n         executeCallbacks(args, pathsNotFound);\r\n\r\n         // resolve Promise\r\n         if (resolve) {\r\n            executeCallbacks({ success: resolve, error: reject }, pathsNotFound);\r\n         }\r\n\r\n         // publish bundle load event\r\n         publish(bundleId, pathsNotFound);\r\n      }, args);\r\n   }\r\n\r\n   if (args.returnPromise) return new Promise(loadFn);\r\n   else loadFn();\r\n}\r\n\r\n\r\n/**\r\n * Execute callbacks when dependencies have been satisfied.\r\n * @param {(string|string[])} deps - List of bundle ids\r\n * @param {Object} args - success/error arguments\r\n */\r\nloadjs.ready = function ready(deps, args) {\r\n   // subscribe to bundle load event\r\n   subscribe(deps, function (depsNotFound) {\r\n      // execute callbacks\r\n      executeCallbacks(args, depsNotFound);\r\n   });\r\n\r\n   return loadjs;\r\n};\r\n\r\n\r\n/**\r\n * Manually satisfy bundle dependencies.\r\n * @param {string} bundleId - The bundle id\r\n */\r\nloadjs.done = function done(bundleId) {\r\n   publish(bundleId, []);\r\n};\r\n\r\n\r\n/**\r\n * Reset loadjs dependencies statuses\r\n */\r\nloadjs.reset = function reset() {\r\n   bundleIdCache = {};\r\n   bundleResultCache = {};\r\n   bundleCallbackQueue = {};\r\n};\r\n\r\n\r\n/**\r\n * Determine if bundle has already been defined\r\n * @param String} bundleId - The bundle id\r\n */\r\nloadjs.isDefined = function isDefined(bundleId) {\r\n   return bundleId in bundleIdCache;\r\n};\r\n\r\n\r\nexport default loadjs","import cmd from '../command'\r\nimport loadjs from '@/utils/loadjs'\r\n\r\nclass Plugin {\r\n    app = null\r\n    appData = null\r\n    panel = {}\r\n    constructor(app) {\r\n        this.app = app\r\n        this.appData = app.data\r\n    }\r\n    // 安装插件\r\n    use(install) {\r\n        try {\r\n            if (install instanceof Function) {\r\n                install(this.app, this)\r\n            } else if (install && typeof install == 'object' && install.install && install.install instanceof Function) {\r\n                install.install(this.app, this)\r\n            }\r\n        } catch (error) {\r\n            console.error('插件安装出错')\r\n            console.error(error)\r\n        }\r\n    }\r\n    // 异步插件安装\r\n    useAsync({ url, name }) {\r\n        return new Promise((resolve, reject) => {\r\n            loadjs([url], {\r\n                success: () => {\r\n                    if (typeof name == 'string') {\r\n                        this.use(window[name])\r\n                    } else if (Array.isArray(name)) {\r\n                        name.forEach(element => {\r\n                            this.use(window[element])\r\n                        })\r\n                    }\r\n                    resolve()\r\n                },\r\n                error: (err) => {\r\n                    setTimeout(() => cmd.message(\"插件加载失败\"), 1)\r\n                    console.warn('插件加载失败')\r\n                    resolve()\r\n                }\r\n            })\r\n        })\r\n    }\r\n    // 远程加载并应用\r\n    useAsyncLoad(items) {\r\n        return new Promise((resolve, reject) => {\r\n            if (Array.isArray(items)) {\r\n                let promises = []\r\n                items.forEach(element => {\r\n                    promises.push(this.useAsync(element))\r\n                })\r\n                Promise.all(promises).then(resolve, reject)\r\n            } else {\r\n                resolve()\r\n            }\r\n        })\r\n    }\r\n}\r\n\r\n\r\nexport default Plugin","var A = Object.defineProperty;\nvar x = (o, e, t) => e in o ? A(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;\nvar w = (o, e, t) => x(o, typeof e != \"symbol\" ? e + \"\" : e, t);\nconst m = \"wty-irpc\", S = \"*\", l = {}, d = {};\nlet q = 1;\nconst I = (o) => Object.prototype.toString.call(o) === \"[object AsyncFunction]\" || o instanceof Promise, T = (o, e, { protocol: t }) => {\n  let s = Object.assign({\n    // 协议\n    protocol: t || m,\n    // 数据\n    data: null,\n    // 动作\n    action: null,\n    // 动作索引\n    callIndex: null\n  }, o);\n  return typeof e == \"function\" && (s.callIndex = \"wty\" + ++q, d[s.callIndex] = e), s;\n}, y = (o, e, t, s) => {\n  const n = T(e, t, s), i = o instanceof HTMLIFrameElement ? o.contentWindow : o;\n  i != null && i.postMessage ? i.postMessage(n, s.origin || S) : console.warn(\"postTarget.postMessage undefined\");\n}, c = class c {\n  /**\n   * 构建参数，可选\n   * @param {object} options \n   * @param {string} options.protocol 协议名称\n   * @param {object} options.self 指定当前自身窗口对象\n   * @param {object} options.target 发送目标窗口\n   * @param {function} options.onmessage 消息监听\n   */\n  constructor(e = {}) {\n    if (c.single)\n      throw \"请使用IRPC.create()创建\";\n    const t = window.top || window.parent, s = document && e.target !== !1 ? document.querySelectorAll(\"iframe\") : null;\n    this.protocol = e.protocol || m, this.self = e.self || window.self, this.target = e.target && this.self != e.target ? e.target : this.self != t ? t : s, this.origin = e.origin || \"*\", this.onmessage = e.onmessage || null, this.notarget = this.self == this.target;\n    const n = async (i) => {\n      if (!i.data || typeof i.data != \"object\") return;\n      const { action: r, data: f, protocol: p, callIndex: a } = i.data;\n      if (!(!p || p != this.protocol))\n        if (a && typeof d[a] == \"function\")\n          d[a].call(null, f), delete d[a];\n        else if (l[r] && typeof l[r] == \"function\")\n          if (a && this.target && this.self != this.target) {\n            const u = l[r];\n            let g = I(u) ? await u(f) : u.call(null, f);\n            g && g instanceof Promise ? g.then((M) => this._postMessage({ callIndex: a, data: M })) : this._postMessage({ callIndex: a, data: g });\n          } else\n            l[r].call(null, f);\n        else !r && typeof this.onmessage == \"function\" && this.onmessage.call(null, f);\n    };\n    this.self.addEventListener(\"message\", n);\n  }\n  _postMessage(e, t, s) {\n    let n = this.target;\n    s && (n = typeof s == \"string\" ? document == null ? void 0 : document.querySelectorAll(s) : s), n && (Array.isArray(n) || n instanceof NodeList ? n.forEach((i) => {\n      y(i, e, t, { protocol: this.protocol, origin: this.origin });\n    }) : y(n, e, t, { protocol: this.protocol, origin: this.origin }));\n  }\n  /**\n   * 发送数据\n   * @param {*} data 数据对象\n   * @param {object} options \n   * @param {string|object} options.target 指定发送的对象\n   */\n  sendData(e, t = {}) {\n    const { target: s } = t;\n    this._postMessage({ data: e }, null, s);\n  }\n  /**\n   * 执行命令动作\n   * @param {string} action 动作方法名\n   * @param {*} data 传递的数据\n   * @param {function} callback 回调的方法\n   * @param {object} options \n   * @param {string|object} options.target 指定发送的对象 \n   */\n  execute(e, t, s, n = {}) {\n    const { target: i } = n;\n    this._postMessage({ action: e, data: t }, s, i);\n  }\n  /**\n   * 添加可以执行的命令动作\n   * @param {string} name 动作名称\n   * @param {function} action 动作函数\n   */\n  addAction(e, t) {\n    l[e] ? console.warn(e, \"方法已存在\") : l[e] = t;\n  }\n  /**\n   * 删除命令动作\n   * @param {string} name 删除动作名称\n   */\n  delAction(e) {\n    l[e] && delete l[e];\n  }\n  /**\n   * 更新目标窗口\n   * @param {*} target 目标窗口\n   */\n  setTarget(e) {\n    e && this.self != e && this.target != e ? this.target = e : e == \"all\" && window.document ? this.target = document.querySelectorAll(\"iframe\") : e && typeof e == \"string\" && window.document && (this.target = document.querySelectorAll(e));\n  }\n};\nw(c, \"create\", function() {\n  return c.single || (c.single = new c(...arguments)), c.single;\n});\nlet h = c;\nh.single = null;\nexport {\n  h as irpc\n};\n//# sourceMappingURL=vapp2-irpc.mjs.map\n","import { isRef } from 'vue'\r\nimport { irpc } from 'vapp2-irpc'\r\nimport { initActions } from './controller/actions'\r\nimport { executeAction } from './controller/controller'\r\n\r\nconst createController = (app) => {\r\n    return {\r\n        app,\r\n        actions: initActions(),\r\n        executeAction\r\n    }\r\n}\r\n\r\n\r\nexport const createRpc = (app) => {\r\n    const RPC = irpc.create({ target: false })\r\n    const ctl = createController(app)\r\n\r\n    // 获取具体数据值\r\n    RPC.addAction('getData', target => {\r\n        if (target) {\r\n            const data = app.helper.getDataSource(target)\r\n            if (isRef(data)) {\r\n                return JSON.parse(JSON.stringify(data.value))\r\n            }\r\n            return JSON.parse(JSON.stringify(data))\r\n        }\r\n        return ''\r\n    })\r\n    // 设置修改数据\r\n    RPC.addAction('setData', result => {\r\n        const { target, data, options } = result || {}\r\n        if (target && typeof data != 'undefined') {\r\n            const targetData = app.data.gData.getGData(target)\r\n            ctl.actions.setGData(targetData, data, options)\r\n        }\r\n    })\r\n    // 执行动作\r\n    RPC.addAction('action', result => {\r\n        const { action, target, value, options } = result || {}\r\n        ctl.executeAction(action, target, value, options)\r\n    })\r\n    window.RPC = RPC\r\n    return RPC\r\n}\r\n","import * as vue from 'vue'\r\nimport EventEmitter from 'eventemitter3'\r\nimport { computed } from 'vue'\r\nimport { nanoid } from 'nanoid'\r\nimport { getParentSize } from '@/utils'\r\nimport Data from './data'\r\nimport Stage from './display/stage'\r\nimport Display from './display'\r\nimport Component from './component'\r\nimport Command from './command'\r\nimport controller from './controller'\r\nimport Helper from './helper'\r\nimport Plugin from './plugin'\r\nimport * as secrecy from './secrecy'\r\nimport { createRpc } from './rpc'\r\n\r\nif (window && typeof window.Vue == 'undefined') {\r\n    window.Vue = vue\r\n}\r\n\r\nconst domlist = []\r\n\r\nexport default class App extends EventEmitter {\r\n    constructor(option = {}) {\r\n        super()\r\n        this.id = option.id || nanoid(10)\r\n        // vue应用\r\n        this.vapp = null\r\n        this.dom = null\r\n        this.component = new Component(this)\r\n        this.data = new Data(this, option.config)\r\n        this.controller = controller(this)\r\n        this.AppSetup = this.data.AppSetup\r\n        this.helper = new Helper(this)\r\n        this.plugin = new Plugin(this)\r\n        this.irpc = createRpc(this)\r\n        // 设置应用计算属性\r\n        this.appInfo = computed(() => {\r\n            if (this.AppSetup.status == \"display\" && this.dom && this.dom.parentNode && this.data.info.parentSize) {\r\n                let { ratio } = getParentSize(this.dom)\r\n                return Object.assign({}, this.data.info, { height: this.data.info.width * ratio })\r\n            } else {\r\n                return this.data.info\r\n            }\r\n        })\r\n    }\r\n    async initData(value) {\r\n        let res = await secrecy.decrypt(value)\r\n        this.id = res.id\r\n        if (res && Array.isArray(res.plugins)) {\r\n            await this.plugin.useAsyncLoad(res.plugins)\r\n        }\r\n        this.data.init(res)\r\n        // if (display && this.AppSetup.status != \"display\") {\r\n        //     this.display()\r\n        // }\r\n        return {\r\n            id: this.data.info.id,\r\n            info: this.data.info,\r\n            mData: this.data.mData,\r\n            aData: this.data.aData,\r\n            gData: this.data.gData,\r\n            pData: this.data.pData,\r\n            rData: this.data.rData\r\n        }\r\n    }\r\n    // 获取应用数据\r\n    getData(blob = false) {\r\n        if (blob == false) {\r\n            return this.data.getData()\r\n        } else {\r\n            let data = this.data.getData()\r\n            return secrecy.encrypt(data)\r\n        }\r\n    }\r\n    // 添加组件\r\n    addComponent(items) {\r\n        this.component.add(items)\r\n    }\r\n    // 使用插件\r\n    use(value) {\r\n        this.plugin.use(value)\r\n    }\r\n    // 创建\r\n    create(props = {}) {\r\n        if (!this.vapp) {\r\n            this.vapp = vue.createApp(Stage, props)\r\n            // 设置全局配置，可被所有组件访问\r\n            this.vapp.config.globalProperties.AppSetup = this.AppSetup\r\n            this.vapp.config.globalProperties.data = this.data\r\n            this.vapp.config.globalProperties.component = this.component\r\n            this.vapp.config.globalProperties.helper = this.helper\r\n            this.vapp.config.globalProperties.appInfo = this.appInfo\r\n            this.vapp.config.globalProperties.irpc = this.irpc\r\n            // 安装内部默认组件\r\n            this.vapp.use(Display)\r\n            // 注册组件到应用\r\n            this.component.install()\r\n            // 应用状态设置\r\n            this.AppSetup.status = \"create\"\r\n            console.log('%c灿create', 'color:#0aa100')\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n    // 显示\r\n    display() {\r\n        if (this.vapp) {\r\n            if (this.AppSetup.dom instanceof HTMLElement) {\r\n                this.dom = this.AppSetup.dom\r\n            } else if (typeof this.AppSetup.dom == 'string') {\r\n                this.dom = document.querySelector(this.AppSetup.dom)\r\n            }\r\n            if (this.dom) {\r\n                if (domlist.includes(this.dom)) {\r\n                    console.error('app加载的DOM已有内容')\r\n                    return false\r\n                }\r\n                domlist.push(this.dom)\r\n                this.vapp.mount(this.dom)\r\n                this.AppSetup.status = \"display\"\r\n                this.data.resetScale()\r\n                console.log('%c灿display', 'color:#0aa100')\r\n                return true\r\n            } else {\r\n                console.error(this.AppSetup.dom + '错误')\r\n                return false\r\n            }\r\n        } else {\r\n            console.warn('app没有创建')\r\n            return false\r\n        }\r\n    }\r\n    // 删除\r\n    remove() {\r\n        if (this.vapp) {\r\n            let index = domlist.findIndex(item => item == this.dom)\r\n            if (index > -1) {\r\n                domlist.splice(index, 1)\r\n            }\r\n            this.vapp.unmount()\r\n            this.vapp = null\r\n            // 更改状态\r\n            this.AppSetup.status = \"remove\"\r\n            console.log('%c灿remove', 'color:#0aa100')\r\n        }\r\n    }\r\n    // 销毁\r\n    destroy(clearData) {\r\n        if (clearData) {\r\n            // 清除数据\r\n            this.data.clearDataAll()\r\n            // 清除动作插件（外置）\r\n            this.controller.removeAll()\r\n        }\r\n        // 清除组件\r\n        this.component.removeAll()\r\n        // 清除动作事件\r\n        Command.clear()\r\n        // 卸载舞台应用\r\n        this.remove()\r\n        // 更改状态\r\n        this.AppSetup.status = \"destroy\"\r\n        console.log('%c灿destroy', 'color:#0aa100')\r\n    }\r\n    initSet(options) {\r\n        options && Object.assign(this.AppSetup, options)\r\n        return this.AppSetup\r\n    }\r\n    getvapp() {\r\n        return this.vapp\r\n    }\r\n}\r\n","import pageLifecycle from 'page-lifecycle'\r\nimport Command from './command'\r\nimport DataOptions from './data/DataOptions'\r\nimport * as Utils from './utils'\r\nimport * as Secrecy from './secrecy'\r\nimport * as Remote from './remote'\r\nimport { EVENTS as events } from './events'\r\nimport App from './App'\r\nimport './css.css'\r\n\r\n// 常用该工具\r\nexport const utils = Utils\r\n// 加密\r\nexport const secrecy = Secrecy\r\n// 命令\r\nexport const cmd = Command\r\n// 相关类型定义\r\nexport const dataOptions = DataOptions\r\n// 事件\r\nexport const EVENTS = events\r\n// 远程接口数据\r\nexport const remote = Remote\r\n\r\n// 创建应用\r\nexport const createVapp = function (options) {\r\n   const {\r\n      dom,\r\n      scale = true,\r\n      interaction = true,\r\n      develop = false,\r\n      clickCursor = 'pointer',\r\n      display,\r\n      plugins,\r\n      slots,\r\n      data\r\n   } = options\r\n   const config = { interaction, clickCursor, scale, dom, develop }\r\n   const app = new App({ config: Object.assign({ dom }, config) })\r\n   if (Array.isArray(plugins)) {\r\n      plugins.forEach(item => {\r\n         app.use(item)\r\n      })\r\n   } else if (plugins) {\r\n      app.use(plugins)\r\n   }\r\n   // 创建\r\n   app.create({ slots })\r\n   // 初始化数据\r\n   if (data) {\r\n      app.initData(data).then(ok => {\r\n         if (ok && display == true) {\r\n            app.display()\r\n         }\r\n      })\r\n   }\r\n\r\n   return app\r\n}\r\n\r\n// 页面生命周期\r\npageLifecycle.addEventListener('statechange', function (event) {\r\n   Command.emit(EVENTS.PAGE_STATE, { state: event.newState, oldState: event.oldState })\r\n})\r\n\r\nif (typeof __APP_VERSION__ != 'undefined') {\r\n   console.log('%c' + __APP_VERSION__, 'color:#0aa100')\r\n}"],"names":["e","t","s","i","a","i$1","n","r","h","c","o","d","u","v","l","g","f","b","p","E","m$1","w","m","has","prefix","Events","EE","fn","context","once","addListener","emitter","event","listener","evt","clearEvent","EventEmitter","names","events","name","handlers","ee","listeners","a1","a2","a3","a4","a5","len","args","length","j","module","eventNames","interval","sprid","buffer","ispass","time","EVENTS","CEVENTS","this","$","y","M","D","_","S","O","T","freeGlobal","global","_freeGlobal","require$$0","freeSelf","root","_root","Symbol","_Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","_getRawTag","objectToString","_objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","_baseGetTag","overArg","func","transform","arg","_overArg","getPrototype","_getPrototype","isObjectLike","isObjectLike_1","objectTag","funcProto","funcToString","objectCtorString","isPlainObject","proto","Ctor","isPlainObject_1","formatFunc","rule","dayjs","readData","data","keyPath","mapKey","format","resData","keys","key","itemData","extractData","config","rowHead","element","index","item","jsonData","val","removeArray","array","nanoid","size","id","byte","guid","S4","ids","_fun","_time","_id","idos","timeout","getAppGlobal","getCurrentInstance","getParentSize","_dom","getDomRect","dom","rect","getScale","_size","getMaxZIndex","components","createSimpleData","object","getTemplateData","override","jsonToParams","getUrlParam","decode","url","reg","x","Dayjs","evtCenter","command","eventName","fun","eventObj","force","_args","action","appid","sendData","level","actions","dataTypes","component","appEvents","DataOptions","__vite__wasmUrl","__vite__initWasm","opts","urlContent","bytes","binaryString","response","contentType","wasm","__wbg_set_wasm","heap","getObject","idx","heap_next","dropObject","takeObject","ret","addHeapObject","obj","isLikeNone","cachedFloat64Memory0","getFloat64Memory0","cachedInt32Memory0","getInt32Memory0","WASM_VECTOR_LEN","cachedUint8Memory0","getUint8Memory0","lTextEncoder","cachedTextEncoder","encodeString","view","buf","passStringToWasm0","malloc","realloc","ptr","mem","offset","code","lTextDecoder","cachedTextDecoder","getStringFromWasm0","debugString","type","description","debug","builtInMatches","className","secretkey","string","retptr","ptr0","len0","r0","r1","validate","string2","ptr1","len1","encrypt","decrypt","handleError","__wbindgen_object_drop_ref","arg0","__wbindgen_number_new","__wbindgen_is_object","__wbindgen_jsval_loose_eq","arg1","__wbindgen_boolean_get","__wbindgen_number_get","__wbindgen_string_get","__wbindgen_error_new","__wbg_get_27fe3dac1c4d0224","__wbg_length_e498fbc24f9c1d4f","__wbg_new_b525de17f44a8943","__wbindgen_is_function","__wbg_next_b7d530c04fd8b217","__wbg_next_88560ec06a094dea","__wbg_done_1ebec03bbd919843","__wbg_value_6ac8da5cc5b3efda","__wbg_iterator_55f114446221aa5a","__wbg_get_baf4855f9a986186","__wbg_call_95d1ea488d03e4e8","__wbg_set_17224bc548dd1d7b","arg2","__wbg_isArray_39d28997bf6b96b4","__wbg_instanceof_ArrayBuffer_a69f02ee4c4f5065","__wbg_isSafeInteger_8c4789029e885159","__wbg_buffer_cf65c07de34b9a08","__wbg_new_537b7341ce90bb31","__wbg_set_17499e8aa4003ebd","__wbg_length_27a2afe8ab42b09f","__wbg_instanceof_Uint8Array_01cebe79ca606cca","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_memory","__vite__wasmModule","__vite__wasmImport_0[\"__wbindgen_object_drop_ref\"]","__vite__wasmImport_0[\"__wbindgen_number_new\"]","__vite__wasmImport_0[\"__wbindgen_is_object\"]","__vite__wasmImport_0[\"__wbindgen_jsval_loose_eq\"]","__vite__wasmImport_0[\"__wbindgen_boolean_get\"]","__vite__wasmImport_0[\"__wbindgen_number_get\"]","__vite__wasmImport_0[\"__wbindgen_string_get\"]","__vite__wasmImport_0[\"__wbindgen_error_new\"]","__vite__wasmImport_0[\"__wbg_get_27fe3dac1c4d0224\"]","__vite__wasmImport_0[\"__wbg_length_e498fbc24f9c1d4f\"]","__vite__wasmImport_0[\"__wbg_new_b525de17f44a8943\"]","__vite__wasmImport_0[\"__wbindgen_is_function\"]","__vite__wasmImport_0[\"__wbg_next_b7d530c04fd8b217\"]","__vite__wasmImport_0[\"__wbg_next_88560ec06a094dea\"]","__vite__wasmImport_0[\"__wbg_done_1ebec03bbd919843\"]","__vite__wasmImport_0[\"__wbg_value_6ac8da5cc5b3efda\"]","__vite__wasmImport_0[\"__wbg_iterator_55f114446221aa5a\"]","__vite__wasmImport_0[\"__wbg_get_baf4855f9a986186\"]","__vite__wasmImport_0[\"__wbg_call_95d1ea488d03e4e8\"]","__vite__wasmImport_0[\"__wbg_set_17224bc548dd1d7b\"]","__vite__wasmImport_0[\"__wbg_isArray_39d28997bf6b96b4\"]","__vite__wasmImport_0[\"__wbg_instanceof_ArrayBuffer_a69f02ee4c4f5065\"]","__vite__wasmImport_0[\"__wbg_isSafeInteger_8c4789029e885159\"]","__vite__wasmImport_0[\"__wbg_buffer_cf65c07de34b9a08\"]","__vite__wasmImport_0[\"__wbg_new_537b7341ce90bb31\"]","__vite__wasmImport_0[\"__wbg_set_17499e8aa4003ebd\"]","__vite__wasmImport_0[\"__wbg_length_27a2afe8ab42b09f\"]","__vite__wasmImport_0[\"__wbg_instanceof_Uint8Array_01cebe79ca606cca\"]","__vite__wasmImport_0[\"__wbindgen_debug_string\"]","__vite__wasmImport_0[\"__wbindgen_throw\"]","__vite__wasmImport_0[\"__wbindgen_memory\"]","memory","__wbindgen_malloc","__wbindgen_realloc","__wbindgen_add_to_stack_pointer","__wbindgen_free","__wbindgen_exn_store","readFile","file","resolve","reject","reader","crypt.encrypt","res","arr","crypt.decrypt","crypt.secretkey","validateKey","value1","value2","crypt.validate","copyData","option","nativeIsFinite","isFinite","_isFinite","request","_obj","_network","headers","network","authorization","customize","isArray","isArray_1","symbolTag","isSymbol","isSymbol_1","reIsDeepProp","reIsPlainProp","isKey","_isKey","isObject","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_1","coreJsData","_coreJsData","maskSrcKey","uid","isMasked","_isMasked","toSource","_toSource","require$$3","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","_baseIsNative","getValue","_getValue","getNative","_getNative","nativeCreate","_nativeCreate","hashClear","_hashClear","hashDelete","_hashDelete","HASH_UNDEFINED","hashGet","_hashGet","hashHas","_hashHas","hashSet","_hashSet","require$$4","Hash","entries","entry","_Hash","listCacheClear","_listCacheClear","eq","other","eq_1","assocIndexOf","_assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","_listCacheDelete","listCacheGet","_listCacheGet","listCacheHas","_listCacheHas","listCacheSet","_listCacheSet","ListCache","_ListCache","Map","_Map","mapCacheClear","_mapCacheClear","isKeyable","_isKeyable","getMapData","map","_getMapData","mapCacheDelete","_mapCacheDelete","mapCacheGet","_mapCacheGet","mapCacheHas","_mapCacheHas","mapCacheSet","_mapCacheSet","MapCache","_MapCache","FUNC_ERROR_TEXT","memoize","resolver","memoized","cache","memoize_1","MAX_MEMOIZE_SIZE","memoizeCapped","_memoizeCapped","rePropName","reEscapeChar","stringToPath","match","number","quote","subString","_stringToPath","arrayMap","iteratee","_arrayMap","INFINITY","symbolProto","symbolToString","baseToString","_baseToString","toString","toString_1","castPath","_castPath","toKey","_toKey","baseGet","path","_baseGet","get","defaultValue","get_1","getBodyData","_o","_val","isReactive","reqs","RequestData","options","remote","callback","body","newBody","err","requestData$1","test","rid","req","RemoteData$1","appData","extractRule","method","itval","instart","reactive","ref","requestData","watch","info","timeval","remotes","remoteList","createExtractRule","getList","add","RemoteData","delRemote","del","getRemote","clearRemote","refresh","api","launchRequest","defineAppSetup","shallowReactive","defineAppInfo","defineAction","defineGData","uptime","trigger","myValue","definePlugin","getData","app","mData","gData","aData","eData","rData","pData","modules","groupData","sprite","sprData","globalData","moduleCunt","groupCount","spriteCount","initModuleData","initGroupData","initSpriteData","comp","defaultData","title","ModuleData","newData","mid","clear","items","elements","md","filter","source","GroupData","group","clearSource","unwatchs","gpid","sprites","esSimple","point","moduleComps","spids","invalids","spr","myGroup","moduleElements","sIndex","count","lg","ele","SpritesData","groups","simpleSprite","_sprites","defData","addElement","gid","myMid","groupComponents","newGroup","delElement","spritesData","groupsData","appendElement","parentId","removeElement","fillData","moduleList","_module","moduleComponents","watchSimples","attsVary","ElementData","_data","GroupsData","ActionData","actionName","actionData","target","list","reactiveData","GlobalData","inData","EventData","actionId","remote.getRemote","remote.add","remote.del","remote.requestData","remote.launchRequest","remote.createExtractRule","remote.remotes","PluginData","pulugin","assign","defaultConverter","init","converter","defaultAttributes","set","attributes","stringifiedAttributes","attributeName","cookies","jar","parts","found","getTransform","computed","mvx","mvy","clearUnwatch","stop","judgeDataTrigger","operator","targetValue","actionTrigger","actionValue","myAction","CMD","watchDataTrigger","srcData","isRef","_remote","getDataSource","disable","GData","unwatch","filterDatas","gdid","watchid","_path","newValue","jsCookie","handleFun","nextDisable","disableRds","AppData","ABind.getTransform","cmd","ABind.getDataSource","ABind.watchDataTrigger","ABind.clearUnwatch","createSprite","props","slots","myApp","componentName","resolveComponent","spriteData","myProps","getActions","dispatchEvent","$el","lifecycleHook","vnode","onMounted","onUnmounted","stageHook","evtLaunch","evtInterval","evtTimeout","delay","Stage","appInfo","isVNode","containerList","content","fixed","overlayer","background","error","backgroundColor","style","baseComponent","anim","createStyle","myData","click","eventItem","elementData","AppSetup","isNil","isNil_1","executeActions","spid","actionsArr","evts","evtName","L","it","lifecycle","createEvent","interaction.click","interaction.timeout","interaction.interval","interaction.customize","createProps","myStyle","myEvent","myClass","SpriteObject","provide","slot","SpriteGroup","ctx","uData","Module","toRefs","sVNode","width","height","Plane","Popwin","Content","ContentFixed","Overlayer","itemStyle","Message","deleteItem","Mask","$event","Background","coms","Display","stackClear","_stackClear","stackDelete","_stackDelete","stackGet","_stackGet","stackHas","_stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","_stackSet","require$$5","Stack","_Stack","defineProperty","_defineProperty","baseAssignValue","_baseAssignValue","assignMergeValue","_assignMergeValue","createBaseFor","fromRight","keysFunc","iterable","_createBaseFor","baseFor","_baseFor","freeExports","exports","freeModule","moduleExports","Buffer","allocUnsafe","cloneBuffer","isDeep","Uint8Array","_Uint8Array","cloneArrayBuffer","arrayBuffer","_cloneArrayBuffer","cloneTypedArray","typedArray","_cloneTypedArray","copyArray","_copyArray","objectCreate","baseCreate","_baseCreate","isPrototype","_isPrototype","initCloneObject","_initCloneObject","argsTag","baseIsArguments","_baseIsArguments","propertyIsEnumerable","isArguments","isArguments_1","MAX_SAFE_INTEGER","isLength","isLength_1","isArrayLike","isArrayLike_1","isArrayLikeObject","isArrayLikeObject_1","stubFalse","stubFalse_1","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","_baseIsTypedArray","baseUnary","_baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","isTypedArray_1","safeGet","_safeGet","assignValue","objValue","_assignValue","copyObject","customizer","isNew","_copyObject","baseTimes","_baseTimes","reIsUint","isIndex","_isIndex","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","_arrayLikeKeys","nativeKeysIn","_nativeKeysIn","baseKeysIn","isProto","_baseKeysIn","keysIn","keysIn_1","toPlainObject","toPlainObject_1","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","baseMergeDeep","srcIndex","mergeFunc","stack","srcValue","stacked","isCommon","isTyped","_baseMergeDeep","baseMerge","_baseMerge","identity","identity_1","apply","thisArg","_apply","nativeMax","overRest","start","otherArgs","_overRest","constant","constant_1","baseSetToString","_baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","remaining","_shortOut","setToString","_setToString","baseRest","_baseRest","isIterateeCall","_isIterateeCall","createAssigner","assigner","sources","guard","_createAssigner","merge","merge_1","AppComponent","mixins","emits","com","k","initActions","ps","display","field","targetID","rpcTarget","ActionTypes","_config","executeAction","remoteData","actionType","targetData","myTargetData","ActionTrigger","Controller","controller","ctl","setIndex","newIndex","parent","setZindex","move","sprs","oldIndex","newZindex","upId","upzIndex","copyAdd","sid","zIndex","copy","changeModuleShow","myid","newEventData","cmpName","getEvent","addEvent","pams","disabled","newEvent","editEvent","eventIndex","removeEvent","addEventAction","editEventAction","removeEventAction","removeSource","getSpriteActions","spriteActions","eve","handleOptions","tplList","str","mydata","Helper","element.setIndex","element.setZindex","element.copy","element.copyAdd","element.changeModuleShow","event.newEventData","event.getEvent","event.addEvent","event.editEvent","event.removeEvent","action.addEventAction","action.editEventAction","action.removeEventAction","action.getSpriteActions","other.getBodyData","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","subscribe","bundleIds","callbackFn","depsNotFound","numWaiting","bundleId","q","pathsNotFound","publish","executeCallbacks","loadFile","numTries","doc","async","maxTries","beforeCallbackFn","pathname","pathStripped","isLegacyIECss","hasModuleSupport","ev","loadFiles","paths","defaultPrevented","loadjs","loadFn","deps","Plugin","install","promises","A","I","createController","createRpc","RPC","irpc","vue","domlist","App","Component","Data","ratio","secrecy.decrypt","blob","secrecy.encrypt","clearData","Command","utils","Utils","secrecy","Secrecy","dataOptions","Remote","createVapp","scale","interaction","develop","clickCursor","plugins","ok","pageLifecycle"],"mappings":"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","x_google_ignoreList":[0,1,4,5,6,7,8,9,10,11,12,13,14,16,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,99,110,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,192]}